采购资讯记录报表

  1 ************************************************************************
  2 * Program Name      :
  3 * Descriptions      :
  4 * T-Code            :
  5 * Updates Tables    :
  6 * Input  Parameters :
  7 * Output Parameters :
  8 * Return Codes      :
  9 * Special Logic     :
 10 * Includes          :
 11 "表:TABLES:MSEG,LFA1,MARA,EKPO,EKKO,MARD,EKBE,EKET.
 12 ************************************************************************
 13 * Modification Log
 14 ************************************************************************
 15 *   Date   Ver. Programmer   Descriptions
 16 * -------- ---- ------------ -------------------------------------------
 17 * 201 1.0          Original Create
 18 *
 19 ************************************************************************
 20 REPORT ZMMR501 NO STANDARD PAGE HEADING
 21                  MESSAGE-ID 00 LINE-SIZE 177 LINE-COUNT 200.
 22 ***********************************************************************
 23 * Tables Definitions
 24 ************************************************************************
 25 *TABLES:.
 26 
 27 TABLES: eina,eine,konp,a017,lfa1,makt,marc.
 28 ************************************************************************
 29 * Data Definitions
 30 ************************************************************************
 31 DATA: BEGIN OF alv_data occurs 0,
 32 lifnr LIKE a017-lifnr,  "供應商帳戶號碼
 33 name1 LIKE lfa1-name1," 供应商简称
 34 lfa1_sortl LIKE lfa1-sortl," 供应商搜索条件
 35 matnr LIKE a017-matnr,  "物料號碼
 36 maktx LIKE makt-maktx,"物料说明
 37 ekorg LIKE eine-ekorg,  "採購組織
 38 werks LIKE eine-werks,  "工廠
 39 esokz LIKE a017-esokz,  "採購資訊記錄種類
 40 txz01 LIKE eina-txz01,"短文
 41 sortl LIKE eina-sortl,"排序条件
 42 datbi LIKE a017-datbi,  "條件記錄的有效期限
 43 datab LIKE a017-datab,  "條件記錄的生效日期
 44 kschl LIKE konp-kschl,  "條件類型
 45 knumh LIKE konp-knumh,  "條件記錄號碼
 46 kopos LIKE konp-kopos,  "條件的序號
 47 kbetr LIKE konp-kbetr,  "條件金額或百分比
 48 konwa LIKE konp-konwa,  "條件單位
 49 kpein LIKE konp-kpein,  "條件定價單位
 50 mwsk1 LIKE konp-mwsk1,  "進項稅/銷項稅碼
 51 loevm_ko LIKE konp-loevm_ko, "條件項目的刪除指示碼
 52 infnr LIKE eina-infnr,  "採購資訊記錄的號碼
 53 matkl LIKE eina-matkl,  "物料群組
 54 loekz LIKE eina-loekz,  "完整采购资讯记录
 55 loekz1 LIKE eine-loekz,  "完整采购资讯记录
 56 erdat LIKE eina-erdat,  "記錄建立日期
 57 ernam LIKE eina-ernam,  "物件建立者的姓名
 58 mahn1 LIKE eina-mahn1,  "第一次催單天數
 59 mahn2 LIKE eina-mahn2,  "第二次催單天數
 60 mahn3 LIKE eina-mahn3,  "第三次催單天數
 61 urzla LIKE eina-urzla,  "原產地證明的發貨國家
 62 lmein LIKE eina-lmein,  "基礎計量單位
 63 ekgrp LIKE eine-ekgrp,  "採購群組
 64 waers LIKE eine-waers,  "幣別碼
 65 minbm LIKE eine-minbm,  "最小採購單數量
 66 norbm LIKE eine-norbm,  "標準採購單數量
 67 aplfz LIKE eine-aplfz,  "計劃交貨時間
 68 bstyp LIKE eine-bstyp,  "採購文件種類
 69 ebeln LIKE eine-ebeln,  "採購文件號碼
 70 ebelp LIKE eine-ebelp,  "採購文件的項目號碼
 71 datlb LIKE eine-datlb,  "文件的日期
 72 netpr LIKE eine-netpr,  "採購資訊記錄中的淨價
 73 peinh LIKE eine-peinh,  "價格單位
 74 bprme LIKE eine-bprme,  "採購單的計價單位
 75 prdat LIKE eine-prdat,  "價格有效期限
 76 mwskz LIKE eine-mwskz,  "進項稅/銷項稅碼
 77 aut_source LIKE eine-aut_source,  "與自動採購相關
 78 lvorm LIKE marc-lvorm,"为物料加注删除旗标
 79 dismm LIKE marc-dismm,"MRP 类型
 80 dispo LIKE marc-dispo,"MRP 控制员
 81 plifz LIKE marc-plifz,"MRP 计划交货天数
 82 beskz LIKE marc-beskz," 采购类型
 83 sobsl LIKE marc-sobsl," 特殊采购类型
 84 END OF alv_data.
 85 
 86 DATA:pro_data LIKE alv_data occurs 0 WITH HEADER LINE.
 87 DATA:alv_data2 LIKE alv_data occurs 0 WITH HEADER LINE.
 88 
 89 DATA: gs_layout TYPE slis_layout_alv,
 90           gt_fieldcat TYPE slis_t_fieldcat_alv ,"with header line.
 91           wa_fieldcat TYPE slis_fieldcat_alv.
 92 ************************************************************************
 93 * Includes Module
 94 ************************************************************************
 95 
 96 ************************************************************************
 97 * Selection Screen
 98 ************************************************************************
 99 SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-b01.
100 
101   PARAMETERS:c_pro AS CHECKBOX DEFAULT 'X'," 包含制程委外
102                       c_weight AS CHECKBOX DEFAULT 'X'." 查看有效资料
103 
104   PARAMETERS:p_ekorg LIKE eine-ekorg DEFAULT '2000' OBLIGATORY."采购组织
105 
106 
107 SELECT-OPTIONS:
108       s_werks FOR eine-werks,
109       s_loev_k FOR konp-loevm_ko DEFAULT '' ," 条件是否删除
110       s_loekz FOR eina-loekz DEFAULT '',"完整采购资讯记录
111       s_loekz1 FOR eine-loekz DEFAULT ''," 采购组织上删除旗标
112       s_esokz FOR a017-esokz,"采购资讯记录种类
113       s_infnr FOR eina-infnr,
114       s_matnr FOR a017-matnr,
115       s_lifnr FOR a017-lifnr,
116       s_datbi FOR a017-datbi,
117       s_datab FOR a017-datab,
118       s_kschl FOR a017-kschl,
119       s_matkl FOR eina-matkl.  "物料群組
120 
121 SELECTION-SCREEN END OF BLOCK b1.
122 
123 ************************************************************************
124 * Initialization
125 ************************************************************************
126 INITIALIZATION.
127 
128 ************************************************************************
129 * At Selection Screen
130 ************************************************************************
131 AT SELECTION-SCREEN.
132 
133 ************************************************************************
134 * At Selection Screen Output
135 ************************************************************************
136 AT SELECTION-SCREEN OUTPUT.
137 
138 ************************************************************************
139 * Report Format
140 ************************************************************************
141 TOP-OF-PAGE.
142 
143 END-OF-PAGE.
144 ************************************************************************
145 * Main Process
146 ************************************************************************
147 START-OF-SELECTION.
148      PERFORM get_data.
149      PERFORM get_col.
150      PERFORM alv_show.
151 END-OF-SELECTION.
152 
153 *&---------------------------------------------------------------------*
154 *& Form GET_DATA
155 *&---------------------------------------------------------------------*
156 *& text
157 *&---------------------------------------------------------------------*
158 *& -->  p1        text
159 *& <--  p2        text
160 *&---------------------------------------------------------------------*
161 FORM GET_DATA .
162  DATA: l_index LIKE sy-tabix,
163            l_infnr LIKE eine-infnr,
164            l_datab LIKE a017-datab.
165   gs_layout-colwidth_optimize = 'X'.
166 
167   CLEAR:alv_data[],alv_data,alv_data2[],alv_data,pro_data[],pro_data.
168   SELECT a017~lifnr,a017~matnr,eine~ekorg,
169             lfa1~name1,lfa1~sortl as lfa1_sortl,
170             a017~esokz,a017~datbi,
171             a017~datab,konp~kschl,
172             konp~knumh,konp~kopos,
173             konp~kbetr,konp~konwa,
174             konp~kpein,konp~mwsk1,
175             konp~loevm_ko,
176             eina~infnr,eina~matkl,eina~loekz,
177             eina~urzla,eina~lmein,eina~mahn1,
178             eina~mahn2,eina~mahn3,
179             eine~erdat,
180             eine~ekgrp,eine~waers,eine~minbm,
181             eine~bstyp,eine~ebeln,eine~ernam,
182             eine~ebelp,eine~datlb,eine~netpr,
183             eine~peinh, eine~bprme,eine~prdat,
184             eine~mwskz,eine~aut_source,
185             eine~norbm,eine~werks,eine~loekz AS loekz1
186    FROM a017
187    LEFT JOIN konp ON konp~knumh EQ a017~knumh
188    INNER JOIN eina ON eina~matnr EQ a017~matnr AND
189                                   eina~lifnr EQ a017~lifnr
190    INNER  JOIN eine ON eine~infnr EQ eina~infnr AND
191                                 eine~ekorg EQ a017~ekorg  AND
192                                 eine~esokz EQ a017~esokz AND
193                                 eine~werks EQ a017~werks
194    INNER JOIN lfa1 ON lfa1~lifnr EQ a017~lifnr
195    INTO  CORRESPONDING FIELDS OF TABLE @alv_data
196    WHERE a017~ekorg EQ @p_ekorg AND
197                a017~werks IN @s_werks AND
198                a017~lifnr IN @s_lifnr AND
199                a017~matnr IN @s_matnr AND
200                a017~esokz IN @s_esokz AND
201                a017~datbi IN @s_datbi AND
202                a017~datab IN @s_datab AND
203                konp~kschl IN @s_kschl AND
204                konp~loevm_ko IN @s_loev_k AND
205                eina~infnr IN @s_infnr AND
206                eina~matnr IN @s_matnr AND
207                eina~loekz IN @s_loekz AND
208                eine~loekz IN @s_loekz1 AND
209                eine~esokz IN @s_esokz AND
210                eina~matkl IN @s_matkl.
211 *               makt~spras = @sy-langu.
212 
213 "工厂为空的采购咨询记录
214 SELECT a018~lifnr,a018~matnr,eine~ekorg,
215             lfa1~name1,lfa1~sortl as lfa1_sortl,
216             a018~esokz,a018~datbi,
217             a018~datab,konp~kschl,
218             konp~knumh,konp~kopos,
219             konp~kbetr,konp~konwa,
220             konp~kpein,konp~mwsk1,
221             konp~loevm_ko,
222             eina~infnr,eina~matkl,eina~loekz,
223             eina~urzla,eina~lmein,eina~mahn1,
224             eina~mahn2,eina~mahn3,
225             eine~erdat,
226             eine~ekgrp,eine~waers,eine~minbm,
227             eine~bstyp,eine~ebeln,eine~ernam,
228             eine~ebelp,eine~datlb,eine~netpr,
229             eine~peinh, eine~bprme,eine~prdat,
230             eine~mwskz,eine~aut_source,
231             eine~norbm,eine~werks,eine~loekz AS loekz1
232    FROM a018
233    LEFT JOIN konp ON konp~knumh EQ a018~knumh
234    INNER JOIN eina ON eina~matnr EQ a018~matnr AND
235                                   eina~lifnr EQ a018~lifnr
236    INNER  JOIN eine ON eine~infnr EQ eina~infnr AND
237                                 eine~ekorg EQ a018~ekorg  AND
238                                 eine~esokz EQ a018~esokz "AND
239 *                                eine~werks EQ a018~werks
240    INNER JOIN lfa1 ON lfa1~lifnr EQ a018~lifnr
241    INTO  CORRESPONDING FIELDS OF TABLE @alv_data2
242    WHERE a018~ekorg EQ @p_ekorg AND
243 *               a018~werks IN @s_werks AND
244                a018~lifnr IN @s_lifnr AND
245                a018~matnr IN @s_matnr AND
246                a018~esokz IN @s_esokz AND
247                a018~datbi IN @s_datbi AND
248                a018~datab IN @s_datab AND
249                konp~kschl IN @s_kschl AND
250                konp~loevm_ko IN @s_loev_k AND
251                eina~infnr IN @s_infnr AND
252                eina~matnr IN @s_matnr AND
253                eina~loekz IN @s_loekz AND
254                eine~loekz IN @s_loekz1 AND
255                eine~esokz IN @s_esokz AND
256                eina~matkl IN @s_matkl.
257 
258   APPEND LINES OF alv_data2[] TO alv_data[].
259 
260   "-->制程委外采购资讯记录查询
261   IF c_pro EQ 'X'.
262         SELECT a025~lifnr,eine~ekorg,
263             lfa1~name1,lfa1~sortl as lfa1_sortl,
264             a025~esokz,a025~datbi,
265             a025~datab,konp~kschl,
266             konp~knumh,konp~kopos,
267             konp~kbetr,konp~konwa,
268             konp~kpein,konp~mwsk1,
269             konp~loevm_ko,
270             eina~infnr,eina~matkl,eina~loekz,
271             eina~urzla,eina~lmein,eina~mahn1,
272             eina~mahn2,eina~mahn3,
273             eina~erdat,eina~txz01,eina~sortl,
274             eine~ekgrp,eine~waers,eine~minbm,
275             eine~bstyp,eine~ebeln,eine~ernam,"eine~aplfz,
276             eine~ebelp,eine~datlb,eine~netpr,
277             eine~peinh, eine~bprme,eine~prdat,
278             eine~mwskz,eine~aut_source,
279             eine~norbm,eine~werks,eine~loekz AS loekz1
280    FROM a025
281    LEFT JOIN konp ON konp~knumh EQ a025~knumh
282    INNER JOIN eina ON eina~infnr EQ a025~infnr AND
283                                   eina~lifnr EQ a025~lifnr
284    INNER JOIN eine ON eine~infnr EQ eina~infnr AND
285                                 eine~ekorg EQ a025~ekorg  AND
286                                 eine~werks EQ a025~werks AND
287                                 eine~esokz EQ a025~esokz
288    INNER JOIN lfa1 ON lfa1~lifnr EQ a025~lifnr
289    INTO  CORRESPONDING FIELDS OF TABLE @pro_data
290    WHERE a025~ekorg EQ @p_ekorg AND
291                a025~werks IN @s_werks AND
292                a025~lifnr IN @s_lifnr AND
293                a025~esokz IN @s_esokz AND
294                a025~datbi IN @s_datbi AND
295                a025~datab IN @s_datab AND
296                konp~kschl IN @s_kschl AND
297                konp~loevm_ko IN @s_loev_k AND
298                eina~infnr IN @s_infnr AND
299                eina~matnr IN @s_matnr AND
300                eina~loekz IN @s_loekz AND
301                eine~loekz IN @s_loekz1 AND
302                eine~esokz IN @s_esokz AND
303                eina~matkl IN @s_matkl.
304 
305      APPEND LINES OF pro_data[] TO alv_data[].
306   ENDIF.
307     SORT alv_data by infnr datbi  DESCENDING.
308     CLEAR:l_datab,l_infnr.
309     LOOP AT alv_data.
310         l_index = sy-tabix.
311 
312         SELECT SINGLE eine~aplfz  FROM eine
313            INTO alv_data-aplfz
314            WHERE ekorg EQ alv_data-ekorg AND
315                        werks EQ alv_data-werks AND
316                        infnr EQ alv_data-infnr AND
317                        esokz EQ alv_data-esokz.
318 
319         IF c_weight EQ 'X' AND (
320                               ( alv_data-infnr EQ l_infnr AND
321                               alv_data-datbi < l_datab ) OR
322                               ( alv_data-loevm_ko EQ 'X') OR
323                               alv_data-datab > sy-datum ).
324 
325           DELETE alv_data INDEX l_index.
326           CONTINUE.
327         ENDIF.
328         l_datab = alv_data-datab.l_infnr = alv_data-infnr.
329 
330         IF alv_data-matnr NE ''.
331             SELECT SINGLE lvorm,dismm,dispo,plifz,beskz,sobsl
332              FROM marc
333              INTO (@alv_data-lvorm,@alv_data-dismm,@alv_data-dispo,
334                        @alv_data-plifz,@alv_data-beskz,@alv_data-sobsl)
335              WHERE matnr EQ @alv_data-matnr AND
336                          werks EQ @alv_data-werks.
337 
338            IF sy-subrc <> 0.
339              SELECT SINGLE lvorm,dismm,dispo,plifz,beskz,sobsl
340              FROM marc
341              INTO (@alv_data-lvorm,@alv_data-dismm,@alv_data-dispo,
342                        @alv_data-plifz,@alv_data-beskz,@alv_data-sobsl)
343              WHERE matnr EQ @alv_data-matnr AND
344                          werks EQ @p_ekorg.
345            ENDIF.
346 
347 
348            SELECT SINGLE maktx
349              FROM makt INTO alv_data-maktx
350              WHERE matnr EQ alv_data-matnr AND
351                         makt~spras = sy-langu.
352 
353         ENDIF.
354 
355          IF alv_data-kschl EQ 'ZZD1' OR alv_data-kschl EQ 'ZZD2'.
356            alv_data-kbetr = alv_data-kbetr / 10.
357          ENDIF.
358 
359         MODIFY alv_data INDEX l_index.
360     ENDLOOP.
361 ENDFORM.
362 
363 FORM GET_COL.
364       DATA: L_REPID    TYPE SY-REPID,
365           L_INCLNAME TYPE TRDIR-NAME,
366           L_IDX      LIKE SY-TABIX.
367     CLEAR: GT_FIELDCAT[], WA_FIELDCAT.
368 
369     L_REPID = L_INCLNAME = SY-CPROG.
370 
371     CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
372       EXPORTING
373         I_PROGRAM_NAME         = L_REPID
374         I_INTERNAL_TABNAME     = 'ALV_DATA'
375         I_INCLNAME             = L_INCLNAME
376       CHANGING
377         CT_FIELDCAT            = GT_FIELDCAT
378       EXCEPTIONS
379         INCONSISTENT_INTERFACE = 1
380         PROGRAM_ERROR          = 2
381         OTHERS                 = 3.
382    LOOP AT gt_fieldcat INTO wa_fieldcat.
383       l_idx = sy-tabix.
384         CASE wa_fieldcat-fieldname.
385           WHEN 'ESOKZ'.
386             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
387             wa_fieldcat-seltext_l = '资讯种类'.
388             wa_fieldcat-ddictxt = 'S'.
389           WHEN 'LOEVM_KO'.
390             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
391             wa_fieldcat-seltext_l = '条件删除指示码'.
392             wa_fieldcat-ddictxt = 'S'.
393           WHEN 'LOEKZ'.
394             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
395             wa_fieldcat-seltext_l = '完整采购资讯记录'.
396             wa_fieldcat-ddictxt = 'S'.
397           WHEN 'LOEKZ1'.
398             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
399             wa_fieldcat-seltext_l = '采购组织是否删除'.
400             wa_fieldcat-ddictxt = 'S'.
401           WHEN 'EKGRP'.
402           WHEN 'ALIFZ'.
403             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
404             wa_fieldcat-seltext_l = '采购群组'.
405             wa_fieldcat-ddictxt = 'S'.
406           WHEN 'LVORM'.
407             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
408             wa_fieldcat-seltext_l = '料号已删除'.
409             wa_fieldcat-ddictxt = 'S'.
410           WHEN 'DISMM'.
411             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
412             wa_fieldcat-seltext_l = 'MRP类型'.
413             wa_fieldcat-ddictxt = 'S'.
414           WHEN 'PLIFZ'.
415             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
416             wa_fieldcat-seltext_l = 'MRP计划交货天数'.
417             wa_fieldcat-ddictxt = 'S'.
418           WHEN 'SOBSL'.
419             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
420             wa_fieldcat-seltext_l = '特殊采购类型'.
421             wa_fieldcat-ddictxt = 'S'.
422           WHEN 'LFA1_SORTL'.
423             wa_fieldcat-seltext_s = wa_fieldcat-seltext_m =
424             wa_fieldcat-seltext_l = '供应商简称'.
425             wa_fieldcat-ddictxt = 'S'.
426         ENDCASE.
427 *      CLEAR wa_fieldcat-key.
428       MODIFY gt_fieldcat FROM wa_fieldcat INDEX l_idx.
429     ENDLOOP.
430 ENDFORM.
431 
432   FORM ALV_SHOW.
433       DATA: LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
434       CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
435             EXPORTING
436                 I_CALLBACK_PROGRAM = SY-REPID
437                 IS_LAYOUT                   = GS_LAYOUT
438                 IT_FIELDCAT                  = GT_FIELDCAT[]
439                  I_SAVE                         = 'A'
440                TABLES
441                    T_OUTTAB                   = ALV_DATA
442                 EXCEPTIONS
443                   PROGRAM_ERROR      = 1
444                 OTHERS                     = 2.
445 ENDFORM.

IN

************************************************************************
* Program Name      :
* Descriptions      :
* T-Code            :
* Updates Tables    :
* Input  Parameters :
* Output Parameters :
* Return Codes      :
* Special Logic     :
* Includes          :
"表:TABLES:MSEG,LFA1,MARA,EKPO,EKKO,MARD,EKBE,EKET.
************************************************************************
* Modification Log
************************************************************************
*   Date   Ver. Programmer   Descriptions
* -------- ---- ------------ -------------------------------------------
* 201 1.0          Original Create
*
************************************************************************
REPORT ZMMR501 NO STANDARD PAGE HEADING
                 MESSAGE-ID 00 LINE-SIZE 177 LINE-COUNT 200.
***********************************************************************
* Tables Definitions
************************************************************************
*TABLES:.

TABLESeina,eine,konp,a017,lfa1,makt,marc.
************************************************************************
* Data Definitions
************************************************************************
DATABEGIN OF alv_data occurs 0,
lifnr LIKE a017-lifnr,  "供應商帳戶號碼
name1 LIKE lfa1-name1," 供应商简称
lfa1_sortl LIKE lfa1-sortl," 供应商搜索条件
matnr LIKE a017-matnr,  "物料號碼
maktx LIKE makt-maktx,"物料说明
ekorg LIKE eine-ekorg,  "採購組織
werks LIKE eine-werks,  "工廠
esokz LIKE a017-esokz,  "採購資訊記錄種類
txz01 LIKE eina-txz01,"短文
sortl LIKE eina-sortl,"排序条件
datbi LIKE a017-datbi,  "條件記錄的有效期限
datab LIKE a017-datab,  "條件記錄的生效日期
kschl LIKE konp-kschl,  "條件類型
knumh LIKE konp-knumh,  "條件記錄號碼
kopos LIKE konp-kopos,  "條件的序號
kbetr LIKE konp-kbetr,  "條件金額或百分比
konwa LIKE konp-konwa,  "條件單位
kpein LIKE konp-kpein,  "條件定價單位
mwsk1 LIKE konp-mwsk1,  "進項稅/銷項稅碼
loevm_ko LIKE konp-loevm_ko"條件項目的刪除指示碼
infnr LIKE eina-infnr,  "採購資訊記錄的號碼
matkl LIKE eina-matkl,  "物料群組
loekz LIKE eina-loekz,  "完整采购资讯记录
loekz1 LIKE eine-loekz,  "完整采购资讯记录
erdat LIKE eina-erdat,  "記錄建立日期
ernam LIKE eina-ernam,  "物件建立者的姓名
mahn1 LIKE eina-mahn1,  "第一次催單天數
mahn2 LIKE eina-mahn2,  "第二次催單天數
mahn3 LIKE eina-mahn3,  "第三次催單天數
urzla LIKE eina-urzla,  "原產地證明的發貨國家
lmein LIKE eina-lmein,  "基礎計量單位
ekgrp LIKE eine-ekgrp,  "採購群組
waers LIKE eine-waers,  "幣別碼
minbm LIKE eine-minbm,  "最小採購單數量
norbm LIKE eine-norbm,  "標準採購單數量
aplfz LIKE eine-aplfz,  "計劃交貨時間
bstyp LIKE eine-bstyp,  "採購文件種類
ebeln LIKE eine-ebeln,  "採購文件號碼
ebelp LIKE eine-ebelp,  "採購文件的項目號碼
datlb LIKE eine-datlb,  "文件的日期
netpr LIKE eine-netpr,  "採購資訊記錄中的淨價
peinh LIKE eine-peinh,  "價格單位
bprme LIKE eine-bprme,  "採購單的計價單位
prdat LIKE eine-prdat,  "價格有效期限
mwskz LIKE eine-mwskz,  "進項稅/銷項稅碼
aut_source LIKE eine-aut_source,  "與自動採購相關
lvorm LIKE marc-lvorm,"为物料加注删除旗标
dismm LIKE marc-dismm,"MRP 类型
dispo LIKE marc-dispo,"MRP 控制员
plifz LIKE marc-plifz,"MRP 计划交货天数
beskz LIKE marc-beskz," 采购类型
sobsl LIKE marc-sobsl," 特殊采购类型
END OF alv_data.

