MOVE-CORRESPONDING、APPEND TO、CLEAR的用法

本文介绍了如何在SAPABAP中使用MOVE-CORRESPONDING函数处理ALV输出的内表数据,包括不同结构的内表赋值、金额筛选、工作区管理和清空操作,以确保数据的准确性和一致性。
摘要由CSDN通过智能技术生成

MOVE-CORRESPONDING的用法

在这里插入图片描述

"alv输出的结构类型
TYPES:BEGIN OF gty_out,
        werks  TYPE mseg-werks,  "工厂
        mjahr  TYPE mseg-mjahr,  "年度
        monat  TYPE wbrk-monat,   "月份
        budat  TYPE mseg-budat_mkpf, "过账日期
        mblnr  TYPE mseg-mblnr,  "物料凭证
        bwart  TYPE mseg-bwart,  "移动类型
        matnr  TYPE mseg-matnr,  "模具料号
        maktx  TYPE makt-maktx,  "模具描述
        lgort  TYPE mseg-lgort,  "存储地点
        menge  TYPE mseg-menge,  "数量
        meins  TYPE mseg-meins,  "单位
        zdj    TYPE mseg-dmbtr,  "单价
        dmbtr  TYPE mseg-dmbtr,  "金额
        "maktx  TYPE makt-maktx,  "模具描述
        sfycly TYPE char1,       "是否一次性领用
        sfdb   TYPE char1,       "是否调拨至线边仓
        "sfwg   TYPE char1,       "是否外购
        mjlx   TYPE char10,       "模具类型
      END OF gty_out.
 "用于计算数据的结构(带订单号)
TYPES:BEGIN OF gty_data,
          werks  TYPE mseg-werks,  "工厂
          mjahr  TYPE mseg-mjahr,  "年度
          monat  TYPE wbrk-monat,   "月份
          budat  TYPE mseg-budat_mkpf, "过账日期
          mblnr  TYPE mseg-mblnr,  "物料凭证
          bwart  TYPE mseg-bwart,  "移动类型
          aufnr  TYPE mseg-aufnr,   "订单
          matnr  TYPE mseg-matnr,  "模具料号
          maktx  TYPE makt-maktx,  "模具描述
          lgort  TYPE mseg-lgort,  "存储地点
          menge  TYPE mseg-menge,  "数量
          meins  TYPE mseg-meins,  "单位
          zdj    TYPE mseg-dmbtr,  "单价
          dmbtr  TYPE mseg-dmbtr,  "金额
          "maktx  TYPE makt-maktx,  "模具描述
          sfycly TYPE char1,       "是否一次性领用
          sfdb   TYPE char1,       "是否调拨至线边仓
          "sfwg   TYPE char1,       "是否外购
          mjlx   TYPE char10,       "模具类型
        END OF gty_data.
DATA: gs_out TYPE gty_out,  "alv输出工作区
      gt_out TYPE TABLE OF gty_out. "alv输出内表
DATA: gs_data TYPE gty_data, "工作区
      gt_data TYPE TABLE OF gty_data. "内表
DATA lt_data_nozero TYPE TABLE OF gty_data. "不含金额为0的内表

 MOVE-CORRESPONDING lt_data_nozero TO gt_out. "将lt_data_nozero的值赋值给gt_out(alv展示内表)

对不同结构的内表的赋值,一个是没有aufnr字段的,一个是有aufnr字段的。
直接使用 MOVE-CORRESPONDING就可以进行赋值了。

APPEND… TO

IF <fs_out1>-dmbtr <> 0. "如果合计金额不为0
      APPEND <fs_out1> TO lt_data_nozero."将数据追加到不含0的内表中
      "DELETE gt_out WHERE matnr = <fs_out1>-matnr AND dmbtr = <fs_out1>-dmbtr.
    ENDIF.

将工作区追加进内表。

CLEAR工作区和内表

 CLEAR: ls_ck_ml,lt_ck_ml."一定要清空,不然会导致金额合计错误,取出的还是上一次的值!!!

在使用之前,最好判断是否需要清空工作区,否则可能会导致数据的错乱~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值