• 采购资讯记录报表


      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.

  • 相关阅读:
    接上一篇:(四) 控制反转(IOC)/ 依赖注入(DI)
    日常踩坑-------新手使用idea
    聚集索引和非聚集索引的区别
    mysql锁
    常用算法
    sql join查询语句
    bitmap原理和redis bitmap应用
    nginx反向代理、负载均衡配置
    nginx工作模式
    PHP常用设计模式
  • 原文地址:https://www.cnblogs.com/Brokenshelltao/p/11437898.html
Copyright © 2020-2023  润新知