DATA:pro_data LIKE alv_data occurs WITH HEADER LINE.
DATA:alv_data2 LIKE alv_data occurs WITH HEADER LINE.

DATAgs_layout TYPE slis_layout_alv,
          gt_fieldcat TYPE slis_t_fieldcat_alv ,"with header line.
          wa_fieldcat TYPE slis_fieldcat_alv.
************************************************************************
* Includes Module
************************************************************************

************************************************************************
* Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-b01.

  PARAMETERS:c_pro AS CHECKBOX DEFAULT 'X'," 包含制程委外
                      c_weight AS CHECKBOX DEFAULT 'X'." 查看有效资料

  PARAMETERS:p_ekorg LIKE eine-ekorg DEFAULT '2000' OBLIGATORY."采购组织


SELECT-OPTIONS:
      s_werks FOR eine-werks,
      s_loev_k FOR konp-loevm_ko DEFAULT '' ," 条件是否删除
      s_loekz FOR eina-loekz DEFAULT '',"完整采购资讯记录
      s_loekz1 FOR eine-loekz DEFAULT ''," 采购组织上删除旗标
      s_esokz FOR a017-esokz,"采购资讯记录种类
      s_infnr FOR eina-infnr,
      s_matnr FOR a017-matnr,
      s_lifnr FOR a017-lifnr,
      s_datbi FOR a017-datbi,
      s_datab FOR a017-datab,
      s_kschl FOR a017-kschl,
      s_matkl FOR eina-matkl.  "物料群組

