在开发的产销存报表的过程中,由于数据量过大,且取数逻辑太过于复杂,导致报表性能上很缓慢;
后来业务顾问要求直接在MB5B上取数,
于是从网络上搜索相关资料转摘下来,以做备用。
文章出处:javascript:void(0)
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 中出现的字段: