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

ANy BAPI to create Purchase order

Former Member
0 Likes
783

Hi,gurus,

Is there any BAPI to create PO.Pl send to me along with the sample code.

Gratefull answeres will be awarded.

Regards,

Venkatesh

9892 895847

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
741

Hi,

Use the Fm for BAPI Creation.

Fm is BAPI_PO_CREATE

Pass The parameter according to the Function Module Documentation.

Sample Code



FUNCTION ZBAPI_PO_CREATE_ASYNC.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(PO_HEADER) TYPE ZBAPI_PO_HEADER
*" VALUE(BYPASS_BAPI) TYPE CHAR1 OPTIONAL
- 8 -
*" TABLES
*" PO_ITEMS STRUCTURE ZBAPI_PO_DETAIL
*"----------------------------------------------------------------------
DATA: BAPI_PO_HEADER LIKE BAPIEKKOC,
BAPI_PO_ITEMS LIKE BAPIEKPOC OCCURS 0 WITH HEADER LINE,
BAPI_PO_SCHEDULES LIKE BAPIEKET OCCURS 0 WITH HEADER LINE,
RANDOM_PO LIKE DATATYPE-INTEGER4,
PURCHASEORDER LIKE BAPIEKKOC-PO_NUMBER.
if BYPASS_BAPI ne ''.
CALL FUNCTION 'RANDOM_I4'
EXPORTING
RND_MIN = 0
RND_MAX = 1000000000
IMPORTING
RND_VALUE = RANDOM_PO
.
move RANDOM_PO to PURCHASEORDER.
else.
* Below are use to call BAPI_PO_CREATE
move-corresponding PO_HEADER to BAPI_PO_HEADER.
loop at PO_ITEMS.
move-corresponding PO_ITEMS to BAPI_PO_ITEMS.
append BAPI_PO_ITEMS.
move-corresponding PO_ITEMS to BAPI_PO_SCHEDULES.
append BAPI_PO_SCHEDULES.
endloop.
CALL FUNCTION 'BAPI_PO_CREATE'
EXPORTING
PO_HEADER = BAPI_PO_HEADER
* PO_HEADER_ADD_DATA =
* HEADER_ADD_DATA_RELEVANT =
* PO_ADDRESS =
* SKIP_ITEMS_WITH_ERROR = 'X'
* ITEM_ADD_DATA_RELEVANT =
IMPORTING
PURCHASEORDER = PURCHASEORDER
TABLES
PO_ITEMS = BAPI_PO_ITEMS
* PO_ITEM_ADD_DATA =
PO_ITEM_SCHEDULES = BAPI_PO_SCHEDULES
* PO_ITEM_ACCOUNT_ASSIGNMENT =
* PO_ITEM_TEXT =
* RETURN =
* PO_LIMITS =
* PO_CONTRACT_LIMITS =
* PO_SERVICES =
* PO_SRV_ACCASS_VALUES =
* PO_SERVICES_TEXT =
* PO_BUSINESS_PARTNER =
* EXTENSIONIN =
* POADDRDELIVERY =
CALL FUNCTION 'ZBAPI_PO_SEND_RESP_XI_ASYNC'
in background task
destination 'RFC2XR3'
exporting
PO_NUMBER = PURCHASEORDER
VENDOR_NUMBER = PO_HEADER-VENDOR.
commit work.
endif.
ENDFUNCTION.

Revert Back In case Of any help.

regards

Sandipan

Hi,gurus,

Is there any BAPI to create PO.Pl send to me along with the sample code.

Gratefull answeres will be awarded.

Regards,

Venkatesh

9892 895847

4 REPLIES 4
Read only

Former Member
0 Likes
742

Hi,

Use the Fm for BAPI Creation.

Fm is BAPI_PO_CREATE

Pass The parameter according to the Function Module Documentation.

Sample Code



