读取其他SALV的显示结果
一、主要功能
-
SALV有个神奇的功能,就是submit其他SALV程序后能直接取得显示的结果。通常情况下,可以将submit的SALV显示结果发送到内存中(SUBMIT … EXPORTING LIST TO MEMORY. ),然后通过函数LIST_FROM_MEMORY读取,通过WRITE_LIST写入,这么做虽说也能得到其他SALV的程序运行结果,但是比较繁琐。
-
下面结果通过类CL_SALV_BS_RUNTIME_INFO来实现的步骤:
-
将Submit的salv设置为不显示模式
" 设定SALV运行模式, cl_salv_bs_runtime_info=>set( EXPORTING display = abap_false "不显示 metadata = abap_false data = abap_true ).
-
submit SALV程序
SUBMIT salv_demo_table_simple AND RETURN.
-
调用cl_salv_bs_runtime_info=>get_data_ref()取得结果
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.
-
二、实现与代码
*&---------------------------------------------------------------------*
*& Report ZABAP_SALV18
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZABAP_SALV18.
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条数据,如下:
-
zabap_salv18运行debug,salv_demo_table_simple运行后显示的数据被保存到表<GIT_OUTTAB>中。
-
通过这种方法也可以得到某些标准程序ALV的显示结果,很方便,比如MB5B(对应程序RM07MLBD)的ALV显示结果。