DB02中SQL代码下面代码是读取直接人工数字最大的工序SELECTm.WERKS AS plant,m.MATNR AS material,m.PLNNR AS route_no,a.PLNKN AS operation,o.VGW01 AS direct_laborFROMMAPL mINNER JOIN PLKO k ON m.PLNNR k.PLNNR AND m.PLNAL k.PLNALINNER JOIN PLAS a ON k.PLNNR a.PLNNR AND k.PLNAL a.PLNALINNER JOIN PLPO o ON a.PLNNR o.PLNNR AND a.PLNKN o.PLNKNWHEREm.MATNR 8014217002AND m.WERKS 8201AND k.PLNTY NAND m.LOEKZ AND k.LOEKZ AND a.LOEKZ AND o.LOEKZ AND o.VGW01 (SELECT MAX(o
VGW
FROM MAPL m2INNER JOIN PLKO k2 ON m
PLNNR k
PLNNR AND m
PLNAL k
PLNALINNER JOIN PLAS a2 ON k
PLNNR a
PLNNR AND k
PLNAL a
PLNALINNER JOIN PLPO o2 ON a
PLNNR o
PLNNR AND a
PLNKN o
PLNKNWHERE m
MATNR 801421002AND m
WERKS 8201AND k
PLNTY NAND m
LOEKZ AND k
LOEKZ AND a
LOEKZ AND o
LOEKZ )ORDER BYa.PLNKN;
对应的ABAP代码段方法1SELECT m~werks,m~matnr,o~vgw01,o~zcode “增强字段用于存储该工序的人数INTO TABLE lt_opsFROM mapl AS mINNER JOIN plko AS kON m~plnnr k~plnnrAND m~plnal k~plnalAND k~werks m~werksINNER JOIN plas AS aON k~plnnr a~plnnrAND k~plnal a~plnalAND k~plnty a~plntyINNER JOIN plpo AS oON a~plnnr o~plnnrAND a~plnkn o~plnknAND a~plnty o~plntyFOR ALL ENTRIES IN lt_matnr_werksWHERE m~werks lt_matnr_werks-werksAND m~matnr lt_matnr_werks-matnrAND k~plnty NAND m~loekz AND m~plnal ( SELECT MAX( m2~plnal )FROM mapl AS m2WHERE m2~werks m~werksAND m2~matnr m~matnrAND m2~plnty m~plntyAND m2~plnnr m~plnnrAND m2~loekz )AND k~delkz AND a~loekz AND o~loekz .方法2FORM frm_get_sta_lab .DATA: BEGIN OF ls_matnr_werks,werks TYPE werks_d,matnr TYPE matnr,END OF ls_matnr_werks,lt_matnr_werks LIKE TABLE OF ls_matnr_werks.DATA: BEGIN OF ls_max_vgw01,werks TYPE werks_d,matnr TYPE matnr,max_vgw01 TYPE plpo-vgw01,zcode TYPE plpo-zcode,END OF ls_max_vgw01,lt_max_vgw01 LIKE TABLE OF ls_max_vgw
FIELD-SYMBOLS: fs_out LIKE LINE OF gt_out.CHECK gt_out[] IS NOT INITIAL.LOOP AT gt_out ASSIGNING fs_out.ls_matnr_werks-werks fs_out-werks.ls_matnr_werks-matnr fs_out-plnbez.COLLECT ls_matnr_werks INTO lt_matnr_werks.ENDLOOP.SORT lt_matnr_werks BY werks matnr.IF lt_matnr_werks[] IS NOT INITIAL.DATA: BEGIN OF ls_op,werks TYPE werks_d,matnr TYPE matnr,vgw01 TYPE plpo-vgw01,zcode TYPE plpo-zcode,END OF ls_op,lt_ops LIKE TABLE OF ls_op.SELECT m~werks,m~matnr,o~vgw01,o~zcodeINTO TABLE lt_opsFROM mapl AS mINNER JOIN plko AS kON m~plnnr k~plnnrAND m~plnal k~plnalAND k~werks m~werksINNER JOIN plas AS aON k~plnnr a~plnnrAND k~plnal a~plnalAND k~plnty a~plntyINNER JOIN plpo AS oON a~plnnr o~plnnrAND a~plnkn o~plnknAND a~plnty o~plntyFOR ALL ENTRIES IN lt_matnr_werksWHERE m~werks lt_matnr_werks-werksAND m~matnr lt_matnr_werks-matnrAND k~plnty NAND m~loekz AND k~delkz AND a~loekz AND o~loekz .* SELECT m~werks,* m~matnr,* o~vgw01,* o~zcode* INTO TABLE lt_ops* FROM mapl AS m* INNER JOIN plko AS k* ON m~plnnr k~plnnr* AND m~plnal k~plnal* AND k~werks m~werks* INNER JOIN plas AS a* ON k~plnnr a~plnnr* AND k~plnal a~plnal* AND k~plnty a~plnty* INNER JOIN plpo AS o* ON a~plnnr o~plnnr* AND a~plnkn o~plnkn* AND a~plnty o~plnty* FOR ALL ENTRIES IN lt_matnr_werks* WHERE m~werks lt_matnr_werks-werks* AND m~matnr lt_matnr_werks-matnr* AND k~plnty N* AND m~loekz * AND m~plnal ( SELECT MAX( m2~plnal )* FROM mapl AS m2* WHERE m2~werks m~werks* AND m2~matnr m~matnr** AND m2~plnty m~plnty** AND m2~plnnr m~plnnr* AND m2~loekz )* AND k~delkz * AND a~loekz * AND o~loekz .IF lt_ops IS NOT INITIAL.SORT lt_ops BY werks matnr.LOOP AT lt_ops INTO ls_op GROUP BY ( werks ls_op-werks matnr ls_op-matnr ) ASSIGNING FIELD-SYMBOL(grp).DATA: lv_max TYPE plpo-vgw01,lv_zc TYPE plpo-zcode.CLEAR: lv_max, lv_zc.LOOP AT GROUP grp ASSIGNING FIELD-SYMBOL(row).IF row-vgw01 lv_max.lv_max row-vgw
lv_zc row-zcode.ENDIF.ENDLOOP.CLEAR ls_max_vgw
ls_max_vgw01-werks grp-werks.ls_max_vgw01-matnr grp-matnr.ls_max_vgw01-max_vgw01 lv_max.ls_max_vgw01-zcode lv_zc.APPEND ls_max_vgw01 TO lt_max_vgw
ENDLOOP.ENDIF.ENDIF.CHECK lt_max_vgw01 IS NOT INITIAL.SORT lt_max_vgw01 BY werks matnr.LOOP AT gt_out ASSIGNING fs_out.CLEAR: fs_out-zbzrygs.READ TABLE lt_max_vgw01 INTO ls_max_vgw01WITH KEY werks fs_out-werksmatnr fs_out-plnbezBINARY SEARCH.IF sy-subrc
IF fs_out-gamng IS NOT INITIALAND ls_max_vgw01-max_vgw01 IS NOT INITIALAND ls_max_vgw01-max_vgw01