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.

 

 

 

 

 

### 回答1: ABAP Webservice接口开发是一种基于ABAP语言的Web服务开发技术,可以用于实现不同系统之间的数据交换和通信。通过ABAP Webservice接口开发,可以将SAP系统中的数据和功能暴露给其他系统,也可以从其他系统中获取数据和功能。这种技术可以帮助企业实现系统集成和业务流程优化,提高工作效率和数据准确性。 ### 回答2: ABAP是一种编程语言,经常用于SAP系统开发,而Webservice接口则是一种用于不同应用程序之间通信的技术。在ABAP中,Webservice接口开发可以实现SAP和其他应用系统之间数据的传输和交换。 首先,需要在SAP系统中创建Webservice定义。这可以通过SAP的开发工具进行,在SAP中称为ABAP Workbench。在创建Webservice时,需要先定义Webservice的名称、描述和操作。然后,需要确定Webservice的数据类型和数据元素,以确保与其他系统之间正确传输数据。 在Webservice接口开发过程中,需要注意安全性和稳定性。我们需要确保Webservice与外部系统的通信是加密和签名的,并且接口能够处理各种异常情况。我们还需要进行充分的测试,以确保Webservice可以满足我们的需求,并且能够与其他应用程序顺利通信。 在SAP系统中,Webservice接口通常用于连接SAP和其他系统。例如,我们可以使用Webservice接口将SAP系统连接到电子商务系统,以实现订单和库存数据的共享。此外,Webservice也可以用于在服务器之间共享数据,以实现财务和采购数据的同步。 总之,ABAP Webservice接口开发是一项重要的工作,它可以帮助企业实现不同应用程序之间的数据共享和交换。我们需要密切注意Webservice的安全性和稳定性,并进行充分的测试,以确保它能够满足我们的需求。 ### 回答3: ABAP Web Service 接口开发是 SAP 系统中重要的一环。通过使用 Web Service 技术,可以使不同的系统之间进行数据交换、信息共享等合作操作。有以下步骤: 1. 创建一个 RFC 功能模块 ABAP Web Service 接口通过 RFC 功能模块来调用并获取数据。RFC 功能模块定义了需要实现的业务逻辑,使用这一功能模块可以实现对系统内数据的增、删、改、查等操作,从而提供数据源于外部系统。 2. 创建一个 Web Service 容器 Web Service 容器是将 RFC 功能模块转换成 Web Service 的核心元素。我们可以使用 Web Service 容器,使用 Web Service 将 RFC 功能模块实现成为 Web Service 风格的服务。如此,外部系统就可以通过 Web Service 容器来调用对应的 RFC 功能模块。 3. 编写一个 Web Service 服务类 Web Service 服务类是 Web Service 容器的实现基础,它的主要作用是定义数据类型和 Web Service 的参数、返回值。通过 Web Service 服务类,我们可以将 RFC 功能模块转化为 Web Service 所需的参数和返回值。 4. 创建一个 Web Service 配置 Web Service 配置定义了 Web Service 的 WSDL 文件的名称、请求/响应类型以及其它与用户服务相关的信息。 5. 发布 Web Service 最后,我们需要将 Web Service 发布到所设定的目标系统中。这一步骤通过交付机制和编码一起实现。用户通过 Web Service 的 WSDL 文件从客户端调用 Web Service。 Web Service 容器负责将请求转化为对应的 RFC 函数,然后将 RFC 函数使用相同的 Web Service 协议形式返回给客户端。 以上就是 ABAP Web Service 接口开发的主要步骤。通过使用 Web Service 技术,可以方便地将不同的系统进行接口的交互。让不同的系统之间共用一个数据源,共同完成业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值