是因为使用了 AT NEW (或者AT LAST/AT END/AT FIRST)
以下使用 AT NEW 来举例
AT NEW matnr1.
gs_so_inf-aufnr = gs_out-aufnr."工单号
gs_so_inf-matnr = gs_out-matnr."物料编号
gs_so_inf-zzt = gs_out-zzt."状态
gs_so_inf-psmng = gs_out-psmng."计划生产数量
gs_so_inf-wemng = gs_out-wemng."入库数量
gs_so_inf-iasmg = gs_out-iasmg."废品数量
gs_so_inf-ccsl = gs_so_inf-wemng + gs_so_inf-iasmg."产出数量
gs_so_inf-dwerk = gs_out-dwerk."工厂
gs_so_inf-matnr1 = gs_out-matnr1."组件编号
ENDAT.
如上述代码,假设此时我们dwerk字段在结构中的顺序比matnr1的位置靠后,那么由于at new 语句的关系,在运行到matnr1后,便会把dwerk的数据给赋值成 **** ,故此时我们要取结构中调整,将 dwerk的顺序放在 matnr1之前
此情况下工厂会变为 ****
matnr1 TYPE resb-matnr, "(组件物料)
dwerk TYPE aufk-werks, "工厂
此情况下工厂才能正常赋值
dwerk TYPE aufk-werks, "工厂
matnr1 TYPE resb-matnr, "(组件物料)