BAPI_SLSTRANSACT_CREATEMULTI

I am currently working on creating a sales order in CRM pragmatically.
I tried using BAPI_SLSTRANSACT_CREATEMULTI. I was able to get the saved sales order number
but was unable to put the item details, partner details and organisation details.
can you please guide me on this with some sample code...

Chao-sheng,
Thanks for the assist. I have run into another problem
when using CRM_ISA_QUOT_SWITCH_TO_ORDER. That is: the
system status I1079 'quote accepted' cannot be changed
manually, it is done automatically. However this FM
is attempting to make this change. I always get the message "Accept CRM Quotation" is not allowed (Sales Item 25000203/10)". Is there a way to avoid this issue and allow the system to accept the quote?
Regards
Robert Billings

Similar Messages

  • Ship to party for each material using BAPI_SLSTRANSACT_CREATEMULTI

    i am able to generate sales order for in CRM. I am inputting the sold to party, ship to party, bill to party and payer at the header level...
    CRM is currently configured in such a way that , there is a provision to assign ship to party at item level for each material.
    How can i programatically replicate this? I need to assign a diiferent ship to party for each material in the sales order.*
    how can i programatically replicate this?...
    this is  my code for cresating a sales order in CRM with sold to party, ship to party, bill to party and payer at the header level...
    *************include constants
      include crm_direct.
    ************// GUIDs
      data:         lv_guid_h type GUID_32,              "HEADER GUIDE
                    lv_guid_i type GUID_32,              "ITEM GUIDE
                    lv_guid_sl type GUID_32,             "SCHEDULE LINE GUIDE
                    lv_guid_p type GUID_32.              "PARTNER GUIDE
    ***********// Handles
      data:        lv_current_handle type crmt_handle,    "CURRENT HANDLE
                   lv_handle_h type crmt_handle,          "HEADER HANDLE
                   lv_handle_i type crmt_handle,          "ITEM HANDLE
                   lv_handle_sl type crmt_handle,         "SCHEDULE LINE HANDLE
                   lv_handle_p type crmt_handle.          "PARTNER HANDLE
    ***********// Administration header + item + etc
      data:        lt_salesorder_header type table of bapibus20001_header_ins,        "LT_SALESORDER_HEADER
                   ls_salesorder_header type bapibus20001_header_ins,                 "LS_SALESORDER_HEADER
                   lt_salesorder_item type table of bapibus20001_item,                "LT_SALESORDER_ITEM
                   ls_salesorder_item type bapibus20001_item,                         "LS_SALESORDER_ITEM
                   lt_scheduleline type table of BAPIBUS20001_SCHEDLIN,               "LT_SCHEDULELINE
                   ls_scheduleline type BAPIBUS20001_SCHEDLIN,                        "LS_SCHEDULELINE
                   lt_partner type table of BAPIBUS20001_PARTNER_INS,                 "LT_PARTNER
                   ls_partner type BAPIBUS20001_PARTNER_INS,                          "LS_PARTNER
                   ls_logical_key TYPE crmt_partner_logic_partner_key,                "LS_LOGICAL_KEY
                   lt_organisation type table of BAPIBUS20001_ORGMAN_INS,             "LT_ORGANISATION
                   ls_organisation type BAPIBUS20001_ORGMAN_INS.                      "LS_ORGANISATION
    *********// Saved sales orders
    data: lt_saved_process type table of bapibus20001_object_id,                   "LT_SAVED_PROCESS
      data:
            ls_saved_process type bapibus20001_object_id,                             "LS_SAVED_PROCESS
            ls_salesorder type CRMT_RETURN_OBJECTS_STRUC.                             "LS_SALESORDER
      data: lt_input_fields type table of bapibus20001_input_fields,                  "LT_INPUT_FIELDS
            ls_input_fields type bapibus20001_input_fields,                           "LS_INPUT_FIELDS
            ls_return type bapiret2.                                                  "LS_RETURN
    data: lt_return type table of bapiret2.                                        "LT_RETURN
    ***********// Macro definition to populate structure and input field This, called as
    *_set_field ls_salesorder_header GUID lv_guid_h
    *is exploded as
          ls_salesorder_header-GUID            =        lv_guid_h.
          ls_input_fields-fieldname            =        'GUID'.
          append ls_input_fields to lt_input_fields.
    *Note 1: &2 (field name) MUST be uppercase
    *Note 2: for the salesorder header, Macro has not been used to show how the code should look like.
    *except for that the macro has been used everywhere else.
         define setfield.
              &1-&2 = &3.
              ls_input_fields-fieldname = '&2'.
              append ls_input_fields to lt_input_fields.
        end-of-definition.
    *****// end of macro definition
    ******// fill order administration header
        perform get_guid changing lv_guid_h.
        add 1 to lv_handle_h.
        ls_salesorder_header-guid = lv_guid_h.
        ls_salesorder_header-handle = lv_handle_h.
        ls_salesorder_header-process_type = 'ZWEB'.
        clear ls_input_fields.
        ls_input_fields-ref_handle = lv_handle_h.
        ls_input_fields-ref_guid = lv_guid_h.
    *ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
        ls_input_fields-objectname = gc_object_name-orderadm_h.
        ls_input_fields-fieldname = 'GUID'.
        append ls_input_fields to lt_input_fields.
        ls_input_fields-fieldname = 'HANDLE'.
        append ls_input_fields to lt_input_fields.
        ls_input_fields-fieldname = 'PROCESS_TYPE'.
        append ls_input_fields to lt_input_fields.
        append ls_salesorder_header to lt_salesorder_header.
    **********// fill organisation data (Interface needs this, some times may rely on sales org determination instead...
        clear ls_input_fields.
        ls_input_fields-ref_handle          =      lv_handle_h.
        ls_input_fields-ref_guid            =      lv_guid_h.
        ls_input_fields-ref_kind            =      gc_object_ref_kind-orderadm_h.
        ls_input_fields-objectname          =      gc_object_name-orgman.
        setfield      ls_organisation    REF_GUID         lv_guid_h.
        setfield      ls_organisation    REF_HANDLE       lv_handle_h.
        setfield      ls_organisation    REF_KIND         gc_object_ref_kind-orderadm_h.
        setfield      ls_organisation    SALES_ORG_RESP   SO_RESP .                                 "(input).
        setfield      ls_organisation    SALES_ORG        SALES_ORG.                                "(input).
        setfield      ls_organisation    DIS_CHANNEL      DIS_CHNL.                                 "(input).
        setfield      ls_organisation    DIVISION         DIVISION.                                 "(input).
        append ls_organisation to lt_organisation.
    **********// fill order administration item
      perform get_guid changing lv_guid_i.
      lv_handle_i = lv_handle_h.
      add 1 to lv_handle_i.
      clear ls_input_fields.
      ls_input_fields-ref_guid            =        lv_guid_i.
      ls_input_fields-ref_handle          =        lv_handle_i.
    *ls_input_fields-ref_kind             =        gc_object_ref_kind-orderadm_i.
      ls_input_fields-objectname          =        gc_object_name-orderadm_i.
      setfield      ls_salesorder_item      GUID               lv_guid_i.
      setfield      ls_salesorder_item      HEADER             lv_guid_h.
      setfield      ls_salesorder_item      HANDLE             lv_handle_i.
      setfield      ls_salesorder_item      HEADER_HANDLE      lv_handle_h.
      setfield      ls_salesorder_item      ORDERED_PROD       PRODUCT .                           "(input).
      setfield      ls_salesorder_item      ITM_TYPE           'ZTAN'.
      setfield      ls_salesorder_item      MODE               'A'.
    *adjustment taken from standard include LCMS_MAPPERF04
    *(see where-used-list for BAPI_SLSTRANSACT_CREATEMULTI, program LCMS_MAPPERU11)
      delete lt_input_fields where fieldname = 'HANDLE'
      OR
      fieldname      =    'HEADER_HANDLE'.
      append ls_salesorder_item to lt_salesorder_item.
    ********// fill schedule line for item
      perform get_guid changing lv_guid_sl.
      add 1 to lv_handle_sl.
      clear ls_input_fields.
      ls_input_fields-ref_guid          =        lv_guid_i.
      ls_input_fields-ref_handle        =        lv_handle_i.
      ls_input_fields-ref_kind          =        gc_object_ref_kind-orderadm_i.
      ls_input_fields-objectname        =        gc_object_name-schedlin.
      setfield       ls_scheduleline       ITEM_GUID       lv_guid_i.
      setfield       ls_scheduleline       GUID            lv_guid_sl.
      setfield       ls_scheduleline       HANDLE          lv_handle_sl.
      setfield       ls_scheduleline       ITEM_HANDLE     lv_handle_i.
      setfield       ls_scheduleline       QUANTITY        quantity.                        "(input).
      append ls_scheduleline to lt_scheduleline.
    ********// fill partner line
    *perform get_guid changing lv_guid_p.
    *the partner use the logical key as well
      ls_logical_key-ref_partner_handle = '0001'.
      clear ls_input_fields.
      ls_input_fields-ref_guid       =       lv_guid_h.
      ls_input_fields-ref_handle     =       lv_handle_h.
      ls_input_fields-ref_kind       =       gc_object_ref_kind-orderadm_h.
      ls_input_fields-objectname     =       gc_object_name-partner.
      ls_input_fields-logical_key    =       ls_logical_key.
      setfield       ls_partner       REF_GUID                   lv_guid_h.
      setfield       ls_partner       REF_HANDLE                 lv_handle_h.
      setfield       ls_partner       REF_KIND                   gc_object_ref_kind-orderadm_h.
      setfield       ls_partner       REF_PARTNER_HANDLE         '0001'.
      setfield       ls_partner       KIND_OF_ENTRY              'C'.
      setfield       ls_partner       PARTNER_FCT                '00000001'.
      setfield       ls_partner       PARTNER_NO                 SOLD_TO.                                "(input).
      setfield       ls_partner       NO_TYPE                    'BP'.
      setfield       ls_partner       DISPLAY_TYPE               'BP'.
      move-corresponding ls_partner to ls_logical_key.
      append ls_partner to lt_partner.
      ls_logical_key-ref_partner_handle        =       '0002'.
      clear ls_input_fields.
      ls_input_fields-ref_guid                 =         lv_guid_h.
      ls_input_fields-ref_handle               =         lv_handle_h.
      ls_input_fields-ref_kind                 =         gc_object_ref_kind-orderadm_h.
      ls_input_fields-objectname               =         gc_object_name-partner.
      ls_input_fields-logical_key              =         ls_logical_key.
      setfield          ls_partner           REF_GUID                   lv_guid_h.
      setfield          ls_partner           REF_HANDLE                 lv_handle_h.
      setfield          ls_partner           REF_KIND                   gc_object_ref_kind-orderadm_h.
      setfield          ls_partner           REF_PARTNER_HANDLE         '0002'.
      setfield          ls_partner           KIND_OF_ENTRY              'C'.
      setfield          ls_partner           PARTNER_FCT                '00000002'.
      setfield          ls_partner           PARTNER_NO                 SHIP_TO .                                "(input).
      setfield          ls_partner           NO_TYPE                    'BP'.
      setfield          ls_partner           DISPLAY_TYPE               'BP'.
      move-corresponding ls_partner to ls_logical_key.
      append ls_partner to lt_partner.
      ls_logical_key-ref_partner_handle = '0003'.
      clear ls_input_fields.
      ls_input_fields-ref_guid             =           lv_guid_h.
      ls_input_fields-ref_handle           =           lv_handle_h.
      ls_input_fields-ref_kind             =           gc_object_ref_kind-orderadm_h.
      ls_input_fields-objectname           =           gc_object_name-partner.
      ls_input_fields-logical_key          =           ls_logical_key.
      setfield         ls_partner            REF_GUID                   lv_guid_h.
      setfield         ls_partner            REF_HANDLE                 lv_handle_h.
      setfield         ls_partner            REF_KIND gc_object_ref_kind-orderadm_h.
      setfield ls_partner REF_PARTNER_HANDLE '0003'.
      setfield ls_partner KIND_OF_ENTRY 'C'.
      setfield ls_partner PARTNER_FCT '00000003'.
      setfield ls_partner PARTNER_NO BILL_TO ."(input).
      setfield ls_partner NO_TYPE 'BP'.
      setfield ls_partner DISPLAY_TYPE 'BP'.
      move-corresponding ls_partner to ls_logical_key.
      append ls_partner to lt_partner.
      ls_logical_key-ref_partner_handle = '0004'.
      clear ls_input_fields.
      ls_input_fields-ref_guid = lv_guid_h.
      ls_input_fields-ref_handle = lv_handle_h.
      ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
      ls_input_fields-objectname = gc_object_name-partner.
      ls_input_fields-logical_key = ls_logical_key.
      setfield ls_partner REF_GUID lv_guid_h.
      setfield ls_partner REF_HANDLE lv_handle_h.
      setfield ls_partner REF_KIND gc_object_ref_kind-orderadm_h.
      setfield ls_partner REF_PARTNER_HANDLE '0004'.
      setfield ls_partner KIND_OF_ENTRY 'C'.
      setfield ls_partner PARTNER_FCT '00000004'.
      setfield ls_partner PARTNER_NO PAYER ."(input).
      setfield ls_partner NO_TYPE 'BP'.
      setfield ls_partner DISPLAY_TYPE 'BP'.
      move-corresponding ls_partner to ls_logical_key.
      append ls_partner to lt_partner.
    *******// example of a second partner function (custom) with data override
    *ls_logical_key-ref_partner_handle = '0002'.
    *clear ls_input_fields.
    *ls_input_fields-ref_guid = lv_guid_h.
    *ls_input_fields-ref_handle = lv_handle_h.
    *ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
    *ls_input_fields-objectname = gc_object_name-partner.
    *ls_input_fields-logical_key = ls_logical_key.
    *_set_field ls_partner REF_GUID lv_guid_h.
    *_set_field ls_partner REF_HANDLE lv_handle_h.
    *_set_field ls_partner REF_KIND gc_object_ref_kind-orderadm_h.
    *_set_field ls_partner REF_PARTNER_HANDLE '0002'.
    *_set_field ls_partner KIND_OF_ENTRY 'B'. "manual entry...
    *_set_field ls_partner PARTNER_FCT customFct(input).
    *_set_field ls_partner PARTNER_NO bpNumber(input).
    *_set_field ls_partner NO_TYPE 'BP'.
    *_set_field ls_partner DISPLAY_TYPE 'BP'.
    *_set_field ls_partner TITLE 'Mr.'.
    *_set_field ls_partner FIRSTNAME 'John'.
    *_set_field ls_partner LASTNAME 'Smith'.
    *_set_field ls_partner STR_SUPPL1 'John Smith and Co'.
    *_set_field ls_partner STREET 'Street1'.
    *_set_field ls_partner STR_SUPPL3 'Street4'.
    *_set_field ls_partner HOUSE_NO '42'.
    *_set_field ls_partner CITY 'Townville'.
    *_set_field ls_partner DISTRICT 'Districtshire'.
    *_set_field ls_partner POSTL_COD1 'AA1 2BB'.
    *note now ...
    *adjustment taken from standard include LCMS_MAPPERF04
    *(see where-used-list for BAPI_SLSTRANSACT_CREATEMULTI, program LCMS_MAPPERU11)
    *I don't use macro because name of the field in input_table is different
    *_set_field ls_partner COUNTRYISO 'GB'.
    *instead
      ls_partner-COUNTRYISO = 'GB'.
      ls_input_fields-fieldname = 'COUNTRY'.
      append ls_input_fields to lt_input_fields.
    *_set_field ls_partner LANGU_ISO 'EN'.
      ls_partner-LANGU_ISO = 'EN'.
      ls_input_fields-fieldname = 'LANGU'.
      append ls_input_fields to lt_input_fields.
      move-corresponding ls_partner to ls_logical_key.
      append ls_partner to lt_partner.
    *Create sales orders *
      call function 'BAPI_SLSTRANSACT_CREATEMULTI'
        EXPORTING
          testrun       = false
        TABLES
          header        = lt_salesorder_header[]
          item          = lt_salesorder_item[]
          partner       = lt_partner[]
          organisation  = lt_organisation[]
          input_fields  = lt_input_fields[]
          scheduleline  = lt_scheduleline[]
          saved_process = lt_saved_process[]
          return        = lt_return[].
    *************// get the GUID of the created object
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT          = 'X'
    IMPORTING
        RETURN        = lt_return1.
    INCLUDE ZZGVBAPISALESORDER_GET_GUIDF01.
    Edited by: jessica sam on Dec 22, 2008 4:25 PM
    Edited by: jessica sam on Dec 22, 2008 4:27 PM
    Edited by: jessica sam on Dec 22, 2008 7:05 PM
    Edited by: jessica sam on Dec 23, 2008 5:18 AM

    I know how to trace the Ship to party at line item. When i create an order manually on CRM then the table CRMD_PARTNER has the required entries and the Ship to party at line item is getting populated correctly. Also if i open the order in CRMD_ORDER the ship pto party are being populated correctly at line item..
    But if i am trying to replicate this programatcally using the BAPI, i see that the ship to at header is being copied to each line item and this is not what is expected.
    If i go and check in the CRMD_PARTNER the data is not filled
    correctly as I dont have any ship to party at line item
    So finally I even tried to insert the data manually in the CRMD_PARTNER table using an
    INSERT statement and even that doesnt work...
    https://www.sdn.sap.com/irj/scn/forums
    So i am unable to ficgure out what is going wrong
    Any body if they have any idea on poulating ship to party programatically in
    sales order for each line item please help
    I am unable to figure out how to fill PArtner table of this BAPI to populate ship to at line item level
    Kindly Help..
    Regards,
    Jessica Sam

  • How to create ST using BAPI_SLSTRANSACT_CREATEMULTI

    Hi Friends,
    I'm trying to create NEW SalesTransaction(ST) using fm 'BAPI_SLSTRANSACT_CREATEMULTI' in an another new RFC function module. The header is creating but not Partner,Item,product and all. I need to create ST using this BAPI.
    The input i'm passing is partner,pro`duct,product description,net price,net value,quantity,PO number,Order number,Quantity,ATP quntity,Date,Address including email and phone.
    The problem i'm facing is <b>HOW TO FILL THESE INPUT VALUES IN THE  EXACT FILEDS IN THE TABLES OF BAPI.</b>
    I'm getting these errors.
    <b>1)W CRM_ORDER            004 Referenced object type (PARTNER) not allowed       
    2)W CRM_ORDER            004 Referenced object type (SALES) not allowed         
    3)E CRM_ORDERADM_I       006 Item  was not found.                               
    4)E CRM_ORDER            005 Incomplete interface data - No reference specified 
    5)S CRM_MESSAGES         005 A log has been generated for single document       </b>
    The code i did is:
      TYPES: TYP_HEADER          TYPE BAPIBUS20001_HEADER_INS,
             TYP_ITEM            TYPE BAPIBUS20001_ITEM,
             TYP_SALES           TYPE BAPIBUS20001_SALES,
             TYP_PARTNER         TYPE BAPIBUS20001_PARTNER_INS,
             TYP_SCHEDULELINE    TYPE BAPIBUS20001_SCHEDLIN,
             TYP_CREATED_PROCESS TYPE BAPIBUS20001_HEADER_INS,
             TYP_SAVED_PROCESS   TYPE BAPIBUS20001_OBJECT_ID,
             TYP_INPUT_FIELDS    TYPE BAPIBUS20001_INPUT_FIELDS.
      DATA: IT_HEADER            TYPE TYP_HEADER OCCURS 10
                                      WITH HEADER LINE,
            IT_ITEM              TYPE TYP_ITEM OCCURS 10
                                      WITH HEADER LINE,
            IT_SALES             TYPE TYP_SALES OCCURS 10
                                      WITH HEADER LINE,
            IT_PARTNER           TYPE TYP_PARTNER OCCURS 10
                                      WITH HEADER LINE,
            IT_SCHEDULELINE      TYPE TYP_SCHEDULELINE OCCURS 10
                                      WITH HEADER LINE,
            IT_CREATED_PROCESS   TYPE TYP_CREATED_PROCESS OCCURS 10
                                      WITH HEADER LINE,
            IT_SAVED_PROCESS     TYPE TYP_SAVED_PROCESS OCCURS 10
                                      WITH HEADER LINE,
            IT_INPUT_FIELDS      TYPE TYP_INPUT_FIELDS OCCURS 10
                                      WITH HEADER LINE,
            V_ORDER_DATE(15)     TYPE C,
            V_GUID_H             TYPE BBP_GUID_32,
            V_GUID_I             TYPE BBP_GUID_32,
            V_GUID_P             TYPE BBP_GUID_32,
            V_GUID_SA            TYPE BBP_GUID_32,
            V_GUID_SC            TYPE BBP_GUID_32.
      PERFORM GET_GUID CHANGING V_GUID_H.
      PERFORM GET_GUID CHANGING V_GUID_I.
      PERFORM GET_GUID CHANGING V_GUID_P. 
      PERFORM GET_GUID CHANGING V_GUID_SA.
      PERFORM GET_GUID CHANGING V_GUID_SC.
    * Header
      IT_HEADER-GUID       = V_GUID_H.
      IT_HEADER-PROCESS_TYPE = PROCESS_TYPE(INPUT).
      IT_HEADER-DESCRIPTION  = DESCRIPTION(INPUT).
      APPEND IT_HEADER.
    * Item
      IT_ITEM-GUID = V_GUID_I.
      IT_ITEM-HEADER = V_GUID_H.
      IT_ITEM-ORDERED_PROD = PRODUCT(INPUT).
      IT_ITEM-DESCRIPTION  = PRODUCT_DESCRIPTION(INPUT).
      IT_ITEM-ITM_TYPE     = ITEM_TYPE(INPUT).
      IT_ITEM-MODE         = 'A'.
      APPEND IT_ITEM.
    * Sales
      IT_SALES-REF_GUID = V_GUID_SA.
      IT_SALES-PO_NUMBER_SOLD = PO_NUMBER(INPUT).
      APPEND IT_SALES.
    * Partner
      IT_PARTNER-REF_GUID    = V_GUID_H.
      IT_PARTNER-PARTNER_FCT = '00000001'.
      IT_PARTNER-REF_KIND    = 'A'.
      IT_PARTNER-REF_PARTNER_HANDLE = '0001'.
      IT_PARTNER-KIND_OF_ENTRY = 'A'.
      IT_PARTNER-NO_TYPE     = 'BP'.
      IT_PARTNER-DISPLAY_TYPE = 'BP'.
      IT_PARTNER-PARTNER_NO  = CUSTOMER(INPUT).
      IT_PARTNER-NAME        = NAME(INPUT).
      IT_PARTNER-HOUSE_NO    = HOUSE_NO(INPUT).
      IT_PARTNER-CITY        = CITY(INPUT).
      IT_PARTNER-STREET      = STREET(INPUT).
      IT_PARTNER-COUNTRY     = COUNTRY(INPUT).
      IT_PARTNER-E_MAIL      = EMAIL(INPUT).
      IT_PARTNER-TEL1_NUMBR  = PHONE(INPUT).
      APPEND IT_PARTNER.
    * Schedule line
      IT_SCHEDULELINE-ITEM_GUID = V_GUID_SC.
      IT_SCHEDULELINE-QUANTITY = ATP_QUANTITY(INPUT).
      APPEND IT_SCHEDULELINE.
    * Input fields
      IT_INPUT_FIELDS-REF_GUID    = V_GUID_H.
      IT_INPUT_FIELDS-OBJECTNAME  = 'ORDERADM_H'.
      IT_INPUT_FIELDS-LOGICAL_KEY = '1'.
      APPEND IT_INPUT_FIELDS.
      IT_INPUT_FIELDS-REF_GUID    = V_GUID_I.
      IT_INPUT_FIELDS-OBJECTNAME  = 'ORDERADM_I'.
      IT_INPUT_FIELDS-LOGICAL_KEY = '1'.
      APPEND IT_INPUT_FIELDS.
      IT_INPUT_FIELDS-REF_GUID    = V_GUID_H.
      IT_INPUT_FIELDS-OBJECTNAME  = 'PARTNER'.
      IT_INPUT_FIELDS-LOGICAL_KEY = '1'.
      APPEND IT_INPUT_FIELDS.
      IT_INPUT_FIELDS-REF_GUID    = V_GUID_SA.
      IT_INPUT_FIELDS-OBJECTNAME  = 'SALES'.
      IT_INPUT_FIELDS-LOGICAL_KEY = '1'.
      APPEND IT_INPUT_FIELDS.
      IT_INPUT_FIELDS-REF_GUID    = V_GUID_SC.
      IT_INPUT_FIELDS-OBJECTNAME  = 'SCHEDLIN'.
      IT_INPUT_FIELDS-LOGICAL_KEY = '1'.
      APPEND IT_INPUT_FIELDS.
      CALL FUNCTION 'BAPI_SLSTRANSACT_CREATEMULTI'
    *   EXPORTING
    *     TESTRUN                =
        TABLES
          HEADER                 = IT_HEADER
          ITEM                   = IT_ITEM
          RETURN                 = RETURN
          SALES                  = IT_SALES
          PARTNER                = IT_PARTNER
    *     ORGANISATION           =
    *     SHIPPING               =
    *     APPOINTMENT            =
    *     TEXT                   =
    *     STATUS                 =
          INPUT_FIELDS           = IT_INPUT_FIELDS
    *     PRODUCT                =
          SCHEDULELINE           = IT_SCHEDULELINE
    *     CUSTOMER_HEAD          =
    *     CUSTOMER_ITEM          =
    *     PRICING                =
    *     PRICING_ITEM           =
    *     CONDITION_CREATE       =
    *     BILLING                =
    *     CONFIG_CFG             =
    *     CONFIG_BLB             =
    *     CONFIG_INS             =
    *     CONFIG_PRT             =
    *     CONFIG_VAL             =
    *     CONFIG_VK              =
    *     CONFIG_REF             =
    *     ADDRESS                =
    *     BILLPLAN               =
    *     BILLPLAN_DATE          =
          CREATED_PROCESS        = IT_CREATED_PROCESS
          SAVED_PROCESS          = IT_SAVED_PROCESS
    *     DOC_FLOW               =
    *     PAYPLAN                =
    *     PAYPLAN_DATE           =
      COMMIT WORK.
      READ TABLE RETURN WITH KEY TYPE = 'E'.
      IF SY-SUBRC NE 0.
         DATA: V_RETURN LIKE  BAPIRET2.
         CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
           IMPORTING
             RETURN        = V_RETURN.
         CHECK NOT IT_SAVED_PROCESS[] IS INITIAL.
         READ TABLE IT_SAVED_PROCESS INDEX 1.
         CHECK SY-SUBRC EQ 0.
           SALES_PROCESS = IT_SAVED_PROCESS-OBJECT_ID.
      ENDIF.
    ENDFUNCTION.
    FORM GET_GUID CHANGING P_GUID TYPE  GUID_32.
      CALL FUNCTION 'GUID_CREATE'
        IMPORTING
          EV_GUID_32       = P_GUID.
    ENDFORM.
    Can any one help me in this.

    Hey Varda,
    I generated a sales order in CRM with BAPI_SLSTRANSACT_CREATEMULTI for a single line item...that is it accepts a single product and generates a sales order...but in real time there can be any number of line items for a sales order...
    *1) Now i need to make this code generic such that it can accept any number of materials...line items?
    How can i make the code generic ....such that it works for any number of line items.*
    *2) Also the CRM is currently configured in such a way that , there is a provision to assign ship to party at item level for each material.
    How can i programatically replicate this? I need to assign a diiferent ship to party for each material in the sales order.*
    how can i programatically replicate this?...
    this is my code for cresating a sales order in CRM for a single line item or single material
    *************include constants
    include crm_direct.
    ************// GUIDs
    data: lv_guid_h type GUID_32, "HEADER GUIDE
    lv_guid_i type GUID_32, "ITEM GUIDE
    lv_guid_sl type GUID_32, "SCHEDULE LINE GUIDE
    lv_guid_p type GUID_32. "PARTNER GUIDE
    ***********// Handles
    data: lv_current_handle type crmt_handle, "CURRENT HANDLE
    lv_handle_h type crmt_handle, "HEADER HANDLE
    lv_handle_i type crmt_handle, "ITEM HANDLE
    lv_handle_sl type crmt_handle, "SCHEDULE LINE HANDLE
    lv_handle_p type crmt_handle. "PARTNER HANDLE
    ***********// Administration header + item + etc
    data: lt_salesorder_header type table of bapibus20001_header_ins, "LT_SALESORDER_HEADER
    ls_salesorder_header type bapibus20001_header_ins, "LS_SALESORDER_HEADER
    lt_salesorder_item type table of bapibus20001_item, "LT_SALESORDER_ITEM
    ls_salesorder_item type bapibus20001_item, "LS_SALESORDER_ITEM
    lt_scheduleline type table of BAPIBUS20001_SCHEDLIN, "LT_SCHEDULELINE
    ls_scheduleline type BAPIBUS20001_SCHEDLIN, "LS_SCHEDULELINE
    lt_partner type table of BAPIBUS20001_PARTNER_INS, "LT_PARTNER
    ls_partner type BAPIBUS20001_PARTNER_INS, "LS_PARTNER
    ls_logical_key TYPE crmt_partner_logic_partner_key, "LS_LOGICAL_KEY
    lt_organisation type table of BAPIBUS20001_ORGMAN_INS, "LT_ORGANISATION
    ls_organisation type BAPIBUS20001_ORGMAN_INS. "LS_ORGANISATION
    *********// Saved sales orders
    data: lt_saved_process type table of bapibus20001_object_id, "LT_SAVED_PROCESS
    data:
    ls_saved_process type bapibus20001_object_id, "LS_SAVED_PROCESS
    ls_salesorder type CRMT_RETURN_OBJECTS_STRUC. "LS_SALESORDER
    data: lt_input_fields type table of bapibus20001_input_fields, "LT_INPUT_FIELDS
    ls_input_fields type bapibus20001_input_fields, "LS_INPUT_FIELDS
    ls_return type bapiret2. "LS_RETURN
    data: lt_return type table of bapiret2. "LT_RETURN
    ***********// Macro definition to populate structure and input field This, called as
    *_set_field ls_salesorder_header GUID lv_guid_h
    *is exploded as
    ls_salesorder_header-GUID = lv_guid_h.
    ls_input_fields-fieldname = 'GUID'.
    append ls_input_fields to lt_input_fields.
    *Note 1: &2 (field name) MUST be uppercase
    *Note 2: for the salesorder header, Macro has not been used to show how the code should look like.
    *except for that the macro has been used everywhere else.
    define setfield.
    &1-&2 = &3.
    ls_input_fields-fieldname = '&2'.
    append ls_input_fields to lt_input_fields.
    end-of-definition.
    *****// end of macro definition
    ******// fill order administration header
    perform get_guid changing lv_guid_h.
    add 1 to lv_handle_h.
    ls_salesorder_header-guid = lv_guid_h.
    ls_salesorder_header-handle = lv_handle_h.
    ls_salesorder_header-process_type = 'ZWEB'.
    clear ls_input_fields.
    ls_input_fields-ref_handle = lv_handle_h.
    ls_input_fields-ref_guid = lv_guid_h.
    *ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname = gc_object_name-orderadm_h.
    ls_input_fields-fieldname = 'GUID'.
    append ls_input_fields to lt_input_fields.
    ls_input_fields-fieldname = 'HANDLE'.
    append ls_input_fields to lt_input_fields.
    ls_input_fields-fieldname = 'PROCESS_TYPE'.
    append ls_input_fields to lt_input_fields.
    append ls_salesorder_header to lt_salesorder_header.
    **********// fill organisation data (Interface needs this, some times may rely on sales org determination instead...
    clear ls_input_fields.
    ls_input_fields-ref_handle = lv_handle_h.
    ls_input_fields-ref_guid = lv_guid_h.
    ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname = gc_object_name-orgman.
    setfield ls_organisation REF_GUID lv_guid_h.
    setfield ls_organisation REF_HANDLE lv_handle_h.
    setfield ls_organisation REF_KIND gc_object_ref_kind-orderadm_h.
    setfield ls_organisation SALES_ORG_RESP SO_RESP . "(input).
    setfield ls_organisation SALES_ORG SALES_ORG. "(input).
    setfield ls_organisation DIS_CHANNEL DIS_CHNL. "(input).
    setfield ls_organisation DIVISION DIVISION. "(input).
    append ls_organisation to lt_organisation.
    **********// fill order administration item
    perform get_guid changing lv_guid_i.
    lv_handle_i = lv_handle_h.
    add 1 to lv_handle_i.
    clear ls_input_fields.
    ls_input_fields-ref_guid = lv_guid_i.
    ls_input_fields-ref_handle = lv_handle_i.
    *ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_i.
    ls_input_fields-objectname = gc_object_name-orderadm_i.
    setfield ls_salesorder_item GUID lv_guid_i.
    setfield ls_salesorder_item HEADER lv_guid_h.
    setfield ls_salesorder_item HANDLE lv_handle_i.
    setfield ls_salesorder_item HEADER_HANDLE lv_handle_h.
    setfield ls_salesorder_item ORDERED_PROD PRODUCT . "(input).
    setfield ls_salesorder_item ITM_TYPE 'ZTAN'.
    setfield ls_salesorder_item MODE 'A'.
    *adjustment taken from standard include LCMS_MAPPERF04
    *(see where-used-list for BAPI_SLSTRANSACT_CREATEMULTI, program LCMS_MAPPERU11)
    delete lt_input_fields where fieldname = 'HANDLE'
    OR
    fieldname = 'HEADER_HANDLE'.
    append ls_salesorder_item to lt_salesorder_item.
    ********// fill schedule line for item
    perform get_guid changing lv_guid_sl.
    add 1 to lv_handle_sl.
    clear ls_input_fields.
    ls_input_fields-ref_guid = lv_guid_i.
    ls_input_fields-ref_handle = lv_handle_i.
    ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_i.
    ls_input_fields-objectname = gc_object_name-schedlin.
    setfield ls_scheduleline ITEM_GUID lv_guid_i.
    setfield ls_scheduleline GUID lv_guid_sl.
    setfield ls_scheduleline HANDLE lv_handle_sl.
    setfield ls_scheduleline ITEM_HANDLE lv_handle_i.
    setfield ls_scheduleline QUANTITY quantity. "(input).
    append ls_scheduleline to lt_scheduleline.
    ********// fill partner line
    *perform get_guid changing lv_guid_p.
    *the partner use the logical key as well
    ls_logical_key-ref_partner_handle = '0001'.
    clear ls_input_fields.
    ls_input_fields-ref_guid = lv_guid_h.
    ls_input_fields-ref_handle = lv_handle_h.
    ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname = gc_object_name-partner.
    ls_input_fields-logical_key = ls_logical_key.
    setfield ls_partner REF_GUID lv_guid_h.
    setfield ls_partner REF_HANDLE lv_handle_h.
    setfield ls_partner REF_KIND gc_object_ref_kind-orderadm_h.
    setfield ls_partner REF_PARTNER_HANDLE '0001'.
    setfield ls_partner KIND_OF_ENTRY 'C'.
    setfield ls_partner PARTNER_FCT '00000001'.
    setfield ls_partner PARTNER_NO SOLD_TO. "(input).
    setfield ls_partner NO_TYPE 'BP'.
    setfield ls_partner DISPLAY_TYPE 'BP'.
    move-corresponding ls_partner to ls_logical_key.
    append ls_partner to lt_partner.
    ls_logical_key-ref_partner_handle = '0002'.
    clear ls_input_fields.
    ls_input_fields-ref_guid = lv_guid_h.
    ls_input_fields-ref_handle = lv_handle_h.
    ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname = gc_object_name-partner.
    ls_input_fields-logical_key = ls_logical_key.
    setfield ls_partner REF_GUID lv_guid_h.
    setfield ls_partner REF_HANDLE lv_handle_h.
    setfield ls_partner REF_KIND gc_object_ref_kind-orderadm_h.
    setfield ls_partner REF_PARTNER_HANDLE '0002'.
    setfield ls_partner KIND_OF_ENTRY 'C'.
    setfield ls_partner PARTNER_FCT '00000002'.
    setfield ls_partner PARTNER_NO SHIP_TO . "(input).
    setfield ls_partner NO_TYPE 'BP'.
    setfield ls_partner DISPLAY_TYPE 'BP'.
    move-corresponding ls_partner to ls_logical_key.
    append ls_partner to lt_partner.
    ls_logical_key-ref_partner_handle = '0003'.
    clear ls_input_fields.
    ls_input_fields-ref_guid = lv_guid_h.
    ls_input_fields-ref_handle = lv_handle_h.
    ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname = gc_object_name-partner.
    ls_input_fields-logical_key = ls_logical_key.
    setfield ls_partner REF_GUID lv_guid_h.
    setfield ls_partner REF_HANDLE lv_handle_h.
    setfield ls_partner REF_KIND gc_object_ref_kind-orderadm_h.
    setfield ls_partner REF_PARTNER_HANDLE '0003'.
    setfield ls_partner KIND_OF_ENTRY 'C'.
    setfield ls_partner PARTNER_FCT '00000003'.
    setfield ls_partner PARTNER_NO BILL_TO ."(input).
    setfield ls_partner NO_TYPE 'BP'.
    setfield ls_partner DISPLAY_TYPE 'BP'.
    move-corresponding ls_partner to ls_logical_key.
    append ls_partner to lt_partner.
    ls_logical_key-ref_partner_handle = '0004'.
    clear ls_input_fields.
    ls_input_fields-ref_guid = lv_guid_h.
    ls_input_fields-ref_handle = lv_handle_h.
    ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname = gc_object_name-partner.
    ls_input_fields-logical_key = ls_logical_key.
    setfield ls_partner REF_GUID lv_guid_h.
    setfield ls_partner REF_HANDLE lv_handle_h.
    setfield ls_partner REF_KIND gc_object_ref_kind-orderadm_h.
    setfield ls_partner REF_PARTNER_HANDLE '0004'.
    setfield ls_partner KIND_OF_ENTRY 'C'.
    setfield ls_partner PARTNER_FCT '00000004'.
    setfield ls_partner PARTNER_NO PAYER ."(input).
    setfield ls_partner NO_TYPE 'BP'.
    setfield ls_partner DISPLAY_TYPE 'BP'.
    move-corresponding ls_partner to ls_logical_key.
    append ls_partner to lt_partner.
    *******// example of a second partner function (custom) with data override
    *ls_logical_key-ref_partner_handle = '0002'.
    *clear ls_input_fields.
    *ls_input_fields-ref_guid = lv_guid_h.
    *ls_input_fields-ref_handle = lv_handle_h.
    *ls_input_fields-ref_kind = gc_object_ref_kind-orderadm_h.
    *ls_input_fields-objectname = gc_object_name-partner.
    *ls_input_fields-logical_key = ls_logical_key.
    *_set_field ls_partner REF_GUID lv_guid_h.
    *_set_field ls_partner REF_HANDLE lv_handle_h.
    *_set_field ls_partner REF_KIND gc_object_ref_kind-orderadm_h.
    *_set_field ls_partner REF_PARTNER_HANDLE '0002'.
    *_set_field ls_partner KIND_OF_ENTRY 'B'. "manual entry...
    *_set_field ls_partner PARTNER_FCT customFct(input).
    *_set_field ls_partner PARTNER_NO bpNumber(input).
    *_set_field ls_partner NO_TYPE 'BP'.
    *_set_field ls_partner DISPLAY_TYPE 'BP'.
    *_set_field ls_partner TITLE 'Mr.'.
    *_set_field ls_partner FIRSTNAME 'John'.
    *_set_field ls_partner LASTNAME 'Smith'.
    *_set_field ls_partner STR_SUPPL1 'John Smith and Co'.
    *_set_field ls_partner STREET 'Street1'.
    *_set_field ls_partner STR_SUPPL3 'Street4'.
    *_set_field ls_partner HOUSE_NO '42'.
    *_set_field ls_partner CITY 'Townville'.
    *_set_field ls_partner DISTRICT 'Districtshire'.
    *_set_field ls_partner POSTL_COD1 'AA1 2BB'.
    *note now ...
    *adjustment taken from standard include LCMS_MAPPERF04
    *(see where-used-list for BAPI_SLSTRANSACT_CREATEMULTI, program LCMS_MAPPERU11)
    *I don't use macro because name of the field in input_table is different
    *_set_field ls_partner COUNTRYISO 'GB'.
    *instead
    ls_partner-COUNTRYISO = 'GB'.
    ls_input_fields-fieldname = 'COUNTRY'.
    append ls_input_fields to lt_input_fields.
    *_set_field ls_partner LANGU_ISO 'EN'.
    ls_partner-LANGU_ISO = 'EN'.
    ls_input_fields-fieldname = 'LANGU'.
    append ls_input_fields to lt_input_fields.
    move-corresponding ls_partner to ls_logical_key.
    append ls_partner to lt_partner.
    *Create sales orders *
    call function 'BAPI_SLSTRANSACT_CREATEMULTI'
    EXPORTING
    testrun = false
    TABLES
    header = lt_salesorder_header[]
    item = lt_salesorder_item[]
    partner = lt_partner[]
    organisation = lt_organisation[]
    input_fields = lt_input_fields[]
    scheduleline = lt_scheduleline[]
    saved_process = lt_saved_process[]
    return = lt_return[].
    *************// get the GUID of the created object
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
    WAIT = 'X'
    IMPORTING
    RETURN = lt_return1.
    INCLUDE ZZGVBAPISALESORDER_GET_GUIDF01.

  • Customer's field using BAPI_SLSTRANSACT_CREATEMULTI

    Hi,
    Can someone tell me how to populate customer's fields using BAPI BAPI_SLSTRANSACT_CREATEMULTI'.I have used EEW and it has extended the structure 'CRMT_CUSTOMER_H_COM' but did not extend sructure'BAPIBUS20001_CUSTOMER_H'. So I cannot pass the value.
    Tried to extend 'BAPIBUS20001_CUSTOMER_H' using SE11 but its enhancement category is set to 'Can not be enhanced'.
    Thanks for any suggestion

    Hi Sudesh,
    I think you did not do the enhancement properly in EEWB.
    Just do one thing. Copy the code if you have written any in the EEWB for the enhancement somewhere. Run the EEWB wizard again and regenerate the project. Now paste the code that you had written earlier.
    Use the BAPI_BUSPROCESSND_CREATEMULTI and populate the fields as below:
    DATA: lv_header_guid   TYPE crmt_object_guid,
          lv_item_guid     TYPE crmt_object_guid,
          lit_inputfields  TYPE TABLE OF
                           bapibus20001_input_fields,
          wa_inputfields   LIKE LINE OF lit_inputfields,
          lit_customer_h   TYPE TABLE OF
                           bapibus20001_customer_h,
          wa_customer_h    LIKE LINE OF lit_customer_h,
          lit_header       TYPE TABLE OF
                           bapibus20001_header_ins,
          wa_header        LIKE LINE OF lit_header,
          lit_orderadm_i   TYPE TABLE OF bapibus20001_item,
          wa_orderadm_i    LIKE LINE OF lit_orderadm_i.
    * Fill the HEADER
    * Create Contract header guid
      CALL FUNCTION 'GUID_CREATE'
        IMPORTING
          ev_guid_16 = lv_header_guid.
    * Fill orderadm_h
      wa_header-guid         = lv_header_guid.
      wa_header-process_type = 'ZIUS'.
      APPEND wa_header TO lit_header.
    * Fill input fields
      MOVE: lv_header_guid  TO wa_inputfields-ref_guid,
            'A'             TO wa_inputfields-ref_kind,
            'ORDERADM_H'    TO wa_inputfields-objectname,
            'PROCESS_TYPE'  TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      CLEAR wa_inputfields.
    * Customer Fields at HEADER Level 
      MOVE lv_header_guid TO wa_customer_h-ref_guid.
      MOVE 'A'            TO wa_customer_h-mode.
    MOVE: lv_terms      TO wa_customer_h-zzcustomer_h0305,
           gv_sales_ch   TO wa_customer_h-zzcustomer_h0301,
           gv_sales_type TO wa_customer_h-zzcustomer_h0302,
           gv_reference  TO wa_customer_h-zzcustomer_h0313,
           gv_creditrate TO wa_customer_h-zzcustomer_h0311.
      APPEND wa_customer_h TO lit_customer_h.
    * Fill input fields
      MOVE: lv_header_guid  TO wa_inputfields-ref_guid,
            'A'             TO wa_inputfields-ref_kind,
            'CUSTOMER_H'    TO wa_inputfields-objectname.
      MOVE 'ZZCUSTOMER_H0305' TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      MOVE 'ZZCUSTOMER_H0301' TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      MOVE 'ZZCUSTOMER_H0302' TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      MOVE 'ZZCUSTOMER_H0313' TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      MOVE 'ZZCUSTOMER_H0311' TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      MOVE 'MODE' TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      CLEAR wa_inputfields.
    * Fill the Item(ORDERADM_I)
      CALL FUNCTION 'GUID_CREATE'
        IMPORTING
          ev_guid_16 = lv_item_guid.
    * Fill ORDERADM_I
      MOVE: lv_item_guid   TO wa_orderadm_i-guid,
            'A'            TO wa_orderadm_i-mode,
            gv_product     TO wa_orderadm_i-ordered_prod,
            lv_header_guid TO wa_orderadm_i-header.
    * Fill input fields
      MOVE: lv_item_guid  TO wa_inputfields-ref_guid,
            'B'           TO wa_inputfields-ref_kind,
            'ORDERADM_I'  TO wa_inputfields-objectname.
      MOVE  'ORDERED_PROD' TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      MOVE  'PRODUCT' TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      MOVE  'MODE' TO wa_inputfields-fieldname.
      APPEND wa_inputfields TO lit_inputfields.
      CLEAR wa_inputfields.
    * Customer fields at ITEM Level
    * Similarly fill the values for enahanced fields in
    * lit_customer_i and also the respective input fields in
    * lit_inputfields
    * Fill the rest of the internal tables in the same way
    * Partner, Status, Object, Appointment etc.
    * Now call the BAPI
      CALL FUNCTION 'ZBAPI_CONTRACT_CREATEMULTI'
        TABLES
          header           = lit_header
          item             = lit_orderadm_i
          partner          = lit_partner
          organisation     = lit_organisation
          status           = lit_status
          appointment      = lit_appointment
          input_fields     = lit_inputfields
          return           = lit_ret
          product          = lit_product
          scheduleline     = lit_schline
          customer_head    = lit_customer_h
          customer_item    = lit_customer_i
          pricing          = lit_pricing
          condition_create = lit_condition
          billing          = lit_billing
          config_cfg       = lit_config_cfg
          config_ins       = lit_config_ins
          config_val       = lit_config
          OBJECTS          = lit_object.
    <b>Reward points if it helps.</b>

  • Create Service Contract using BAPI_SLSTRANSACT_CREATEMULTI

    Hi,
    In my requirement, I have to create a Service Contract from flat file by using BAPI - BAPI_SLSTRANSACT_CREATEMULTI and data which are comming from flat files are, <b>Serial number, Sold-to party, Ship-to party, Installation date, Contract start date, Contract end date, Service profile, Response profile.</b>
    Please suggest me what are the Import parameters should I pass in this BAPI to create Service Contract?
    Thanks in Advance,
    Deepesh

    Hi Deepesh ,
    Please use BAPI_BUSPROCESSND_CREATEMULTI for creating the service contract.This is better in terms of functionality and usage , though very similar to BAPI_SLSTRANSACT_CREATEMULTI in terms of its interface.
    You need to call :
    1. BAPI_BUSPROCESSND_CREATEMULTI
    2. BAPI_BUSPROCESSND_SAVE
    3. BAPI_TRANSACTION_COMMIT 
    in succession.
    As far as filling the import parameters is concerned,
    1.All your dates would go to APPOINTMENT_H or APPOINTMENT_I ( Header or Item)
    2.Sold-to Party, Ship-to Party would go to PARTNER.
    Regards,
    Rishi.

  • How to creating Service Contract using BAPI_SLSTRANSACT_CREATEMULTI

    Hi,
    In my requirement, I have to create a Service Contract from flat file by using BAPI - BAPI_SLSTRANSACT_CREATEMULTI  and data which are comming from flat files are, Serial number, Sold-to party, Ship-to party, Installation date, Contract start date, Contract end date, Service profile, Response profile.
    Please suggest me what are the Import parameters should I pass in this BAPI to create Service Contract?
    Thanks in Advance,
    Deepesh

    Hi All,
    for everybody's benefit (and to avoid you the time I've spent to work this out...), here is a working example on how to create an sales order (TA) via the BAPI_SLSTRANSACT_CREATEMULTI.
    Not really a Service Contract, but it tells you how to call the BAPI.
    Points appreciated, if you find this helpful...
    I use the convention entryField for the values that should be set based on your system.
    Cheers
    G
    *& Report  ZZGVBAPISALESORDER
    REPORT  ZZGVBAPISALESORDER.
    include constants
    include crm_direct.
    // GUIDs
    data: lv_guid_h       type GUID_32,
          lv_guid_i       type GUID_32,
          lv_guid_sl      type GUID_32,
          lv_guid_p       type GUID_32.
    // Handles
    data: lv_current_handle type crmt_handle,
          lv_handle_h      type crmt_handle,
          lv_handle_i      type crmt_handle,
          lv_handle_sl     type crmt_handle,
          lv_handle_p      type crmt_handle.
    // Administration header + item + etc
    data: lt_salesorder_header type table of bapibus20001_header_ins,
          ls_salesorder_header type bapibus20001_header_ins,
          lt_salesorder_item   type table of bapibus20001_item,
          ls_salesorder_item   type bapibus20001_item,
          lt_scheduleline      type table of BAPIBUS20001_SCHEDLIN,
          ls_scheduleline      type BAPIBUS20001_SCHEDLIN,
          lt_partner           type table of BAPIBUS20001_PARTNER_INS,
          ls_partner           type BAPIBUS20001_PARTNER_INS,
          ls_logical_key       TYPE crmt_partner_logic_partner_key,
          lt_organisation      type table of BAPIBUS20001_ORGMAN_INS,
          ls_organisation      type BAPIBUS20001_ORGMAN_INS.
    // Saved sales orders
    data: lt_saved_process type table of bapibus20001_object_id,
          ls_saved_process type bapibus20001_object_id,
          ls_salesorder    type CRMT_RETURN_OBJECTS_STRUC.
    data: lt_input_fields type table of bapibus20001_input_fields,
          ls_input_fields type bapibus20001_input_fields,
          lt_return type table of bapiret2,
          ls_return type bapiret2.
    // Macro definition to populate structure and input field
    This, called as
    setfield ls_salesorder_header GUID lv_guid_h
    is exploded as
    ls_salesorder_header-GUID = lv_guid_h.
    ls_input_fields-fieldname = 'GUID'.
    append ls_input_fields to lt_input_fields.
    Note 1: &2 (field name) MUST be uppercase
    Note 2: for the salesorder header, I haven't used the macro,
    to show how the code should look.
    I've used the macro everywhere else.
    define setfield.
      &1-&2          = &3.
      ls_input_fields-fieldname  = '&2'.
      append ls_input_fields to lt_input_fields.
    end-of-definition.
    // end of macro definition
      // fill order administration header
    perform get_guid changing lv_guid_h.
    add 1 to lv_handle_h.
    ls_salesorder_header-guid          = lv_guid_h.
    ls_salesorder_header-handle        = lv_handle_h.
    ls_salesorder_header-process_type  = 'TA'.
    clear ls_input_fields.
    ls_input_fields-ref_handle = lv_handle_h.
    ls_input_fields-ref_guid = lv_guid_h.
    *ls_input_fields-ref_kind   = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname = gc_object_name-orderadm_h.
    ls_input_fields-fieldname  = 'GUID'.
    append ls_input_fields to lt_input_fields.
    ls_input_fields-fieldname  = 'HANDLE'.
    append ls_input_fields to lt_input_fields.
    ls_input_fields-fieldname  = 'PROCESS_TYPE'.
    append ls_input_fields to lt_input_fields.
    append ls_salesorder_header to lt_salesorder_header.
      // fill organisation data (I needed this, you may rely on
    sales org determination instead...)
    clear ls_input_fields.
    ls_input_fields-ref_handle  = lv_handle_h.
    ls_input_fields-ref_guid    = lv_guid_h.
    ls_input_fields-ref_kind    = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname  = gc_object_name-orgman.
    setfield ls_organisation REF_GUID lv_guid_h.
    setfield ls_organisation REF_HANDLE lv_handle_h.
    setfield ls_organisation REF_KIND gc_object_ref_kind-orderadm_h.
    setfield ls_organisation SALES_ORG_RESP salesOrgResp(input).
    setfield ls_organisation SALES_ORG salesOrg(input).
    setfield ls_organisation DIS_CHANNEL disChannel(input).
    append ls_organisation to lt_organisation.
      // fill order administration item
    perform get_guid changing lv_guid_i.
    lv_handle_i = lv_handle_h.
    add 1 to lv_handle_i.
    clear ls_input_fields.
    ls_input_fields-ref_guid   = lv_guid_i.
    ls_input_fields-ref_handle  = lv_handle_i.
    *ls_input_fields-ref_kind   = gc_object_ref_kind-orderadm_i.
    ls_input_fields-objectname = gc_object_name-orderadm_i.
    setfield ls_salesorder_item GUID lv_guid_i.
    setfield ls_salesorder_item HEADER lv_guid_h.
    setfield ls_salesorder_item HANDLE lv_handle_i.
    setfield ls_salesorder_item HEADER_HANDLE lv_handle_h.
    setfield ls_salesorder_item ORDERED_PROD product(input).
    *_set_field ls_salesorder_item ITM_TYPE 'TAN'.
    setfield ls_salesorder_item MODE 'A'.
    *adjustment taken from standard include LCMS_MAPPERF04
    *(see where-used-list for BAPI_SLSTRANSACT_CREATEMULTI, program LCMS_MAPPERU11)
    delete lt_input_fields where fieldname = 'HANDLE'
                                    OR
                                 fieldname = 'HEADER_HANDLE'.
    append ls_salesorder_item to lt_salesorder_item.
      // fill schedule line for item
    perform get_guid changing lv_guid_sl.
    add 1 to lv_handle_sl.
    clear ls_input_fields.
    ls_input_fields-ref_guid   = lv_guid_i.
    ls_input_fields-ref_handle  = lv_handle_i.
    ls_input_fields-ref_kind   = gc_object_ref_kind-orderadm_i.
    ls_input_fields-objectname = gc_object_name-schedlin.
    setfield ls_scheduleline ITEM_GUID lv_guid_i.
    setfield ls_scheduleline GUID lv_guid_sl.
    setfield ls_scheduleline HANDLE lv_handle_sl.
    setfield ls_scheduleline ITEM_HANDLE lv_handle_i.
    setfield ls_scheduleline QUANTITY '1.000'.
    append ls_scheduleline to lt_scheduleline.
      // fill partner line
    *perform get_guid changing lv_guid_p.
    *the partner use the logical key as well
    ls_logical_key-ref_partner_handle = '0001'.
    clear ls_input_fields.
    ls_input_fields-ref_guid   = lv_guid_h.
    ls_input_fields-ref_handle = lv_handle_h.
    ls_input_fields-ref_kind   = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname = gc_object_name-partner.
    ls_input_fields-logical_key = ls_logical_key.
    setfield ls_partner REF_GUID lv_guid_h.
    setfield ls_partner REF_HANDLE lv_handle_h.
    setfield ls_partner REF_KIND gc_object_ref_kind-orderadm_h.
    setfield ls_partner REF_PARTNER_HANDLE '0001'.
    setfield ls_partner KIND_OF_ENTRY 'C'.
    setfield ls_partner PARTNER_FCT '00000001'.
    setfield ls_partner PARTNER_NO bpNumber(input).
    setfield ls_partner NO_TYPE 'BP'.
    setfield ls_partner DISPLAY_TYPE 'BP'.
    move-corresponding ls_partner to ls_logical_key.
    append ls_partner to lt_partner.
    //  example of a second partner function (custom) with data
        override
    ls_logical_key-ref_partner_handle = '0002'.
    clear ls_input_fields.
    ls_input_fields-ref_guid   = lv_guid_h.
    ls_input_fields-ref_handle = lv_handle_h.
    ls_input_fields-ref_kind   = gc_object_ref_kind-orderadm_h.
    ls_input_fields-objectname = gc_object_name-partner.
    ls_input_fields-logical_key = ls_logical_key.
    setfield ls_partner REF_GUID lv_guid_h.
    setfield ls_partner REF_HANDLE lv_handle_h.
    setfield ls_partner REF_KIND gc_object_ref_kind-orderadm_h.
    setfield ls_partner REF_PARTNER_HANDLE '0002'.
    setfield ls_partner KIND_OF_ENTRY 'B'.            "manual entry...
    setfield ls_partner PARTNER_FCT customFct(input).
    setfield ls_partner PARTNER_NO bpNumber(input).
    setfield ls_partner NO_TYPE 'BP'.
    setfield ls_partner DISPLAY_TYPE 'BP'.
    setfield ls_partner TITLE 'Mr.'.
    setfield ls_partner FIRSTNAME 'John'.
    setfield ls_partner LASTNAME 'Smith'.
    setfield ls_partner STR_SUPPL1 'John Smith and Co'.
    setfield ls_partner STREET 'Street1'.
    setfield ls_partner STR_SUPPL3 'Street4'.
    setfield ls_partner HOUSE_NO '42'.
    setfield ls_partner CITY 'Townville'.
    setfield ls_partner DISTRICT 'Districtshire'.
    setfield ls_partner POSTL_COD1 'AA1 2BB'.
    note now ...
    *adjustment taken from standard include LCMS_MAPPERF04
    *(see where-used-list for BAPI_SLSTRANSACT_CREATEMULTI, program LCMS_MAPPERU11)
    I don't use macro because name of the field in input_table is different
    *_set_field ls_partner COUNTRYISO 'GB'.
    *instead
    ls_partner-COUNTRYISO = 'GB'.
    ls_input_fields-fieldname = 'COUNTRY'.
    append ls_input_fields to lt_input_fields.
    *_set_field ls_partner LANGU_ISO 'EN'.
    ls_partner-LANGU_ISO = 'EN'.
    ls_input_fields-fieldname = 'LANGU'.
    append ls_input_fields to lt_input_fields.
    move-corresponding ls_partner to ls_logical_key.
    append ls_partner to lt_partner.
    Create sales orders                                                  *
    call function 'BAPI_SLSTRANSACT_CREATEMULTI'
      EXPORTING
        testrun       = false
      TABLES
        header        = lt_salesorder_header[]
        item          = lt_salesorder_item[]
        partner       = lt_partner[]
        organisation  = lt_organisation[]
        input_fields  = lt_input_fields[]
        scheduleline  = lt_scheduleline[]
        saved_process = lt_saved_process[]
        return        = lt_return[].
    // get the GUID of the created object
    call function 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    INCLUDE ZZGVBAPISALESORDER_GET_GUIDF01.
    The include contains only this:
    ***INCLUDE ZZGVBAPISALESORDER_GET_GUIDF01 .
    *&      Form  get_guid
          text
         <--guid  text
    FORM get_guid  CHANGING GUID.
      CALL FUNCTION 'SYSTEM_UUID_C_CREATE'
          IMPORTING
               UUID    = GUID.
    ENDFORM.                    " get_guid

  • Automated multiple quatation from opportunity BAPI_SLSTRANSACT_CREATEMULTI

    I am trying to get the multiple quatation to be generat from single opprortunity number in program.
    by providing multiple products in loop.
    i am using BAPI_SLSTRANSACT_CREATEMULTI for creation and it is working fine .
    My problem is how to pass doc_flow   table in bapi and partner not updating in first screen and ok in second screen.
    Please any one provide the  coding .
    Santosh

    Hi santosh,
    I need create a quotation from opportunity. Can you provide your code where you use the BAPI_SLSTRANSACT_CREATEMULTI?
    Thks

  • Help needed with BAPI_SLSTRANSACT_CREATEMULTI

    Dear All,
    I need to to create a quotation as well as a sales order in CRM system using BAPI_SLSTRANSACT_CREATEMULTI from Web Dynpro
    I am not able to understand how this BAPI works.
    I need help with the minimum (mandatory) fields that are required to be set for a quotation or sales order to be created.
    I also need help in understanding how the GUIDs and Handles are to be used.
    Could anyone please help me in this regard?
    Thanks and regards,
    Mayuresh

    Hi,
    You can check the mandatory field by executing(pressing F8) that function module.
    Give the fnmodule name and press F8.Pass the parameters and execute the RFC.
    U will get some data.Passing the parameters r nothing but mandatory field.
    Same values u can pass it from ur code.
    Regards,
    LG

  • Sales order for noraml and VC materials with BAPI_SLSTRANSACT_CREATEMULTI

    Hi all,
    I created a sales order in CRM with Zfuction module in which I used the bapi BAPI_SLSTRANSACT_CREATEMULTI for a configurable material. I dint hard coded any thing and passed the product data and partner data using import paramters.
    Now I am using this function module to create a sales order with normal item and it does not work and throws a runtime error.
    My actual requirement is to create a Zfunction module that creates a sales order in CRM for both noramal material and VC material.
    What modification should I do?
    Edited by: jessica sam on Jan 19, 2009 2:09 PM

    You are almost there..
    Here are some tips about what data needs to be filled and where. Check this out. Use the report program (not function module) CRM_ORDER_READ. Use a transaction that has all the required information you are interested in. In your case - The requested delivery date.
    The program displays the transaction data in a nice way - browseable data sets - run and see to know what I am talking about.
    Look for the RDD, where it is found.... Use that as a tip to popluate your sturctures in your function module... Use this tip for any data in the transaction.

  • Is it a limitation for BAPI_SLSTRANSACT_CREATEMULTI?

    Is it a limitation for BAPI_SLSTRANSACT_CREATEMULTI
    I am trying to create a Sales Order using a Zprogram. I have used BAPI_SLSTRANSACT_CREATEMULTI. If I give the input as Normal material I am able to generate a sale order. If I give the input as VC material I am able to generate a sales order. But if I give both VC and Normal material as input, I get a run time error as follows.
    Is it a limitation for BAPI_SLSTRANSACT_CREATEMULTI that we cannot create a sales order with both VC and Non-VC items or am I missing some data which I need to pass when I give both VC and Non VC items? I get this error only for my Zprogram. But if I try to create an order on screen manually I donu2019t get any error. This happens only if I create an order with my Zprogram.
    Some one please help me u2026I am just stuggling to get this doneu2026
    I dint find any posts that gives me information about this error.
    CUX1 034 u201CNo root instance found in header datau201D                                                                               
    In the source code you have the termination point in line 63                                   of the (Include)program "LCRM_CONFIG_OWF02". 
    Line
    SourceCde
    33
    LT_CUXI_CUPRT
    34
    LT_CUXI_CUVAL
    35
    LT_CUXI_CUVK
    36
    LS_CUXI_CUCFG.
    37
    38
    PERFORM CREATE_PRICING_CSTIC USING IS_CONFIG-CUCFG-CFGINFO.
    39
    40
    set config to cbase
    41
    CALL FUNCTION 'COM_CUXI_SET_SINGLE_CFG'
    42
    EXPORTING
    43
    I_CFG_HEADER          = LS_CUXI_CUCFG
    44
    I_ROOT_INSTANCE       = CV_INT_OBJ_NO
    45
    I_LOGSYS              = LV_LOGSYS
    46
    IMPORTING
    47
    E_ROOT_INSTANCE       = CV_INT_OBJ_NO
    48
    TABLES
    49
    I_TAB_INSTANCES       = LT_CUXI_CUINS
    50
    I_TAB_PART_OF         = LT_CUXI_CUPRT
    51
    I_TAB_VALUES          = LT_CUXI_CUVAL
    52
    I_TAB_VAR_KEYS        = LT_CUXI_CUVK
    53
    I_TAB_RESTRICTIONS    = LT_CUXI_CURES
    54
    EXCEPTIONS
    55
    INVALID_INSTANCE      = 1
    56
    INTERNAL_ERROR        = 2
    57
    OTHERS                = 3.
    58
    59
    IF SY-SUBRC <> 0.
    60
    if sy-msgno is initial.
    61
    MESSAGE X010 WITH 'COM_CUXI_SET_SINGLE_CFG'.
    62
    else.
    >>>>>
    MESSAGE ID SY-MSGID TYPE 'X' NUMBER SY-MSGNO
    64
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    65
    endif.
    66
    ENDIF.
    67
    68
    ENDFORM.                               " CONFIG_TO_CBASE
    Edited by: jessica sam on Jan 22, 2009 9:58 PM

    Re: Can we create saleorder for VC,Non-VC items with BAPI_SLSTRANSACT_CREATEMUL

  • Using BAPI for Quotations: BAPI_SLSTRANSACT_CREATEMULTI

    Hi everyone,
    I am working with the BAPI: BAPI_SLSTRANSACT_CREATEMULTI  to create an enquiry OR even a quotation. Using t.code SE37, in the following tables I enter:
    Header: (2 fields)
    Process_Type: ZAG (t.type for enquiry)
    Description: description of the enquiry
    Partner: (3 fields)
    Partner_Fct: (partner function) - e.g. 00000001 (SP)
    Partner_No: (partner number) - BP ID
    KIND_OF_ENTRY
    (Entered 5 partners; 1 that was entered manually (SP) and the other four which are determined auto.)
    HENCE in the INPUT FIELD I have 5 BP's
    INPUTFIELDS (1 Field)
    Fieldname : entered 5 BP's
    On execution, the return table shows three errors:
    E CRM_ORDER_CUST       004 System error: Incorrect call of read module for table CRMC_OBJECTS!
    W CRM_ORDER                003 Object type  cannot be processed
    A CRM_ORDER                 009 Program error: Incorrect values in interface parameters
    I entered handle 00000001 for header and 0000002 for the partner and specified the same in the INPUTFIELDS: REF_HANDLE, it leads to more errors
    Any solutions please? Deserving points shall be awarded.
    Best Regards,
    Jacob.
    Edited by: Jacob Raj on Mar 14, 2008 1:50 PM

    Hi,
    May be following code is useful for you.
    ******************************Header  Data***********************************
    DATA: lwa_header TYPE bapibus20001_header_ins,
                lwa_input_fields TYPE bapibus20001_input_fields.
    lwa_header-handle = '0000000001'.
      lwa_header-process_type = lwa_crmd_orderadm_h-process_type.
      APPEND lwa_header TO i_header.
      lwa_input_fields-ref_handle  = '0000000001'.
      lwa_input_fields-objectname  = 'ORDERADM_H'.
      lwa_input_fields-ref_kind    = 'A'.
      PERFORM populate_input_field_name  USING 'PROCESS_TYPE' CHANGING lwa_input_fields
    ********************************Partner Data********************************
    DATA:lwa_partner TYPE bapibus20001_partner_ins,
           lwa_input_fields TYPE bapibus20001_input_fields,
    lwa_partner-ref_handle            = '0000000001'.
      lwa_partner-ref_kind              = 'A'.
      lwa_partner-ref_partner_handle    = '0001'.
      lwa_partner-kind_of_entry         = 'C'.
      lwa_partner-partner_fct           = '00000001'.
      lwa_partner-partner_no            = <partner no>.
      lwa_partner-no_type               = 'BP'.
      lwa_partner-display_type          = 'BP'.
      APPEND lwa_partner TO i_partner.
      lwa_partner-ref_partner_handle    = '0002'.
      lwa_partner-partner_no = <partner no>..
      lwa_partner-partner_fct = '00000014'.
      APPEND lwa_partner TO i_partner.
      lwa_partner-kind_of_entry         = 'A'.
      lwa_partner-ref_partner_handle    = '0003'.
      lwa_partner-partner_no = <partner no>.
      lwa_partner-partner_fct = '00000012'.
      APPEND lwa_partner TO i_partner.
      CLEAR lwa_input_fields.
      lwa_input_fields-ref_handle    = '0000000001'.
      lwa_input_fields-objectname  = 'PARTNER'.
      lwa_input_fields-logical_key = '0001'.
      lwa_input_fields-ref_kind    = 'A'.
      PERFORM populate_input_field_name  USING 'DISPLAY_TYPE' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'KIND_OF_ENTRY' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'NO_TYPE' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'PARTNER_FCT' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'PARTNER_NO' CHANGING lwa_input_fields.
      CLEAR lwa_input_fields.
      lwa_input_fields-ref_handle    = '0000000001'.
      lwa_input_fields-objectname  = 'PARTNER'.
      lwa_input_fields-logical_key = '0002'.
      lwa_input_fields-ref_kind    = 'A'.
      PERFORM populate_input_field_name  USING 'DISPLAY_TYPE' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'KIND_OF_ENTRY' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'NO_TYPE' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'PARTNER_FCT' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'PARTNER_NO' CHANGING lwa_input_fields.
      CLEAR lwa_input_fields.
      lwa_input_fields-ref_handle    = '0000000001'.
      lwa_input_fields-objectname  = 'PARTNER'.
      lwa_input_fields-logical_key = '0003'.
      lwa_input_fields-ref_kind    = 'A'.
      PERFORM populate_input_field_name  USING 'DISPLAY_TYPE' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'KIND_OF_ENTRY' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'NO_TYPE' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'PARTNER_FCT' CHANGING lwa_input_fields.
      PERFORM populate_input_field_name  USING 'PARTNER_NO' CHANGING lwa_input_fields.
    FORM populate_input_field_name  USING lv_field_name TYPE string
                                          CHANGING lwa_input_fields TYPE bapibus20001_input_fields.
      lwa_input_fields-fieldname  = lv_field_name.
      APPEND lwa_input_fields TO i_input_fields.
    ENDFORM.
    ***************************CALL  BAPI_SLSTRANSACT_CREATEMULTI*********************************
    CALL FUNCTION 'ZBAPI_SLSTRANSACT_CREATEMULTI'
            TABLES
              header           = i_header
              return           = i_return
              sales            = i_sales
              partner          = i_partner
              input_fields     = i_input_fields
              created_process  = i_created_process
              saved_process    = i_saved_process
    COMMIT WORK.
    If helpful kindly reward me.
    Thanks & Regards,
    Anirban

  • Pricing reference material in BAPI_SLSTRANSACT_CREATEMULTI

    Hi,
    When creating sales order using the BAPI BAPI_SLSTRANSACT_CREATEMULTI I am filling the pricing reference material(PRICE_PRODUCT_ID) and batch id 'BATCH_ID' as follows in the required table.
      WA_INPUT_FIELDS-REF_GUID = V_GUID_I.
      WA_INPUT_FIELDS-OBJECTNAME = 'PRODUCT_I'.
      WA_INPUT_FIELDS-REF_KIND  = 'B'.
      WA_INPUT_FIELDS-FIELDNAME = 'PRICE_PRODUCT_ID'.
      APPEND WA_INPUT_FIELDS TO IT_INPUT_FIELDS.
      WA_INPUT_FIELDS-REF_GUID = V_GUID_I.
      WA_INPUT_FIELDS-OBJECTNAME = 'PRODUCT_I'.
      WA_INPUT_FIELDS-REF_KIND  = 'B'.
      WA_INPUT_FIELDS-FIELDNAME = 'BATCH_ID'.
      APPEND WA_INPUT_FIELDS TO IT_INPUT_FIELDS.
      WA_PRODUCT-REF_GUID = V_GUID_I.
      WA_PRODUCT-PRICE_PRODUCT_ID  =
    '0000000000000000000000000000000000013623'.
    WA_PRODUCT-batch_id = '060630-EN1'.
      APPEND WA_PRODUCT TO IT_PRODUCT.
    But the fileds are not getting updated.Can anyone please let me know what detail am I missing out.
    Thanks,
    Chamu

    Hi Chamu,
    You are missing the process_qty_unit in the IT_PRODUCT table. You can find the values for this from the table T006. Also, fill the input fields for the same.
    Here is the modified code :
    WA_INPUT_FIELDS-REF_GUID = V_GUID_I.
    WA_INPUT_FIELDS-OBJECTNAME = 'PRODUCT_I'.
    WA_INPUT_FIELDS-REF_KIND = 'B'.
    WA_INPUT_FIELDS-FIELDNAME = 'PRICE_PRODUCT_ID'.
    APPEND WA_INPUT_FIELDS TO IT_INPUT_FIELDS.
    WA_INPUT_FIELDS-REF_GUID = V_GUID_I.
    WA_INPUT_FIELDS-OBJECTNAME = 'PRODUCT_I'.
    WA_INPUT_FIELDS-REF_KIND = 'B'.
    WA_INPUT_FIELDS-FIELDNAME = 'BATCH_ID'.
    APPEND WA_INPUT_FIELDS TO IT_INPUT_FIELDS.
    WA_PRODUCT-REF_GUID = V_GUID_I.
    <b>wa_product-process_qty_unit = 'Your product unit'.</b>
    WA_PRODUCT-PRICE_PRODUCT_ID =
    '0000000000000000000000000000000000013623'.
    WA_PRODUCT-batch_id = '060630-EN1'.
    APPEND WA_PRODUCT TO IT_PRODUCT.
    <b>Reward points if it helps.</b>
    Regards,
    Amit Mishra
    Message was edited by: Amit Mishra

  • BAPI_SLSTRANSACT_CREATEMULTI in workflow

    Hi,
    I am trying to use BAPI_SLSTRANSACT_CREATEMULTI in my workflow in a method.
    This is what i pass to header data.
    ADD 1 TO lv_current_handle .
      iv_process_type = 'ZSG1'.
      // fill order administration header
      ls_salesorder_header-handle        = lv_current_handle.
      ls_salesorder_header-process_type  = iv_process_type.
      ls_salesorder_header-created_by  = AGENT+2(12).
      APPEND ls_salesorder_header TO lt_salesorder_header.
      ls_input_fields-ref_handle = lv_current_handle.
      ls_input_fields-ref_kind   = gc_object_ref_kind-orderadm_h.
      ls_input_fields-objectname = gc_object_name-orderadm_h.
      ls_input_fields-fieldname  = 'PROCESS_TYPE'.
      APPEND ls_input_fields TO lt_input_fields.
      ls_input_fields-fieldname  = 'CREATED_BY'.
      APPEND ls_input_fields TO lt_input_fields.
      CLEAR ls_input_fields.
    What I find is that when I run the method to create an order in swo1 it creates the order with Created_by field as the user that is passed. However when I trigger it in my workflow even though the container element is having the right value it populates WF-BATCH as Created_by field.
    I donot want workflow to populate WF-BATCH. Even if I hard code AGENT+2(12) to be a particular user id and run through workflow it still populates WF-BATCH. How do I overwrite this Wf-BATCH in created_by field in CRMD_ORDERADM_H field.
    Regards,
    Vishal Bhatia

    Hi viji,
    I debugged BAPI to find that it calls CRM_ORDER_MAINTAIN which inturn calls CRM_ORDERADM_H_MERGE_OW in which on line 341 we have the code:
      CREATED_BY
       Fill created_by early, so it can be used eg. by partner determination
      if cs_orderadm_h_wrk-mode             EQ   gc_mode-create    AND
         cs_orderadm_h_wrk-created_by       is   initial.
        cs_orderadm_h_wrk-created_by = sy-uname.
      endif.
    I have no idea why is sy-uname is populated here???? If I somehow change the value in this  cs_orderadm_h_wrk-created_by field the changed value appears in the CRMD_ORDERADM_H table in created_by field..
    Request you to look in the system and provide me with some more help.
    Regards,
    Vishal Bhatia

  • BAPI_SLSTRANSACT_CREATEMULTI - Intermitent errors (buffers/cache)?

    Hi
    I am trying to use BAPI_SLSTRANSACT_CREATEMULTI to create sales order.
    Sometimes it works perfectly. I can create more than 100 sales order without any error.
    Unfortunatelly most of times it create some orders and suddenly start to reject others (create orders with errors). The error message is related with price determination. This message usually ocurr when there is no sales organization for the client. But in all these cases, there is an organization.
    This error happens for sometime, and suddenly disappear. I mean, the SAME order that was giving error, now can be created ok. Usually it happens after 40 minutes.
    If I create another connection, I can create this same order imediatelly (do not have to wait 40 minutes).
    It seems I am facing some problem with some kind of buffers/cache. It is as if for some orders the cache get dirty, and BAPI get confused. After some time this caches are somehow cleaned (or when there is a reconnection), and it starts to work again.
    Any ideas?
    Ronaldo.

    Hi Ronaldo
    Have you checked your IPC logs?
    Is anyone monitoring the IPC?
    If you are creating 100 sales transactions at once, then you are creating 100 IPC sessions. Maybe your IPC can't handle it unless you do a bit of tuning.
    Cheers
    Dom

  • BAPI_SLSTRANSACT_CREATEMULTI + Organization

    Hi,
    I need help to problem with BAPI_SLSTRANSACT_CREATEMULTI bapi.
    Situation:
    SAP CRM 5 SP 8
    I fill all the relevant fields and the document is created. But exist a role for organization determination and it don't works when bapi process.
    I fill the data in the Organization table from bapi, but the screen fields from CRMD_ORDER don't be filled with these data.
    The fields are filled with data from role for determination.
    If I cancel the role for determination, the fields don't be filled (it's null).
    So, The organization fields don't be filled whatever...
    Can anybody help me, please?
    Obs.:  I filled field from INPUT_FIELDS table correctly.
    Regards,
    Sandra

    This WOrks !!!!!
    *Organization Data
    ls_org-ref_handle = '0000000001'. (Sold to party)
    ls_org-ref_kind = 'A'. (Order header Administration)
    ls_org-mode = 'A'. (Create)
    ls_org-sales_org_resp = 'O 50000616'.
    ls_org-dis_channel = '10'.
    ls_org-division = '10'.
    ls_org-sales_org = 'O 50000616'.
    append ls_org to it_orgagization.
    MY HEADER REFERERENCE HANDLE IS '0000000001'. You shud put the handle you have used for the header.
    Input fields for Organization
    clear ls_input_fields.
    ls_input_fields-ref_handle = '0000000001'.
    ls_input_fields-objectname = 'ORGMAN'.
    ls_input_fields-fieldname = 'REF_KIND'.
    ls_input_fields-REF_KIND = 'A'.
    append ls_input_fields to it_input_fields.
    clear ls_input_fields.
    ls_input_fields-ref_handle = '0000000001'.
    ls_input_fields-objectname = 'ORGMAN'.
    ls_input_fields-fieldname = 'MODE'.
    ls_input_fields-REF_KIND = 'A'.
    append ls_input_fields to it_input_fields.
    clear ls_input_fields.
    ls_input_fields-ref_handle = '0000000001'.
    ls_input_fields-objectname = 'ORGMAN'.
    ls_input_fields-fieldname = 'SALES_ORG_RESP'.
    ls_input_fields-REF_KIND = 'A'.
    append ls_input_fields to it_input_fields.
    clear ls_input_fields.
    ls_input_fields-ref_handle = '0000000001'.
    ls_input_fields-objectname = 'ORGMAN'.
    ls_input_fields-fieldname = 'DIS_CHANNEL'.
    ls_input_fields-REF_KIND = 'A'.
    append ls_input_fields to it_input_fields.
    clear ls_input_fields.
    ls_input_fields-ref_handle = '0000000001'.
    ls_input_fields-objectname = 'ORGMAN'.
    ls_input_fields-fieldname = 'DIVISION'.
    ls_input_fields-REF_KIND = 'A'.
    append ls_input_fields to it_input_fields.
    clear ls_input_fields.
    ls_input_fields-ref_handle = '0000000001'.
    ls_input_fields-objectname = 'ORGMAN'.
    ls_input_fields-fieldname = 'SALES_ORG'.
    ls_input_fields-REF_KIND = 'A'.
    append ls_input_fields to it_input_fields.