SELECTION-SCREEN END OF BLOCK b1.

************************************************************************
* Initialization
************************************************************************
INITIALIZATION.

************************************************************************
* At Selection Screen
************************************************************************
AT SELECTION-SCREEN.

************************************************************************
* At Selection Screen Output
************************************************************************
AT SELECTION-SCREEN OUTPUT.

************************************************************************
* Report Format
************************************************************************
TOP-OF-PAGE.

END-OF-PAGE.
************************************************************************
* Main Process
************************************************************************
START-OF-SELECTION.
     PERFORM get_data.
     PERFORM get_col.
     PERFORM alv_show.
END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM GET_DATA .
 DATAl_index LIKE sy-tabix,
           l_infnr LIKE eine-infnr,
           l_datab LIKE a017-datab.
  gs_layout-colwidth_optimize 'X'.

  CLEAR:alv_data[],alv_data,alv_data2[],alv_data,pro_data[],pro_data.
  SELECT a017~lifnr,a017~matnr,eine~ekorg,
            lfa1~name1,lfa1~sortl as lfa1_sortl,
            a017~esokz,a017~datbi,
            a017~datab,konp~kschl,
            konp~knumh,konp~kopos,
            konp~kbetr,konp~konwa,
            konp~kpein,konp~mwsk1,
            konp~loevm_ko,
            eina~infnr,eina~matkl,eina~loekz,
            eina~urzla,eina~lmein,eina~mahn1,
            eina~mahn2,eina~mahn3,
            eine~erdat,
            eine~ekgrp,eine~waers,eine~minbm,
            eine~bstyp,eine~ebeln,eine~ernam,
            eine~ebelp,eine~datlb,eine~netpr,
            eine~peinheine~bprme,eine~prdat,
            eine~mwskz,eine~aut_source,
            eine~norbm,eine~werks,eine~loekz AS loekz1
   FROM a017
   LEFT JOIN konp ON konp~knumh EQ a017~knumh
   INNER JOIN eina ON eina~matnr EQ a017~matnr AND
                                  eina~lifnr EQ a017~lifnr
   INNER  JOIN eine ON eine~infnr EQ eina~infnr AND
                                eine~ekorg EQ a017~ekorg  AND
                                eine~esokz EQ a017~esokz AND
                                eine~werks EQ a017~werks
   INNER JOIN lfa1 ON lfa1~lifnr EQ a017~lifnr
   INTO  CORRESPONDING FIELDS OF TABLE @alv_data
   WHERE a017~ekorg EQ @p_ekorg AND
               a017~werks IN @s_werks AND
               a017~lifnr IN @s_lifnr AND
               a017~matnr IN @s_matnr AND
               a017~esokz IN @s_esokz AND
               a017~datbi IN @s_datbi AND
               a017~datab IN @s_datab AND
               konp~kschl IN @s_kschl AND
               konp~loevm_ko IN @s_loev_k AND
               eina~infnr IN @s_infnr AND
               eina~matnr IN @s_matnr AND
               eina~loekz IN @s_loekz AND
               eine~loekz IN @s_loekz1 AND
               eine~esokz IN @s_esokz AND
               eina~matkl IN @s_matkl.
