Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

bapi_salesorder_createfromdata2

Former Member
0 Likes
760

hello folks,

Can anyone guide me what are the mandatory parameters to be passed to the above bapi to create the sales oder.

Thanks a lot for your anticipation

Nitesha

1 REPLY 1
Read only

Former Member
0 Likes
460

Hi,

Here is the exampel program



*&---------------------------------------------------------------------*
*& Report  Z_CREATE_WITH_REFERENCE                                     *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  Z_CREATE_WITH_REFERENCE                 .


DATA  ls_bapi_view            TYPE order_view.
DATA  lt_salesdocuments       TYPE TABLE OF sales_key.
DATA  lt_order_headers_out    TYPE TABLE OF bapisdhd.
DATA  lt_order_items_out      TYPE TABLE OF bapisdit.
DATA  lt_order_schedules_out  TYPE TABLE OF bapisdhedu.
DATA  lt_order_conditions_out TYPE TABLE OF bapisdcond.
DATA  lt_order_partners_out   TYPE TABLE OF bapisdpart.

DATA: lv_logic_switch         TYPE bapisdls.
DATA  lv_salesdocument        TYPE bapivbeln-vbeln.
DATA  lt_return               TYPE TABLE OF bapiret2.
DATA  lt_order_items_in       TYPE TABLE OF bapisditm.
DATA  lt_order_schedules_in   TYPE TABLE OF bapischdl.
DATA  lt_order_partners       TYPE TABLE OF bapiparnr.
DATA  lt_order_conditions_in  TYPE TABLE OF bapicond.

DATA: ls_return               TYPE bapiret2.
DATA: ls_header_out           TYPE bapisdhd.
DATA  ls_order_header_in      TYPE bapisdhd1.
DATA: ls_item_out             TYPE bapisdit.
DATA: ls_order_items_in       TYPE bapisditm.
DATA: ls_order_schedules_in   TYPE bapischdl.
DATA: ls_schedules_out        TYPE bapisdhedu.
DATA: ls_order_partners_out   TYPE bapisdpart.
DATA: ls_order_partners       TYPE bapiparnr.
DATA  ls_order_conditions_in  TYPE bapicond.
DATA: ls_conditions_out       TYPE bapisdcond.


PARAMETERS: pa_key   TYPE sales_key,     "ref_doc
            pa_auart TYPE vbak-auart,    "doc_type
            pa_itmno TYPE vbap-posnr,    "itm_number
            pa_qty   TYPE vbep-wmeng,    "Order quantity
            pa_prart TYPE kond-knprs,    "condition type
            pa_purno TYPE vbkd-bstkd.    "order number


ls_bapi_view-header       = 'X'.
ls_bapi_view-item         = 'X'.
ls_bapi_view-sdschedule   = 'X'.
ls_bapi_view-sdcond       = 'X'.
ls_bapi_view-partner      = 'X'.

APPEND pa_key TO lt_salesdocuments.

CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST'
  EXPORTING
    i_bapi_view                   = ls_bapi_view
*   I_MEMORY_READ                 =
  TABLES
    sales_documents               = lt_salesdocuments
    order_headers_out             = lt_order_headers_out
    order_items_out               = lt_order_items_out
    order_schedules_out           = lt_order_schedules_out
*   ORDER_BUSINESS_OUT            =
    order_partners_out            = lt_order_partners_out
*   ORDER_ADDRESS_OUT             =
*   ORDER_STATUSHEADERS_OUT       =
*   ORDER_STATUSITEMS_OUT         =
    order_conditions_out          = lt_order_conditions_out
*   ORDER_COND_HEAD               =
*   ORDER_COND_ITEM               =
*   ORDER_COND_QTY_SCALE          =
*   ORDER_COND_VAL_SCALE          =
*   ORDER_CONTRACTS_OUT           =
*   ORDER_TEXTHEADERS_OUT         =
*   ORDER_TEXTLINES_OUT           =
*   ORDER_FLOWS_OUT               =
*   ORDER_CFGS_CUREFS_OUT         =
*   ORDER_CFGS_CUCFGS_OUT         =
*   ORDER_CFGS_CUINS_OUT          =
*   ORDER_CFGS_CUPRTS_OUT         =
*   ORDER_CFGS_CUVALS_OUT         =
*   ORDER_CFGS_CUBLBS_OUT         =
*   ORDER_CFGS_CUVKS_OUT          =
*   ORDER_BILLINGPLANS_OUT        =
*   ORDER_BILLINGDATES_OUT        =
*   ORDER_CREDITCARDS_OUT         =
*   EXTENSIONOUT                  =
          .
************************************************************************
** PREPARE DATA

* fill header data
IF NOT lt_order_headers_out[] IS INITIAL.
  READ TABLE lt_order_headers_out INTO ls_header_out INDEX 1.

  ls_order_header_in-doc_type   = pa_auart.
  ls_order_header_in-sales_org  = ls_header_out-sales_org.
  ls_order_header_in-distr_chan = ls_header_out-distr_chan.
  ls_order_header_in-division   = ls_header_out-division.
  ls_order_header_in-ref_doc    = pa_key.
  ls_order_header_in-purch_no_c = pa_purno.
  ls_order_header_in-refdoc_cat = ls_header_out-sd_doc_cat.
ENDIF.

