ABAP SO创建接口(开发笔记)

ABAP SO创建接口(开发笔记)

 

FUNCTION ZOA_SD_SO_CREATE.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IM_HEAD) TYPE  ZTS_SO_CREATE_HEAD
*"  EXPORTING
*"     VALUE(RS_TAB_OUT) TYPE  ZTS_SO_CREATE_RETURN
*"  TABLES
*"      PT_ITEM STRUCTURE  ZTS_SO_CREATE_ITEM OPTIONAL
*"      IT_TAB_OUT STRUCTURE  ZTS_SO_CREATE_RETURN OPTIONAL
*"----------------------------------------------------------------------
***********************************************************************************************************************
* Date written:  2018.04.20
* Author's name: Nathan                                                                                                                                                                        *
*---------------------------------------------------------------------------------------------------------------------*
* Change History                                                                                                      *
*---------------------------------------------------------------------------------------------------------------------*
*Date       |Programmer     |Request No     | Description                                                             *
*---------------------------------------------------------------------------------------------------------------------*

  TABLESVBAK,VBAP,VBKD,VBPA,VBEP,KONV,SSCRFIELDS.

  DATA LV_KALVG   LIKE TVAK-KALVG.
  DATA TAB_T683S  LIKE T683S OCCURS WITH HEADER LINE.
  DATA LINE_T683V LIKE T683V.
  DATA ZZ_X.
  DATA IM_GHFS TYPE C .

  DATA L_NUM(4)  TYPE N.
  DATA L_NUM_T(4)  TYPE N.

  DATA IT_TAB LIKE ZTS_SO_CREATE_ITEM OCCURS WITH HEADER LINE.

*  ************ BAPI执行.
  DATAORDER_HEADER_IN      LIKE BAPISDHD1.                              "通讯字段销售和分销凭证抬头
  DATAORDER_HEADER_INX     LIKE BAPISDHD1X.                             "销售和分销凭证抬头的复选框字段
  DATARETURN               LIKE BAPIRET2    OCCURS WITH HEADER LINE.
  DATAORDER_ITEMS_IN       LIKE BAPISDITM   OCCURS WITH HEADER LINE.  "通讯字段销售和分销凭证项目
  DATAORDER_ITEMS_INX      LIKE BAPISDITMX  OCCURS WITH HEADER LINE.  "通讯字段销售和分销凭证项目
  DATAORDER_SCHEDULES_IN   LIKE BAPISCHDL   OCCURS WITH HEADER LINE.  "维护 SD 凭证计划行的通讯字段
  DATAORDER_SCHEDULES_INX  LIKE BAPISCHDLX  OCCURS WITH HEADER LINE.  "维护销售凭证计划行的复选框清单
  DATAORDER_PARTNERS       LIKE BAPIPARNR   OCCURS WITH HEADER LINE.  "通讯字段: SD单据合作伙伴
  DATASALESDOCUMENT        LIKE BAPIVBELN-VBELN.
  DATAORDER_CONDITIONS_IN  TYPE BAPICOND    OCCURS WITH HEADER LINE,  "维护订单条件的通讯字段
        ORDER_CONDITIONS_INX TYPE BAPICONDX   OCCURS WITH HEADER LINE,
        ORDER_TEXT           LIKE BAPISDTEXT  OCCURS WITH HEADER LINE.
  DATA  WA_SWITCH            LIKE BAPISDLS.

  DATALWA_BAPE_VBAP    TYPE BAPE_VBAP.  "BAPI Interface for Customer Enhancements to Table VBAP
  DATALWA_BAPE_VBAPX   TYPE BAPE_VBAPX"BAPI Checkbox for Customer Enhancments to Table VBAP
  DATALWA_BAPE_VBAK    TYPE BAPE_VBAK.
  DATALWA_BAPE_VBAKX   TYPE BAPE_VBAKX.
  DATAM_IT_EXTENSIONIN TYPE TABLE OF BAPIPAREX WITH HEADER LINE.
  DATALWA_EXTENSIONIN  TYPE BAPIPAREX.  "Customer Enhancement for VBAK, VBAP, VBEP

  DATA:OS_FLAG TYPE C .

  OS_FLAG 'X'.
  EXPORT OS_FLAG OS_FLAG TO MEMORY ID 'YN_MEID01'.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      INPUT  IM_HEAD-VBELN
    
IMPORTING
      OUTPUT IM_HEAD-VBELN.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      INPUT  IM_HEAD-KUNNR
    
IMPORTING
      OUTPUT IM_HEAD-KUNNR.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      INPUT  IM_HEAD-KUNWE
    
IMPORTING
      OUTPUT IM_HEAD-KUNWE.


  DATA O_TYPE  TYPE BAPI_MTYPE .
  DATA O_MSG   TYPE BAPI_MSG .
  DATA I_DATA  TYPE TABLE OF ZSD_CRE_DATA WITH HEADER LINE.

  CLEAR I_DATA[] .
  LOOP AT PT_ITEM.
    I_DATA-MATNR PT_ITEM-MATNR .
    I_DATA-WERKS PT_ITEM-DWERK .
    I_DATA-KBETR PT_ITEM-NETPR1 .
    I_DATA-WAERS PT_ITEM-WAERS.
    APPEND I_DATA.
    CLEAR PT_ITEM .
    CLEAR I_DATA .
  ENDLOOP.
  CALL FUNCTION 'ZSD_CRE_CHECK'
    EXPORTING
*     I_BDBM  =
      I_AUART IM_HEAD-AUART
      I_KUNNR 
IM_HEAD-KUNNR
      I_VKORG 
IM_HEAD-VKORG
      I_VTWEG 
IM_HEAD-VTWEG
    
IMPORTING
      O_TYPE  O_TYPE
      O_MSG   
O_MSG
    