Maybe you are looking for

  • Camera raw 5.6

    I have PSE 8 with camera raw 5.5. Where can I get camera raw 5.6 to upgrade to enable me to use it with the raw pictures from my canon 7D?

  • ODAC 11.2.0.3.0 with Visual Studio 2008 SP1

    Hi, Yesterday I installed the latest version on ODAC 11.2.0.3.0 on my machine. Now when I am trying to add a new ADO.NET Entity Data Model to my project, it doesn't show me my Oracle Database there when I select "Generate from Database". Also when I

  • Error during install PCK - Group GUESTS does not exist

    Hi, I'm installing PCK 3.0 SR1 on Web AS 6.40 Java SR1 and getting an error during phase "Create J2EE User". The following error is from the java.log file: --- INITIALIZE --- --- STARTING SETTING PROPERTIES --- --- STARTING USER CREATION --- com.sap.

  • Using Call Procedure - Urgent - Please Help

    I have a login page asking users to enter id and password. From there I'm calling a jsp page which in turn calls a javabean class. The javabean class will take inputs (id and password) from the login page and pass them into an Oracle store procedure

  • My mac book pro retina won't access the internet through wifi. It picks up the signal but it just says no internet connection.

    I don't know whether i've changed the settings but i can't see what i've done. I've got it plugged into the home hub and it works fine but for some reason it says theres no wifi available from the same hub that my other devices are attached to. I've