zoukankan      html  css  js  c++  java
  • BAPI_SALESDOCU_CREATEFROMDATA1VA01

     

    实例1:
    REPORT Z_ORDER_CREATE_SPA_HBR.
    *----------------------------------------------------------------------*
    * Parameters
    *----------------------------------------------------------------------*
    Parameters: P_order like vbak-vbeln.
    Parameters: P_quote like BAPIVBELN-VBELN.
    Parameters: P_new   like BAPIVBELN-VBELN.
    *
    * We need to create a new order number P_New from an existing order P_order
    * linked to an existing quotation P_quote
    *----------------------------------------------------------------------*
    * Tables
    *----------------------------------------------------------------------*
    Tables: VBAK,
            VBAP,
            VBKD. "Sales Document: Business Data
     
    *----------------------------------------------------------------------*
    * Data and internal table
    *----------------------------------------------------------------------*
     
    DATA: order_header_in1       LIKE BAPISDHD1.
    DATA: order_header_intX      like BAPISDHD1X.
    DATA : SALESDOCUMENT1         TYPE BAPIVBELN-VBELN.
    DATA : RETURN2                TYPE BAPIRET2.
    DATA: order_partners1        type BAPIPARNR occurs 0 with header line.
    DATA: ORDER_ITEMS_IN1        type BAPISDITM occurs 0 with header line.
    DATA: ORDER_ITEMS_IN1X       type BAPISDITMX occurs 0 with header line.
    DATA: ORDER_SCHEDULES_IN1    type BAPISCHDL occurs 0 with header line.
    DATA: ORDER_SCHEDULES_IN1X   type BAPISCHDLX occurs 0 with header line.
    DATA : RETURN1                TYPE BAPIRET2   OCCURS 0 with header line.
     
    Start-of-selection.
     
     Select single * from vbak where vbeln = p_quote.
     
     if not sy-subrc = 0.
        write:/ text-e02.
        exit.
     endif.
     
     Select single * from vbak where vbeln = p_order.
     
     if not sy-subrc = 0.
        write:/ text-e01.
        exit.
     endif.
     
     Select single * from vbkd where vbeln = p_order.
     
     if not sy-subrc = 0.
        write:/ text-e03.
        exit.
     endif.
     
     order_header_in1-doc_type   = 'TA'.
     order_header_in1-sales_org = vbak-vkorg.
     order_header_in1-distr_chan = vbak-vtweg.
     order_header_in1-division   = vbak-spart.
     order_header_in1-REQ_DATE_H = sy-datum + 20.
     order_header_in1-PURCH_NO_C = 'HBR_Commande'.
     order_header_in1-REF_1      = 'E-DISTR'.
     order_header_in1-SD_DOC_CAT = 'C'.
     order_header_in1-REF_DOC    = P_quote.
     order_header_in1-REF_DOC_L = P_quote.
     order_header_in1-REFDOC_CAT = 'B'.
     order_header_in1-INCOTERMS1 = vbkd-inco1.
     order_header_in1-INCOTERMS2 = vbkd-inco2.
     order_header_in1-PMNTTRMS   = vbkd-zterm.
     order_header_in1-SALES_OFF = vbak-vkbur.
     
     select * from vbap where vbeln = vbak-vbeln.
        clear ORDER_ITEMS_IN1.
        ORDER_ITEMS_IN1-PO_ITM_NO        = vbap-posnr.
        ORDER_ITEMS_IN1-material         = vbap-MATNR.
        ORDER_ITEMS_IN1-TARGET_QU        = vbap-zieme.
        ORDER_ITEMS_IN1-REF_DOC          = P_quote.
        ORDER_ITEMS_IN1-REF_DOC_IT       = vbap-posnr.
        ORDER_ITEMS_IN1-REF_DOC_CA       = 'B'.
        append ORDER_ITEMS_IN1.
    *
        clear ORDER_SCHEDULES_IN1.
        ORDER_SCHEDULES_IN1-ITM_NUMBER   = vbap-posnr.
        ORDER_SCHEDULES_IN1-REQ_DATE     = sy-datum + 20.
        ORDER_SCHEDULES_IN1-REQ_QTY      = vbap-KWMENG.
        append ORDER_SCHEDULES_IN1.
    *
     endselect.
     
     order_partners1-PARTN_ROLE         = 'WE'.
     order_partners1-PARTN_NUMB         = vbak-KUNNR.
     APPEND order_partners1.
     
     order_partners1-PARTN_ROLE         = 'AG'.
     APPEND order_partners1.
     
     
     Perform call_function.
     
    *&---------------------------------------------------------------------*
    *& Form call_function
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    * --> p1 text
    * <-- p2 text
    *----------------------------------------------------------------------*
    form call_function .
     
     
     CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
        EXPORTING
        SALESDOCUMENTIN               = P_new
        ORDER_HEADER_IN               = order_header_in1
    *   ORDER_HEADER_INX              = order_header_intX
    *   SENDER                        =
    *   BINARY_RELATIONSHIPTYPE       =
    *   INT_NUMBER_ASSIGNMENT         =
    *   BEHAVE_WHEN_ERROR             =
    *   LOGIC_SWITCH                  =
    *   TESTRUN                       =
    *   CONVERT                       = ' '
     IMPORTING
        SALESDOCUMENT                 = SALESDOCUMENT1
     TABLES
        RETURN                        = RETURN1
        ORDER_ITEMS_IN                = ORDER_ITEMS_IN1
    *   ORDER_ITEMS_INX               = ORDER_ITEMS_IN1X
        ORDER_PARTNERS                = order_partners1
        ORDER_SCHEDULES_IN            = ORDER_SCHEDULES_IN1
    *   ORDER_SCHEDULES_INX           = ORDER_SCHEDULES_IN1X
    *   ORDER_CONDITIONS_IN           =
    *   ORDER_CONDITIONS_INX          =
    *   ORDER_CFGS_REF                =
    *   ORDER_CFGS_INST               =
    *   ORDER_CFGS_PART_OF            =
    *   ORDER_CFGS_VALUE              =
    *   ORDER_CFGS_BLOB               =
    *   ORDER_CFGS_VK                 =
    *   ORDER_CFGS_REFINST            =
    *   ORDER_CCARD                   =
    *   ORDER_TEXT                    =
    *   ORDER_KEYS                    =
    *   EXTENSIONIN                   =
    *   PARTNERADDRESSES              =
                .
     
    *
     
     IF NOT SALESDOCUMENT1 IS INITIAL.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            WAIT   = 'X'
          IMPORTING
            RETURN = RETURN2.
     ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
     ENDIF.
    endform.                    "call_function
     
     实例2
    REPORT z_bapi_salesorder_create.
     
    * Parameters
    * Sales document type
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) v_text FOR FIELD p_auart.
    PARAMETERS: p_auart TYPE auart OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
     
    * Sales organization
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) v_text1 FOR FIELD p_vkorg.
    PARAMETERS: p_vkorg TYPE vkorg OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
     
    * Distribution channel
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) v_text2 FOR FIELD p_vtweg.
    PARAMETERS: p_vtweg TYPE vtweg OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
     
    * Division.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) v_text3 FOR FIELD p_spart.
    PARAMETERS: p_spart TYPE spart OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
     
    SKIP 1.
     
    * Sold-to
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) v_text4 FOR FIELD p_sold.
    PARAMETERS: p_sold TYPE kunnr OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
     
    * Ship-to
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) v_text5 FOR FIELD p_ship.
    PARAMETERS: p_ship TYPE kunnr OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
     
    SKIP 1.
     
    * Material
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) v_text6 FOR FIELD p_matnr.
    PARAMETERS: p_matnr TYPE matnr   OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
     
    * Quantity.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) v_text7 FOR FIELD p_menge.
    PARAMETERS: p_menge TYPE kwmeng OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
     
    * Plant
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) v_text9 FOR FIELD p_plant.
    PARAMETERS: p_plant TYPE werks_d OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
     
    * Data declarations.
    DATA: v_vbeln            LIKE vbak-vbeln.
    DATA: header             LIKE bapisdhead1.
    DATA: headerx            LIKE bapisdhead1x.
    DATA: item               LIKE bapisditem OCCURS 0 WITH HEADER LINE.
    DATA: itemx              LIKE bapisditemx OCCURS 0 WITH HEADER LINE.
    DATA: partner            LIKE bapipartnr OCCURS 0 WITH HEADER LINE.
    DATA: return             LIKE bapiret2    OCCURS 0 WITH HEADER LINE.
    DATA: lt_schedules_inx   TYPE STANDARD TABLE OF bapischdlx
                             WITH HEADER LINE.
    DATA: lt_schedules_in    TYPE STANDARD TABLE OF bapischdl
                             WITH HEADER LINE.
     
    * Initialization.
    INITIALIZATION.
    v_text   = 'Order type'.
    v_text1 = 'Sales Org'.
    v_text2 = 'Distribution channel'.
    v_text3 = 'Division'.
    v_text4 = 'Sold-to'.
    v_text5 = 'Ship-to'.
    v_text6 = 'Material'.
    v_text7 = 'Quantity'.
    v_text9 = 'Plant'.
     
    * Start-of-selection.
    START-OF-SELECTION.
     
    * Header data
     
    * Sales document type
     header-doc_type = p_auart.
     headerx-doc_type = 'X'.
     
    * Sales organization
     header-sales_org = p_vkorg.
     headerx-sales_org = 'X'.
     
    * Distribution channel
     header-distr_chan = p_vtweg.
     headerx-distr_chan = 'X'.
     
    * Division
     header-division = p_spart.
     headerx-division = 'X'.
     
     headerx-updateflag = 'I'.
     
    * Partner data
    * Sold to
     partner-partn_role = 'AG'.
     partner-partn_numb = p_sold.
     APPEND partner.
     
    * Ship to
     partner-partn_role = 'WE'.
     partner-partn_numb = p_ship.
     APPEND partner.
     
    * ITEM DATA
     itemx-updateflag = 'I'.
     
    * Line item number.
     item-itm_number = '000010'.
     itemx-itm_number = 'X'.
     
    * Material
     item-material = p_matnr.
     itemx-material = 'X'.
     
    * Plant
     item-plant    = p_plant.
     itemx-plant   = 'X'.
     
    * Quantity
     item-target_qty = p_menge.
     itemx-target_qty = 'X'.
     
     APPEND item.
     APPEND itemx.
     
    *   Fill schedule lines
     lt_schedules_in-itm_number = '000010'.
     lt_schedules_in-sched_line = '0001'.
     lt_schedules_in-req_qty    = p_menge.
     APPEND lt_schedules_in.
     
    *   Fill schedule line flags
     lt_schedules_inx-itm_number = '000010'.
     lt_schedules_inx-sched_line = '0001'.
     lt_schedules_inx-updateflag = 'X'.
     lt_schedules_inx-req_qty     = 'X'.
     APPEND lt_schedules_inx.
     
    * Call the BAPI to create the sales order.
     CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1'
           EXPORTING
                sales_header_in     = header
                sales_header_inx    = headerx
           IMPORTING
                salesdocument_ex    = v_vbeln
           TABLES
                return              = return
                sales_items_in      = item
                sales_items_inx     = itemx
                sales_schedules_in = lt_schedules_in
                sales_schedules_inx = lt_schedules_inx
                sales_partners      = partner.
     
    * Check the return table.
     LOOP AT return WHERE type = 'E' OR type = 'A'.
        EXIT.
     ENDLOOP.
     
     IF sy-subrc = 0.
     
        WRITE: / 'Error in creating document'.
     
     ELSE.
     
    * Commit the work.
        COMMIT WORK AND WAIT.
     
        WRITE: / 'Document ', v_vbeln, ' created'.
     
     ENDIF.
  • 相关阅读:
    Info.plist的秘密(raywenderlich笔记)
    我所理解的性能测试中负载测试与压力测试的区别
    seo优化
    localStorage,sessionStorage那些事儿
    浏览器cookie那些事儿
    JavaScript--Ajax请求
    javascript-理解原型、原型链
    React Native:从入门到原理
    知道这 20 个正则表达式,能让你少写 1,000 行代码
    程序猿进化必读:让App的运行速度与响应速度趋于一流(iOS)
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157344.html
Copyright © 2011-2022 走看看