在项目开发过程中需要从标准报表MB5B中获取数据,以下是本人实例中的相关部分,程序同样适用于获取其他标准报表的数据。

image

  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中出现的字段。

image

image