1、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(o2.VGW01)FROM MAPL m2INNER JOIN PLKO k2 ON m2.PLNNR k2.PLNNR AND m2.PLNAL k2.PLNALINNER JOIN PLAS a2 ON k2.PLNNR a2.PLNNR AND k2.PLNAL a2.PLNALINNER JOIN PLPO o2 ON a2.PLNNR o2.PLNNR AND a2.PLNKN o2.PLNKNWHERE m2.MATNR 801421002AND m2.WERKS 8201AND k2.PLNTY NAND m2.LOEKZ AND k2.LOEKZ AND a2.LOEKZ AND o2.LOEKZ )ORDER BYa.PLNKN;2、对应的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_vgw01.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-vgw01.lv_zc row-zcode.ENDIF.ENDLOOP.CLEAR ls_max_vgw01.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_vgw01.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 0.IF fs_out-gamng IS NOT INITIALAND ls_max_vgw01-max_vgw01 IS NOT INITIALAND ls_max_vgw01-max_vgw01 0.IF fs_out-mtart Z201 or fs_out-mtart Z101.fs_out-zbzrygs ls_max_vgw01-max_vgw01 * ls_max_vgw01-zcode * fs_out-gamng.fs_out-ZMISM01 ls_max_vgw01-max_vgw01 * fs_out-gamng.ENDIF.ENDIF.ENDIF.ENDLOOP.ENDFORM.