FUNCTION ZBAPI_PO_CREATE_ASYNC.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(PO_HEADER) TYPE ZBAPI_PO_HEADER
*" VALUE(BYPASS_BAPI) TYPE CHAR1 OPTIONAL
- 8 -
*" TABLES
*" PO_ITEMS STRUCTURE ZBAPI_PO_DETAIL
*"----------------------------------------------------------------------
DATA: BAPI_PO_HEADER LIKE BAPIEKKOC,
BAPI_PO_ITEMS LIKE BAPIEKPOC OCCURS 0 WITH HEADER LINE,
BAPI_PO_SCHEDULES LIKE BAPIEKET OCCURS 0 WITH HEADER LINE,
RANDOM_PO LIKE DATATYPE-INTEGER4,
PURCHASEORDER LIKE BAPIEKKOC-PO_NUMBER.
if BYPASS_BAPI ne ''.
CALL FUNCTION 'RANDOM_I4'
EXPORTING
RND_MIN = 0
RND_MAX = 1000000000
IMPORTING
RND_VALUE = RANDOM_PO
.
move RANDOM_PO to PURCHASEORDER.
else.
* Below are use to call BAPI_PO_CREATE
move-corresponding PO_HEADER to BAPI_PO_HEADER.
loop at PO_ITEMS.
move-corresponding PO_ITEMS to BAPI_PO_ITEMS.
append BAPI_PO_ITEMS.
move-corresponding PO_ITEMS to BAPI_PO_SCHEDULES.
append BAPI_PO_SCHEDULES.
endloop.
CALL FUNCTION 'BAPI_PO_CREATE'
EXPORTING
PO_HEADER = BAPI_PO_HEADER
* PO_HEADER_ADD_DATA =
* HEADER_ADD_DATA_RELEVANT =
* PO_ADDRESS =
* SKIP_ITEMS_WITH_ERROR = 'X'
* ITEM_ADD_DATA_RELEVANT =
IMPORTING
PURCHASEORDER = PURCHASEORDER
TABLES
PO_ITEMS = BAPI_PO_ITEMS
* PO_ITEM_ADD_DATA =
PO_ITEM_SCHEDULES = BAPI_PO_SCHEDULES
* PO_ITEM_ACCOUNT_ASSIGNMENT =
* PO_ITEM_TEXT =
* RETURN =
* PO_LIMITS =
* PO_CONTRACT_LIMITS =
* PO_SERVICES =
* PO_SRV_ACCASS_VALUES =
* PO_SERVICES_TEXT =
* PO_BUSINESS_PARTNER =
* EXTENSIONIN =
* POADDRDELIVERY =
CALL FUNCTION 'ZBAPI_PO_SEND_RESP_XI_ASYNC'
in background task
destination 'RFC2XR3'
exporting
PO_NUMBER = PURCHASEORDER
VENDOR_NUMBER = PO_HEADER-VENDOR.
commit work.
endif.
ENDFUNCTION.

Revert Back In case Of any help.

regards

Sandipan

Read only

Former Member
0 Likes
741

Hi Sandipan,

Thanx for the answer.

I would appreciate if u help me solving the below problems.

Once PO is created I need to do GR using TCODE MIGO.

I have created the recording for this using SHDB while recording for tcode MIGO i need to enter the Serial numbers for

each material the right most tab below the number of serial numbers = quantity of material.

when i am recording using dummy material of qty 2 then i can enter only two serial numbers in recording these two steps are

recorded as

perform bdc_field using 'GOSERIAL-SERIALNO(01)'

'venkytest001'.

perform bdc_field using 'GOSERIAL-SERIALNO(02)'

'venkytest002'.

but when i run the same bdc for other material with qty more than 2....the BDC is going fail.

I need serial numbers field to be dynamic......so that i can have n number of serial numbers for different materials.

pl help me it's urgent.

2) Is there any user exit/BADI after saving invoice so that i can populate information like invoice no,material,qty etc in z*table.

Awaiting ur reply ASAP.

Read only

Former Member
0 Likes
741

Hi

Use the bapi: bapi_po_create1 for creating the purchase order.

Pass the parameters like below:

header-comp_code = p_comp.

header-doc_type = p_dtype.

header-creat_date = sy-datum.

header-item_intvl = '10'.

header-vendor = p_lifnr.

header-langu = ws_langu .

header-pmnttrms = p_pmnt.

header-purch_org = p_porg.

header-pur_group = p_pgroup.

header-currency = 'INR'.

headerx-comp_code = c_x.

headerx-doc_type = c_x.

headerx-creat_date = c_x.

headerx-item_intvl = c_x .

headerx-vendor = c_x.

headerx-langu = c_x.

headerx-pmnttrms = c_x .

headerx-purch_org = c_x.

headerx-pur_group = c_x.

LOOP AT it_final2 INTO wa_final2.

p_int = p_int + 10.

wa_item-po_item = p_int.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

input = wa_final2-matnr

IMPORTING

output = wa_final2-matnr

EXCEPTIONS

length_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

wa_item-material = wa_final2-matnr.

wa_item-plant = p_werks.

wa_item-quantity = wa_final2-kwmeng.

wa_item-tax_code = 'V0'.

APPEND wa_item TO it_item.

wa_itemx-po_item = p_int.

wa_itemx-material = c_x.

wa_itemx-plant = c_x .

wa_itemx-stge_loc = c_x .

wa_itemx-quantity = c_x .

wa_itemx-tax_code = c_x .

wa_itemx-item_cat = c_x .

wa_itemx-acctasscat = c_x .

wa_itemx-tax_code = c_x .

APPEND wa_itemx TO it_itemx.

ENDLOOP.

p_pono = ' '.

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

poheader = header

poheaderx = headerx

IMPORTING

exppurchaseorder = p_pono

TABLES

return = return

poitem = it_item

poitemx = it_itemx.

For better understanding see the function module documentation of the bapi: bapi_po_create1.

If it is helpful rewards points

Regards

Pratap.M

Read only

Former Member
0 Likes
741

This message was moderated.