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显示结果。
以上。