SALV有个神奇的功能,就是submit其他SALV程序后能直接取得显示的结果。通常情况下,可以将submit的SALV显示结果发送到内存中(SUBMIT .. EXPORTING LIST TO MEMORY. ),然后通过函数LIST_FROM_MEMORY读取,通过WRITE_LIST写入,这么做虽说也能得到其他SALV的程序运行结果,但是比较繁琐。
下面结果通过类CL_SALV_BS_RUNTIME_INFO来实现的步骤:
1,将Submit的salv设置为不显示模式
1 2 3 4 5 6 7 |
" 设定SALV运行模式, cl_salv_bs_runtime_info=>set( EXPORTING display = abap_false "不显示 metadata = abap_false data = abap_true ). |
2,submit SALV程序
3,调用cl_salv_bs_runtime_info=>get_data_ref()取得结果
1 2 3 4 5 6 7 8 9 10 11 |
TRY. "取得运行数据 cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = go_data ). * 数据赋值 ASSIGN go_data->* TO <git_outtab>. CATCH cx_salv_bs_sc_runtime_info. ENDTRY. |
完整代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
REPORT z_salv_20. DATA: git_outtab TYPE STANDARD TABLE OF alv_t_t2. FIELD-SYMBOLS: <git_outtab> LIKE git_outtab. DATA go_data TYPE REF TO data. " 设定SALV运行模式, cl_salv_bs_runtime_info=>set( EXPORTING display = abap_false "不显示 metadata = abap_false data = abap_true ). SUBMIT salv_demo_table_simple AND RETURN. TRY. "取得运行数据 cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = go_data ). * 数据赋值 ASSIGN go_data->* TO <git_outtab>. CATCH cx_salv_bs_sc_runtime_info. ENDTRY. CALL METHOD cl_salv_bs_runtime_info=>clear_all. |
submit的salv_demo_table_simple是SAP系统内置的一个SALV demo程序,运行后显示10条数据,如下:
Z_SALV_20运行debug,salv_demo_table_simple运行后显示的数据被保存到表<GIT_OUTTAB>中。
通过这种方法也可以得到某些标准程序ALV的显示结果,很方便,比如MB5B(对应程序RM07MLBD)的ALV显示结果。
以上。
发表评论