Skip to Content
author's profile photo Former Member
Former Member

help with SE37 code needed - create sales order

Hi Guurus,

Can you please help? I finally finished with function creation (I just adopted the function, which I found in the system and it works ok, YEAH!!!)

BUT!!! 😊 It is working just for the sales order creation with one item.

Is it a big deal if you adopt my code that the function will have possibility to add more then one item?

Thanks in advance

Sašo

Here is the code:

*FUNCTION Z_RFC_SD_SIMO_SALES_ORDER2.

**"----


*-

*""Local interface:

**" IMPORTING

**" VALUE(P_AUART) TYPE AUART DEFAULT 'zhp'

**" VALUE(P_VKORG) TYPE VKORG DEFAULT 0001

**" VALUE(P_VTWEG) TYPE VTWEG DEFAULT 07

**" VALUE(P_SPART) TYPE SPART DEFAULT 01

**" VALUE(P_AUGRU) TYPE AUGRU DEFAULT 001

**" VALUE(P_BSTKD) TYPE BSTKD DEFAULT 'test si order avtom'

**" VALUE(P_SOLD) TYPE KUNNR DEFAULT 21000069

**" VALUE(P_SHIP) TYPE KUNNR DEFAULT 21000069

**" VALUE(P_MATNR) TYPE MATNR DEFAULT 'SIOBRACUN'

**" VALUE(P_MENGE) TYPE KWMENG DEFAULT 1

**" VALUE(P_PLANT) TYPE WERKS_D DEFAULT 0001

**" VALUE(P_ITCAT) TYPE PSTYV DEFAULT 'ZG2W'

**" VALUE(P_LGORT) TYPE LGORT_D DEFAULT 0001

**" EXPORTING

**" VALUE(V_VBELN) TYPE VBELN

**" VALUE(RESULT) TYPE CHAR01

**"----


*-

*

  • 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.

*

  • HEADER DATA

*header-doc_type = p_auart.

*headerx-doc_type = 'X'.

*

*header-sales_org = p_vkorg.

*headerx-sales_org = 'X'.

*

*header-distr_chan = p_vtweg.

*headerx-distr_chan = 'X'.

*

*header-division = p_spart.

*headerx-division = 'X'.

**order reason

*header-ord_reason = p_augru.

*headerx-ord_reason = 'X'.

**PO number from MAX

*header-PURCH_NO_C = p_BSTKD.

*headerx-PURCH_NO_C = 'X'.

*

*headerx-updateflag = 'I'.

*

  • PARTNER DATA

*partner-partn_role = 'AG'.

*partner-partn_numb = p_sold.

*APPEND partner.

*

*partner-partn_role = 'WE'.

*partner-partn_numb = p_ship.

*APPEND partner.

*

  • ITEM DATA

*itemx-updateflag = 'I'.

*

*item-itm_number = '000010'.

*itemx-itm_number = 'X'.

*

*

*item-material = p_matnr.

*itemx-material = 'X'.

*

*item-plant = p_plant.

*itemx-plant = 'X'.

*

*item-target_qty = p_menge.

*itemx-target_qty = 'X'.

*

*item-target_qu = ' '.

*itemx-target_qu = 'X'.

*

*item-item_categ = p_itcat.

*itemx-item_categ = 'X'.

*

**item-STORE_LOC = p_LGORT.

**itemx-STORE_LOC = '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

*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.

*

*result = 'E'.

*

*ELSE.

*

*COMMIT WORK AND WAIT.

*

*result = 'S'.

*ENDIF.

*

*

*

*

*

*ENDFUNCTION.

Edited by: Saso Poljansek on Jan 22, 2008 10:23 AM

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

