在项目开发过程中需要从标准报表MB5B中获取数据,以下是本人实例中的相关部分,程序同样适用于获取其他标准报表的数据。
CL_SALV_BS_RUNTIME_INFO=>SET(
DISPLAY = ABAP_FALSE
METADATA = ABAP_FALSE
DATA = ABAP_TRUE ).
SUBMIT RM07MLBD "Tcode MB5B
WITH WERKS IN S_WERKS "填写筛选屏幕字段
WITH DATUM IN S_BUDAT
WITH XSUM = ''
WITH PA_SUMFL = 'X'
WITH XCHAR = ''
WITH LGBST = ''
WITH BWBST = 'X'
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 '无法获取ALV数据' TYPE 'E'.
ENDTRY.
CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL( ).
IF <LT_DATA> IS ASSIGNED.
LOOP AT <LT_DATA> ASSIGNING <L_DATA>.
MOVE-CORRESPONDING <L_DATA> TO LW_MB5B.
APPEND LW_MB5B TO LT_MB5B.
CLEAR LW_MB5B.
ENDLOOP.
ENDIF.
另外,当首次使用的时候,无法确定内表定义字段时,可以在这断点,然后查看<LT_DATA>的字段,以下是我MB5B中出现的字段。