*               makt~spras = @sy-langu.

"工厂为空的采购咨询记录
SELECT a018~lifnr,a018~matnr,eine~ekorg,
            lfa1~name1,lfa1~sortl as lfa1_sortl,
            a018~esokz,a018~datbi,
            a018~datab,konp~kschl,
            konp~knumh,konp~kopos,
            konp~kbetr,konp~konwa,
            konp~kpein,konp~mwsk1,
            konp~loevm_ko,
            eina~infnr,eina~matkl,eina~loekz,
            eina~urzla,eina~lmein,eina~mahn1,
            eina~mahn2,eina~mahn3,
            eine~erdat,
            eine~ekgrp,eine~waers,eine~minbm,
            eine~bstyp,eine~ebeln,eine~ernam,
            eine~ebelp,eine~datlb,eine~netpr,
            eine~peinheine~bprme,eine~prdat,
            eine~mwskz,eine~aut_source,
            eine~norbm,eine~werks,eine~loekz AS loekz1
   FROM a018
   LEFT JOIN konp ON konp~knumh EQ a018~knumh
   INNER JOIN eina ON eina~matnr EQ a018~matnr AND
                                  eina~lifnr EQ a018~lifnr
   INNER  JOIN eine ON eine~infnr EQ eina~infnr AND
                                eine~ekorg EQ a018~ekorg  AND
                                eine~esokz EQ a018~esokz "AND
