1.该语法是用来汇总内表数据的,根据内表中非数值、金额列作为主键,loop循环后累加数字列的。
2.尽量使用Collect wa into itab的方式,不要直接使用collect itab的方式、容易出错。
3.loop循环过程中累加到目标itab应该重新定义一个,而不是loop自己、累加到自己。
参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
FUNCTION Z_RFC001. DATA: LT_MARA TYPE TABLE OF MARA WITH HEADER LINE, "material master. LT_MAKT TYPE TABLE OF MAKT WITH HEADER LINE, "material desc. LT_MCH1 TYPE TABLE OF MCH1 WITH HEADER LINE, "batch master. LT_MABA TYPE TABLE OF ZTMM_MASTER_BAS WITH HEADER LINE, "enhancement fields. "LT_MSEG TYPE TABLE OF MSEG WITH HEADER LINE, "material document line item. LT_MCHB TYPE TABLE OF MCHB WITH HEADER LINE, LT_VBUK TYPE TABLE OF VBUK WITH HEADER LINE, LT_LIKP TYPE TABLE OF LIKP WITH HEADER LINE, LT_LIPS TYPE TABLE OF LIPS WITH HEADER LINE, LT_LIPSTMP TYPE TABLE OF LIPS WITH HEADER LINE. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_MARA FROM MARA WHERE MTART IN ( 'HALB', 'FERT', 'ROH' ) AND SPART IN ( 'Z1','Z2','Z3' ). SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_MAKT FROM MAKT FOR ALL ENTRIES IN LT_MARA WHERE MATNR EQ LT_MARA-MATNR AND SPRAS EQ SY-LANGU. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_MABA FROM ZTMM_MASTER_BAS FOR ALL ENTRIES IN LT_MARA WHERE MATNR EQ LT_MARA-MATNR. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_MCH1 FROM MCH1 FOR ALL ENTRIES IN LT_MARA WHERE MATNR EQ LT_MARA-MATNR. "批次库存. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_MCHB FROM MCHB FOR ALL ENTRIES IN LT_MARA WHERE WERKS EQ '3200' AND MATNR EQ LT_MARA-MATNR AND LGORT EQ '3001' AND CLABS GT 0. "lips. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_LIPS FROM LIPS FOR ALL ENTRIES IN LT_MCHB WHERE MATNR EQ LT_MCHB-MATNR AND CHARG EQ LT_MCHB-CHARG. "vbuk. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_VBUK FROM VBUK FOR ALL ENTRIES IN LT_LIPS WHERE VBELN EQ LT_LIPS-VBELN. DELETE ADJACENT DUPLICATES FROM LT_LIPS COMPARING ALL FIELDS. LOOP AT LT_VBUK. IF LT_VBUK-WBSTK EQ 'C'. "已经拣配但未发货的DN. DELETE LT_LIPS WHERE VBELN EQ LT_VBUK-VBELN. ENDIF. CLEAR LT_VBUK. ENDLOOP. LOOP AT LT_LIPS. "汇总交货计划数据. LT_LIPSTMP-MATNR = LT_LIPS-MATNR. LT_LIPSTMP-CHARG = LT_LIPS-CHARG. LT_LIPSTMP-LFIMG = LT_LIPS-LFIMG. CONDENSE LT_LIPSTMP-CHARG NO-GAPS. " APPEND LT_LIPSTMP. COLLECT LT_LIPSTMP INTO LT_LIPSTMP[]. CLEAR LT_LIPSTMP. CLEAR LT_LIPS. ENDLOOP. SORT LT_LIPSTMP BY MATNR ASCENDING CHARG ASCENDING. " COLLECT LT_LIPSTMP. DELETE LT_LIPSTMP WHERE MATNR IS INITIAL. REFRESH LT_LIPS. LOOP AT LT_MARA. CLEAR Z_RFC001_TAB01. LOOP AT LT_MCHB WHERE MATNR EQ LT_MARA-MATNR. IF LT_MCHB-CLABS EQ 0. CLEAR LT_MCHB. CONTINUE. ENDIF. Z_RFC001_TAB01-CDM = ''. Z_RFC001_TAB01-MATNR = LT_MARA-MATNR. READ TABLE LT_MAKT WITH KEY MATNR = LT_MARA-MATNR. IF SY-SUBRC EQ 0. Z_RFC001_TAB01-MAKTX = LT_MAKT-MAKTX. ENDIF. READ TABLE LT_MABA WITH KEY MATNR = LT_MARA-MATNR. IF SY-SUBRC EQ 0. Z_RFC001_TAB01-MODEL = LT_MABA-MODEL. Z_RFC001_TAB01-MANUFACT = LT_MABA-MANUFACT. ENDIF. READ TABLE LT_LIPSTMP WITH KEY MATNR = LT_MARA-MATNR CHARG = LT_MCHB-CHARG. IF SY-SUBRC EQ 0. Z_RFC001_TAB01-MENGE = LT_MCHB-CLABS - LT_LIPSTMP-LFIMG. ELSE. Z_RFC001_TAB01-MENGE = LT_MCHB-CLABS. ENDIF. Z_RFC001_TAB01-MEINS = LT_MARA-MEINS. Z_RFC001_TAB01-CHARG = LT_MCHB-CHARG. READ TABLE LT_MCH1 WITH KEY CHARG = Z_RFC001_TAB01-CHARG MATNR = Z_RFC001_TAB01-MATNR. Z_RFC001_TAB01-VFDAT = LT_MCH1-VFDAT. Z_RFC001_TAB01-STOCK_STATUS = '非限制'. Z_RFC001_TAB01-YLBZGLM = ''. APPEND Z_RFC001_TAB01. CLEAR LT_MCHB. CLEAR LT_MAKT. CLEAR LT_MCH1. CLEAR LT_MAKT. CLEAR LT_LIPSTMP. ENDLOOP. CLEAR LT_MARA. ENDLOOP. REFRESH LT_MARA. REFRESH LT_MAKT. REFRESH LT_MCH1. REFRESH LT_MABA. "REFRESH LT_MSEG. REFRESH LT_MCHB. ENDFUNCTION. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/1650.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。