程序间获取ALV数据的两种方法:
方法1:通过修改SUBMIT的目标程序,把内表EXPORT到内存,SUBMIT后IMPORT ,该方法需要修改目标程序,可以任意设置目标程序的中断点;
方法2: SUBMIT前屏蔽ALV GRID的显示,SUBMIT,然后调用 CL_SALV_BS_RUNTIME_INFO => GET_DATA_REF方法 获取数据, 该方法 不需要修改目标程序,但不能 设置目标程序的中断点,需显示ALV的函数执行完毕方可获取到数据。
实例:
START-OF-SELECTION .
PERFORM GET_DATA .
*&———————————————————————*
*& Form GET_DATA
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM GET_DATA .
DATA :LS_DATA TYPE REF TO DATA .
FIELD-SYMBOLS : <LT_DATA> TYPE TABLE ,
<L_DATA> TYPE DATA .
CL_SALV_BS_RUNTIME_INFO => SET (
DISPLAY = ''
METADATA = ''
DATA = 'X' ) .
SUBMIT ZMMR009 WITH ZBUDAT IN ZBUDAT AND RETURN .
TRY .
CL_SALV_BS_RUNTIME_INFO =>GET_DATA_REF (
IMPORTING R_DATA = LS_DATA ) .
ASSIGN LS_DATA ->* TO <LT_DATA> .
CATCH CX_SALV_BS_SC_RUNTIME_INFO .
MESSAGE 'UNABLE TO RETRIEVE ALV DATA' TYPE 'E' .
ENDTRY .
CL_SALV_BS_RUNTIME_INFO =>CLEAR_ALL ( ) .
LOOP AT <LT_DATA> ASSIGNING <L_DATA> .
MOVE-CORRESPONDING <L_DATA> TO GT_TAB .
APPEND GT_TAB .
ENDLOOP .
————————————————
ALV 调用标准程序并获取结果_cl_salv_bs_runtime_info=>get_data_ref-CSDN博客
导语:最近需求需要获取一个函数的结果,但是这个结果是ALV显示的,但是只需要他的数据,不需要他的展示。
需求:获取到函数【K_KKB_KKBCS_ORDER_REPORT】的ALV输出内表得值。
实现方法:
调用 cl_salv_bs_runtime_info=>get_data_ref
这里以带有ALV的函数为例,也可以直接通过SUBMIT来获取标准程序的内表
说明:如果A程序中SUBMIT一个程序,B程序再继续用上面的方法SUBMIT是不支持的,可以通过程序间调用FORM实现。