发布时间:2014-10-22 19:16:55编辑 分享查询网我要评论

实例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* *----------------------------------------------------------------------*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 实例2REPORT z_bapi_salesorder_create.* Parameters* Sales document typeSELECTION-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 organizationSELECTION-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 channelSELECTION-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-toSELECTION-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-toSELECTION-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.* MaterialSELECTION-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.* PlantSELECTION-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.Trackback:

上一篇:Optimizing performance of ODS objects(来自sap notes 384023)
下一篇:LINQ 首部曲 : LINQ To Object Part 1