zoukankan      html  css  js  c++  java
  • 创建PO/SO


    IF P_ZY EQ 'X'."直营订单 调拨单 PERFORM FRM_INIT_PO_HEADER. PERFORM FRM_INIT_PO_ITEM. PERFORM FRM_INIT_PO_SCHLINE. PERFORM FRM_INIT_PO_TEXTS. PERFORM FRM_CREATE_PO USING P_COMMIT. ELSEIF P_JM EQ 'X'."加盟订单 销售订单 PERFORM FRM_INIT_SALESORDER_HEADER . PERFORM FRM_INIT_SALESORDER_ITEMS . PERFORM FRM_INIT_SALESORDER_PARTNER . PERFORM FRM_INIT_SALESORDER_TEXTS . PERFORM FRM_CREATE_SALESORDER USING P_COMMIT. ENDIF.
    FORM FRM_INIT_PO_HEADER.
    
      DATA: LV_VENDOR TYPE LIFNR,
            LV_DATE   TYPE DATUM.
    
      CLEAR: GS_POHEADER,
             GS_POHEADERX.
    
      LV_DATE = IT_HEADER-ZDATE.
    
      IF LV_DATE IS INITIAL.
        LV_DATE = P_DATE.
      ENDIF.
    
      PERFORM FRM_CONVERT_VENDOR USING '1001' CHANGING LV_VENDOR.
    
      GS_POHEADER-VENDOR = LV_VENDOR.
      GS_POHEADER-SUPPL_PLNT = '1001'.
      GS_POHEADER-DOC_TYPE = GS_ORG-AUART.
      GS_POHEADER-DOC_DATE = LV_DATE. "Document Date
      GS_POHEADER-CREAT_DATE = SY-DATUM.
      GS_POHEADER-CREATED_BY = SY-UNAME.
      GS_POHEADER-PURCH_ORG = GS_ORG-EKORG.
      GS_POHEADER-PUR_GROUP = GS_ORG-EKGRP.
      GS_POHEADER-COMP_CODE = GS_ORG-BUKRS.
      GS_POHEADER-SALES_PERS = IT_HEADER-ZPOSN."Salesperson
      GS_POHEADER-TELEPHONE = IT_HEADER-ZLXDH."Vendor's Telephone
    
    
      GS_POHEADERX-DOC_TYPE = 'X'.
      GS_POHEADERX-DOC_DATE = 'X'.
      GS_POHEADERX-CREAT_DATE = 'X'.
      GS_POHEADERX-CREATED_BY = 'X'.
      GS_POHEADERX-VENDOR = 'X'.
      GS_POHEADERX-PURCH_ORG = 'X'.
      GS_POHEADERX-PUR_GROUP = 'X'.
      GS_POHEADERX-COMP_CODE = 'X'.
      GS_POHEADERX-SALES_PERS = 'X'.
      GS_POHEADERX-TELEPHONE = 'X'.
      GS_POHEADERX-SUPPL_PLNT = 'X'.
    ENDFORM.                    " FRM_INIT_PO_HEADER
    FORM FRM_INIT_PO_ITEM.
    
      DATA : LV_LGORT TYPE VBAP-LGORT,
             LV_WERKS TYPE VBAP-WERKS,
             LV_MATNR TYPE VBAP-MATNR,
             LV_BWTTY TYPE MBEW-BWTTY,
             LV_MEINS TYPE MARA-MEINS,
             LV_QTY   TYPE EKPO-MENGE,
             LV_CHARG TYPE MCHA-CHARG.
    
      CLEAR: GS_POITEM,
             GT_POITEM,
             GS_POITEMX,
             GT_POITEMX.
    
      SHIFT IT_HEADER-ZKUBM LEFT DELETING LEADING '0'.
    
      LV_WERKS = IT_HEADER-ZKUBM.
    
    
      LOOP AT IT_ITEM WHERE ZPOSN EQ IT_HEADER-ZPOSN.
    *   转换物料号码
        PERFORM FRM_CONVERT_ARTICLE USING IT_ITEM-ZSPKH CHANGING LV_MATNR.
    *   是否启用分割评估
        SELECT SINGLE BWTTY INTO LV_BWTTY FROM MBEW WHERE MATNR = LV_MATNR AND BWKEY = LV_WERKS.
    *   基本单位
        SELECT SINGLE MEINS INTO LV_MEINS FROM MARA WHERE MATNR = LV_MATNR.
    
        IF LV_MEINS = 'G'."基本单位为G, 下单数量取总金重
          LV_QTY = IT_ITEM-ZZJZ.
        ELSE."否则取总件数
          LV_QTY =  IT_ITEM-ZSPJH.
        ENDIF.
    
        IF LV_QTY IS INITIAL.
          LV_QTY = 1.
        ENDIF.
    
        LV_CHARG = IT_ITEM-CHARG.
    
    *   物料启用了分割凭证但是没有评估类型(批次),则使用物料编码作为评估类型
        IF LV_BWTTY = 'X' AND LV_CHARG IS INITIAL.
          PERFORM FRM_CONVERT_VALUE_TYPE USING LV_MATNR CHANGING LV_CHARG.
        ENDIF.
    *   检查物料 门店 批次是否存在
        PERFORM FRM_CHECK_BATCH USING LV_WERKS LV_MATNR LV_CHARG.
    
        CLEAR GS_POITEM.
        GS_POITEM-PO_ITEM = IT_ITEM-ZITEM.
        GS_POITEM-MATERIAL = LV_MATNR.
        GS_POITEM-PLANT = LV_WERKS.
        GS_POITEM-BATCH = IT_ITEM-CHARG."批次
        GS_POITEM-SUPPL_STLOC = '1001'.
        GS_POITEM-QUANTITY = LV_QTY.
    
        IF LV_BWTTY = 'X'."
          GS_POITEM-VAL_TYPE = LV_CHARG."评估类型
        ENDIF.
    
        IF GS_ORG-AUART = 'ZSTJ'."Consigment
          GS_POITEM-ITEM_CAT = 'K'.
        ELSE.
          GS_POITEM-ITEM_CAT = 'U'.
        ENDIF.
    
        APPEND GS_POITEM TO GT_POITEM.
    
        CLEAR GS_POITEMX.
        GS_POITEMX-PO_ITEM = IT_ITEM-ZITEM.
        GS_POITEMX-MATERIAL = 'X'.
        GS_POITEMX-BATCH = 'X'.
        GS_POITEMX-VAL_TYPE = 'X'.
        GS_POITEMX-STGE_LOC = 'X'.
        GS_POITEMX-PLANT = 'X'.
        GS_POITEMX-QUANTITY = 'X'.
        GS_POITEMX-ITEM_CAT = 'X'.
        APPEND GS_POITEMX TO GT_POITEMX.
      ENDLOOP.
    
    ENDFORM.                    " FRM_INIT_PO_ITEM
    FORM FRM_INIT_PO_SCHLINE .
      REFRESH: GT_POSCHEDULE,
               GT_POSCHEDULEX.
    
    *  CLEAR gs_poschedule.
    *  gs_poschedule-po_item = p_item_no.
    *  gs_poschedule-sched_line = 1.
    *  gs_poschedule-delivery_date = lv_del_date.
    *  APPEND gs_poschedule TO gt_poschedule.
    *
    *  CLEAR gs_poschedulex.
    *  gs_poschedulex-po_item = p_item_no.
    *  gs_poschedulex-sched_line = 1.
    *  gs_poschedulex-delivery_date = 'X'.
    *  APPEND gs_poschedulex TO gt_poschedulex.
    ENDFORM.                    " FRM_INIT_PO_SCHLINE
    FORM FRM_INIT_PO_TEXTS.
      REFRESH: GT_POTEXTHEADER,
               GT_POTEXTITEM.
      CLEAR:   GS_POTEXTITEM,
               GS_POTEXTITEM.
    
    * Header Text
    * 抬头文本
      CLEAR GS_POTEXTHEADER.
      GS_POTEXTHEADER-TEXT_ID = 'F01'.
      GS_POTEXTHEADER-TEXT_LINE = IT_HEADER-ZHTEXT."订单抬头文本
      APPEND GS_POTEXTHEADER TO GT_POTEXTHEADER.
    
    * Item Text
    * 行项目文本
      LOOP AT IT_ITEM WHERE ZPOSN EQ IT_HEADER-ZPOSN.
        CLEAR GS_POTEXTITEM.
        GS_POTEXTITEM-PO_ITEM = IT_ITEM-ZITEM.
        GS_POTEXTITEM-TEXT_ID = 'F01'.
        GS_POTEXTITEM-TEXT_LINE = IT_ITEM-ZITEXT."订单行项目文本
        APPEND GS_POTEXTITEM TO GT_POTEXTITEM.
      ENDLOOP.
    ENDFORM.                    " FRM_INIT_PO_TEXTS
    FORM FRM_CREATE_PO USING P_COMMIT.
      DATA : LV_TESTRUN TYPE BAPIFLAG-BAPIFLAG,
             LV_ERROR.
    
      IF P_COMMIT IS INITIAL.
        LV_TESTRUN = 'X'.
      ENDIF.
    
      CALL FUNCTION 'BAPI_PO_CREATE1'
        EXPORTING
          POHEADER         = GS_POHEADER
          POHEADERX        = GS_POHEADERX
          TESTRUN          = LV_TESTRUN
        IMPORTING
          EXPPURCHASEORDER = GV_EXPPURCHASEORDER
        TABLES
          RETURN           = GT_RETURN
          POITEM           = GT_POITEM
          POITEMX          = GT_POITEMX
          POSCHEDULE       = GT_POSCHEDULE
          POSCHEDULEX      = GT_POSCHEDULEX
          POTEXTHEADER     = GT_POTEXTHEADER
          POTEXTITEM       = GT_POTEXTITEM.
    
      LOOP AT GT_RETURN INTO GS_RETURN.
        CLEAR IT_MSG.
        MOVE-CORRESPONDING GS_RETURN TO IT_MSG.
        IT_MSG-ZPOSN = IT_HEADER-ZPOSN.
        IT_MSG-ORDER = GV_EXPPURCHASEORDER.
    
        CASE GS_RETURN-TYPE.
          WHEN 'E' OR 'X' OR 'A'.
            IF GS_RETURN-ID = 'MEPO' AND GS_RETURN-NUMBER = '000'.
              CONTINUE.
            ELSE.
              IT_MSG-LIGHT = '1'."Red Light
            ENDIF.
    
            LV_ERROR = 'X'.
          WHEN 'S'.
            IT_MSG-LIGHT = '3'."Green Light
          WHEN OTHERS.
            CONTINUE.
        ENDCASE.
    
        COLLECT IT_MSG.
      ENDLOOP.
    
      IF LV_ERROR EQ 'X'.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      ELSE.
    
        CHECK P_COMMIT EQ 'X'.
    
        PERFORM FRM_RECORD_LINES USING IT_HEADER-ZPOSN GV_EXPPURCHASEORDER.
    *    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    *      EXPORTING
    *        WAIT = 'X'.
      ENDIF.
    ENDFORM.                    " FRM_CREATE_PO
    FORM FRM_INIT_SALESORDER_HEADER.
    
      DATA : LV_DATE TYPE DATUM.
    
      CLEAR GS_SALESORDER_HEADER.
    
      LV_DATE = IT_HEADER-ZDATE.
    
      IF LV_DATE IS INITIAL.
        LV_DATE = P_DATE.
      ENDIF.
    
    * Mandatory entries:
      GS_SALESORDER_HEADER-DOC_TYPE = GS_ORG-AUART.   "Sales document type
      GS_SALESORDER_HEADER-SALES_ORG = GS_ORG-VKORG.   "Sales organization
      GS_SALESORDER_HEADER-DISTR_CHAN = GS_ORG-VTWEG.    "Distribution channel
      GS_SALESORDER_HEADER-DIVISION = GS_ORG-SPART.    " Division
    
    * Optional entries:
      GS_SALESORDER_HEADER-DOC_DATE = LV_DATE. "Document date
      GS_SALESORDER_HEADER-PURCH_NO_C = IT_HEADER-ZPOSN. "Customer PO No.  (POS订单号码)
      GS_SALESORDER_HEADER-ORD_REASON = IT_HEADER-ZPLX. "Order reason.
      GS_SALESORDER_HEADER-TELEPHONE = IT_HEADER-ZLXDH. "Telephone Number.  (联系电话)
      GS_SALESORDER_HEADER-NAME = IT_HEADER-ZLSR.      "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-PURCH_NO_C = '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_ITEMS.
    
      DATA : LV_MATNR TYPE MARA-MATNR,
             LV_BWTTY TYPE MBEW-BWTTY,
             LV_MEINS TYPE MARA-MEINS,
             LV_CHARG TYPE MCH1-CHARG,
             LV_WERKS TYPE MARC-WERKS,
             LV_MENGE TYPE EKPO-MENGE.
    
      DATA : LV_ZPR5 TYPE P DECIMALS 2.
    
      REFRESH: GT_SALESORDER_ITEMX,
               GT_SALESORDER_ITEM,
               GT_SALESORDER_CONDITIONS,
               GT_SALESORDER_CONDITIONX,
               GT_SALESORDER_SCHLINE,
               GT_SALESORDER_SCHLINEX,
               GT_SALESORDER_TEXT.
    
      LV_WERKS = IT_HEADER-WERKS.
    
      LOOP AT IT_ITEM WHERE ZPOSN EQ IT_HEADER-ZPOSN.
    
    *** 行项目
    *   Convert Article no. (商品款号)
        PERFORM FRM_CONVERT_ARTICLE USING IT_ITEM-ZSPKH CHANGING LV_MATNR.
    *   评估类别
        SELECT SINGLE BWTTY INTO LV_BWTTY FROM MBEW WHERE MATNR = LV_MATNR AND BWKEY = LV_WERKS.
    *   基本单位
        SELECT SINGLE MEINS INTO LV_MEINS FROM MARA WHERE MATNR = LV_MATNR.
    
        IF LV_MEINS = 'G'.
          LV_MENGE = IT_ITEM-ZZJZ.
        ELSE.
          LV_MENGE = IT_ITEM-ZSPJH."Target quantity in sales units
        ENDIF.
    
    *   Batch
        LV_CHARG = IT_ITEM-CHARG.
    *   检查批次、物料是否存在
        PERFORM FRM_CHECK_BATCH USING LV_WERKS LV_MATNR LV_CHARG.
    
        CLEAR GS_SALESORDER_ITEM.
        GS_SALESORDER_ITEM-ITM_NUMBER = IT_ITEM-ZITEM."
        GS_SALESORDER_ITEM-MATERIAL = LV_MATNR."
        GS_SALESORDER_ITEM-BATCH = IT_ITEM-CHARG."
        GS_SALESORDER_ITEM-PLANT = LV_WERKS.  "
        GS_SALESORDER_ITEM-TARGET_QTY = LV_MENGE."Target quantity in sales units
    
        IF LV_BWTTY EQ 'X'.
          GS_SALESORDER_ITEM-VAL_TYPE = LV_CHARG." ”Valution Type
        ENDIF.
    
        APPEND GS_SALESORDER_ITEM TO GT_SALESORDER_ITEM.
    
        CLEAR GS_SALESORDER_ITEMX.
        GS_SALESORDER_ITEMX-UPDATEFLAG = 'I'.
        GS_SALESORDER_ITEMX-ITM_NUMBER = IT_ITEM-ZITEM.
        GS_SALESORDER_ITEMX-MATERIAL = 'X'.
        GS_SALESORDER_ITEMX-BATCH  = 'X'.
        GS_SALESORDER_ITEMX-VAL_TYPE  = 'X'.
        GS_SALESORDER_ITEMX-PLANT = 'X'.
        GS_SALESORDER_ITEMX-TARGET_QTY = 'X'.
        APPEND GS_SALESORDER_ITEMX TO GT_SALESORDER_ITEMX.
    
    *** 计划行
        CLEAR GS_SALESORDER_SCHLINE.
        GS_SALESORDER_SCHLINE-ITM_NUMBER = IT_ITEM-ZITEM.
        GS_SALESORDER_SCHLINE-SCHED_LINE = '0001'.
        GS_SALESORDER_SCHLINE-REQ_QTY = LV_MENGE.
        APPEND GS_SALESORDER_SCHLINE TO GT_SALESORDER_SCHLINE.
    
        CLEAR GS_SALESORDER_SCHLINEX.
        GS_SALESORDER_SCHLINEX-ITM_NUMBER = IT_ITEM-ZITEM.
        GS_SALESORDER_SCHLINEX-SCHED_LINE = '0001'.
        GS_SALESORDER_SCHLINEX-UPDATEFLAG = 'I'.
        GS_SALESORDER_SCHLINEX-REQ_QTY = 'X'.
        APPEND GS_SALESORDER_SCHLINEX TO GT_SALESORDER_SCHLINEX.
    
    *** 条件
    *   估算价(金单价)
        CLEAR GS_SALESORDER_CONDITIONS.
        GS_SALESORDER_CONDITIONS-ITM_NUMBER = IT_ITEM-ZITEM.
        GS_SALESORDER_CONDITIONS-COND_TYPE = 'ZPR4'.
        GS_SALESORDER_CONDITIONS-COND_VALUE = IT_ITEM-ZJDJ.
        GS_SALESORDER_CONDITIONS-CURRENCY = 'CNY'.
        APPEND GS_SALESORDER_CONDITIONS TO GT_SALESORDER_CONDITIONS.
    
        CLEAR GS_SALESORDER_CONDITIONX.
        GS_SALESORDER_CONDITIONX-ITM_NUMBER = IT_ITEM-ZITEM.
        GS_SALESORDER_CONDITIONX-COND_TYPE = 'ZPR4'.
        GS_SALESORDER_CONDITIONX-UPDATEFLAG = 'I'.
        GS_SALESORDER_CONDITIONX-COND_VALUE = 'X'.
        GS_SALESORDER_CONDITIONX-CURRENCY = 'X'.
        APPEND GS_SALESORDER_CONDITIONX TO GT_SALESORDER_CONDITIONX.
    
    *** 行项目文本
        CLEAR GS_SALESORDER_TEXT.
        GS_SALESORDER_TEXT-ITM_NUMBER = IT_ITEM-ZITEM."
        GS_SALESORDER_TEXT-TEXT_ID = '0001'."Object VBBP
        GS_SALESORDER_TEXT-TEXT_LINE = IT_ITEM-ZITEXT."(订单抬头文本)
        GS_SALESORDER_TEXT-LANGU = SY-LANGU.
        APPEND GS_SALESORDER_TEXT TO GT_SALESORDER_TEXT.
      ENDLOOP.
    
    * 合计金额
      CLEAR GS_SALESORDER_CONDITIONS.
      GS_SALESORDER_CONDITIONS-COND_TYPE = 'ZPR0'.
      GS_SALESORDER_CONDITIONS-COND_ST_NO = 001.
      GS_SALESORDER_CONDITIONS-COND_COUNT = 01.
      GS_SALESORDER_CONDITIONS-COND_VALUE = IT_HEADER-ZHJJE.
      GS_SALESORDER_CONDITIONS-CURRENCY = 'CNY'.
      APPEND GS_SALESORDER_CONDITIONS TO GT_SALESORDER_CONDITIONS.
    
      CLEAR GS_SALESORDER_CONDITIONX.
      GS_SALESORDER_CONDITIONX-COND_TYPE = 'ZPR0'.
      GS_SALESORDER_CONDITIONX-COND_ST_NO = 001.
      GS_SALESORDER_CONDITIONX-COND_COUNT = 01.
      GS_SALESORDER_CONDITIONX-UPDATEFLAG = 'I'.
      GS_SALESORDER_CONDITIONX-COND_VALUE = 'X'.
      GS_SALESORDER_CONDITIONX-CURRENCY = 'X'.
      APPEND GS_SALESORDER_CONDITIONX TO GT_SALESORDER_CONDITIONX.
    
    * 订单订金
      IF IT_HEADER-ZDDLX IS NOT INITIAL.
        LV_ZPR5 = IT_HEADER-ZDDLX.
        CLEAR GS_SALESORDER_CONDITIONS.
        GS_SALESORDER_CONDITIONS-COND_TYPE = 'ZPR5'.
        GS_SALESORDER_CONDITIONS-COND_ST_NO = 002.
        GS_SALESORDER_CONDITIONS-COND_COUNT = 02.
        GS_SALESORDER_CONDITIONS-COND_VALUE = LV_ZPR5.
        GS_SALESORDER_CONDITIONS-CURRENCY = 'CNY'.
        APPEND GS_SALESORDER_CONDITIONS TO GT_SALESORDER_CONDITIONS.
    
        CLEAR GS_SALESORDER_CONDITIONX.
        GS_SALESORDER_CONDITIONX-COND_TYPE = 'ZPR5'.
        GS_SALESORDER_CONDITIONX-COND_ST_NO = 002.
        GS_SALESORDER_CONDITIONX-COND_COUNT = 02.
        GS_SALESORDER_CONDITIONX-UPDATEFLAG = 'I'.
        GS_SALESORDER_CONDITIONX-COND_VALUE = 'X'.
        GS_SALESORDER_CONDITIONX-CURRENCY = 'X'.
        APPEND GS_SALESORDER_CONDITIONX TO GT_SALESORDER_CONDITIONX.
      ENDIF.
    ENDFORM.                    " FRM_INIT_SALESORDER_ITEMS
    FORM FRM_INIT_SALESORDER_PARTNER.
    
    
      DATA : LV_KUNNR TYPE VBPA-KUNNR."Customer
    
      CLEAR: GT_SALESORDER_PARTNER.
    
    * Convert customer no. to internal no.(客户编码)
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          INPUT  = IT_HEADER-ZKUBM
        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.
    
    *  CLEAR gs_salesorder_partner.
    **  gs_salesorder_partner-itm_number = '10'."
    *  gs_salesorder_partner-partn_role = 'AG'."SH
    *  gs_salesorder_partner-partn_numb = '0000040001'."SHip to
    *  APPEND gs_salesorder_partner TO gt_salesorder_partner.
    ENDFORM.                    " FRM_INIT_SALESORDER_PARTNER
    FORM FRM_INIT_SALESORDER_TEXTS.
    
    *  CLEAR : GS_SALESORDER_TEXT,
    *          GT_SALESORDER_TEXT.
    * Header Texts
      CLEAR GS_SALESORDER_TEXT.
      GS_SALESORDER_TEXT-TEXT_ID = '0001'."Object VBBK
      GS_SALESORDER_TEXT-TEXT_LINE = IT_HEADER-ZHTEXT."(订单抬头文本)
      GS_SALESORDER_TEXT-LANGU = SY-LANGU."
      APPEND GS_SALESORDER_TEXT TO GT_SALESORDER_TEXT.
    
    ** Item Texts
    *  LOOP AT T_ITEMS INTO IT_ITEM.
    *    CLEAR GS_SALESORDER_TEXT.
    *    GS_SALESORDER_TEXT-ITM_NUMBER = IT_ITEM-ZITEM."
    *    GS_SALESORDER_TEXT-TEXT_ID = '0001'."Object VBBP
    *    GS_SALESORDER_TEXT-TEXT_LINE = IT_ITEM-ZITEXT."(订单抬头文本)
    *    GS_SALESORDER_TEXT-LANGU = SY-LANGU.
    *    APPEND GS_SALESORDER_TEXT TO GT_SALESORDER_TEXT.
    *  ENDLOOP.
    
    ENDFORM.                    " FRM_INIT_SALESORDER_TEXTS
    FORM FRM_CREATE_SALESORDER USING P_COMMIT.
    
      DATA : LV_SALESORDER TYPE BAPIVBELN-VBELN,
             LV_TESTRUN    TYPE BAPIFLAG-BAPIFLAG,
             LV_ERROR.
    
      IF P_COMMIT IS INITIAL.
        LV_TESTRUN = 'X'.
      ENDIF.
    
      CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
        EXPORTING
          ORDER_HEADER_IN      = GS_SALESORDER_HEADER
          ORDER_HEADER_INX     = GS_SALESORDER_HEADERX
          LOGIC_SWITCH         = GS_LOGIC_SWITCH
          TESTRUN              = LV_TESTRUN
        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
          ORDER_TEXT           = GT_SALESORDER_TEXT.
    
      LOOP AT GT_RETURN INTO GS_RETURN.
        CLEAR IT_MSG.
        MOVE-CORRESPONDING GS_RETURN TO IT_MSG.
        IT_MSG-ZPOSN = IT_HEADER-ZPOSN.
        IT_MSG-ORDER = LV_SALESORDER.
    
        CASE GS_RETURN-TYPE.
          WHEN 'E' OR 'X' OR 'A'.
            IT_MSG-LIGHT = '1'."Red Light
            LV_ERROR = 'X'.
          WHEN 'S'.
            IF GS_RETURN-ID = 'V1' AND GS_RETURN-NUMBER = '311'.
              IT_MSG-LIGHT = '3'."Green Light
            ELSE.
              CONTINUE.
            ENDIF.
          WHEN OTHERS.
            CONTINUE.
        ENDCASE.
    
        COLLECT IT_MSG.
    *    EXIT.
      ENDLOOP.
    
      IF LV_ERROR EQ 'X'.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      ELSE.
        CHECK P_COMMIT EQ 'X'.
    
        PERFORM FRM_RECORD_LINES USING IT_HEADER-ZPOSN LV_SALESORDER.
    
    *    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    *      EXPORTING
    *        WAIT = 'X'.
      ENDIF.
    
    ENDFORM.                    " FRM_CREATE_SALESORDER
  • 相关阅读:
    蒟蒻の搜索学习总结
    蒟蒻の红黑树总结
    数据结构与算法
    linux常用命令
    Linux防火墙Firewall和Iptables的使用
    Spring Boot 自定义Intercepter
    Spring Boot 自定义Filter
    SpringBoot 全局异常配置
    SpringBoot设置支持跨域请求
    springboot整合shiro安全框架
  • 原文地址:https://www.cnblogs.com/sapSB/p/5771727.html
Copyright © 2011-2022 走看看