TABLES
      I_DATA  I_DATA[].

  IF O_TYPE 'E'.

    RS_TAB_OUT-LX     O_TYPE.
    RS_TAB_OUT-MESS   O_MSG.

  ELSE .

    IF O_TYPE 'I'.
      PT_ITEM-ABGRU =  'Z9'.        "拒绝原因
    ENDIF.

    "" 单据类型
    CLEAR :VBAK-VBTYP,LV_KALVG,LINE_T683V,TAB_T683S,TAB_T683S[].
    SELECT SINGLE VBTYP KALVG INTO (VBAK-VBTYP,LV_KALVGFROM TVAK
      
WHERE AUART IM_HEAD-AUART"销售凭证类型
*        IF vbak-vbtyp = 'H'." 标准订单
    DATA GS_VBAK TYPE VBAK .
    SELECT SINGLE VKORG VTWEG SPART VBELN KUNNR INTO CORRESPONDING FIELDS OF IM_HEAD FROM VBAK
      
WHERE VBELN IM_HEAD-VBELN .
*        ENDIF .
**  设定销售订单抬头数##
    ORDER_HEADER_IN-DOC_TYPE   IM_HEAD-AUART.            "销售凭证类型
    ORDER_HEADER_IN-SALES_ORG  IM_HEAD-VKORG.            "销售组织
    ORDER_HEADER_IN-DISTR_CHAN IM_HEAD-VTWEG.            "分销渠道
    ORDER_HEADER_IN-DIVISION   IM_HEAD-SPART.            "产品组

*      order_header_in-sales_off  = vbak-vkbur.              "Sales Office
*      order_header_in-sales_grp  = vbak-vkgrp.              "Sales Group
    ORDER_HEADER_IN-ORD_REASON IM_HEAD-AUGRU.            "订单原因(业务交易原因)

    IF IM_HEAD-VBELN IS NOT INITIAL.
*        order_header_in-ref_doc          = im_head-vbeln.             "参考单据的单据编号
*        order_header_in-refdoc_cat_long  = 'C'.             "参考单据的单据编号
    ENDIF.

*ORD_REASON 1 类型  AUGRU
    ORDER_HEADER_IN-PURCH_NO_C IM_HEAD-BSTKD.            "采购订单编号
*      IF vbak-vbtyp <> 'H'." 标准订单
*      order_header_in-ref_doc    = im_head-vbeln.           "参考单据的单据编号
*      ENDIF .
    IF IM_HEAD-BSTDK IS NOT INITIAL.
      ORDER_HEADER_IN-PURCH_DATE IM_HEAD-BSTDK.           "采购订单日期
    ELSE .
      ORDER_HEADER_IN-PURCH_DATE SY-DATUM .
    ENDIF.

    IF IM_HEAD-KETDAT IS NOT INITIAL.
      ORDER_HEADER_IN-REQ_DATE_H IM_HEAD-KETDAT.           "请求交货日期
    ELSE .
      ORDER_HEADER_IN-REQ_DATE_H SY-DATUM .
    ENDIF.

*      order_header_in-price_date = im_head-prsdt.         "定价日期
*      order_header_in-doc_date   = vbak-audat.            "单据日期
    IF IM_HEAD-BZTXT IS NOT INITIAL.
      CONCATENATE '%'IM_HEAD-BZTXT'%' INTO IM_HEAD-BZTXT.
      CONDENSE IM_HEAD-BZTXT NO-GAPS.
      SELECT SINGLE BZIRK INTO IM_HEAD-BZIRK FROM T171T
        
WHERE BZTXT LIKE IM_HEAD-BZTXT.
      IF IM_HEAD-BZIRK IS NOT INITIAL.
        ORDER_HEADER_IN-SALES_DIST IM_HEAD-BZIRK.      "销售工程师
      ENDIF.
    ENDIF.

    SELECT SINGLE WAERS INTO ORDER_HEADER_IN-CURRENCY FROM KNVV
      
WHERE KUNNR IM_HEAD-KUNNR  "客户
        AND VKORG IM_HEAD-VKORG  "销售组织
        AND VTWEG IM_HEAD-VTWEG  "分销渠道
        AND SPART IM_HEAD-SPART"生产线
*      order_header_in-currency   =  'CNY'."vbak-waerk.    "凭证货币
*      order_header_in-ordcomb_in = vbkd-kzazu.            "订单组合标识
*      order_header_in-ship_cond  = vbak-vsbed.            "装运条件
*      order_header_in-incoterms1 = vbkd-inco1.            "国际贸易条款 (部分1)
*      order_header_in-incoterms2 = vbkd-inco2.            "国际贸易条款 (部分2)
*      order_header_in-pmnttrms   = vbkd-zterm.            "付款条件.
*      order_header_in-bill_date  = vbkd-fkdat.            "出具发票日期
*      order_header_in-ord_reason = vbak-augru.            "订单原因

*     抬头文本
*      order_text-itm_number = space.
*      order_text-text_id = '0001'.
*      order_text-langu = sy-langu.
*      order_text-format_col = '*'.
*      order_text-text_line = im_head-head_text.
*      APPEND order_text.

*      order_header_inx-updateflag  = 'I'.
    ORDER_HEADER_INX-DOC_TYPE    'X'.
    ORDER_HEADER_INX-SALES_ORG   'X'.
    ORDER_HEADER_INX-DISTR_CHAN  'X'.
    ORDER_HEADER_INX-DIVISION    'X'.
*      order_header_inx-sales_off   = 'X'.
*      order_header_inx-sales_grp   = 'X'.
    ORDER_HEADER_INX-PURCH_NO_C  'X'.
    ORDER_HEADER_INX-PURCH_DATE  'X'.
    ORDER_HEADER_INX-REQ_DATE_H  'X'.
    ORDER_HEADER_INX-PRICE_DATE  'X'.
    ORDER_HEADER_INX-ORD_REASON  'X'.
*      order_header_inx-doc_date    = 'X'.
    IF ORDER_HEADER_IN-SALES_DIST IS NOT INITIAL.
      ORDER_HEADER_INX-SALES_DIST  'X'.
    ENDIF.
    IF IM_HEAD-VBELN IS NOT INITIAL.
*        order_header_inx-ref_doc = 'X'.             "参考单据的单据编号
*        order_header_inx-refdoc_cat_long = 'X'.             "参考单据的单据编号
*        order_header_inx-sd_doc_cat = 'X'.             "参考单据的单据编号
*        order_header_inx-ref_doc_l = 'X'.             "参考单据的单据编号
    ENDIF.
*      IF vbak-vbtyp <> 'H'." 标准订单
*      order_header_inx-currency    = 'X'.
**      order_header_inx-ref_doc     = 'X'.            "参考单据的单据编号
*      ENDIF .
*      order_header_inx-ordcomb_in  = 'X'.
*      order_header_inx-ship_cond   = 'X'.
*      order_header_inx-incoterms1  = 'X'.
*      order_header_inx-incoterms2  = 'X'.
*      order_header_inx-pmnttrms    = 'X'.
*      order_header_inx-bill_date   = 'X'.
*      order_header_inx-ord_reason  = 'X'.

    "Get Header Party Function
    IF IM_HEAD-KUNNR <> ''.
      ORDER_PARTNERS-PARTN_ROLE 'AG'.            "售达方
      ORDER_PARTNERS-PARTN_NUMB IM_HEAD-KUNNR.
      APPEND ORDER_PARTNERS.
      CLEAR ORDER_PARTNERS.
    ENDIF.

    IF IM_HEAD-KUNWE <> ''.
      ORDER_PARTNERS-PARTN_ROLE 'WE'.            "送達方
      ORDER_PARTNERS-PARTN_NUMB IM_HEAD-KUNWE.
      APPEND ORDER_PARTNERS.
      CLEAR ORDER_PARTNERS.
    ENDIF.

    """
    "" 取订单定价过程
    SELECT SINGLE INTO LINE_T683V FROM T683V
      
WHERE VKORG IM_HEAD-VKORG "销售组织
        AND VTWEG IM_HEAD-VTWEG "分销渠道
        AND SPART IM_HEAD-SPART "生产线
        AND KALVG LV_KALVG
        
AND KALKS '1'.

    SELECT INTO TABLE TAB_T683S FROM T683S
      
WHERE KALSM LINE_T683V-KALSM.

***************************add by chenj 20170315 批导添加自定义增强字段 S****************************
    "Fill item level self-defined fields
*     extension BAPE_VBAP
*      CLEAR: lwa_bape_vbak,lwa_bape_vbakx.
*
*      lwa_bape_vbak-zlgort = im_head-zlgort."客户姓名
*      "checkboxes
*      lwa_bape_vbakx-zlgort = 'X'."客户姓名
*
*      MOVE 'BAPE_VBAK' TO lwa_extensionin-structure.
*      CALL METHOD cl_abap_container_utilities=>fill_container_c
*        EXPORTING
*          im_value     = lwa_bape_vbak
*        IMPORTING
*          ex_container = lwa_extensionin-valuepart1.
*      APPEND lwa_extensionin TO  m_it_extensionin.
*      CLEAR lwa_extensionin.
*
*
*      MOVE 'BAPE_VBAKX' TO lwa_extensionin-structure.
*      MOVE lwa_bape_vbakx TO lwa_extensionin-valuepart1.
*      APPEND lwa_extensionin TO m_it_extensionin.
*      CLEAR lwa_extensionin.
***************************add by chenj 20170315 批导添加自定义增强字段 E****************************

** 设定销售订单行项目

    CLEAR L_NUM.
    CLEAR L_NUM_T.
    LOOP AT PT_ITEM.
      L_NUM_T L_NUM_T + 100.
      IF PT_ITEM-POSNR IS INITIAL.
        PT_ITEM-POSNR L_NUM_T .
      ENDIF.

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          INPUT  PT_ITEM-MATNR
        
IMPORTING
          OUTPUT PT_ITEM-MATNR.

      ORDER_ITEMS_IN-ITM_NUMBER    PT_ITEM-POSNR.             "销售凭证项目
      ORDER_ITEMS_IN-ITEM_CATEG    VBAP-PSTYV.                "销售凭证项目类别
      ORDER_ITEMS_IN-MATERIAL_LONG PT_ITEM-MATNR.             "物料编号
      ORDER_ITEMS_IN-TARGET_QTY    PT_ITEM-KWMENG.            "目标数量(采用销售单位)
*        order_items_in-short_text    = pt_item-arktx.             "销售订单项目短文本
      IF PT_ITEM-VRKME IS INITIAL.
        SELECT SINGLE MEINS INTO PT_ITEM-VRKME FROM MARA
          
WHERE MATNR PT_ITEM-MATNR .
      ENDIF.
      ORDER_ITEMS_IN-TARGET_QU     PT_ITEM-VRKME.             "目标数量计量单位
*        order_items_in-sales_unit    = pt_item-vrkme.             "销售单位
      IF IM_HEAD-VBELN IS NOT INITIAL.
        ORDER_ITEMS_IN-REF_DOC       IM_HEAD-VBELN.             "参考单据的单据编号
        ORDER_ITEMS_IN-REF_DOC_IT    PT_ITEM-REF_DOC_IT.        "参考单据的单据编号
      ENDIF.
*        order_items_in-purch_no_c = vbkd-bstkd .           "Item - purchase order number
*        order_items_in-purch_date = vbkd-bstdk .           "采购日期
*        order_items_in-po_method  = vbkd-bsark.             "采购类型
*        order_items_in-po_itm_no  = vbap-posex.            "采购订单项目.
*        order_items_in-ref_1      = vbkd-ihrez.            "##
*        IF  PT_ITEM-kdmat IS NOT INITIAL.
*          order_items_in-cust_mat35 = PT_ITEM-kdmat.            "客户物料##
*        ELSE.
      SELECT SINGLE KDMAT INTO ORDER_ITEMS_IN-CUST_MAT35 FROM KNMT
        
WHERE MATNR PT_ITEM-MATNR
          
AND VKORG PT_ITEM-VKORG
          
AND VTWEG PT_ITEM-VTWEG
          
AND KUNNR PT_ITEM-KUNNR.
*        ENDIF.

*        order_items_in-price_date = vbkd-prsdt.             "Pricing date

*        order_items_in-po_dat_s    = vbkd-bstdk_e.           "ship-to party PO date
*        order_items_in-purch_no_s  = vbkd-bstkd_e.           "purchase order numbe
*        order_items_in-po_meth_s   = vbkd-bsark_e.            "采购类型
*        order_items_in-poitm_no_s  = vbkd-posex_e.            "采购订单项目.
*        order_items_in-ref_1_s     = vbkd-ihrez_e.            "##

*        order_items_in-sales_dist  = vbkd-bzirk.              "销售地##

      IF PT_ITEM-DWERK IS NOT INITIAL.
        ORDER_ITEMS_IN-PLANT  PT_ITEM-DWERK.              "工厂
      ELSE.
        SELECT SINGLE DWERK INTO ORDER_ITEMS_IN-PLANT FROM MVKE
          
WHERE MATNR PT_ITEM-MATNR
            
AND VKORG PT_ITEM-VKORG
            
AND VTWEG PT_ITEM-VTWEG.
      ENDIF.
*        order_items_in-store_loc  = vbap-lgort.             "库位

*        order_items_in-ship_point = vbap-vstel.               "Shipping Point
*        order_items_in-ship_type  = vbkd-vsart.             "Shipping Type
*        order_items_in-max_pl_dlv = vbap-antlf.             "Max.Part.Deliv.
*        order_items_in-ordcomp_in = vbkd-kzazu.             "Order Combination Indicator
*        order_items_in-reqmts_typ  = PT_ITEM-bedae.              "需求类##

      IF PT_ITEM-ABGRU IS NOT INITIAL.
        ORDER_ITEMS_IN-REASON_REJ PT_ITEM-ABGRU.        "拒绝原因
      ENDIF.

      ORDER_TEXT-ITM_NUMBER PT_ITEM-POSNR.
      ORDER_TEXT-TEXT_ID '0001'.
      ORDER_TEXT-LANGU SY-LANGU.
      ORDER_TEXT-TEXT_LINE PT_ITEM-TEXT_LINE.
      APPEND ORDER_TEXT.
      CLEAR ORDER_TEXT.

      APPEND ORDER_ITEMS_IN.
      CLEAR ORDER_ITEMS_IN.

*        order_items_inx-updateflag  = 'I'.
      ORDER_ITEMS_INX-ITM_NUMBER  PT_ITEM-POSNR.
      ORDER_ITEMS_INX-ITEM_CATEG  'X'.
      ORDER_ITEMS_INX-MATERIAL_LONG  'X'.
      ORDER_ITEMS_INX-TARGET_QTY  'X'.      "目标数量(采用销售单位)
      ORDER_ITEMS_INX-TARGET_QU   'X'.      "目标数量计量单位
*        order_items_inx-short_text  = 'X'.      "销售订单项目短文本
*        order_items_inx-sales_unit  = 'X'.      "销售单位
*        order_items_inx-purch_no_c  = 'X'.
*        order_items_inx-purch_date  = 'X'.
*        order_items_inx-po_method   = 'X'.
*        order_items_inx-po_itm_no   = 'X'.
*        order_items_inx-ref_1       = 'X'.
      ORDER_ITEMS_INX-CUST_MAT35  'X'.

*        order_items_inx-price_date  = 'X'.

*        order_items_inx-po_dat_s    = 'X'.
*        order_items_inx-purch_no_s  = 'X'.
*        order_items_inx-po_meth_s   = 'X'.
*        order_items_inx-poitm_no_s  = 'X'.
*        order_items_inx-ref_1_s     = 'X'.

*        order_items_inx-sales_dist  = 'X'.

      ORDER_ITEMS_INX-PLANT       'X'.
      IF IM_HEAD-VBELN IS NOT INITIAL.
        ORDER_ITEMS_INX-REF_DOC     'X'.             "参考单据的单据编号
        ORDER_ITEMS_INX-REF_DOC_IT  'X'.             "参考单据的单据编号
      ENDIF.
*        order_items_inx-store_loc   = 'X'.

*        order_items_inx-ship_point  = 'X'.
*        order_items_inx-ship_type   = 'X'.
*        order_items_inx-max_pl_dlv  = 'X'.
*        order_items_inx-ordcomp_in  = 'X'.
      IF PT_ITEM-ABGRU IS  NOT INITIAL.
        ORDER_ITEMS_INX-REASON_REJ  'X'.
      ENDIF.
*
      ORDER_ITEMS_INX-REQMTS_TYP  'X'.
      APPEND  ORDER_ITEMS_INX.
      CLEAR ORDER_ITEMS_INX.

***************************add by chenj 20170315 批导添加自定义增强字段 S****************************
      "Fill item level self-defined fields
*     extension BAPE_VBAP
*        CLEAR: lwa_bape_vbap,lwa_bape_vbapx.
*
*        lwa_bape_vbap-posnr  = pt_item-posnr."行项目
*        lwa_bape_vbap-zlifnr = pt_item-zlifnr."供应商或债权人的帐号
*
*        lwa_bape_vbapx-posnr = pt_item-posnr."行项目
*        lwa_bape_vbapx-zlifnr = 'X'."电商客户快递单号
*
*        MOVE 'BAPE_VBAP' TO lwa_extensionin-structure.
*        CALL METHOD cl_abap_container_utilities=>fill_container_c
*          EXPORTING
*            im_value     = lwa_bape_vbap
*          IMPORTING
*            ex_container = lwa_extensionin-valuepart1.
*        APPEND lwa_extensionin TO  m_it_extensionin.
*        CLEAR lwa_extensionin.
*
*        MOVE 'BAPE_VBAPX' TO lwa_extensionin-structure.
*        MOVE lwa_bape_vbapx TO lwa_extensionin-valuepart1.
*        APPEND lwa_extensionin TO m_it_extensionin.
*        CLEAR lwa_extensionin.
***************************add by chenj 20170315 批导添加自定义增强字段 E****************************

***      交货计划
      "Get Schedule line

      ORDER_SCHEDULES_IN-ITM_NUMBER PT_ITEM-POSNR.             "销售订单行项目号
*          order_schedules_in-sched_line = '0001'.
      ORDER_SCHEDULES_IN-REQ_QTY    PT_ITEM-KWMENG.            "销售订单数量
      ORDER_SCHEDULES_IN-REQ_DATE   IM_HEAD-KETDAT .           "计划行日期
      APPEND ORDER_SCHEDULES_IN.
      CLEAR  ORDER_SCHEDULES_IN.

*          CLEAR  order_schedules_inx.
*          order_schedules_inx-itm_number = pt_item-posnr.        "销售订单行项目号
**          order_schedules_inx-sched_line = '0001'.
**          order_schedules_inx-updateflag = 'I'.
*          order_schedules_inx-req_qty    = 'X'.                  "销售订单数量
*          order_schedules_inx-req_date   = 'X'.                  "计划行日期
*          APPEND order_schedules_inx.

      "Get Condition Data
      """ 价格
      IF PT_ITEM-WAERS '' .
        PT_ITEM-WAERS =  ORDER_HEADER_IN-CURRENCY.
      ENDIF.

      IF PT_ITEM-NETPR1 IS NOT INITIAL."ZR01
*          order_conditions_in-itm_number  = pt_item-posnr.        "Condition item number
**        order_conditions_in-cond_st_no  = konv-stunr.            "步骤
*          order_conditions_in-cond_count  = '01'.                 "计数##
*          order_conditions_in-cond_type   =  'ZR01'.              "Condition type
*          order_conditions_in-cond_value  = pt_item-netpr1.       "Amount
*          order_conditions_in-currency    = pt_item-waers.        "Currency
*          order_conditions_in-cond_updat  = 'X'.                  "Per
**          order_conditions_in-cond_p_unt  = PT_ITEM-kpein.       "Per
**        order_conditions_in-cond_unit   = konv-kmein.            "UOM
*          APPEND order_conditions_in.
*          CLEAR order_conditions_in.

*          order_conditions_inx-updateflag  = 'U'.
*          order_conditions_inx-itm_number  = pt_item-posnr.
**        order_conditions_inx-cond_st_no  = konv-stunr.
*          order_conditions_inx-cond_count  = '01'.
*          order_conditions_inx-cond_type   = 'ZR01'.              "konv-kschl.
*          order_conditions_inx-cond_value  = 'X'.
*          order_conditions_inx-currency    = 'X'.
*          order_conditions_inx-cond_p_unt  = 'X'.
**          order_conditions_inx-req_date    = 'X' .
**        order_conditions_inx-cond_unit   = 'X'.
*          APPEND order_conditions_inx.
*          CLEAR order_conditions_inx.
      ELSE.

****  ZR02價格取值
        DATA PRICE TYPE DECIMALS 4.
        DATA WAERK LIKE VBAP-WAERK.
        DATA KPEIN LIKE KOMV-KPEIN.
        CLEAR PRICE,WAERK,KPEIN.
        SELECT SINGLE KBETR KONWA AS WAERS  KPEIN INTO (PRICE,WAERK,KPEIN)
        FROM KONP
        INNER 
JOIN A305 ON  KONP~KNUMH A305~KNUMH
        
WHERE A305~KAPPL 'V' AND A305~KSCHL 'ZR01' AND A305~VKORG PT_ITEM-VKORG AND A305~VTWEG PT_ITEM-VTWEG  AND
         A305~MATNR PT_ITEM-MATNR AND A305~DATAB <= SY-DATUM AND A305~DATBI >= SY-DATUM AND A305~KUNNR PT_ITEM-KUNNR"现在取跟客户有关的价格,如没有则取物料价格
        IF SY-SUBRC <> 0.
          CLEAR PRICE,WAERK,KPEIN.
          SELECT SINGLE KBETR KONWA AS WAERS  KPEIN INTO (PRICE,WAERK,KPEIN)
          FROM KONP
          INNER 
JOIN A304 ON  KONP~KNUMH A304~KNUMH
          
WHERE A304~KAPPL 'V' AND A304~KSCHL 'ZR01' AND A304~VKORG PT_ITEM-VKORG AND A304~VTWEG PT_ITEM-VTWEG  AND
           A304~MATNR PT_ITEM-MATNR AND A304~DATAB <= SY-DATUM AND A304~DATBI >= SY-DATUM .
        ENDIF.
        IF PRICE IS NOT INITIAL.
          ORDER_CONDITIONS_IN-ITM_NUMBER  PT_ITEM-POSNR.  "Condition item number
          ORDER_CONDITIONS_IN-COND_TYPE   =  'ZR01'.        "Condition type
          ORDER_CONDITIONS_IN-COND_VALUE  PRICE.          "Amount
          ORDER_CONDITIONS_IN-CURRENCY    WAERK.          "Currency
          ORDER_CONDITIONS_IN-COND_P_UNT  KPEIN.          "Per
          ORDER_CONDITIONS_IN-COND_UPDAT  'X'.            "Per
          APPEND ORDER_CONDITIONS_IN.
          CLEAR ORDER_CONDITIONS_IN.

*            order_conditions_inx-updateflag  = 'I'.
          ORDER_CONDITIONS_INX-ITM_NUMBER  PT_ITEM-POSNR.
          ORDER_CONDITIONS_INX-COND_TYPE   'ZR01'" konv-kschl.
          ORDER_CONDITIONS_INX-COND_VALUE  'X'.
          ORDER_CONDITIONS_INX-CURRENCY    'X'.
          ORDER_CONDITIONS_INX-COND_P_UNT  'X'.
          APPEND ORDER_CONDITIONS_INX.
          CLEAR ORDER_CONDITIONS_INX.
        ENDIF.

      ENDIF.

*******************ZR02******************************************
      IF PT_ITEM-NETPR2 NE 0.
        ORDER_CONDITIONS_IN-ITM_NUMBER  PT_ITEM-POSNR.        "Condition item number
        ORDER_CONDITIONS_IN-COND_COUNT  '01'.               "计数##
        ORDER_CONDITIONS_IN-COND_TYPE   =  'ZR02'.        "Condition type
        ORDER_CONDITIONS_IN-COND_VALUE  PT_ITEM-NETPR2.        "Amount
        ORDER_CONDITIONS_IN-CURRENCY    PT_ITEM-WAERS.        "Currency

        APPEND ORDER_CONDITIONS_IN.
        CLEAR ORDER_CONDITIONS_IN.

*          order_conditions_inx-updateflag  = 'U'.
        ORDER_CONDITIONS_INX-ITM_NUMBER  PT_ITEM-POSNR.
        ORDER_CONDITIONS_INX-COND_COUNT  '01'.               "计数##
        ORDER_CONDITIONS_INX-COND_TYPE   'ZR02'" konv-kschl.
        ORDER_CONDITIONS_INX-COND_VALUE  'X'.
        ORDER_CONDITIONS_INX-CURRENCY    'X'.

        APPEND ORDER_CONDITIONS_INX.
        CLEAR ORDER_CONDITIONS_INX.
      ENDIF.

*******************ZR04********************************************
      IF PT_ITEM-NETPR3 IS NOT INITIAL.
        ORDER_CONDITIONS_IN-ITM_NUMBER  PT_ITEM-POSNR.        "Condition item number
*        order_conditions_in-cond_st_no  = konv-stunr.           "步骤
        ORDER_CONDITIONS_IN-COND_COUNT  '01'.              "计数##
        ORDER_CONDITIONS_IN-COND_TYPE   =  'ZR04'.        "Condition type
        ORDER_CONDITIONS_IN-COND_VALUE  PT_ITEM-NETPR3.        "Amount
        ORDER_CONDITIONS_IN-CURRENCY    PT_ITEM-WAERS.        "Currency

        APPEND ORDER_CONDITIONS_IN.
        CLEAR ORDER_CONDITIONS_IN.

*          order_conditions_inx-updateflag  = 'U'.
        ORDER_CONDITIONS_INX-ITM_NUMBER  PT_ITEM-POSNR.
*        order_conditions_inx-cond_st_no  = konv-stunr.
        ORDER_CONDITIONS_INX-COND_COUNT  =  '01'.
        ORDER_CONDITIONS_INX-COND_TYPE   'ZR04'" konv-kschl.
        ORDER_CONDITIONS_INX-COND_VALUE  'X'.
        ORDER_CONDITIONS_INX-CURRENCY    'X'.
        ORDER_CONDITIONS_INX-COND_P_UNT  'X'.

        APPEND ORDER_CONDITIONS_INX.
        CLEAR ORDER_CONDITIONS_INX.
      ENDIF.

******************************ZR06*******************************************
      IF PT_ITEM-NETPR4 IS NOT INITIAL.
        ORDER_CONDITIONS_IN-ITM_NUMBER  PT_ITEM-POSNR.        "Condition item number
*        order_conditions_in-cond_st_no  = konv-stunr.           "步骤
        ORDER_CONDITIONS_IN-COND_COUNT  '01'.           "计数##
        ORDER_CONDITIONS_IN-COND_TYPE   =  'ZR06'.        "Condition type
        ORDER_CONDITIONS_IN-COND_VALUE  PT_ITEM-NETPR4.        "Amount
        ORDER_CONDITIONS_IN-CURRENCY    PT_ITEM-WAERS.        "Currency
        APPEND ORDER_CONDITIONS_IN.
        CLEAR ORDER_CONDITIONS_IN.

*          order_conditions_inx-updateflag  = 'U'.
        ORDER_CONDITIONS_INX-ITM_NUMBER  PT_ITEM-POSNR.
*        order_conditions_inx-cond_st_no  = konv-stunr.
        ORDER_CONDITIONS_INX-COND_COUNT  '01'.
        ORDER_CONDITIONS_INX-COND_TYPE   'ZR06'.
        ORDER_CONDITIONS_INX-COND_VALUE  'X'.
        ORDER_CONDITIONS_INX-CURRENCY    'X'.
        ORDER_CONDITIONS_INX-COND_P_UNT  'X'.
        APPEND ORDER_CONDITIONS_INX.
        CLEAR ORDER_CONDITIONS_INX.
      ENDIF.

******************************ZP08*******************************************
      IF PT_ITEM-NETPR5 IS NOT INITIAL.
        ORDER_CONDITIONS_IN-ITM_NUMBER  PT_ITEM-POSNR.        "Condition item number
*        order_conditions_in-cond_st_no  = konv-stunr.           "步骤
        ORDER_CONDITIONS_IN-COND_COUNT  '01'.           "计数##
        ORDER_CONDITIONS_IN-COND_TYPE   =  'ZR08'.        "Condition type
        ORDER_CONDITIONS_IN-COND_VALUE  PT_ITEM-NETPR5.        "Amount
        ORDER_CONDITIONS_IN-CURRENCY    PT_ITEM-WAERS.        "Currency
        APPEND ORDER_CONDITIONS_IN.
        CLEAR ORDER_CONDITIONS_IN.

*          order_conditions_inx-updateflag  = 'U'.
        ORDER_CONDITIONS_INX-ITM_NUMBER  PT_ITEM-POSNR.
*        order_conditions_inx-cond_st_no  = konv-stunr.
        ORDER_CONDITIONS_INX-COND_COUNT  '01'.
        ORDER_CONDITIONS_INX-COND_TYPE   'ZR08'.
        ORDER_CONDITIONS_INX-COND_VALUE  'X'.
        ORDER_CONDITIONS_INX-CURRENCY    'X'.
        ORDER_CONDITIONS_INX-COND_P_UNT  'X'.
        APPEND ORDER_CONDITIONS_INX.
        CLEAR ORDER_CONDITIONS_INX.
      ENDIF.

******************************ZR09PS******************************************
      IF PT_ITEM-NETPR6 IS NOT INITIAL.
        ORDER_CONDITIONS_IN-ITM_NUMBER  PT_ITEM-POSNR.        "Condition item number
*        order_conditions_in-cond_st_no  = konv-stunr.           "步骤
        ORDER_CONDITIONS_IN-COND_COUNT  '01'.           "计数##
        ORDER_CONDITIONS_IN-COND_TYPE   =  'ZR09PS'.        "Condition type
        ORDER_CONDITIONS_IN-COND_VALUE  PT_ITEM-NETPR6.        "Amount
        ORDER_CONDITIONS_IN-CURRENCY    PT_ITEM-WAERS.        "Currency
        APPEND ORDER_CONDITIONS_IN.
        CLEAR ORDER_CONDITIONS_IN.

*          order_conditions_inx-updateflag  = 'U'.
        ORDER_CONDITIONS_INX-ITM_NUMBER  PT_ITEM-POSNR.
*        order_conditions_inx-cond_st_no  = konv-stunr.
        ORDER_CONDITIONS_INX-COND_COUNT  '01'.
        ORDER_CONDITIONS_INX-COND_TYPE   'ZR09PS'.
        ORDER_CONDITIONS_INX-COND_VALUE  'X'.
        ORDER_CONDITIONS_INX-CURRENCY    'X'.
        ORDER_CONDITIONS_INX-COND_P_UNT  'X'.
        APPEND ORDER_CONDITIONS_INX.
        CLEAR ORDER_CONDITIONS_INX.
      ENDIF.

******************************ZFXF******************************************
      IF PT_ITEM-NETPR7 IS NOT INITIAL.
        ORDER_CONDITIONS_IN-ITM_NUMBER  PT_ITEM-POSNR.        "Condition item number
*           order_conditions_in-cond_st_no  = konv-stunr.           "步骤
        ORDER_CONDITIONS_IN-COND_COUNT  '01'.           "计数##
        ORDER_CONDITIONS_IN-COND_TYPE   =  'ZFXF'.        "Condition type
        ORDER_CONDITIONS_IN-COND_VALUE  PT_ITEM-NETPR7.        "Amount
        ORDER_CONDITIONS_IN-CURRENCY    PT_ITEM-WAERS.        "Currency
        APPEND ORDER_CONDITIONS_IN.
        CLEAR ORDER_CONDITIONS_IN.

        ORDER_CONDITIONS_INX-UPDATEFLAG  'U'.
        ORDER_CONDITIONS_INX-ITM_NUMBER  PT_ITEM-POSNR.
*        order_conditions_inx-cond_st_no  = konv-stunr.
        ORDER_CONDITIONS_INX-COND_COUNT  '01'.
        ORDER_CONDITIONS_INX-COND_TYPE   'ZFXF'.
        ORDER_CONDITIONS_INX-COND_VALUE  'X'.
        ORDER_CONDITIONS_INX-CURRENCY    'X'.
        ORDER_CONDITIONS_INX-COND_P_UNT  'X'.
        APPEND ORDER_CONDITIONS_INX.
        CLEAR ORDER_CONDITIONS_INX.

      ENDIF.
      MODIFY PT_ITEM TRANSPORTING POSNR .
    ENDLOOP.

    CALL FUNCTION 'CUXC_INIT'.

    WA_SWITCH-PRICING 'G' .


*     IF im_ghfs = ''."内部给号
    IF VBAK-VBTYP <> 'H'.标准订单
*SD_SALESDOCUMENT_CREATE
*BAPI_SALESORDER_CREATEFROMDAT2
      CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
        EXPORTING
*         salesdocumentin      = im_head-vbeln
          SALES_HEADER_IN      ORDER_HEADER_IN
          SALES_HEADER_INX     
ORDER_HEADER_INX
*         logic_switch         = wa_switch
        IMPORTING
          SALESDOCUMENT_EX     SALESDOCUMENT       "生成销售订单后产生的销售订单号
        TABLES
          RETURN               RETURN
          SALES_ITEMS_IN       ORDER_ITEMS_IN
          SALES_ITEMS_INX      
ORDER_ITEMS_INX
          SALES_SCHEDULES_IN   
ORDER_SCHEDULES_IN
          SALES_SCHEDULES_INX  
ORDER_SCHEDULES_INX
          SALES_PARTNERS       
ORDER_PARTNERS
          SALES_CONDITIONS_IN  
ORDER_CONDITIONS_IN
          SALES_CONDITIONS_INX 
ORDER_CONDITIONS_INX
          SALES_TEXT           
ORDER_TEXT
*         extensionin          = m_it_extensionin     "add by chenj  20170315
        EXCEPTIONS
          OTHERS               1.

    ELSE.  "退货订##

      CALL FUNCTION 'BAPI_CUSTOMERRETURN_CREATE'
        EXPORTING
*         salesdocumentin      = im_head-vbeln
          RETURN_HEADER_IN     ORDER_HEADER_IN
          RETURN_HEADER_INX    
ORDER_HEADER_INX
*         logic_switch         = wa_switch
        IMPORTING
          SALESDOCUMENT        SALESDOCUMENT       "生成销售订单后产生的销售订单号
        TABLES
          RETURN               RETURN
          RETURN_ITEMS_IN      ORDER_ITEMS_IN
          RETURN_ITEMS_INX     
ORDER_ITEMS_INX
          RETURN_SCHEDULES_IN  
ORDER_SCHEDULES_IN
          RETURN_SCHEDULES_INX 
ORDER_SCHEDULES_INX
          RETURN_PARTNERS      
ORDER_PARTNERS
          RETURN_CONDITIONS_IN 
ORDER_CONDITIONS_IN
          RETURN_TEXT          
ORDER_TEXT
*         extensionin          = m_it_extensionin     "add by chenj  20170315
        EXCEPTIONS
          OTHERS               1.

    ENDIF.
*
*      ELSE."外部给号
*
*        IF vbak-vbtyp <> 'H'." 标准订单
*
*          CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
*            EXPORTING
*              salesdocumentin      = im_head-vbeln
*              order_header_in      = order_header_in
*              order_header_inx     = order_header_inx
**              logic_switch         = wa_switch
*            IMPORTING
*              salesdocument        = salesdocument       "生成销售订单后产生的销售订单号
*            TABLES
*              return               = return
*              order_items_in       = order_items_in
*              order_items_inx      = order_items_inx
*              order_schedules_in   = order_schedules_in
*              order_schedules_inx  = order_schedules_inx
*              order_partners       = order_partners
*              order_conditions_in  = order_conditions_in
*              order_conditions_inx = order_conditions_inx
*              order_text           = order_text
**             extensionin          = m_it_extensionin     "add by chenj  20170315
*            EXCEPTIONS
*              OTHERS               = 1.
*
*        ELSE.  "退货订##
*
*          CALL FUNCTION 'BAPI_CUSTOMERRETURN_CREATE'
*            EXPORTING
*              salesdocumentin      = im_head-vbeln
*              return_header_in     = order_header_in
*              return_header_inx    = order_header_inx
**              logic_switch         = wa_switch
*            IMPORTING
*              salesdocument        = salesdocument       "生成销售订单后产生的销售订单号
*            TABLES
*              return               = return
*              return_items_in      = order_items_in
*              return_items_inx     = order_items_inx
*              return_schedules_in  = order_schedules_in
*              return_schedules_inx = order_schedules_inx
*              return_partners      = order_partners
*              return_conditions_in = order_conditions_in
*              return_text          = order_text
**             extensionin          = m_it_extensionin     "add by chenj  20170315
*            EXCEPTIONS
*              OTHERS               = 1.
*
*        ENDIF.
*
*      ENDIF.

    READ TABLE RETURN WITH KEY TYPE 'E'.
    IF SY-SUBRC 0.
      CLEAR SALESDOCUMENT.
    ENDIF.

    CLEAR RS_TAB_OUT.
    IF SALESDOCUMENT IS NOT INITIAL.

      IF IM_HEAD-VBELN IS INITIAL.
        IM_HEAD-VBELN SALESDOCUMENT .
      ENDIF.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT 'X'.

***************************add 批导添加自定义增强字段 S****************************

      DATA GT_VBFA TYPE TABLE OF VBFA .
      DATA GS_VBFA TYPE VBFA .

      CLEAR GT_VBFA[] .
      SELECT INTO CORRESPONDING FIELDS OF TABLE GT_VBFA[] FROM VBFA
        
WHERE VBELN SALESDOCUMENT .

      LOOP AT GT_VBFA[] INTO GS_VBFA.
        UPDATE VBFA SET VBTYP_V 'C' WHERE RUUID GS_VBFA-RUUID .
      ENDLOOP.

      UPDATE VBAK SET   ZHTBM   IM_HEAD-ZHTBM                  "抬头字段
                        ZHTRQ   IM_HEAD-ZHTRQ
                        ZLGORT  
IM_HEAD-ZLGORT
*                          zz_address  = im_head-zz_address
*                          zz_shopname = im_head-zz_shopname
*                          zz_remarks  = im_head-zz_remarks
*                          zz_department = im_head-zz_department
*                          zz_numbers = im_head-zz_numbers
                  WHERE VBELN SALESDOCUMENT.

      LOOP AT PT_ITEM.                                            "行项目字段

        IF O_TYPE 'I'.

          UPDATE VBAP SET ZLIFNR PT_ITEM-ZLIFNR ABGRU 'Z9'
          WHERE VBELN SALESDOCUMENT
          
AND   POSNR PT_ITEM-POSNR
          
AND   MATNR PT_ITEM-MATNR.
        ELSE .

          UPDATE VBAP SET ZLIFNR PT_ITEM-ZLIFNR
           
WHERE VBELN SALESDOCUMENT
           
AND   POSNR PT_ITEM-POSNR
           
AND   MATNR PT_ITEM-MATNR.
        ENDIF.

      ENDLOOP.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT 'X'.

***************************add by chenj 20170315 批导添加自定义增强字段 E****************************

      RS_TAB_OUT-VBELN  SALESDOCUMENT.
      RS_TAB_OUT-AUART  IM_HEAD-AUART.
      RS_TAB_OUT-VKORG  IM_HEAD-VKORG.
      RS_TAB_OUT-VTWEG  IM_HEAD-VTWEG.
      RS_TAB_OUT-SPART  IM_HEAD-SPART.
      RS_TAB_OUT-LX     'S'.
      RS_TAB_OUT-MESS   '成功'.


  DATA I_WHILE TYPE CHAR10 .
  CLEAR I_WHILE .

*  WHILE I_WHILE < 700000.
*     ADD 1 TO I_WHILE .
*  ENDWHILE.
*-----------------------------------------------------------------------三单处理
      """ 取关联公司交易的訂單配置-SO=>PO=>SO
      DATA   RFCDEST(32).
      DATA ZTSD004 LIKE ZTSD004 .
      DATA GT_VBAP TYPE TABLE OF VBAP.
      DATA GS_VBAP TYPE VBAP.
      DATA VBAK TYPE VBAK.
      RANGES R_LIFNR FOR VBAP-ZLIFNR.
      DATA G_FLAG"满足条件标识
      """ 如果配置表里沒有,则不执行
      CLEAR GT_VBAP[] .
      SELECT INTO CORRESPONDING FIELDS OF TABLE GT_VBAP FROM VBAP
        
WHERE VBELN RS_TAB_OUT-VBELN .

      REFRESH  R_LIFNR.CLEAR  R_LIFNR.
      LOOP AT GT_VBAP INTO GS_VBAP.
        IF GS_VBAP-ZLIFNR IS NOT INITIAL.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
            EXPORTING
              INPUT  GS_VBAP-ZLIFNR
            
IMPORTING
              OUTPUT GS_VBAP-ZLIFNR.
          R_LIFNR-SIGN 'I'.
          R_LIFNR-OPTION 'EQ'.
          R_LIFNR-LOW  GS_VBAP-ZLIFNR.
          COLLECT R_LIFNR.
          CLEAR   R_LIFNR.
        ENDIF.
      ENDLOOP.
      IF R_LIFNR[] IS NOT INITIAL.
        CLEAR VBAK .
        SELECT SINGLE INTO VBAK FROM VBAK
          
WHERE VBELN RS_TAB_OUT-VBELN .
        CLEAR ZTSD004.
        SELECT SINGLE INTO ZTSD004 FROM ZTSD004 WHERE VKORG VBAK-VKORG AND VTWEG VBAK-VTWEG AND SPART VBAK-SPART AND AUART VBAK-AUART AND LIFNR IN R_LIFNR.
        IF SY-SUBRC 0.
          G_FLAG 'X'.
        ENDIF.
      ENDIF.
      IF G_FLAG 'X'.
        CONCATENATE 'CALL_TO_CLIENT_' SY-MANDT INTO RFCDEST.
        """ 创建 PO
        CALL FUNCTION 'ZRFC_PO_CREATE' DESTINATION RFCDEST STARTING NEW TASK 'Z01'
          EXPORTING
            P_VBELN VBAK-VBELN
            P_LIFNR 
ZTSD004-LIFNR
            P_Z     
''.

        """ 创建SO
        CALL FUNCTION 'ZRFC_SO_CREATE' DESTINATION RFCDEST STARTING NEW TASK 'Z02'
          EXPORTING
            P_VBELN VBAK-VBELN
            P_Z     
''.
*            MESSAGE s398(00) WITH vbak-vkorg '对供应商' ztsd004-lifnr '的工厂采购单及销售单后台程序启动成功'.
      ENDIF.

*-----------------------------------------------------------------------三单处理

*-----------------------------------------------------------------------退货单价格修改处理流程
      IF VBAK-VBTYP 'H'.退货订单

        CALL FUNCTION 'ZOA_SD_SO_CHANGE_H'
          EXPORTING
            I_SALESDOCUMENT SALESDOCUMENT
          
TABLES
            PT_ITEM         PT_ITEM[].

      ENDIF.
*-----------------------------------------------------------------------退货单价格修改处理流程
    ELSE.
      DATALV_FLAG TYPE C .
      CLEAR LV_FLAG.
      CLEAR IT_TAB_OUT.
      LOOP AT RETURN WHERE TYPE 'E'.
        IF LV_FLAG IS INITIAL.
          RS_TAB_OUT-VBELN  IM_HEAD-VBELN.
          RS_TAB_OUT-AUART  IM_HEAD-AUART.
          RS_TAB_OUT-VKORG  IM_HEAD-VKORG.
          RS_TAB_OUT-VTWEG  IM_HEAD-VTWEG.
          RS_TAB_OUT-SPART  IM_HEAD-SPART.
          RS_TAB_OUT-LX     RETURN-TYPE.
*            rs_tab_out-mess   = return-message.
          LV_FLAG 'X' .
        ENDIF.

        IT_TAB_OUT-VBELN  IM_HEAD-VBELN.
        IT_TAB_OUT-AUART  IM_HEAD-AUART.
        IT_TAB_OUT-VKORG  IM_HEAD-VKORG.
        IT_TAB_OUT-VTWEG  IM_HEAD-VTWEG.
        IT_TAB_OUT-SPART  IM_HEAD-SPART.
        IT_TAB_OUT-LX     RETURN-TYPE.
        IT_TAB_OUT-MESS   RETURN-MESSAGE.

        CONCATENATE RS_TAB_OUT-MESS ';'RETURN-MESSAGE INTO RS_TAB_OUT-MESS .

        APPEND IT_TAB_OUT.
      ENDLOOP.
    ENDIF.

    IF O_MSG IS NOT INITIAL.
      CONCATENATE RS_TAB_OUT-MESS O_MSG INTO RS_TAB_OUT-MESS .
    ENDIF.

  ENDIF.

  FREE MEMORY ID 'YN_MEID01'.

ENDFUNCTION.

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值