*                                eine~werks EQ a018~werks
   INNER JOIN lfa1 ON lfa1~lifnr EQ a018~lifnr
   INTO  CORRESPONDING FIELDS OF TABLE @alv_data2
   WHERE a018~ekorg EQ @p_ekorg AND
*               a018~werks IN @s_werks AND
               a018~lifnr IN @s_lifnr AND
               a018~matnr IN @s_matnr AND
               a018~esokz IN @s_esokz AND
               a018~datbi IN @s_datbi AND
               a018~datab IN @s_datab AND
               konp~kschl IN @s_kschl AND
               konp~loevm_ko IN @s_loev_k AND
               eina~infnr IN @s_infnr AND
               eina~matnr IN @s_matnr AND
               eina~loekz IN @s_loekz AND
               eine~loekz IN @s_loekz1 AND
               eine~esokz IN @s_esokz AND
               eina~matkl IN @s_matkl.

  APPEND LINES OF alv_data2[] TO alv_data[].

  "-->制程委外采购资讯记录查询
  IF c_pro EQ 'X'.
        SELECT a025~lifnr,eine~ekorg,
            lfa1~name1,lfa1~sortl as lfa1_sortl,
            a025~esokz,a025~datbi,
            a025~datab,konp~kschl,
            konp~knumh,konp~kopos,
            konp~kbetr,konp~konwa,
            konp~kpein,konp~mwsk1,
            konp~loevm_ko,
            eina~infnr,eina~matkl,eina~loekz,
            eina~urzla,eina~lmein,eina~mahn1,
            eina~mahn2,eina~mahn3,
            eina~erdat,eina~txz01,eina~sortl,
            eine~ekgrp,eine~waers,eine~minbm,
            eine~bstyp,eine~ebeln,eine~ernam,"eine~aplfz,
            eine~ebelp,eine~datlb,eine~netpr,
            eine~peinheine~bprme,eine~prdat,
            eine~mwskz,eine~aut_source,
            eine~norbm,eine~werks,eine~loekz AS loekz1
   FROM a025
   LEFT JOIN konp ON konp~knumh EQ a025~knumh
   INNER JOIN eina ON eina~infnr EQ a025~infnr AND
                                  eina~lifnr EQ a025~lifnr
   INNER JOIN eine ON eine~infnr EQ eina~infnr AND
                                eine~ekorg EQ a025~ekorg  AND
                                eine~werks EQ a025~werks AND
                                eine~esokz EQ a025~esokz
   INNER JOIN lfa1 ON lfa1~lifnr EQ a025~lifnr
   INTO  CORRESPONDING FIELDS OF TABLE @pro_data
   WHERE a025~ekorg EQ @p_ekorg AND
               a025~werks IN @s_werks AND
               a025~lifnr IN @s_lifnr AND
               a025~esokz IN @s_esokz AND
               a025~datbi IN @s_datbi AND
               a025~datab IN @s_datab AND
               konp~kschl IN @s_kschl AND
               konp~loevm_ko IN @s_loev_k AND
               eina~infnr IN @s_infnr AND
               eina~matnr IN @s_matnr AND
               eina~loekz IN @s_loekz AND
               eine~loekz IN @s_loekz1 AND
               eine~esokz IN @s_esokz AND
               eina~matkl IN @s_matkl.

     APPEND LINES OF pro_data[] TO alv_data[].
  ENDIF.
    SORT alv_data by infnr datbi  DESCENDING.
    CLEAR:l_datab,l_infnr.
    LOOP AT alv_data.
        l_index sy-tabix.

        SELECT SINGLE eine~aplfz  FROM eine
           INTO alv_data-aplfz
           WHERE ekorg EQ alv_data-ekorg AND
                       werks EQ alv_data-werks AND
                       infnr EQ alv_data-infnr AND
                       esokz EQ alv_data-esokz.

        IF c_weight EQ 'X' AND (
                              alv_data-infnr EQ l_infnr AND
                              alv_data-datbi < l_datab OR
                              alv_data-loevm_ko EQ 'X'OR
                              alv_data-datab > sy-datum ).

          DELETE alv_data INDEX l_index.
          CONTINUE.
        ENDIF.
        l_datab alv_data-datab.l_infnr alv_data-infnr.

        IF alv_data-matnr NE ''.
            SELECT SINGLE lvorm,dismm,dispo,plifz,beskz,sobsl
             FROM marc
             INTO (@alv_data-lvorm,@alv_data-dismm,@alv_data-dispo,
                       @alv_data-plifz,@alv_data-beskz,@alv_data-sobsl)
             WHERE matnr EQ @alv_data-matnr AND
                         werks EQ @alv_data-werks.

           IF sy-subrc <> 0.
             SELECT SINGLE lvorm,dismm,dispo,plifz,beskz,sobsl
             FROM marc
             INTO (@alv_data-lvorm,@alv_data-dismm,@alv_data-dispo,
                       @alv_data-plifz,@alv_data-beskz,@alv_data-sobsl)
             WHERE matnr EQ @alv_data-matnr AND
                         werks EQ @p_ekorg.
           ENDIF.


           SELECT SINGLE maktx
             FROM makt INTO alv_data-maktx
             WHERE matnr EQ alv_data-matnr AND
                        makt~spras sy-langu.

        ENDIF.

         IF alv_data-kschl EQ 'ZZD1' OR alv_data-kschl EQ 'ZZD2'.
           alv_data-kbetr alv_data-kbetr / 10.
         ENDIF.

        MODIFY alv_data INDEX l_index.
    ENDLOOP.
