zoukankan      html  css  js  c++  java
  • 功能:批量导入采购订单

     模板下载

     https://files.cnblogs.com/files/twttafku/%E6%89%B9%E9%87%8F%E4%B8%8A%E4%BC%A0%E9%87%87%E8%B4%AD%E8%AE%A2%E5%8D%95..rar

    REPORT  zmm079.
    *&
    *&---------------------------------------------------------------------*
    *&
    *& 批量导入采购订单
    *& 
    *&---------------------------------------------------------------------*


    DATA: g_datafile   TYPE string,             "Local ASCII Text File
          g_rtncode    TYPE i,
          w_accepted   TYPE i,
          rows         TYPE i,
          g_currentrow TYPE i.

    DATA:
      BEGIN OF itab_ok OCCURS 0,
        fid(100),
        ebelp          LIKE ekpo-ebelp,
        bsart          LIKE ekko-bsart,
        superfield(10TYPE c,
        ekorg          LIKE ekko-ekorg,
        ekgrp          LIKE ekko-ekgrp,
        bukrs          LIKE ekko-bukrs,
        ematn          LIKE mepo1211-ematn,
        menge(15)      TYPE c,

        eeind          LIKE mepo1211-eeind,
        name1          LIKE mepo1211-name1,
        charg          LIKE mepo1211-charg,
        lgobe          LIKE mepo1211-lgobe,
        netpr          LIKE  mepo1211-netpr,
        peinh          LIKE mepo1211-peinh,
        vend_mat       TYPE idnlf,
        trackingno     TYPE  bednr,

        afnam          TYPE afnam,
        order_reason   TYPE bsgru,

        sd_doc         TYPE  vbeln" CHAR  10  0 销售和分销凭证号
        itm_number     TYPE  posnr_va"    NUMC  6 0 销售凭证项目
        wbs_element    TYPE  ps_posid"    CHAR  24  0 工作分解结构元素 (WBS 元素)
        preq_no        TYPE  banfn"  CHAR  10  0 采购申请编号
        preq_item      TYPE  bnfpo"  NUMC  5 0 采购申请的项目编号
        suppl_stloc    TYPE  reslo" CHAR  4 0 库存运输订单发货存储地点

        ret_item       TYPE  retpo"退货类型
        pstyp          TYPE  pstyp,
        "ADD BY LH 20190315 SDK2019010300007
        costcenter     TYPE kostl"成本中心
        gl_account     TYPE saknr"总账科目编号
      END OF itab_ok.
    DATA:ep_ebeln LIKE ekko-ebeln,
         ep_subrc LIKE sy-subrc,
         ep_frgkx LIKE ekko-frgke.

    DATA :   it_poitem           LIKE  bapimepoitem         OCCURS    0   WITH HEADER  LINE,
             it_poitemx          LIKE  bapimepoitemx        OCCURS    0   WITH HEADER  LINE,
             it_poschedule       LIKE  bapimeposchedule     OCCURS    0   WITH HEADER  LINE,
             it_poschedulex      LIKE  bapimeposchedulx     OCCURS    0   WITH HEADER  LINE,
             ip_poheader         LIKE  bapimepoheader,
             it_pocond           LIKE  bapimepocond OCCURS WITH HEADER LINE,
             it_pocondx          LIKE  bapimepocondx OCCURS WITH HEADER LINE,

             ip_poheaderx         LIKE   bapimepoheaderx,
             i_po_changereturn   LIKE  bapiret2         OCCURS WITH HEADER LINE,
             po_poheader         LIKE bapimepoheader,
             po_poheaderx        LIKE bapimepoheaderx,

             i_po_changeitem     LIKE  bapimepoitem     OCCURS WITH HEADER LINE,
             i_po_changeitemx    LIKE  bapimepoitemx    OCCURS WITH HEADER LINE,

             i_po_poschedule     LIKE  bapimeposchedule     OCCURS    0   WITH HEADER  LINE,
             i_po_poschedulex    LIKE  bapimeposchedulx     OCCURS    0   WITH HEADER  LINE,



             it_bapimepoaccount  LIKE bapimepoaccount OCCURS WITH HEADER LINE,
             it_bapimepoaccountx LIKE bapimepoaccountx OCCURS WITH HEADER LINE,

             et_log              LIKE bapiret2   OCCURS WITH HEADER LINE.

    CLEAR:it_poitem ,it_poitemx,it_poschedule,ip_poheader,ip_poheaderx,it_poschedulex,it_pocond,it_pocondx.
    REFRESH:it_poitem ,it_poitemx,it_poschedule,it_poschedulex.



    DATA :
      BEGIN OF ith OCCURS 0,
        fid(200),
    **********  header         公司代码
        comp_code LIKE  itab_ok-bukrs,
    **********  采购凭证类型
        doc_type  LIKE  itab_ok-bsart,
    **********  供应商帐户号
        vendor    LIKE  itab_ok-superfield,
    ********** 采购组织
        purch_org LIKE  itab_ok-ekorg,
    ********** 采购组
        pur_group LIKE  itab_ok-ekgrp,
      END OF ith.



    PARAMETERS:
      p1 RADIOBUTTON  GROUP p_pr  DEFAULT 'X',
      p2 RADIOBUTTON  GROUP p_pr.


    IF p2 'X'.
      PERFORM get_doc_down.
      RETURN.
    ENDIF.





    INCLUDE zfile_xls.


    PARAMETERS: p_atochk AS CHECKBOX DEFAULT 'X'.
    PARAMETERS: p_atomrp AS CHECKBOX DEFAULT 'X'.




    PARAMETERS: p_chkprq AS CHECKBOX .





    *SORT ITXLS.
    LOOP AT itxls.
      MOVE itxls-col1 TO itab_ok-bsart"订单类型
      MOVE itxls-col2 TO itab_ok-bukrs."公司
      MOVE itxls-col3 TO itab_ok-charg."批次
      MOVE itxls-col4 TO itab_ok-ebelp."订单行项目
      MOVE itxls-col5 TO itab_ok-eeind"交货日期
      MOVE itxls-col6 TO itab_ok-ekgrp."采购组
      MOVE itxls-col7 TO itab_ok-ekorg"采购组织
      MOVE itxls-col8 TO itab_ok-ematn."物料
      MOVE itxls-col9 TO itab_ok-lgobe ."库存地点
      MOVE itxls-col10 TO itab_ok-menge."订单数量
      MOVE itxls-col11 TO itab_ok-name1."工厂
      MOVE itxls-col12 TO itab_ok-netpr ."净价
      MOVE itxls-col13 TO itab_ok-peinh"采购组织
      MOVE itxls-col14 TO itab_ok-superfield."供应商
      MOVE itxls-col15 TO itab_ok-trackingno."跟踪号
      MOVE itxls-col16 TO itab_ok-vend_mat."供应商物料
      MOVE itxls-col17 TO itab_ok-fid."导入标识
      MOVE itxls-col18 TO itab_ok-afnam."申请者
      MOVE itxls-col19 TO itab_ok-order_reason."装运条件(订单原因)

      MOVE itxls-col20 TO itab_ok-sd_doc."销售和分销凭证号
      MOVE itxls-col21 TO itab_ok-itm_number."销售凭证项目

      MOVE itxls-col22 TO itab_ok-wbs_element."工作分解结构元素 (WBS 元素)

      MOVE itxls-col23 TO itab_ok-preq_no."采购申请编号
      MOVE itxls-col24 TO itab_ok-preq_item."采购申请编号行号
      MOVE itxls-col25 TO itab_ok-suppl_stloc."发货库位
      MOVE itxls-col26 TO itab_ok-ret_item."退货类型
      MOVE itxls-col27 TO itab_ok-pstyp."项目类型
      "ADD BY LH 20190315 SDK2019010300007
      MOVE itxls-col28 TO itab_ok-costcenter."成本中心
      MOVE itxls-col29 TO itab_ok-gl_account."总账科目编号



    *    SD_DOC         TYPE  VBELN, " CHAR  10  0 销售和分销凭证号
    *    ITM_NUMBER     TYPE  POSNR_VA, "    NUMC  6 0 销售凭证项目
    *    WBS_ELEMENT    TYPE  PS_POSID, "    CHAR  24  0 工作分解结构元素 (WBS 元素)
    *    PREQ_NO        TYPE  BANFN, "  CHAR  10  0 采购申请编号
    *    PREQ_ITEM      TYPE  BNFPO, "  NUMC  5 0 采购申请的项目编号   

    PERFORM f_add_zero USING itab_ok-costcenter.   
    PERFORM f_add_zero USING itab_ok-gl_account.   
    PERFORM f_add_zero USING itab_ok-sd_doc.   
    PERFORM f_add_zero USING itab_ok-itm_number.   
    PERFORM f_add_zero USING itab_ok-preq_no.   
    PERFORM f_add_zero USING itab_ok-preq_item.   


    CONCATENATE itab_ok-bsart                           itab_ok
    -bukrs                           itab_ok
    -ekorg                           itab_ok
    -superfield                           itab_ok
    -fid                           itab_ok
    -wbs_element                           
    INTO itab_ok-fid.   


    IF itab_ok-eeind IS NOT INITIAL.     

    DATA: sy1 LIKE sy-datum.     
    CLEAR sy1.     
    MOVE itab_ok-eeind TO sy1.     

    CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'       
    EXPORTING         
    date                      = sy1       
    EXCEPTIONS         plausibility_check_failed 
    1         
    OTHERS                    2.     

    IF sy-subrc NE 0"如果返回非0,则日期不合法       
    DATA bst(100).       
    CLEAR bst.       
    CONCATENATE '日期检查错误' itab_ok-eeind '-' itab_ok-ematn   INTO bst.       
    WRITE / bst.       

    MOVE sy-datum TO itab_ok-eeind.     
    ENDIF.   

    ENDIF.   

    APPEND itab_ok.   
    MOVE-CORRESPONDING  itab_ok TO ith.   
    COLLECT ith.



    ENDLOOP.




    IF p_chkprq 'X'"重复采购申请检查   


    DATA: itq LIKE itab_ok OCCURS WITH HEADER LINE.   
    DATA: itdel LIKE itab_ok OCCURS WITH HEADER LINE.   

    MOVE itab_ok[] TO itq[].   
    DELETE itq  WHERE preq_no IS  INITIAL.   




    SELECT     banfn 
    AS preq_no     bnfpo 
    AS  preq_item   
    INTO CORRESPONDING FIELDS OF TABLE itdel   
    FROM m_mekke   
    FOR ALL ENTRIES IN itq   
    WHERE banfn = itq-preq_no     
    AND bnfpo = itq-preq_item     
    .   




    DATA: minfo(200).   


    LOOP AT itdel.     
    DELETE itab_ok WHERE preq_no = itdel-preq_no AND preq_item = itdel-preq_item.     


    PERFORM f_cut_zero USING itdel-preq_no.     
    PERFORM f_cut_zero USING itdel-preq_item.     


    CONCATENATE  '采购申请: ' itdel-preq_no '~' itdel-preq_item '已被参考过,本次忽略.' INTO minfo.     


    WRITE /: minfo COLOR 4.   


    ENDLOOP.   







    CLEAR itq[].   
    CLEAR itdel[].





    *  PERFORM F_ADD_ZERO USING ITAB_OK-PREQ_NO.
    *  PERFORM F_ADD_ZERO USING ITAB_OK-PREQ_ITEM.

    ENDIF.


    *DATA:TMP_BSART LIKE MEPO_TOPLINE-BSART,
    *TMP_SUPERFIELD LIKE MEPO_TOPLINE-SUPERFIELD,
    *TMP_EKORG  LIKE MEPO1222-EKORG,
    *TMP_EKGRP LIKE MEPO1222-EKGRP,
    *TMP_BUKRS LIKE  MEPO1222-BUKRS,
    *TMP_LGOBE LIKE MEPO1211-LGOBE.
    *CLEAR :TMP_BSART,TMP_SUPERFIELD,TMP_EKORG,TMP_EKGRP,TMP_BUKRS,TMP_LGOBE.
    *DELETE ITAB_OK WHERE BSART  IS INITIAL.


    LOOP AT ith.   


    CLEAR:  it_poitem[],it_poitem.   
    CLEAR:  it_poitemx[],it_poitemx.   

    CLEAR:  it_poschedule[],it_poschedule.   
    CLEAR:  it_poschedulex[],it_poschedulex.   

    CLEAR:    it_pocond,it_pocond[].   
    CLEAR: it_pocondx,it_pocondx[].   
    CLEAR:  it_poitem[],it_poitem.   




    LOOP AT itab_ok WHERE fid = ith-fid.

    **********  header         公司代码     ip_poheader
    -comp_code   =  itab_ok-bukrs.     ip_poheaderx
    -comp_code  =  'X'.
    **********  采购凭证类型     ip_poheader
    -doc_type    =  itab_ok-bsart.     ip_poheaderx
    -doc_type   =  'X'.

    ***    *****供货工厂     
    IF  strlen( itab_ok-superfield 4.       ip_poheader
    -suppl_plnt      =  itab_ok-superfield.       ip_poheaderx
    -suppl_plnt     =  'X'.     
    ENDIF.
    **********  供应商帐户号     
    PERFORM f_add_zero USING   itab_ok-superfield .     ip_poheader
    -vendor      =  itab_ok-superfield.     ip_poheaderx
    -vendor     =  'X'.

    ********** 采购组织     ip_poheader
    -purch_org   =  itab_ok-ekorg.     ip_poheaderx
    -purch_org  =  'X'.
    ********** 采购组     ip_poheader
    -pur_group   =  itab_ok-ekgrp.     ip_poheaderx
    -pur_group  =  'X'.     



    IF itab_ok-suppl_stloc IS NOT INITIAL.       it_poitemx
    -suppl_stloc 'X'.       it_poitem
    -suppl_stloc =  itab_ok-suppl_stloc.     
    ENDIF.     



    MOVE  itab_ok-order_reason TO   it_poitem-order_reason.     

    IF it_poitem-order_reason IS NOT INITIAL.       it_poitemx
    -order_reason 'X'.     
    ENDIF.     it_poitem


    -preq_name         =  itab_ok-afnam.     
    IF it_poitem-preq_name IS NOT INITIAL.       it_poitemx
    -preq_name        =  'X'.     
    ENDIF.     

    MOVE sy-tabix TO itab_ok-ebelp.
    ******* ITEM  DATA   采购凭证的项目编号     
    PERFORM f_add_zero USING  itab_ok-ebelp.     it_poitem
    -po_item   =     itab_ok-ebelp.     it_poitemx
    -po_item  =     itab_ok-ebelp.     it_poitemx
    -po_itemx =     'X'.
    *******    物料号     
    IF  NOT   itab_ok-ematn  IS INITIAL.       
    PERFORM f_add_zero USING  itab_ok-ematn.       it_poitem
    -material   =    itab_ok-ematn.       it_poitemx
    -material  =    'X'.     
    ENDIF.

    *******工厂     it_poitem
    -plant         =  itab_ok-name1.     it_poitemx
    -plant        =  'X'.
    *******库存地点     
    IF  NOT   itab_ok-lgobe  IS INITIAL.       it_poitem
    -stge_loc     =    itab_ok-lgobe.       it_poitemx
    -stge_loc    =    'X'.     
    ENDIF.
    *******批次     

    IF  NOT   itab_ok-charg  IS INITIAL.       it_poitem
    -batch     =    itab_ok-charg.       it_poitemx
    -batch    =    'X'.     
    ENDIF.     

    IF  it_poitem-vend_mat IS INITIAL.       it_poitem
    -vend_mat = itab_ok-vend_mat.       it_poitemx
    -vend_mat 'X'.     
    ENDIF.     

    IF  it_poitem-trackingno IS INITIAL.       it_poitem
    -trackingno = itab_ok-trackingno.       it_poitemx
    -trackingno 'X'.     
    ENDIF.

    *******采购订单数量     it_poitem
    -quantity      =    itab_ok-menge.     it_poitemx
    -quantity     =    'X'.
    *******
    *******单价     
    IF itab_ok-netpr IS NOT INITIAL.       it_poitem
    -net_price     =    itab_ok-netpr.       it_poitemx
    -net_price     =    'X'.
    *******单价单位       it_poitem
    -price_unit     =    itab_ok-peinh.       it_poitemx
    -price_unit     =    'X'.       it_poitem

    -calctype ' ' .       it_poitemx
    -calctype 'X'.     
    ENDIF.


    *PREQ_NO  1 类型  BANFN CHAR  10  0 采购申请编号
    *PREQ_ITEM  1 类型  BNFPO NUMC  5 0 采购申请的项目编号     
    IF itab_ok-preq_no IS NOT INITIAL.       it_poitem

    -preq_no = itab_ok-preq_no .       it_poitem
    -preq_item = itab_ok-preq_item .       it_poitemx
    -preq_no 'X' .       it_poitemx
    -preq_item 'X'.     


    ENDIF.     



    IF itab_ok-pstyp IS NOT INITIAL.       it_poitem
    -item_cat = itab_ok-pstyp.       it_poitemx
    -item_cat 'X'.     
    ENDIF.     


    IF itab_ok-wbs_element IS NOT INITIAL.       it_poitem
    -acctasscat 'Q'.       it_poitemx
    -acctasscat 'X'.     
    ENDIF.     

    IF itab_ok-sd_doc IS NOT INITIAL.       it_poitem
    -acctasscat 'E'.       it_poitemx
    -acctasscat 'X'.     
    ENDIF.     
    "ADD BY LH 20190315 SDK2019010300007     
    IF itab_ok-costcenter IS NOT INITIAL.       it_poitem
    -acctasscat 'K'.  "科目分配类型为K,代表成本中心       it_poitem
    -free_item  'X'.  "免费项目       it_poitemx
    -acctasscat 'X'.       it_poitemx
    -free_item  'X'.     
    ENDIF.     

    IF itab_ok-ret_item IS NOT INITIAL.       it_poitem
    -ret_item 'X'.       it_poitemx
    -ret_item 'X'.     
    ENDIF.     



    APPEND   it_poitem.     
    APPEND   it_poitemx.     


    CLEAR: it_poitem,it_poitemx.     

    IF itab_ok-netpr IS NOT INITIAL.       it_pocond
    -itm_number = itab_ok-ebelp.       it_pocond
    -cond_type 'PB00'.    " Give the pricing condition type that derives netprice       it_pocond
    -cond_value =  itab_ok-netpr.       it_pocond
    -cond_p_unt = itab_ok-peinh.       it_pocond
    -currency 'CNY'.       it_pocond
    -change_id 'U'.       
    APPEND it_pocond.       it_pocondx

    -itm_number = itab_ok-ebelp.       it_pocondx
    -itm_numberx 'X'.       it_pocondx
    -cond_p_unt 'X'.       it_pocondx
    -cond_type 'X'.       it_pocondx
    -cond_value 'X'.       it_pocondx
    -currency 'X'.       it_pocondx
    -change_id 'X'.       
    APPEND it_pocondx.     

    ENDIF.



    ******"采购凭证的项目编号
    *    PERFORM F_ADD_ZERO USING  ITAB_OK-EBELP.
    *    IT_POSCHEDULE-SCHED_LINE        =  ITAB_OK-EBELP.
    *    IT_POSCHEDULEX-SCHED_LINE        =  'X'.     it_poschedule
    -po_item       =  itab_ok-ebelp.     it_poschedulex
    -po_item       =  itab_ok-ebelp.     it_poschedulex
    -po_itemx      =  'X'.

    ********计划行     it_poschedule
    -sched_line     '0001'.     it_poschedulex
    -sched_line    '0001'.     it_poschedulex
    -sched_linex   'X'.
    ********计划数量
    *    it_poschedule-quantity     = it_zmm0004-quantity.
    *    it_poschedulex-quantity    = 'X'.
    *    APPEND   it_poschedule.
    *    APPEND   it_poschedulex.

    *******        交货日期     
    IF  NOT   itab_ok-eeind  IS INITIAL.       it_poschedule
    -delivery_date  =  itab_ok-eeind.       it_poschedulex
    -delivery_date =  'X'.     
    ELSE.       it_poschedule
    -delivery_date  =  sy-datum.       it_poschedulex
    -delivery_date =  'X'.     
    ENDIF.     

    APPEND   it_poschedule.     
    APPEND   it_poschedulex.     

    CLEAR: it_poschedule,it_poschedulex.     










    IF itab_ok-sd_doc IS NOT INITIAL.       it_bapimepoaccount
    -sd_doc = itab_ok-sd_doc.       it_bapimepoaccount
    -itm_number = itab_ok-itm_number.       it_bapimepoaccountx
    -sd_doc 'X'.       it_bapimepoaccountx
    -itm_number 'X'.     

    ENDIF.     
    "ADD BY LH 20190315 SDK2019010300007     
    IF itab_ok-costcenter IS NOT INITIAL.       it_bapimepoaccount
    -costcenter = itab_ok-costcenter.       it_bapimepoaccount
    -gl_account = itab_ok-gl_account.       it_bapimepoaccountx
    -costcenter 'X'.       it_bapimepoaccountx
    -gl_account 'X'.     
    ENDIF.     
    IF itab_ok-wbs_element IS NOT INITIAL.       it_bapimepoaccount
    -wbs_element = itab_ok-wbs_element.       it_bapimepoaccountx
    -wbs_element 'X'.     
    ENDIF.


    ********采购订单数量
    *    IT_POITEM-QUANTITY      =    ITAB_OK-MENGE.
    *    IT_POITEMX-QUANTITY     =    'X'.     



    IF it_bapimepoaccount IS NOT INITIAL.       it_bapimepoaccount

    -po_item = itab_ok-ebelp.       it_bapimepoaccount
    -serial_no '01'.       it_bapimepoaccountx

    -po_item = itab_ok-ebelp.       it_bapimepoaccountx
    -serial_no '01'.       it_bapimepoaccountx
    -serial_nox 'X'.       it_bapimepoaccountx
    -po_itemx 'X'.       it_bapimepoaccountx
    -serial_nox 'X'.       


    APPEND it_bapimepoaccount.       
    APPEND it_bapimepoaccountx.     

    ENDIF.     
    CLEAR: it_bapimepoaccount, it_bapimepoaccountx.   

    ENDLOOP.   



    CLEAR et_log[].   

    CALL FUNCTION 'BAPI_PO_CREATE1'     
    EXPORTING       poheader         
    = ip_poheader       poheaderx        
    = ip_poheaderx       no_price_from_po 
    'X'     
    IMPORTING       exppurchaseorder 
    = ep_ebeln     
    TABLES       
    return           = et_log       poschedule       
    = it_poschedule       poschedulex      
    = it_poschedulex       poitem           
    = it_poitem       poitemx          
    = it_poitemx       pocond           
    = it_pocond       pocondx          
    = it_pocondx       poaccount        
    = it_bapimepoaccount       poaccountx       
    = it_bapimepoaccountx.   

    "changed by kasen 因为内部ET_LOG中包含了一个error 超过了信贷额度但是   
    "但是采购订单依旧创建成功了故要程序停止报错 BEGIN 20190627   
    DATA lv_cst(200)."ADD BY KASEN   
    CLEAR:lv_cst.   
    LOOP AT et_log WHERE type 'E' AND MESSAGE  CS 'Credit limit exceeding ' OR MESSAGE  CS 'blocked due to overdue '.     
    CONCATENATE ith-fid '  ERROR:  ' et_log-message  lv_cst  INTO lv_cst.     
    WRITE /: lv_cst COLOR 6.     
    RETURN.   
    ENDLOOP.   
    "END BY KASEN 20190627   

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'     
    EXPORTING       
    wait 'X'.   


    CLEAR: it_bapimepoaccount[] , it_bapimepoaccountx[].   


    DATA cst(200).   
    CLEAR cst.   
    DATA: it_detail LIKE it_poitem.   

    IF  ep_ebeln  IS  INITIAL.

    *    LOOP AT ET_LOG WHERE TYPE = 'E'.
    *      WRITE /:ET_LOG-MESSAGE.
    *    ENDLOOP.     



    LOOP  AT et_log.       
    CLEAR it_detail.       
    IF et_log-row IS NOT INITIAL.         
    READ TABLE it_poitem INTO it_detail INDEX et_log-row.         
    PERFORM f_cut_zero USING it_detail-material.         
    PERFORM f_cut_zero USING ith-fid.         
    MOVE et_log-row TO cst.         
    SHIFT cst LEFT DELETING LEADING space.         
    CONCATENATE '行' cst INTO cst.       
    ELSE.         
    CLEAR cst.       
    ENDIF.       
    CONCATENATE ith-fid et_log-message it_detail-material  cst  INTO cst.       


    IF et_log-type 'E'.         
    WRITE /: cst COLOR 6.       
    ELSEIF et_log-type 'W'.         
    WRITE /: cst COLOR 3.       
    ELSE.         
    WRITE:  cst  .       
    ENDIF.     


    ENDLOOP.   



    ELSE.     
    CONCATENATE ep_ebeln '~' ith-fid INTO ith-fid .     

    WRITE / ith-fid.   

    ENDIF.   



    DATA:     i_log      
    LIKE  bapireturn1          OCCURS WITH HEADER LINE,     it_input   
    LIKE  zporelease           OCCURS WITH HEADER LINE,     ip_history 
    LIKE  zrfc_history.   


    CLEAR   :   i_log,i_log[].   
    CLEAR it_input[].   it_input
    -ebeln   =  ep_ebeln.   
    APPEND  it_input.   ip_history
    -oano '1'.   ip_history
    -oaname '1'.   ip_history
    -oamodule '1'.   

    IF p_atochk 'X'.     
    CHECK ep_ebeln  IS  NOT INITIAL.     
    CALL FUNCTION 'ZRFC_WMS_PO_RELEASE'       
    EXPORTING         ip_history 
    = ip_history       
    TABLES         it_input   
    = it_input         et_log     
    = i_log.     

    LOOP AT i_log"WHERE TYPE = 'E'.       
    WRITE: i_log-message.     
    ENDLOOP.   

    ENDIF.

    ENDLOOP.



    IF p_atomrp 'X'.   


    PERFORM run_mrp.

    ENDIF.









    INCLUDE zrpt_fun.


    *INCLUDE ZFILE_DOWN.
    *&---------------------------------------------------------------------*
    *&      Form  RUN_MRP
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM run_mrp .   

    DATA:     material       
    TYPE  bapi_mrp_mat_param-material,     plant          
    TYPE  bapi_mrp_mat_param-plant,     mrp_area       
    TYPE  bapi_mrp_mat_param-mrp_area,     plan_scenario  
    TYPE  bapi_mrp_mat_param-plan_scenario,     mrp_plan_param 
    TYPE  bapi_mrp_plan_param,     material_evg   
    TYPE  bapimgvmatnr,     

    return         TYPE  bapiret2,     mrp_lists      

    LIKE  bapi_mrp_list OCCURS WITH HEADER LINE.   







    DATABEGIN OF itmrp OCCURS 0,           matnr 
    TYPE matnr,           werks 
    TYPE werks_d,         
    END OF itmrp.   



    WRITE sy-datum.   
    WRITE sy-uzeit.   



    LOOP AT itab_ok.     

    MOVE itab_ok-ematn TO itmrp-matnr.     


    PERFORM f_add_zero USING itmrp-matnr.     

    MOVE itab_ok-name1 TO itmrp-werks.     

    COLLECT itmrp.     
    PERFORM f_cut_zero USING itab_ok-superfield.     
    MOVE itab_ok-superfield TO itmrp-werks.     
    COLLECT itmrp.   
    ENDLOOP.   mrp_plan_param


    -proc_type           'N'.   mrp_plan_param
    -create_purreq       '1'.   mrp_plan_param
    -create_sched_lines  '3'.   mrp_plan_param
    -create_mrp_list     '1'.   mrp_plan_param
    -planning_mode       '1'.   mrp_plan_param
    -scheduling_pldords  '1'.   



    LOOP AT itmrp.     

    CALL FUNCTION 'BAPI_MATERIAL_PLANNING'       
    EXPORTING         material       
    = itmrp-matnr         plant          
    = itmrp-werks         mrp_plan_param 
    = mrp_plan_param       
    IMPORTING         
    return         return       
    TABLES         mrp_lists      
    = mrp_lists.     


    WRITE / return-message.     


    PERFORM showpb USING return-message.   

    ENDLOOP.




    ENDFORM.

  • 相关阅读:
    获取APK的包名,和启动窗口类
    AS 中手动实现无线真机调试
    debian9安装jdk1.8
    java内存检测
    debian9设置pptp
    apache2 支持https
    centos安装python3
    debian laravel访问Mysql
    debian9下为apache启用rewrite模块,修改默认路径
    Java学习笔记(一)背景知识
  • 原文地址:https://www.cnblogs.com/twttafku/p/14253219.html
Copyright © 2011-2022 走看看