• 功能:批量创建销售订单


     

    *&---------------------------------------------------------------------*
    *& Report  ZSD066
    *&
    *&---------------------------------------------------------------------*
    *& 附件 https://files.cnblogs.com/files/twttafku/%E6%89%B9%E9%87%8F%E5%88%9B%E5%BB%BA%E9%94%80%E5%94%AE%E8%AE%A2%E5%8D%95..rar
    *&批量创建销售订单EXCEL上传方式
    *&---------------------------------------------------------------------*

    REPORT  ZSDA66.




    DATABEGIN OF S_EXT ,
            EXT01      TYPE  ZISPN,
            EXT02      TYPE    ZKAPN,
            EXT03      TYPE    ZPROD,
            EXT04      TYPE  CHAR100,
            EXT05      TYPE  CHAR100,
            EXT06      TYPE  CHAR100,
            EXT07      TYPE  CHAR100,
            EXT08      TYPE  CHAR100,
            EXT09      TYPE  CHAR100,
            EXT10      TYPE  CHAR100,
            EXT11      TYPE  CHAR100,
            EXT12      TYPE  CHAR100,
            EXT13      TYPE  CHAR100,
            EXT14      TYPE    ZADRS,
            EXT15      TYPE    ZCPSN,
            EXT16      TYPE  ZCTEL,
            EXT17      TYPE  ZSTOR,
            EXT18      TYPE  ZCREF,
            S_PROC_IND TYPE  SDABW,
          END OF S_EXT.




    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: ITAB LIKE ALSMEX_TABLINE OCCURS WITH HEADER LINE.

    *定义EXCEL数据保存内表
    DATABEGIN OF TY_ITAB,   "定义储存EXCEL数据的内表
            AUART          LIKE VBAK-AUART"订单类型
            VKORG          LIKE VBAK-VKORG"销售组织
            VTWEG          LIKE VBAK-VTWEG"分销渠道
            BSTDK_E        LIKE VBKD-BSTDK_E"需求发货日期
            BSTKD_E        LIKE VBKD-BSTKD_E"项目IS编号
            KUNNR          LIKE VBAK-KUNNR"售达方
            KUNNR2         LIKE VBAK-KUNNR"送达方
            BSTKD          LIKE VBKD-BSTKD"采购订单编码
            AUGRU          LIKE VBAK-AUGRU"采购订单原因
            VDATU          LIKE VBAK-VDATU"请求交货日期
            IHREZ_E        TYPE TEXT12,  "首次订单评审交期
    *VDATU(8) type c,
            ADR(255)       TYPE C,
            ADR1(255)      TYPE C,
            SHORT_TEXT(40TYPE C"行项目文本
            POSNR          LIKE VBAP-POSNR"行项目
            MATNR          LIKE VBAP-MATNR"物料编码
            KWMENG         LIKE VBAP-KWMENG"订单数量
            NETWR          LIKE VBAP-NETWR"特殊单价
            WERKS          LIKE VBAP-WERKS"工厂
            VSBED          LIKE VBAK-VSBED"装运点
            LGORT          LIKE VBAP-LGORT"库存地点
            DUN_DATE       TYPE MAHDT"最后联系日期
            ZZACT          TYPE VBAK-ZZACT"活动
            ITEM_CATEG     TYPE PSTYV" 项目类
            P3_KUNNR       TYPE KUNNR,

            REF_DOC        TYPE  VGBEL,
            REF_DOC_IT     TYPE  VGPOS,
            REF_DOC_CA     TYPE  VBTYP_V,

            PS_PSP_PNR     TYPE PS_PSP_PNR,
            WBS_ELEM       TYPE PS_POSID,
    *----------------- 201804 BEGIN ADD--------------------------*
            PURCH_NO_C     LIKE BAPISDITM-PURCH_NO_C"售达方采购订单编号
    *----------------- 201804 END ADD----------------------------*
    * ADD BY LH 增加收货人信息
            PER_ADDR       TYPE STRING,   "add by LH 收货人地址
            PER_NAME       TYPE STRING,   "收货人
            PER_TELE       TYPE STRING.   "收货人电话(区号-电话号/手机号)

            INCLUDE STRUCTURE S_EXT.


    DATA   END OF TY_ITAB.


    DATABEGIN OF I_HEADER,   "定义订单抬头
            VSBED     LIKE VBAK-VSBED"装运条件
            AUART     LIKE VBAK-AUART"订单类型
            VKORG     LIKE VBAK-VKORG"销售组织
            VTWEG     LIKE VBAK-VTWEG"分销渠道
            BSTDK_E   LIKE VBKD-BSTDK_E"需求发货日期
            BSTKD_E   LIKE VBKD-BSTKD_E"项目IS编号
            KUNNR     LIKE VBAK-KUNNR"售达方
            KUNNR2    LIKE VBAK-KUNNR"送达方
            BSTKD     LIKE VBKD-BSTKD"采购订单编码
            AUGRU     LIKE VBAK-AUGRU"采购订单原因
            VDATU     LIKE VBAK-VDATU"请求交货日期
            DUN_DATE  TYPE MAHDT"最后联系日期
            ADR(255)  TYPE C,
            ADR1(255TYPE C,
            ZZACT     LIKE VBAK-ZZACT,
    * ADD BY LH 增加收货人信息
            PER_ADDR  TYPE STRING,   "add by LH 收货人地址
            PER_NAME  TYPE STRING,   "收货人
            PER_TELE  TYPE STRING.   "收货人电话(区号-电话号/手机号)

            INCLUDE STRUCTURE S_EXT.

    DATA END OF I_HEADER.

    DATABEGIN OF I_DETAIL,   "定义订单明细
            BSTKD          LIKE VBKD-BSTKD"采购订单编码
            POSNR          LIKE VBAP-POSNR"行项目
            MATNR          LIKE VBAP-MATNR"物料编码
            KWMENG         LIKE VBAP-KWMENG"订单数量
            NETWR          LIKE VBAP-NETWR"特殊单价
            WERKS          LIKE VBAP-WERKS"工厂
            LGORT          LIKE VBAP-LGORT"库存地点
            SHORT_TEXT(40TYPE C"行项目文本
            VDATU          LIKE VBAK-VDATU"请求交货日期
    *BSTDK_E like vbak-BSTDK,"需求发货日期
            IHREZ_E        TYPE TEXT12,  "首次订单评审交期
            ITEM_CATEG     TYPE PSTYV" 项目类

            REF_DOC        TYPE  VGBEL,
            REF_DOC_IT     TYPE  VGPOS,
            REF_DOC_CA     TYPE  VBTYP_V,

            PS_PSP_PNR     TYPE PS_PSP_PNR,
            WBS_ELEM       TYPE PS_POSID,
    *----------------- 201804 BEGIN ADD--------------------------*
            VSBED          LIKE VBAK-VSBED"装运点
            PURCH_NO_C     LIKE BAPISDITM-PURCH_NO_C"售达方采购订单编号
    *----------------- 201804 END ADD----------------------------*
          END OF I_DETAIL.

    DATABEGIN OF Y_LOG,   "定义订单明细
            VBELN       LIKE VBAK-VBELN,
            VKORG       LIKE VBAK-VKORG"销售组织
            VTWEG       LIKE VBAK-VTWEG"分销渠道
            KUNNR       LIKE VBAK-KUNNR"售达方
            BSTKD       LIKE VBKD-BSTKD"采购订单编码
            REMARK(255TYPE C,

          END OF Y_LOG.

    DATABEGIN OF Y_KNA1,   "定义订单明细
            KUNNR LIKE KNA1-KUNNR,
            KTOKD LIKE KNA1-KTOKD,

          END OF Y_KNA1.

    DATA:IT_EXTENSIONIN LIKE TABLE OF BAPIPAREX WITH HEADER LINE.
    DATA:IT_EXTENSIONINX LIKE BAPIPAREXX.
    DATA:IT_BAPE_VBAK LIKE BAPE_VBAK.
    DATA:IT_BAPE_VBAKX LIKE BAPE_VBAKX.

    DATA: REC_ITAB  LIKE TY_ITAB OCCURS WITH HEADER LINE,
          IT_HEAD   LIKE I_HEADER OCCURS WITH HEADER LINE,
          IT_LOG    LIKE Y_LOG OCCURS WITH HEADER LINE,
          IT_KNA1   LIKE Y_KNA1 OCCURS WITH HEADER LINE,
          IT_DETAIL LIKE I_DETAIL OCCURS WITH HEADER LINE.

    DATA: IT_HEADER           LIKE BAPISDHD1,
          IT_HEADERX          LIKE BAPISDHD1X,
          IT_ITEM             LIKE BAPISDITM  OCCURS WITH HEADER LINE,
          IT_ITEMX            LIKE BAPISDITMX OCCURS WITH HEADER LINE,       IT_PARTNER          
    LIKE BAPIPARNR  OCCURS WITH HEADER LINE,       IT_RETURN           
    LIKE BAPIRET2    OCCURS WITH HEADER LINE,       IT_CONDITIONS       
    LIKE BAPICOND OCCURS WITH HEADER LINE,       I_LOG               
    LIKE  BAPIRETURN1        OCCURS  0  WITH  HEADER  LINE,       EP_VBELN            
    LIKE VBAK-VBELN,       IT_BAPICUCFG        
    LIKE BAPICUCFG  OCCURS WITH HEADER LINE,       IT_BAPICUVAL        
    LIKE BAPICUVAL OCCURS WITH HEADER LINE,       IT_BAPICUPRT        
    LIKE TABLE OF BAPICUPRT WITH HEADER LINE,       IT_SCHEDULES_INX    


    TYPE STANDARD TABLE OF BAPISCHDLX                                
    WITH HEADER LINE,       IT_SCHEDULES_IN     

    TYPE STANDARD TABLE OF BAPISCHDL                                
    WITH HEADER LINE,       LT_RETURN           
    LIKE BAPIRET2    OCCURS WITH HEADER LINE,       LT_ORDER_TEXT       
    LIKE BAPISDTEXT OCCURS WITH HEADER LINE,       LT_ORDER_HEADER_INX 
    LIKE BAPISDHD1X       

    .
    CLEAR :  IT_HEADER,          IT_HEADERX
    ,          IT_ITEM
    ,          IT_ITEMX
    ,          IT_PARTNER
    ,          IT_RETURN 
    ,          IT_SCHEDULES_INX
    ,          IT_SCHEDULES_IN 
    ,          IT_HEAD
    ,          IT_DETAIL
    ,          REC_ITAB
    ,          ITAB
    ,          IT_LOG
    ,          I_LOG      
    .

    REFRESH:          IT_ITEM
    ,          IT_ITEMX
    ,          IT_PARTNER
    ,          IT_RETURN 
    ,          IT_SCHEDULES_INX
    ,          IT_SCHEDULES_IN 
    ,          IT_HEAD
    ,          IT_DETAIL
    ,          REC_ITAB
    ,          ITAB
    ,          IT_LOG
    ,          I_LOG
    .


    PARAMETERS:   P1 
    RADIOBUTTON  GROUP P_PR  DEFAULT 'X',   P2 
    RADIOBUTTON  GROUP P_PR.


    IF P2 'X'.   
    PERFORM GET_DOC_DOWN.   
    RETURN.
    ENDIF.



    *SELECTION-SCREEN SKIP 1.
    *
    *SELECTION-SCREEN BEGIN OF BLOCK S02 WITH FRAME TITLE TEXT-S02.
    **文件上传路径
    *SELECTION-SCREEN BEGIN OF LINE.
    *SELECTION-SCREEN POSITION 3.
    *SELECTION-SCREEN COMMENT (25) TEXT-001.
    *SELECTION-SCREEN POSITION 30.
    *PARAMETERS F_INFILE LIKE RLGRAP-FILENAME OBLIGATORY.
    *SELECTION-SCREEN END OF LINE.
    *SELECTION-SCREEN END OF BLOCK S02.
    *
    *INITIALIZATION.
    *
    *
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR F_INFILE.
    *  PERFORM SELECT-FILE CHANGING F_INFILE.    "选择要导入的文件
    *
    *START-OF-SELECTION.
    **  "将导入的文件中的数据读到内表REC_ITAB中
    *  PERFORM UPLOAD_DATA USING G_RTNCODE.
    **  PERFORM check.
    *
    *END-OF-SELECTION.
    DATA F_INFILE(200).

    INCLUDE ZFILE_XLS.


    PARAMETERS:   P3 
    AS CHECKBOX.



    PERFORM UPLOAD_DATA2.

    SORT REC_ITAB.







    DATA: ITAB_P3 LIKE REC_ITAB OCCURS WITH HEADER LINE.
    DATABEGIN OF ITH OCCURS 0,         P3_KUNNR 
    TYPE KUNNR,         MATNR    
    TYPE MATNR,       
    END OF ITH.




    LOOP AT REC_ITAB.   
    MOVE-CORRESPONDING REC_ITAB TO IT_HEAD.   
    APPEND IT_HEAD.   

    IF REC_ITAB-P3_KUNNR IS NOT INITIAL.     
    APPEND REC_ITAB TO ITAB_P3.     ITH
    -P3_KUNNR = REC_ITAB-P3_KUNNR.     ITH
    -MATNR = REC_ITAB-MATNR.     
    COLLECT ITH.   
    ENDIF.
    ENDLOOP.

    IF P3 'X'.   

    DELETE REC_ITAB WHERE P3_KUNNR IS NOT INITIAL.   


    PERFORM CALC_P3.


    ENDIF.




    SORT IT_HEAD BY               AUART               VKORG               VTWEG



    *              BSTDK               KUNNR               KUNNR2               VSBED               BSTKD      



    .

    DELETE ADJACENT DUPLICATES FROM IT_HEAD             
    COMPARING                 AUART                 VKORG                 VTWEG



    *                BSTDK                 KUNNR                 KUNNR2                 VSBED                 BSTKD      



    .


    LOOP AT IT_HEAD.   
    AUTHORITY-CHECK OBJECT 'Z_VBRK_OFC'        
    ID 'ZVKORG' FIELD IT_HEAD-VKORG"销售组织        
    ID 'ZVTWEG' FIELD IT_HEAD-VTWEG."    分销渠道
    *         ID 'ZWERKS' FIELD IT_HEAD-WERKS."     工厂   
    IF SY-SUBRC NE 0.     
    WRITE: / IT_HEAD-BSTKD ,',',IT_HEAD-VKORG,',',IT_HEAD-VTWEG ',你没有足够的权限'.     IT_HEAD
    -BSTKD '-DELETE-'.     
    MODIFY IT_HEAD.   
    ENDIF.

    ENDLOOP.

    DELETE IT_HEAD WHERE BSTKD '-DELETE-'.

    LOOP AT IT_HEAD.   
    PERFORM F_ADD_ZERO USING  IT_HEAD-KUNNR.   
    MODIFY IT_HEAD.
    ENDLOOP.


    *******检验一次性客户
    *IF IT_HEAD[] IS NOT INITIAL.
    *
    *  SELECT KUNNR KTOKD
    *   INTO CORRESPONDING FIELDS OF TABLE IT_KNA1
    *  FROM KNA1
    *   FOR ALL ENTRIES IN IT_HEAD
    *   WHERE KUNNR = IT_HEAD-KUNNR
    *   AND KTOKD = 'Z007'.
    *ENDIF.
    *
    *IF IT_KNA1[] IS NOT INITIAL.
    *  MESSAGE '您所导入资料内含一次性客户,请删除后重新上传!' TYPE 'I'.
    *  LEAVE TO TRANSACTION 'ZSD066'.
    *ENDIF.


    LOOP AT REC_ITAB.   
    AUTHORITY-CHECK OBJECT 'Z_VBRK_OFC'
    *         ID 'ZVKORG' FIELD IT_HEAD-VKORG"销售组织
    *         ID 'ZVTWEG' FIELD IT_HEAD-VTWEG."    分销渠道        
    ID 'ZWERKS' FIELD REC_ITAB-WERKS."     工厂   
    IF SY-SUBRC NE 0.     
    WRITE: / REC_ITAB-BSTKD ',' , REC_ITAB-WERKS',你没有足够的权限'.     REC_ITAB
    -BSTKD '-DELETE-'.     
    MODIFY REC_ITAB.   
    ENDIF.

    ENDLOOP.

    DELETE REC_ITAB WHERE BSTKD '-DELETE-'.

    LOOP AT REC_ITAB.   
    MOVE-CORRESPONDING REC_ITAB TO IT_DETAIL.   
    APPEND IT_DETAIL.
    ENDLOOP.

    LOOP AT IT_HEAD.
    ******* 订单类型   IT_HEADER
    -DOC_TYPE = IT_HEAD-AUART.   IT_HEADERX
    -DOC_TYPE 'X'.
    ****** 销售组织   IT_HEADER
    -SALES_ORG = IT_HEAD-VKORG.   IT_HEADERX
    -SALES_ORG 'X'.
    ****** 分销渠道   IT_HEADER
    -DISTR_CHAN = IT_HEAD-VTWEG.   IT_HEADERX
    -DISTR_CHAN 'X'.


    ************采购订单编码   IT_HEADER
    -PURCH_NO_C = IT_HEAD-BSTKD.   IT_HEADERX
    -PURCH_NO_C  'X'.


    ************特殊处理标记   IT_HEADER
    -S_PROC_IND = IT_HEAD-S_PROC_IND.   
    PERFORM F_ADD_ZERO USING IT_HEADER-S_PROC_IND.   IT_HEADERX
    -S_PROC_IND  'X'.




    ***请求交货日期   
    IF IT_HEAD-VDATU IS NOT INITIAL.     IT_HEADER
    -REQ_DATE_H = IT_HEAD-VDATU.   
    ELSE.     IT_HEADER
    -REQ_DATE_H = SY-DATUM.   
    ENDIF.   IT_HEADERX
    -REQ_DATE_H 'X'.   

    IF IT_HEAD-VSBED IS NOT INITIAL.     IT_HEADERX
    -SHIP_COND 'X'.     IT_HEADER
    -SHIP_COND = IT_HEAD-VSBED.   
    ENDIF.

    *************最后联系日期   
    IF IT_HEAD-DUN_DATE IS NOT INITIAL.     IT_HEADERX
    -REQ_DATE_H 'X'.     IT_HEADER
    -DUN_DATE =  IT_HEAD-DUN_DATE.   
    ENDIF.
    *******  产品组
    *    it_header-DIVISION = REC_ITAB-SPART.
    *    it_headerx-DIVISION = 'X'.
    *    it_headerx-updateflag = 'I'.

    *it_header-REQ_DATE_H  = IT_HEAD-VDATU.
    *it_headerx-REQ_DATE_H  = 'X'.
    ******  销售办事处   

    SELECT SINGLE VKBUR  
    INTO IT_HEADER-SALES_OFF   
    FROM KNVV   
    WHERE  KUNNR = IT_HEAD-KUNNR      
    AND VKORG = IT_HEAD-VKORG      
    AND VTWEG = IT_HEAD-VTWEG.   IT_HEADERX
    -SALES_OFF 'X'.


    *****订单日期   IT_HEADER

    -PURCH_DATE = SY-DATUM.   IT_HEADERX
    -PURCH_DATE 'X'.
    *****订单原因   
    IF IT_HEAD-AUGRU IS NOT INITIAL.     IT_HEADER
    -ORD_REASON = IT_HEAD-AUGRU.     IT_HEADERX
    -ORD_REASON 'X'.   
    ENDIF.   

    IF IT_HEAD-ZZACT IS NOT INITIAL.     IT_EXTENSIONIN
    -STRUCTURE 'BAPE_VBAK'.     IT_EXTENSIONINX
    -STRUCTURE 'BAPE_VBAKX'.     IT_BAPE_VBAK
    -VBELN = IT_HEADER-REFOBJTYPE.     IT_BAPE_VBAKX
    -VBELN = IT_HEADER-REFOBJTYPE.     IT_BAPE_VBAK
    -ZZACT = IT_HEAD-ZZACT.     IT_BAPE_VBAKX
    -ZZACT 'X'.     IT_EXTENSIONIN
    -VALUEPART1 = IT_BAPE_VBAK.     IT_EXTENSIONINX
    -VALUEPART1 = IT_BAPE_VBAKX.     
    APPEND IT_EXTENSIONIN.     
    APPEND IT_EXTENSIONINX TO IT_EXTENSIONIN.   
    ENDIF.   

    IF IT_HEAD-BSTDK_E IS NOT INITIAL.     IT_HEADER
    -PO_DAT_S = IT_HEAD-BSTDK_E.     IT_HEADERX
    -PO_DAT_S 'X'.   
    ENDIF.   

    IF IT_HEAD-BSTKD_E IS NOT INITIAL.     IT_HEADER
    -PURCH_NO_S = IT_HEAD-BSTKD_E.     IT_HEADERX
    -PURCH_NO_S 'X'.   
    ENDIF.
    ****售达方   
    CLEAR:IT_PARTNER[].   
    PERFORM F_ADD_ZERO USING  IT_HEAD-KUNNR.   IT_PARTNER
    -PARTN_ROLE 'AG'.   IT_PARTNER
    -PARTN_NUMB = IT_HEAD-KUNNR.

    *  IF up_head-name1_ag IS NOT INITIAL.  "一次性客户
    *    IT_PARTNER-name     = '一次性客户'.
    *    IT_PARTNER-country  = 'CN'.
    *  ENDIF.   
    TABLES : KNA1.   
    SELECT *     
    FROM KNA1      
    WHERE KUNNR = IT_HEAD-KUNNR      
    AND KTOKD 'Z007'.     IT_PARTNER
    -NAME     '一次性客户'.     IT_PARTNER
    -COUNTRY  'CN'.     IT_PARTNER
    -CITY 'OPPLE'.     IT_PARTNER
    -LANGU '1'.   
    ENDSELECT.   



    APPEND IT_PARTNER.
    ****送达方   

    PERFORM F_ADD_ZERO USING  IT_HEAD-KUNNR2.   IT_PARTNER
    -PARTN_ROLE 'WE'.   IT_PARTNER
    -PARTN_NUMB = IT_HEAD-KUNNR2.   

    APPEND IT_PARTNER.   

    CLEAR:LT_ORDER_TEXT[].

    *** 抬头文本   
    IF IT_HEAD-ADR IS NOT INITIAL.     LT_ORDER_TEXT
    -TEXT_ID '0001'.     LT_ORDER_TEXT
    -LANGU '1'.     LT_ORDER_TEXT
    -TEXT_LINE = IT_HEAD-ADR.     
    APPEND LT_ORDER_TEXT.   
    ENDIF.   




    IF IT_HEAD-ADR1 IS NOT INITIAL.     LT_ORDER_TEXT
    -TEXT_ID '0002'.     LT_ORDER_TEXT
    -LANGU '1'.     LT_ORDER_TEXT
    -TEXT_LINE = IT_HEAD-ADR1.     
    APPEND LT_ORDER_TEXT.   
    ENDIF.


    * ADD BY LH 增加收货人信息   
    IF IT_HEAD-PER_ADDR IS NOT INITIAL.     LT_ORDER_TEXT
    -TEXT_ID '0004'.     LT_ORDER_TEXT
    -LANGU '1'.     LT_ORDER_TEXT
    -TEXT_LINE = IT_HEAD-PER_ADDR." 收件人地址     
    APPEND LT_ORDER_TEXT.   
    ENDIF.   
    IF IT_HEAD-PER_NAME IS NOT INITIAL.     LT_ORDER_TEXT
    -TEXT_ID '0006'.     LT_ORDER_TEXT
    -LANGU '1'.     LT_ORDER_TEXT
    -TEXT_LINE = IT_HEAD-PER_NAME." 收货人     
    APPEND LT_ORDER_TEXT.   
    ENDIF.   
    IF IT_HEAD-PER_TELE IS NOT INITIAL.     LT_ORDER_TEXT
    -TEXT_ID '0007'.     LT_ORDER_TEXT
    -LANGU '1'.     LT_ORDER_TEXT
    -TEXT_LINE = IT_HEAD-PER_TELE." 收货人电话     
    APPEND LT_ORDER_TEXT.   
    ENDIF.

    *order_text-itm_number = '000010'.
    *  order_text-text_id = '0002'.
    *  order_text-langu = 'M'.
    *  order_text-langu_iso = 'ZF'.
    *  order_text-format_col = '*'.
    *  order_text-text_line = 'item text'.
    *  APPEND order_text.   



    CLEAR : IT_ITEM[],           IT_ITEMX
    ,           IT_SCHEDULES_IN[]
    ,           IT_BAPICUCFG[]
    ,           IT_BAPICUVAL[]
    ,           IT_CONDITIONS[]
    ,           IT_SCHEDULES_INX
    .   

    LOOP AT IT_DETAIL WHERE BSTKD = IT_HEAD-BSTKD
    *----------------- 201804 BEGIN add--------------------------*                        
    AND VSBED = IT_HEAD-VSBED.
    *----------------- 201804 END add----------------------------*     IT_ITEMX

    -UPDATEFLAG 'I'.
    *****行项目     
    PERFORM F_ADD_ZERO USING  IT_DETAIL-POSNR.     IT_ITEM
    -ITM_NUMBER = IT_DETAIL-POSNR.     IT_ITEMX
    -ITM_NUMBER 'X'.
    * 物料     
    PERFORM F_ADD_ZERO USING  IT_DETAIL-MATNR.     IT_ITEM
    -MATERIAL = IT_DETAIL-MATNR.     IT_ITEMX
    -MATERIAL 'X'.

    *工厂     IT_ITEM
    -PLANT    = IT_DETAIL-WERKS.     IT_ITEMX
    -PLANT   'X'.     IT_ITEM

    -STORE_LOC = IT_DETAIL-LGORT.     IT_ITEMX
    -STORE_LOC  'X'.

    *数量     IT_ITEM
    -TARGET_QTY = IT_DETAIL-KWMENG.     IT_ITEMX
    -TARGET_QTY 'X'.

    *首次订单评审交期     
    IF IT_DETAIL-IHREZ_E IS NOT INITIAL.       IT_ITEM
    -REF_1_S = IT_DETAIL-IHREZ_E.       IT_ITEMX
    -REF_1_S 'X'.     
    ENDIF.
    *项目类型     

    IF IT_DETAIL-ITEM_CATEG IS NOT INITIAL.       IT_ITEM
    -ITEM_CATEG = IT_DETAIL-ITEM_CATEG.     
    ELSEIF IT_HEADER-DOC_TYPE 'ZOR9' .       IT_ITEM
    -ITEM_CATEG 'ZTN1'.     
    ENDIF.     IT_ITEMX
    -ITEM_CATEG 'X'.


    *----------------- 201804 BEGIN add--------------------------*
    *售达方采购订单编号     
    IF IT_DETAIL-PURCH_NO_C IS NOT INITIAL.       IT_ITEM
    -PURCH_NO_C = IT_DETAIL-PURCH_NO_C.     
    ELSE.       IT_ITEM
    -PURCH_NO_C = IT_DETAIL-BSTKD.     
    ENDIF.     IT_ITEMX
    -PURCH_NO_C 'X'.

    *----------------- 201804 END add----------------------------*     IT_ITEM

    -WBS_ELEM = IT_DETAIL-WBS_ELEM.     


    IF P3 'X'.       IT_ITEM

    -REF_DOC          = IT_DETAIL-REF_DOC.       IT_ITEM
    -REF_DOC_IT       = IT_DETAIL-REF_DOC_IT.       IT_ITEM
    -REF_DOC_CA       = IT_DETAIL-REF_DOC_CA.       IT_ITEMX


    -REF_DOC          'X'.       IT_ITEMX
    -REF_DOC_IT       'X'.       IT_ITEMX
    -REF_DOC_CA       'X'.       


    IF IT_DETAIL-PS_PSP_PNR IS NOT INITIAL.         IT_ITEM
    -WBS_ELEM = IT_DETAIL-WBS_ELEM.         IT_ITEMX
    -WBS_ELEM  'X'.       
    ENDIF.     

    ENDIF.     









    APPEND IT_ITEM.     
    APPEND IT_ITEMX.     


    IF IT_DETAIL-SHORT_TEXT IS NOT INITIAL.       LT_ORDER_TEXT
    -ITM_NUMBER = IT_DETAIL-POSNR.       LT_ORDER_TEXT
    -TEXT_ID '0001'.       LT_ORDER_TEXT
    -LANGU '1'.       LT_ORDER_TEXT
    -TEXT_LINE = IT_DETAIL-SHORT_TEXT.       
    APPEND LT_ORDER_TEXT.     
    ENDIF.




    ****计划行     IT_SCHEDULES_IN
    -ITM_NUMBER = IT_DETAIL-POSNR.     IT_SCHEDULES_IN


    -REQ_QTY    = IT_DETAIL-KWMENG.


    *   计划行标志     IT_SCHEDULES_INX
    -ITM_NUMBER  = IT_DETAIL-POSNR.     IT_SCHEDULES_INX
    -UPDATEFLAG  'X'.     IT_SCHEDULES_INX
    -REQ_QTY     'X'.
    *** 首次交货日期     
    IF IT_DETAIL-VDATU IS NOT INITIAL.       IT_SCHEDULES_IN
    -REQ_DATE  = IT_DETAIL-VDATU.       IT_SCHEDULES_INX
    -REQ_DATE  'X'.     
    ELSE.       IT_SCHEDULES_IN
    -REQ_DATE  = SY-DATUM.       IT_SCHEDULES_INX
    -REQ_DATE  'X'.     
    ENDIF.     




    APPEND IT_SCHEDULES_IN.     
    APPEND IT_SCHEDULES_INX.

    ****创建价格条件
    ******特价商品输入单价     

    IF IT_DETAIL-NETWR IS NOT INITIAL.       

    IF IT_HEADER-DOC_TYPE 'ZOR' .         IT_CONDITIONS
    -ITM_NUMBER = IT_DETAIL-POSNR.         IT_CONDITIONS
    -COND_TYPE 'ZPR2'.     "条件类型         IT_CONDITIONS

    -COND_VALUE = IT_DETAIL-NETWR / 10  .  "1000的净价

    *  it_conditions-currency = 'CNY'.         IT_CONDITIONS
    -COND_P_UNT '1000'.         IT_CONDITIONS
    -CONDVALUE = IT_DETAIL-NETWR * IT_DETAIL-KWMENG / 10000 "净价值       
    ELSE.         IT_CONDITIONS
    -ITM_NUMBER = IT_DETAIL-POSNR.         IT_CONDITIONS
    -COND_TYPE 'ZPR2'.     "条件类型         IT_CONDITIONS
    -COND_VALUE = IT_DETAIL-NETWR / 10 .   "1000的净价

    *    it_conditions-currency = 'USD'.         IT_CONDITIONS
    -COND_P_UNT '1'.         IT_CONDITIONS
    -CONDVALUE = IT_DETAIL-NETWR * IT_DETAIL-KWMENG / 10  "净价值       

    ENDIF.       
    APPEND IT_CONDITIONS.     
    ENDIF.   



    ENDLOOP.   

    DATA:T_MESS(220TYPE C.   
    CLEAR:T_MESS,EP_VBELN.   
    CLEAR:IT_RETURN[].   


    CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'     
    EXPORTING       ORDER_HEADER_IN     
    = IT_HEADER       ORDER_HEADER_INX    
    = IT_HEADERX       BEHAVE_WHEN_ERROR   
    ' '     
    IMPORTING       SALESDOCUMENT       
    = EP_VBELN     
    TABLES       
    RETURN              = IT_RETURN       ORDER_ITEMS_IN      
    = IT_ITEM       ORDER_ITEMS_INX     
    = IT_ITEMX       ORDER_SCHEDULES_IN  
    = IT_SCHEDULES_IN       ORDER_SCHEDULES_INX 
    = IT_SCHEDULES_INX       ORDER_CONDITIONS_IN 
    = IT_CONDITIONS       ORDER_TEXT          
    = LT_ORDER_TEXT       ORDER_PARTNERS      
    = IT_PARTNER       EXTENSIONIN         
    = IT_EXTENSIONIN.



    *  IF IT_HEADER-DOC_TYPE = 'ZOR'.
    *   
    READ TABLE IT_RETURN WITH  KEY TYPE 'E' .   
    IF SY-SUBRC EQ 0.     
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.   
    ELSE.     
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'       
    EXPORTING         
    WAIT 'X'.     

    PERFORM UPDATE_EXT USING EP_VBELN.     
    COMMIT WORK AND WAIT.   
    ENDIF.   



    DELETE  IT_RETURN WHERE TYPE 'S'.
    *    DELETE  it_return WHERE TYPE = 'W'.   

    LOOP AT  IT_RETURN.     
    CONCATENATE  T_MESS                 IT_RETURN
    -MESSAGE     
    INTO T_MESS.   
    ENDLOOP.   

    CLEAR:  IT_HEADER.   
    CLEAR:  IT_RETURN , IT_RETURN[].   
    CLEAR:  IT_ITEM , IT_ITEM[].   
    CLEAR:  IT_ITEMX  , IT_ITEMX[].   
    CLEAR:  IT_SCHEDULES_IN , IT_SCHEDULES_IN[].   
    CLEAR:  IT_SCHEDULES_INX  , IT_SCHEDULES_INX[].   
    CLEAR:  IT_CONDITIONS , IT_CONDITIONS[].   
    CLEAR:  LT_ORDER_TEXT , LT_ORDER_TEXT[].   
    CLEAR:  IT_PARTNER  , IT_PARTNER[].



    *  CONCATENATE  '客户代码:' IT_HEAD-KUNNR T_MESS INTO T_MESS.   IT_LOG

    -VBELN    = EP_VBELN.   IT_LOG
    -VKORG    = IT_HEAD-VKORG.   IT_LOG
    -VTWEG    = IT_HEAD-VTWEG.   IT_LOG
    -KUNNR    = IT_HEAD-KUNNR.   IT_LOG
    -BSTKD = IT_HEAD-BSTKD.   
    CONCATENATE  '提示:' T_MESS   
    INTO    IT_LOG-REMARK  .   
    APPEND IT_LOG.

    ENDLOOP.

    LOOP AT IT_LOG.   
    WRITE /.   
    WRITE :   '采购订单编码:', IT_LOG-BSTKD.   
    WRITE ' 销售订单号:',IT_LOG-VBELN.   
    WRITE '销售组织:',IT_LOG-VKORG'分销渠道:',IT_LOG-VTWEG,    
    '客户:',IT_LOG-KUNNR.   
    WRITE / IT_LOG-REMARK .

    *    DATA ITLOG LIKE ZSD066_LOG.
    *    CLEAR ITLOG.
    *    MOVE-CORRESPONDING IT_LOG TO ITLOG.
    *    ITLOG-CDAT = SY-DATUM.
    *    ITLOG-CTIM = SY-UZEIT.
    *    MODIFY ZSD066_LOG FROM ITLOG.

    ENDLOOP.

    *&---------------------------------------------------------------------*
    *&      Form  UPLOAD_DATA2
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM UPLOAD_DATA2.   

    LOOP AT ITXLS.     
    MOVE ITXLS-COL1 TO REC_ITAB-AUART."订单类型     
    MOVE ITXLS-COL2 TO REC_ITAB-VKORG."销售组织     
    MOVE ITXLS-COL3 TO REC_ITAB-VTWEG ."分销渠道     
    MOVE ITXLS-COL4 TO REC_ITAB-KUNNR."售达方     
    MOVE ITXLS-COL5 TO REC_ITAB-KUNNR2."送达方     
    MOVE ITXLS-COL6 TO REC_ITAB-BSTKD."采购订单编码     
    MOVE ITXLS-COL7 TO REC_ITAB-AUGRU."采购订单原因     
    IF STRLEN( ITXLS-COL8 10.       
    CONCATENATE ITXLS-COL8+0(4) ITXLS-COL8+5(2) ITXLS-COL8+8(2INTO ITXLS-COL8.     
    ENDIF.     
    MOVE ITXLS-COL8 TO REC_ITAB-VDATU."请求交货日期     
    IF STRLEN( ITXLS-COL9 10.       
    CONCATENATE ITXLS-COL9+0(4) ITXLS-COL9+5(2) ITXLS-COL9+8(2INTO ITXLS-COL9.     
    ENDIF.     
    MOVE ITXLS-COL9 TO REC_ITAB-BSTDK_E  ."需求发货日期     
    MOVE ITXLS-COL10 TO REC_ITAB-ADR."抬头文本     
    MOVE ITXLS-COL11 TO REC_ITAB-ADR1.                      "抬头文本1     
    MOVE ITXLS-COL12 TO REC_ITAB-SHORT_TEXT."抬头文本     
    MOVE ITXLS-COL13 TO REC_ITAB-POSNR."行项目     
    MOVE ITXLS-COL14 TO REC_ITAB-MATNR."物料编码     
    MOVE ITXLS-COL15 TO REC_ITAB-KWMENG."订单数量     
    MOVE ITXLS-COL16 TO REC_ITAB-NETWR."特殊单价     
    MOVE ITXLS-COL17 TO REC_ITAB-WERKS."工厂     

    DATA LV_COL18 TYPE I.     
    DATA: LV_COL18_1 TYPE CHAR4,           LV_COL18_2 
    TYPE CHAR2,           LV_COL18_3 
    TYPE CHAR2.     
    CLEAR: LV_COL18,LV_COL18_1,LV_COL18_2,LV_COL18_3.     
    CALL FUNCTION 'ZDYNAMI_OUTPUT_LENGTH'       
    EXPORTING         
    FIELD = ITXLS-COL18       
    IMPORTING         LEN   
    = LV_COL18.     

    IF LV_COL18 10.       
    CALL FUNCTION 'Z_FIY_OFFSET_EDIT'         
    EXPORTING           IM_INPUT     
    = ITXLS-COL18           IM_OFFSET_IN 
    0           IM_LENGTH_IN 
    4
    *         IM_OFFSET_OUT       = 0
    *         IM_LENGTH_OUT       = 0         
    CHANGING           CH_OUTPUT    
    = LV_COL18_1.       
    CALL FUNCTION 'Z_FIY_OFFSET_EDIT'         
    EXPORTING           IM_INPUT     
    = ITXLS-COL18           IM_OFFSET_IN 
    5           IM_LENGTH_IN 
    2
    *         IM_OFFSET_OUT       = 0
    *         IM_LENGTH_OUT       = 0         
    CHANGING           CH_OUTPUT    
    = LV_COL18_2.       
    CALL FUNCTION 'Z_FIY_OFFSET_EDIT'         
    EXPORTING           IM_INPUT     
    = ITXLS-COL18           IM_OFFSET_IN 
    8           IM_LENGTH_IN 
    2
    *         IM_OFFSET_OUT       = 0
    *         IM_LENGTH_OUT       = 0         
    CHANGING           CH_OUTPUT    
    = LV_COL18_3.       
    CONCATENATE LV_COL18_1 LV_COL18_2 LV_COL18_3 INTO ITXLS-COL18.
    *      CONCATENATE ITXLS-COL18+0(4) ITXLS-COL18+5(2) ITXLS-COL18+8(2) INTO ITXLS-COL18.     
    ENDIF.     
    MOVE ITXLS-COL18 TO REC_ITAB-IHREZ_E  ."首次订单评审交期     
    MOVE ITXLS-COL19 TO REC_ITAB-VSBED."装运点     
    MOVE ITXLS-COL20 TO REC_ITAB-ZZACT."活动     
    MOVE ITXLS-COL21 TO REC_ITAB-LGORT."库存地点     

    CLEAR: LV_COL18,LV_COL18_1,LV_COL18_2,LV_COL18_3.     

    CALL FUNCTION 'ZDYNAMI_OUTPUT_LENGTH'       
    EXPORTING         
    FIELD = ITXLS-COL22       
    IMPORTING         LEN   
    = LV_COL18.     

    CALL FUNCTION 'Z_FIY_OFFSET_EDIT'       
    EXPORTING         IM_INPUT     
    = ITXLS-COL22         IM_OFFSET_IN 
    0         IM_LENGTH_IN 
    4
    *       IM_OFFSET_OUT       = 0
    *       IM_LENGTH_OUT       = 0       
    CHANGING         CH_OUTPUT    
    = LV_COL18_1.     
    CALL FUNCTION 'Z_FIY_OFFSET_EDIT'       
    EXPORTING         IM_INPUT     
    = ITXLS-COL22         IM_OFFSET_IN 
    5         IM_LENGTH_IN 
    2
    *       IM_OFFSET_OUT       = 0
    *       IM_LENGTH_OUT       = 0       
    CHANGING         CH_OUTPUT    
    = LV_COL18_2.     
    CALL FUNCTION 'Z_FIY_OFFSET_EDIT'       
    EXPORTING         IM_INPUT     
    = ITXLS-COL22         IM_OFFSET_IN 
    8         IM_LENGTH_IN 
    2
    *       IM_OFFSET_OUT       = 0
    *       IM_LENGTH_OUT       = 0       
    CHANGING         CH_OUTPUT    
    = LV_COL18_3.     

    IF LV_COL18 10.       

    CONCATENATE LV_COL18_1 LV_COL18_2 LV_COL18_3 INTO ITXLS-COL22.
    *     CONCATENATE ITXLS-COL22+0(4) ITXLS-COL22+5(2) ITXLS-COL22+8(2) INTO ITXLS-COL22.     
    ENDIF.     
    MOVE ITXLS-COL22 TO REC_ITAB-DUN_DATE."最后联系日期     
    MOVE ITXLS-COL23 TO REC_ITAB-ITEM_CATEG." 项目类  PSTYV     
    MOVE ITXLS-COL24 TO REC_ITAB-P3_KUNNR." 项目类  PSTYV
    *----------------- 201804 BEGIN ADD--------------------------*     
    MOVE ITXLS-COL25 TO REC_ITAB-PURCH_NO_C." 售达方采购订单编号     
    MOVE ITXLS-COL26 TO REC_ITAB-WBS_ELEM." WBS 元素
    *----------------- 201804 END ADD----------------------------*     
    PERFORM F_ADD_ZERO USING REC_ITAB-P3_KUNNR.     
    PERFORM F_ADD_ZERO USING REC_ITAB-MATNR.
    * ADD BY LH 增加收货人信息     
    MOVE ITXLS-COL27 TO REC_ITAB-PER_ADDR." 收件人地址     
    MOVE ITXLS-COL28 TO REC_ITAB-PER_NAME." 收货人     
    MOVE ITXLS-COL29 TO REC_ITAB-PER_TELE." 收货人电话(区号-电话号/手机号)     

    MOVE ITXLS-COL30 TO  REC_ITAB-EXT01 .     
    MOVE ITXLS-COL31 TO  REC_ITAB-EXT02 .     
    MOVE ITXLS-COL32 TO  REC_ITAB-EXT03 .     
    MOVE ITXLS-COL33 TO  REC_ITAB-EXT04 .     
    MOVE ITXLS-COL34 TO  REC_ITAB-EXT05 .     
    MOVE ITXLS-COL35 TO  REC_ITAB-EXT06 .     
    MOVE ITXLS-COL36 TO  REC_ITAB-EXT07 .     
    MOVE ITXLS-COL37 TO  REC_ITAB-EXT08 .     
    MOVE ITXLS-COL38 TO  REC_ITAB-EXT09 .     
    MOVE ITXLS-COL39 TO  REC_ITAB-EXT10 .     
    MOVE ITXLS-COL40 TO  REC_ITAB-EXT11 .     
    MOVE ITXLS-COL41 TO  REC_ITAB-EXT12 .     
    MOVE ITXLS-COL42 TO  REC_ITAB-EXT13 .     
    MOVE ITXLS-COL43 TO  REC_ITAB-EXT14 .     
    MOVE ITXLS-COL44 TO  REC_ITAB-EXT15 .     
    MOVE ITXLS-COL45 TO  REC_ITAB-EXT16 .     
    MOVE ITXLS-COL46 TO  REC_ITAB-EXT17 .     
    MOVE ITXLS-COL47 TO  REC_ITAB-EXT18 .     




    MOVE ITXLS-COL48 TO  REC_ITAB-S_PROC_IND .     
    MOVE ITXLS-COL49 TO  REC_ITAB-BSTKD_E .     






    APPEND REC_ITAB.     
    CLEAR REC_ITAB.   
    ENDLOOP.

    ENDFORM.                    "UPLOAD_DATA2


    *&---------------------------------------------------------------------*
    *&      Form  CALC_P3
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM CALC_P3 .
    ***  **计算报价单   

    DATA: ITABP3 LIKE ITAB_P3 OCCURS WITH HEADER LINE.   
    DATABEGIN OF ITP OCCURS ,           VBELN      
    LIKE VBAP-VBELN,           POSNR      
    LIKE VBAP-POSNR,           MATNR      
    TYPE MATNR,           KUNNR      
    TYPE KUNNR,           KWMENG     
    LIKE VBAP-KWMENG,           
    SUM        LIKE VBAP-KWMENG,           NUM        
    LIKE VBAP-KWMENG,           PS_PSP_PNR 
    TYPE PS_PSP_PNR,         
    END OF ITP.



    *  LOOP AT ITH.   

    SELECT P~VBELN P~POSNR KWMENG MATNR KUNNR P~PS_PSP_PNR     
    INTO CORRESPONDING FIELDS OF TABLE ITP      
    FROM VBAP AS P       
    JOIN VBAK AS K ON P~VBELN = K~VBELN      
    JOIN VBUP AS U ON P~VBELN = U~VBELN AND P~POSNR = U~POSNR     
    FOR ALL ENTRIES IN ITH     
    WHERE RFSTA <> 'C' AND KUNNR = ITH-P3_KUNNR AND MATNR = ITH-MATNR     
    AND AUART 'AG' AND ABGRU ''"报价单   

    LOOP AT ITP"报价单剩余量     
    SELECT SUM( RFMNG INTO ITP-SUM FROM VBFA WHERE VBELV = ITP-VBELN       
    AND  POSNV = ITP-POSNR       
    AND  VBTYP_N 'C'.     ITP

    -NUM = ITP-KWMENG - ITP-SUM.     

    MODIFY ITP.   

    ENDLOOP.   


    SORT ITP BY VBELN POSNR.

    *  ENDLOOP.   
    DATATYPE I.   

    LOOP AT ITAB_P3.     

    0.     

    LOOP AT ITP WHERE MATNR =  ITAB_P3-MATNR AND KUNNR = ITAB_P3-P3_KUNNR.       

    I + 1.       
    MOVE ITAB_P3 TO REC_ITAB.       REC_ITAB
    -REF_DOC      = ITP-VBELN.       REC_ITAB
    -REF_DOC_IT     = ITP-POSNR.       REC_ITAB
    -PS_PSP_PNR     = ITP-PS_PSP_PNR.       REC_ITAB

    -REF_DOC_CA   'B'.       
    SELECT SINGLE POSID  INTO REC_ITAB-WBS_ELEM FROM PRPS WHERE PSPNR = ITP-PS_PSP_PNR.       


    CHECK ITP-NUM > AND  ITAB_P3-KWMENG > 0.       

    IF ITAB_P3-KWMENG >= ITP-NUM.         REC_ITAB
    -KWMENG  = ITP-NUM.         
    DELETE ITP.         ITAB_P3
    -KWMENG = ITAB_P3-KWMENG - ITP-NUM.
    *        REC_ITAB-POSNR = '90000' + REC_ITAB-POSNR .         REC_ITAB
    -POSNR =  REC_ITAB-POSNR  + .       


    ELSE.         ITP
    -NUM = ITP-NUM - ITAB_P3-KWMENG.         ITAB_P3
    -KWMENG 0.         
    MODIFY ITP.       

    ENDIF.       


    APPEND REC_ITAB.       




    MODIFY ITAB_P3.     

    ENDLOOP.   


    ENDLOOP.   

    DELETE ITAB_P3 WHERE KWMENG <= 0.   

    APPEND LINES OF ITAB_P3 TO REC_ITAB.


    ENDFORM.


    *&---------------------------------------------------------------------*
    *&      Form  UPDATE_EXT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_EP_VBELN  text
    *----------------------------------------------------------------------*
    FORM UPDATE_EXT  USING    P_EP_VBELN.   


    DATA: IT_SOHEADER LIKE IT_HEAD.   

    CLEAR IT_SOHEADER.   
    MOVE IT_HEAD TO IT_SOHEADER.   

    DATA: SET_EXPR  TYPE STRING.   
    CLEAR SET_EXPR.   
    IF IT_SOHEADER-EXT01 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT01 =   IT_SOHEADER-EXT01 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT02 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT02 =   IT_SOHEADER-EXT02 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT03 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT03 = IT_SOHEADER-EXT03 '  INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT04 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT04 =   IT_SOHEADER-EXT04 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT05 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT05 =   IT_SOHEADER-EXT05 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT06 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT06 =   IT_SOHEADER-EXT06 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT07 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT07 =   IT_SOHEADER-EXT07 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT08 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT08 =   IT_SOHEADER-EXT08 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT09 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT09 =   IT_SOHEADER-EXT09 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT10 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT10 =   IT_SOHEADER-EXT10 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT11 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT11 =   IT_SOHEADER-EXT11 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT12 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT12 =   IT_SOHEADER-EXT12 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT13 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT13 =   IT_SOHEADER-EXT13 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT14 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT14 =   IT_SOHEADER-EXT14' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT15 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT15 =   IT_SOHEADER-EXT15 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT16 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT16 =   IT_SOHEADER-EXT16 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT17 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT17 =   IT_SOHEADER-EXT17 ' INTO SET_EXPR .   
    ENDIF.   
    IF IT_SOHEADER-EXT18 IS NOT INITIAL.     
    CONCATENATE  SET_EXPR   ' EXT18 =   IT_SOHEADER-EXT18 ' INTO SET_EXPR .   
    ENDIF.

    *  WRITE SET_EXPR.   
    IF SET_EXPR IS NOT INITIAL.     
    UPDATE VBAK SET (SET_EXPRWHERE VBELN = P_EP_VBELN.   
    ENDIF.


    ENDFORM.




    INCLUDE ZRPT_FUN.

  • 相关阅读:
    C#多线程开发中如何更新UI界面控件内容
    C#中Invoke的用法(转)
    while loop, for loop
    basic bash learning 1
    Some useful link for leaning linux shell
    How to Adding ExtendReport in test framework
    如何解决Extent report 无法加载CSS样式 的问题
    Capturing Screenshots
    WebDriver switching to new window
    Data Driven Testing
  • 原文地址:https://www.cnblogs.com/twttafku/p/14251633.html
Copyright © 2020-2023  润新知