0
点赞
收藏
分享

微信扫一扫

DEMO SUBMIT 某程序并获取该程序ALV数据

货铺QQ群号:834508274

申请时请提供您哪个模块顾问,否则是一律不通过的。
进群统一修改群名片,例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接,小程序等,进群看公告,谢谢配合
不修改昵称会被不定期踢除,谢谢配合!


有时候是需要获取其他程序的结果,可以考虑把某个程序的主要逻辑封装成function,也可以考虑在某个地方submit下这个程序。

因为submit return,没有输出接口。

所以需要从内存中获取。


下面是个简单的demo:

先建一个program,根据carrid 获取spfli数据。


DEMO SUBMIT 某程序并获取该程序ALV数据_码农

REPORT zlm_spfli.


TABLES:spfli.

DATA:lt_spfli TYPE TABLE OF spfli.

SELECT-OPTIONS s_carrid FOR spfli-carrid.


START-OF-SELECTION.
SELECT * FROM spfli INTO TABLE lt_spfli
WHERE carrid IN s_carrid.


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = 'SPFLI'
TABLES
t_outtab = lt_spfli
EXCEPTIONS
program_error = 1.



现在另外一个程序来submit这个程序,然后获取alv的值

*&---------------------------------------------------------------------*
*& Report ZLM_GET_ALV_DATA
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zlm_get_alv_data.

TABLES spfli.

RANGES s_carrid FOR spfli-carrid.

DATA:lr_alv_data TYPE REF TO data.
FIELD-SYMBOLS:<lt_alv_data> TYPE ANY TABLE .
FIELD-SYMBOLS:<lt_data> TYPE any.

START-OF-SELECTION.

s_carrid[] = VALUE #( ( sign = 'I' option = 'EQ' low = 'LH'
high = '' ) ).
cl_salv_bs_runtime_info=>set(
EXPORTING
display = abap_false
metadata = abap_false
data = abap_true ).

CLEAR lr_alv_data.
UNASSIGN <lt_alv_data>.

SUBMIT zlm_spfli
WITH s_carrid IN s_carrid
AND RETURN.
TRY.
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = lr_alv_data ).
ASSIGN lr_alv_data->* TO <lt_alv_data>.
IF <lt_alv_data> IS ASSIGNED AND sy-subrc = 0.
ENDIF.
CATCH cx_salv_bs_sc_runtime_info.

ENDTRY.

cl_salv_bs_runtime_info=>clear_all( ).​


debug看下

DEMO SUBMIT 某程序并获取该程序ALV数据_微信_02


DEMO SUBMIT 某程序并获取该程序ALV数据_码农_03


有时候需要调用标准tcode对应的结果,自己去鼓捣吧。敲一遍就知道了。



举报

相关推荐

0 条评论