抓取SAP报表ALV GRID上的数据

来源:互联网 发布:西安电子科技大学网络 编辑:程序博客网 时间:2024/06/08 02:09

在开发的产销存报表的过程中,由于数据量过大,且取数逻辑太过于复杂,导致报表性能上很缓慢;

后来业务顾问要求直接在MB5B上取数,一开始有点纳闷,怎么从标准报表上取数。

于是从网络上搜索相关资料发现还真有,即将其转摘下来,以做备用。

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CL_SALV_BS_RUNTIME_INFO=>SET(
    DISPLAY= ABAP_FALSE
    METADATA = ABAP_FALSE
   DATA= ABAP_TRUE  ).
 
SUBMITRM07MLBD                " Tcode MB5B
  WITHWERKS INS_WERKS      " 填写筛选屏幕字段
  WITHDATUM INS_BUDAT
  WITHXSUM = ''
  WITHPA_SUMFL = 'X'
  WITHXCHAR = ''
  WITHLGBST = ''
  WITHBWBST = 'X'
  ANDRETURN.
 
TRY.
    CL_SALV_BS_RUNTIME_INFO=>GET_DATA_REF(
    IMPORTINGR_DATA = LS_DATA ).
  ASSIGNLS_DATA->* TO < LT_DATA >.
 
CATCHCX_SALV_BS_SC_RUNTIME_INFO.
 
  MESSAGE'无法获取ALV数据' TYPE 'E'.
 
ENDTRY.
 
CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL( ).
 
IF< LT_DATA > IS ASSIGNED.
  LOOPAT < LT_DATA > ASSIGNING< L_DATA >.
    MOVE-CORRESPONDING< L_DATA > TOLW_MB5B.
    APPENDLW_MB5B TOLT_MB5B.
    CLEARLW_MB5B.
  ENDLOOP.
ENDIF.

另外,当首次使用的时候,无法确定内表定义字段时,可以在这断点,然后查看< LT_DATA >的字段;


原创粉丝点击