*  fill item data
IF pa_itmno NE 0.
** if itm_number is selected
  READ TABLE lt_order_items_out INTO ls_item_out
                                WITH KEY itm_number = pa_itmno.
  IF sy-subrc = 0.
    PERFORM add_items.
    PERFORM add_schedules.
    IF pa_prart CA 'BCG'.
      PERFORM add_conditions.
    ENDIF.
  ENDIF.
ELSE.
** for all items
  LOOP AT lt_order_items_out INTO ls_item_out.
    PERFORM add_items.
    PERFORM add_schedules.
    IF pa_prart CA 'ABCG'.
      PERFORM add_conditions.
    ENDIF.
  ENDLOOP.

ENDIF.

* fill partner data
*READ TABLE lt_order_partners_out INTO ls_order_partners_out
*                                  WITH KEY partn_role = 'AG'.
*IF sy-subrc = 0.
  ls_order_partners-partn_role = 'AG'.
  ls_order_partners-partn_numb   = '0080004792'.
  APPEND ls_order_partners TO lt_order_partners.
  ls_order_partners-partn_role = 'RG'.
  ls_order_partners-partn_numb   = '0050005330'.
  APPEND ls_order_partners TO lt_order_partners.
ls_order_partners-partn_role = 'RE'.
  ls_order_partners-partn_numb   = '0060004063'.
  APPEND ls_order_partners TO lt_order_partners.
ls_order_partners-partn_role = 'WE'.
  ls_order_partners-partn_numb   = '0090001310'.
  APPEND ls_order_partners TO lt_order_partners.
ls_order_partners-partn_role = 'AP'.
  ls_order_partners-partn_numb   = '0000195370'.
  APPEND ls_order_partners TO lt_order_partners.


*ENDIF.

*fill logic switch
lv_logic_switch-pricing = pa_prart.

*** END OF PREPARE DATA
************************************************************************

CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
  EXPORTING
*   SALESDOCUMENTIN               =
    order_header_in               = ls_order_header_in
*   ORDER_HEADER_INX              =
*   SENDER                        =
*   BINARY_RELATIONSHIPTYPE       =
*   INT_NUMBER_ASSIGNMENT         =
*   BEHAVE_WHEN_ERROR             =
    logic_switch                  = lv_logic_switch
*   TESTRUN                       =
*   CONVERT                       = ' '
  IMPORTING
    salesdocument                 = lv_salesdocument
  TABLES
    return                        = lt_return
    order_items_in                = lt_order_items_in
*   ORDER_ITEMS_INX               =
    order_partners                = lt_order_partners
    order_schedules_in            = lt_order_schedules_in
*   ORDER_SCHEDULES_INX           =
    order_conditions_in           = lt_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              =
          .

LOOP AT lt_return INTO ls_return.
  WRITE:/ ls_return-type,
          ls_return-id,
          ls_return-number,
          ls_return-message.
ENDLOOP.

IF NOT lv_salesdocument IS INITIAL.
  COMMIT WORK.
ENDIF.

*&---------------------------------------------------------------------*
*&      Form  add_schedules
*&---------------------------------------------------------------------*
FORM add_schedules .         "add schedules to item

  LOOP AT lt_order_schedules_out INTO ls_schedules_out
                   WHERE itm_number = ls_item_out-itm_number.
    ls_order_schedules_in-itm_number = ls_schedules_out-itm_number.

    IF NOT pa_qty IS INITIAL AND NOT ls_schedules_out-req_qty = 0.
      ls_order_schedules_in-req_qty = pa_qty.
    ELSE.
      ls_order_schedules_in-req_qty = ls_schedules_out-req_qty.
    ENDIF.

    ls_order_schedules_in-sched_line = ls_schedules_out-sched_line.
    APPEND  ls_order_schedules_in TO lt_order_schedules_in.
  ENDLOOP.

  IF sy-subrc <> 0.
    ls_order_schedules_in-itm_number = ls_item_out-itm_number.
    ls_order_schedules_in-sched_line = '001'.
    ls_order_schedules_in-req_qty = pa_qty.
    APPEND  ls_order_schedules_in TO lt_order_schedules_in.
  ENDIF.

ENDFORM.                    " add_schedules
*&---------------------------------------------------------------------*
*&      Form  add_items
*&---------------------------------------------------------------------*
FORM add_items .

  ls_order_items_in-itm_number = ls_item_out-itm_number.
  ls_order_items_in-material = ls_item_out-material.
  ls_order_items_in-ref_doc  = pa_key.
  ls_order_items_in-ref_doc_it = ls_item_out-itm_number.
  ls_order_items_in-ref_doc_ca = ls_header_out-sd_doc_cat.
  APPEND ls_order_items_in TO lt_order_items_in.

ENDFORM.                    " add_items
*&---------------------------------------------------------------------*
*&      Form  add_conditions
*&---------------------------------------------------------------------*
FORM add_conditions.          " add conditions to item


  LOOP AT lt_order_conditions_out INTO ls_conditions_out
                       WHERE itm_number = ls_item_out-itm_number
                       AND NOT cond_type IS INITIAL.
    CLEAR ls_order_conditions_in.
    MOVE-CORRESPONDING ls_conditions_out TO ls_order_conditions_in.
    ls_order_conditions_in-cond_unit = ls_conditions_out-cond_d_unt.
    APPEND ls_order_conditions_in TO lt_order_conditions_in.
  ENDLOOP.

ENDFORM.                    " add_conditions

Regards

Sudheer