ENDFORM.

FORM GET_COL.
      DATAL_REPID    TYPE SY-REPID,
          L_INCLNAME TYPE TRDIR-NAME,
          L_IDX      LIKE SY-TABIX.
    CLEARGT_FIELDCAT[]WA_FIELDCAT.

    L_REPID L_INCLNAME SY-CPROG.

    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
        I_PROGRAM_NAME         L_REPID
        I_INTERNAL_TABNAME     'ALV_DATA'
        I_INCLNAME             L_INCLNAME
      CHANGING
        CT_FIELDCAT            GT_FIELDCAT
      EXCEPTIONS
        INCONSISTENT_INTERFACE 1
        PROGRAM_ERROR          2
        OTHERS                 3.
   LOOP AT gt_fieldcat INTO wa_fieldcat.
      l_idx sy-tabix.
        CASE wa_fieldcat-fieldname.
          WHEN 'ESOKZ'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l '资讯种类'.
            wa_fieldcat-ddictxt 'S'.
          WHEN 'LOEVM_KO'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l '条件删除指示码'.
            wa_fieldcat-ddictxt 'S'.
          WHEN 'LOEKZ'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l '完整采购资讯记录'.
            wa_fieldcat-ddictxt 'S'.
          WHEN 'LOEKZ1'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l '采购组织是否删除'.
            wa_fieldcat-ddictxt 'S'.
          WHEN 'EKGRP'.
          WHEN 'ALIFZ'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l '采购群组'.
            wa_fieldcat-ddictxt 'S'.
          WHEN 'LVORM'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l '料号已删除'.
            wa_fieldcat-ddictxt 'S'.
          WHEN 'DISMM'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l 'MRP类型'.
            wa_fieldcat-ddictxt 'S'.
          WHEN 'PLIFZ'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l 'MRP计划交货天数'.
            wa_fieldcat-ddictxt 'S'.
          WHEN 'SOBSL'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l '特殊采购类型'.
            wa_fieldcat-ddictxt 'S'.
          WHEN 'LFA1_SORTL'.
            wa_fieldcat-seltext_s wa_fieldcat-seltext_m =
            wa_fieldcat-seltext_l '供应商简称'.
            wa_fieldcat-ddictxt 'S'.
        ENDCASE.
*      CLEAR wa_fieldcat-key.
      MODIFY gt_fieldcat FROM wa_fieldcat INDEX l_idx.
    ENDLOOP.
ENDFORM.

  FORM ALV_SHOW.
      DATALS_LAYOUT TYPE SLIS_LAYOUT_ALV.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
            EXPORTING
                I_CALLBACK_PROGRAM SY-REPID
                IS_LAYOUT                   GS_LAYOUT
                IT_FIELDCAT                  GT_FIELDCAT[]
                 I_SAVE                         'A'
               TABLES
                   T_OUTTAB                   ALV_DATA
                EXCEPTIONS
                  PROGRAM_ERROR      1
                OTHERS                     2.
ENDFORM.

原文地址:https://www.cnblogs.com/Brokenshelltao/p/11437898.html