2 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Jan 22, 2008 at 10:29 AM

    Hi,,

    ----


    • Include YCL_CREATE_SALES_DOCU *

    ----


    ----


    • Form salesdocu

    ----


    • This Subroutine is used to create Sales Order

    ----


    • -->P_HEADER Document Header Data

    • -->P_HEADERX Checkbox for Header Data

    • -->P_ITEM Item Data

    • -->P_ITEMX Item Data Checkboxes

    • -->P_LT_SCHEDULES_IN Schedule Line Data

    • -->P_LT_SCHEDULES_INX Checkbox Schedule Line Data

    • -->P_PARTNER text Document Partner

    • <--P_w_vbeln text Sales Document Number

    ----


    DATA:

    lfs_return like line of t_return.

    FORM create_sales_document changing P_HEADER like fs_header

    P_HEADERX like fs_headerx

    Pt_ITEM like t_item[]

    Pt_ITEMX like t_itemx[]

    P_LT_SCHEDULES_IN like t_schedules_in[]

    P_LT_SCHEDULES_INX like t_schedules_inx[]

    Pt_PARTNER like t_partner[]

    P_w_vbeln like w_vbeln.

    • This Perform is used to fill required data for Sales order creation

    perform sales_fill_data changing p_header

    p_headerx

    pt_item

    pt_itemx

    p_lt_schedules_in

    p_lt_schedules_inx

    pt_partner.

    • Function Module to Create Sales and Distribution Document

    perform sales_order_creation using p_header

    p_headerx

    pt_item

    pt_itemx

    p_lt_schedules_in

    p_lt_schedules_inx

    pt_partner.

    perform return_check using p_w_vbeln .

    ENDFORM. " salesdocu

    ----


    • Form commit_work

    ----


    • To execute external commit *

    ----


    FORM commit_work .

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

    EXPORTING

    WAIT = c_x

    .

    ENDFORM. " Commit_work

    • Include ycl_sales_order_header " To Fill Header data and Item data

    Include ycl_sales_order_header.

    ----


    • Form return_check

    ----


    • To validate the sales order creation

    ----


    FORM return_check using pr_vbeln type vbeln.

    if pr_vbeln is initial.

    LOOP AT t_return into lfs_return .

    WRITE / lfs_return-message.

    clear lfs_return.

    ENDLOOP. " Loop at return

    else.

    perform commit_work. " External Commit

    Refresh t_return.

    fs_disp-text = text-003.

    fs_disp-number = pr_vbeln.

    append fs_disp to it_disp.

    if p_del eq c_x or p_torder eq c_x or

    p_pgi eq c_x or p_bill eq c_x.

    perform delivery_creation. " Delivery order creation

    endif. " If p_del eq 'X'......

    endif. " If p_w_vbeln is initial

    ENDFORM. " Return_check

    &----


    *& Form sales_order_creation

    &----


    • text

    ----


    • -->P_P_HEADER text

    • -->P_P_HEADERX text

    • -->P_PT_ITEM text

    • -->P_PT_ITEMX text

    • -->P_P_LT_SCHEDULES_IN text

    • -->P_P_LT_SCHEDULES_INX text

    • -->P_PT_PARTNER text

    ----


    FORM sales_order_creation USING P_P_HEADER like fs_header

    P_P_HEADERX like fs_headerx

    P_PT_ITEM like t_item[]

    P_PT_ITEMX like t_itemx[]

    P_P_LT_SCHEDULES_IN like t_schedules_in[]

    P_P_LT_SCHEDULES_INX like t_schedules_inx[]

    P_PT_PARTNER like t_partner[].

    CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1'

    EXPORTING

    sales_header_in = p_p_header

    sales_header_inx = p_p_headerx

    IMPORTING

    salesdocument_ex = w_vbeln

    TABLES

    return = t_return

    sales_items_in = p_pt_item

    sales_items_inx = p_pt_itemx

    sales_schedules_in = p_p_lt_schedules_in

    sales_schedules_inx = p_p_lt_schedules_inx

    sales_partners = p_pt_partner.

    ENDFORM. " sales_order_creation

    this is code to create sales document

    plzz reward if it is usefull...

    plzz dont forget to reward......

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 22, 2008 at 09:29 AM

    Store all the item fields in an internal table and pass it to your function module via the tables interface, not via importing.

    Is there a need to pass the item numbers?

    Think they will be assigned automatically, same for scheduling line fields.

    Add a comment
    10|10000 characters needed characters exceeded

    • Former Member Former Member

      Hi,

      no not a Z-table but internal table.

      Example of a function module interface:

      CALL FUNCTION 'Z_FIND_CUSTOMERS' EXPORTING

      findpar = w_searchcriteria

      TABLES

      customers = t_customers.

      In the example above, t_customers is an internal table.

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.