zoukankan      html  css  js  c++  java
  • 服务订单SO创建

    FUNCTION Z_SD_SALESORDER_CREATE.
    *"----------------------------------------------------------------------
    *"*"Local Interface:
    *"  IMPORTING
    *"     REFERENCE(IM_HEADER) LIKE  VBAK STRUCTURE  VBAK
    *"  EXPORTING
    *"     VALUE(EX_SALESORDER) TYPE  VBELN
    *"  TABLES
    *"      IT_ITEM STRUCTURE  VBAP
    *"      IT_RETURN STRUCTURE  BAPIRET2 OPTIONAL
    *"----------------------------------------------------------------------
    
      PERFORM FRM_INIT_SALESORDER_HEADER USING IM_HEADER.
    
      PERFORM FRM_INIT_SALESORDER_ITEM TABLES IT_ITEM USING IM_HEADER.
    
      PERFORM FRM_INIT_SOPARTNER  USING IM_HEADER-KUNNR.
    
      PERFORM FRM_INIT_SALESORDER_CONDITION TABLES IT_ITEM.
    
      PERFORM FRM_CREATE_SALESORDER CHANGING EX_SALESORDER.
    
    *  APPEND LINES OF GT_RETURN TO IT_RETURN.
    
      IT_RETURN[] = GT_RETURN[].
    ENDFUNCTION.
    FORM FRM_INIT_SALESORDER_HEADER  USING P_HEADER STRUCTURE VBAK.
    
      CLEAR GS_SALESORDER_HEADER.
    * Mandatory entries:
      GS_SALESORDER_HEADER-DOC_TYPE = 'ZRWF'."入网费
    
      GS_SALESORDER_HEADER-SALES_ORG = '8001'.   "Sales organization
      GS_SALESORDER_HEADER-DISTR_CHAN = '20'.    "Distribution channel
      GS_SALESORDER_HEADER-DIVISION = '00'.    " Division
    
    * Optional entries:
      GS_SALESORDER_HEADER-DOC_DATE = SY-DATUM. "Document date     (订单日期)
      GS_SALESORDER_HEADER-REF_1 = P_HEADER-IHREZ. "Customer PO No.  (POS订单号码)
    *  GS_SALESORDER_HEADER-ORD_REASON = U_HEADER-ZDDLX. "Order reason.  (订单类型)
    *  GS_SALESORDER_HEADER-TELEPHONE = U_HEADER-ZLXDH. "Telephone Number.  (联系电话)
    *  GS_SALESORDER_HEADER-NAME = U_HEADER-ZLSR.      "Name of order.  (联系人)
    **  GS_SALESORDER_HEADER-DOC_DATE = SY-DATUM.      "Name of order.  (联系人)
    
    * Change index
      GS_SALESORDER_HEADERX-UPDATEFLAG = 'I'.   "Sales document type
      GS_SALESORDER_HEADERX-DOC_TYPE = 'X'.   "Sales document type
      GS_SALESORDER_HEADERX-SALES_ORG = 'X'.   "Sales organization
      GS_SALESORDER_HEADERX-DISTR_CHAN = 'X'.    "Distribution channel
      GS_SALESORDER_HEADERX-DIVISION = 'X'.    " Division
    
      GS_SALESORDER_HEADERX-DOC_DATE = 'X'. "Document date     (订单日期)
      GS_SALESORDER_HEADERX-REF_1 = 'X'. "Customer PO No.  (POS订单号码)
    *  GS_SALESORDER_HEADERX-ORD_REASON = 'X'. "Order reason.  (订单类型)
    *  GS_SALESORDER_HEADERX-TELEPHONE = 'X'. "Telephone Number.  (联系电话)
    *  GS_SALESORDER_HEADERX-NAME = 'X'.      "Name of order.  (联系人)
    *  GS_SALESORDER_HEADERX-DOC_DATE = 'X'.      "Name of order.  (联系人)
    
      CLEAR GS_LOGIC_SWITCH.
    *  GS_LOGIC_SWITCH-COND_HANDL = 'X'.
      GS_LOGIC_SWITCH-PRICING = 'G'.
    ENDFORM.                    " FRM_INIT_SALESORDER_HEADER
    FORM FRM_INIT_SALESORDER_ITEM  TABLES  IT_ITEM STRUCTURE VBAP
                                   USING   P_HEADER STRUCTURE VBAK.
      DATA : LS_ITEM  TYPE VBAP,
             LV_MATNR TYPE MATNR,
             LV_POSNR TYPE POSNR.
    
      CLEAR : GS_SALESORDER_ITEM,
              GT_SALESORDER_ITEM,
              GT_SALESORDER_CONDITIONS,
              GT_SALESORDER_CONDITIONX.
    
      CLEAR : GS_SALESORDER_SCHLINE,
              GT_SALESORDER_SCHLINE,
              GS_SALESORDER_SCHLINEX,
              GT_SALESORDER_SCHLINEX.
    
      CLEAR LV_POSNR.
    
      LOOP AT IT_ITEM INTO LS_ITEM.
        ADD 10 TO LV_POSNR.
    *** Items
    *   Convert Article no. (商品款号)
        PERFORM FRM_CONVERT_ARTICLE USING LS_ITEM-MATNR CHANGING LV_MATNR.
    
        GS_SALESORDER_ITEM-ITM_NUMBER = LV_POSNR."'10'. "Item (行项目号)
        GS_SALESORDER_ITEM-MATERIAL = LV_MATNR."70  ”Article  (商品款号)
        GS_SALESORDER_ITEM-BATCH = LS_ITEM-CHARG."70  ”Article  (商品款号)
        GS_SALESORDER_ITEM-PLANT = LS_ITEM-WERKS."P_HEADER-WERKS.  "Site ()
        GS_SALESORDER_ITEM-STORE_LOC = LS_ITEM-LGORT."Storage location
        GS_SALESORDER_ITEM-TARGET_QTY = '1'."Target quantity in sales units (商品件数)
    *    gs_salesorder_item-target_qu = 'ST'.
        APPEND GS_SALESORDER_ITEM TO GT_SALESORDER_ITEM.
    
        GS_SALESORDER_ITEMX-UPDATEFLAG = 'I'.
        GS_SALESORDER_ITEMX-ITM_NUMBER = LV_POSNR.
        GS_SALESORDER_ITEMX-MATERIAL = 'X'.
        GS_SALESORDER_ITEMX-BATCH  = 'X'.
        GS_SALESORDER_ITEMX-PLANT = 'X'.
        GS_SALESORDER_ITEMX-STORE_LOC = 'X'.
    *    gs_salesorder_itemx-sales_unit = 'X'.
        GS_SALESORDER_ITEMX-TARGET_QTY = 'X'.
    *    gs_salesorder_itemx-target_qu = 'X'.
        APPEND GS_SALESORDER_ITEMX TO GT_SALESORDER_ITEMX.
    
    *** Scheuld line
        CLEAR GS_SALESORDER_SCHLINE.
        GS_SALESORDER_SCHLINE-ITM_NUMBER = LV_POSNR.
        GS_SALESORDER_SCHLINE-SCHED_LINE = '0001'.
        GS_SALESORDER_SCHLINE-REQ_QTY = '1'.
    *    gs_salesorder_schline-req_date = '20140830'.
        APPEND GS_SALESORDER_SCHLINE TO GT_SALESORDER_SCHLINE.
    
        CLEAR GS_SALESORDER_SCHLINEX.
        GS_SALESORDER_SCHLINEX-ITM_NUMBER = LV_POSNR.
        GS_SALESORDER_SCHLINEX-SCHED_LINE = '0001'.
        GS_SALESORDER_SCHLINEX-UPDATEFLAG = 'I'.
    *    gs_salesorder_schlinex-req_date = 'X'.
        GS_SALESORDER_SCHLINEX-REQ_QTY = 'X'.
        APPEND GS_SALESORDER_SCHLINEX TO GT_SALESORDER_SCHLINEX.
    
    * Conditions
        CLEAR GS_SALESORDER_CONDITIONS.
        GS_SALESORDER_CONDITIONS-ITM_NUMBER = LV_POSNR.
    *    GS_SALESORDER_CONDITIONS-COND_COUNT = '10'.
        GS_SALESORDER_CONDITIONS-COND_TYPE = 'ZF01'.
        GS_SALESORDER_CONDITIONS-COND_VALUE = LS_ITEM-NETPR.
    *    GS_SALESORDER_CONDITIONS-CONDVALUE = '10'.
        GS_SALESORDER_CONDITIONS-CURRENCY = 'CNY'.
        APPEND GS_SALESORDER_CONDITIONS TO GT_SALESORDER_CONDITIONS.
    
        CLEAR GS_SALESORDER_CONDITIONX.
        GS_SALESORDER_CONDITIONX-ITM_NUMBER = LV_POSNR.
    *    GS_SALESORDER_CONDITIONS-COND_COUNT = '10'.
        GS_SALESORDER_CONDITIONX-COND_TYPE = 'ZF01'.
        GS_SALESORDER_CONDITIONX-UPDATEFLAG = 'I'.
        GS_SALESORDER_CONDITIONX-COND_VALUE = 'X'.
    *  GS_SALESORDER_CONDITIONX-CONDVALUE = 'X'.
        GS_SALESORDER_CONDITIONX-CURRENCY = 'X'.
        APPEND GS_SALESORDER_CONDITIONX TO GT_SALESORDER_CONDITIONX.
    
      ENDLOOP.
    
    ENDFORM.                    " FRM_INIT_SALESORDER_ITEM
    FORM FRM_INIT_SOPARTNER  USING    P_CUSTOMER.
      DATA : LV_KUNNR TYPE KUNNR.
    
    * Convert customer no. to internal no.(客户编码)
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          INPUT  = P_CUSTOMER
        IMPORTING
          OUTPUT = LV_KUNNR.
    
    * WE Ship to , AG Sold to
      CLEAR GS_SALESORDER_PARTNER.
    *  gs_salesorder_partner-itm_number = '10'."
      GS_SALESORDER_PARTNER-PARTN_ROLE = 'WE'."SP
      GS_SALESORDER_PARTNER-PARTN_NUMB = LV_KUNNR.  "(客户编码)
    *  gs_salesorder_partner-name = u_header-zkhmc.  "Name (客户名称)
      APPEND GS_SALESORDER_PARTNER TO GT_SALESORDER_PARTNER.
    ENDFORM.                    " FRM_INIT_SOPARTNER
    FORM FRM_INIT_SALESORDER_CONDITION  TABLES IT_ITEM STRUCTURE VBAP.
    
    ENDFORM.                    " FRM_INIT_SALESORDER_CONDITION
    FORM FRM_CREATE_SALESORDER  CHANGING P_SALESORDER.
    
      DATA : LV_SALESORDER TYPE BAPIVBELN-VBELN,
             LV_ERROR.
    
      REFRESH GT_RETURN.
    
      CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
        EXPORTING
          ORDER_HEADER_IN      = GS_SALESORDER_HEADER
          ORDER_HEADER_INX     = GS_SALESORDER_HEADERX
          LOGIC_SWITCH         = GS_LOGIC_SWITCH
        IMPORTING
          SALESDOCUMENT        = LV_SALESORDER
        TABLES
          RETURN               = GT_RETURN
          ORDER_ITEMS_IN       = GT_SALESORDER_ITEM
          ORDER_ITEMS_INX      = GT_SALESORDER_ITEMX
          ORDER_PARTNERS       = GT_SALESORDER_PARTNER
          ORDER_SCHEDULES_IN   = GT_SALESORDER_SCHLINE
          ORDER_SCHEDULES_INX  = GT_SALESORDER_SCHLINEX
          ORDER_CONDITIONS_IN  = GT_SALESORDER_CONDITIONS
          ORDER_CONDITIONS_INX = GT_SALESORDER_CONDITIONX.
    
      LOOP AT GT_RETURN INTO GS_RETURN WHERE TYPE = 'E' OR
                                             TYPE = 'X' OR
                                             TYPE = 'A'.
        EXIT.
      ENDLOOP.
    
      IF SY-SUBRC EQ 0.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            WAIT = 'X'.
    
        P_SALESORDER = LV_SALESORDER.
      ENDIF.
    
      REFRESH : GT_SALESORDER_ITEM,
                GT_SALESORDER_ITEMX,
                GT_SALESORDER_PARTNER,
                GT_SALESORDER_SCHLINE,
                GT_SALESORDER_SCHLINEX,
                GT_SALESORDER_CONDITIONS,
                GT_SALESORDER_CONDITIONX.
    ENDFORM.                    " FRM_CREATE_SALESORDER
  • 相关阅读:
    JAVA中的类和对象
    JAVA方法
    JAVA数组
    JAVA流程控制语句
    JAVA常用的运算符
    JAVA中的变量和常量
    JAVA安装及环境变量配置
    linux环境下配置jmeter环境变量
    linux环境下解压文件
    安装程序遇到错误0x80240037
  • 原文地址:https://www.cnblogs.com/sapSB/p/5771709.html
Copyright © 2011-2022 走看看