服务订单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

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18701.html

(0)
上一篇 2021年7月19日 21:22
下一篇 2021年7月19日 21:22

相关推荐

发表回复

登录后才能评论