ABAP中,获取报表ALV数据sample

本文介绍两种在ABAP开发中获取已存在报表ALV数据的方法。第一种为通过内存导出和导入数据,需要修改目标报表。第二种利用SAP提供的函数实现,无需修改目标报表。文中提供第二种方法的具体实现样例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

abap开发中,有时会需要获取另外一个已存在的报表中的数据,也就是绑定在ALV上的数据,通常有两种做法:

第一种方法:把ALV的内表数据export到内存中,在调用结束后,用import从内存中读取出来,这种方法需要修改被调用报表;

第二种方法:使用SAP提供的函数,这种方法不需要修改被调用报表的,以下是此种方法的sample;

*&---------------------------------------------------------------------*
*& Report ZTEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zliuxy_test.
TYPES:BEGIN OF ty_itab,
        werks LIKE mast-werks,
        matnr LIKE mast-matnr,  "bom层
        stlnr LIKE mast-stlnr,  "物料单
        stlal LIKE stko-stlal,  "可选bom(替代)
        idnrk LIKE stpo-idnrk,  "bom物料
        menge LIKE stpo-menge,  "数量
        alpst LIKE stpo-alpst, "策略
        ewahr LIKE stpo-ewahr,  " 使用可能性
      END OF ty_itab.
DATA:itab    TYPE TABLE OF ty_itab WITH HEADER LINE,
     ls_itab TYPE ty_itab.

RANGES:s_matnr  FOR mast-matnr,
       s_datuv FOR stas-datuv.
FIELD-SYMBOLS:<lt_data> TYPE ANY TABLE.
DATA:lr_data  TYPE REF TO data.
"初始设置
CALL METHOD cl_salv_bs_runtime_info=>set
  EXPORTING
    display  = abap_false
    metadata = abap_false
    data     = abap_true.
s_matnr-sign = 'I'.
s_matnr-option = 'EQ'.
s_matnr-low = ''.
APPEND s_matnr.
s_datuv-sign = 'I'.
s_datuv-option = 'EQ'.
s_datuv-low = ''.
APPEND s_datuv.
* 调用目标程序
SUBMIT z_mm_bomq
  WITH s_matnr IN s_matnr
  WITH s_datuv IN s_datuv
  AND RETURN.
TRY.
    "获取ALV显示数据
    CALL METHOD cl_salv_bs_runtime_info=>get_data_ref
      IMPORTING
        r_data = lr_data.
    ASSIGN lr_data->* TO <lt_data>.
    REFRESH itab.
    CLEAR itab.
    MOVE-CORRESPONDING <lt_data>[] TO itab[].
  CATCH cx_salv_bs_sc_runtime_info.
ENDTRY.
"结束
cl_salv_bs_runtime_info=>clear_all( ).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampaignWolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值