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."一定要清空,不然会导致金额合计错误,取出的还是上一次的值!!!
在使用之前,最好判断是否需要清空工作区,否则可能会导致数据的错乱~