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

create PO using BAPI

Former Member
0 Likes
1,698

i hve written foll code to crate PO using BAPI. but i get a runtime error:

"Type conflict when calling a function module (field length)."

the code is as follows:

REPORT z_h_d_bapi_1 .

DATA : bapiekko like bapiekko,

po_header LIKE bapiekko OCCURS 0 WITH HEADER LINE,

po_items LIKE bapiekpo OCCURS 0 WITH HEADER LINE,

po_item_schedules like bapieket occurs 0 with header line,

return LIKE bapireturn OCCURS 0 WITH HEADER LINE.

*POPULATE HEADER DATA FOR PO

CLEAR po_header.

REFRESH po_header.

po_header-po_number = '4500000000' .

po_header-created_on = '06/05/2006' .

po_header-purch_org = '1000' .

po_header-pur_group = '026' .

po_header-vendor = '420' .

po_header-sales_pers = 'Mr. rahul' .

APPEND po_header.

*POPULATE ITEM DATA.

CLEAR po_items.

REFRESH po_items.

po_items-po_item = '00030'.

po_items-material = 'T-M15D06'.

po_items-plant = '1000'.

po_items-store_loc = '0001'.

po_items-quantity = '1000'.

po_items-unit = '10'.

po_items-net_price = '1000000'.

po_items-price_unit = '67000'.

APPEND po_items.

*POPULATE SCHEDULES DATA

clear po_item_schedules.

refresh po_item_schedules.

po_item_schedules-po_item = '00030'.

po_item_schedules-deliv_date = sy-datum.

po_item_schedules-quantity = '1000'.

append po_item_schedules.

CALL FUNCTION 'BAPI_PO_CREATE'

EXPORTING

po_header = bapiekko

  • PO_HEADER_ADD_DATA = po_header

  • HEADER_ADD_DATA_RELEVANT = '1'

  • PO_ADDRESS =

SKIP_ITEMS_WITH_ERROR = 'X'

  • ITEM_ADD_DATA_RELEVANT = '1'

  • HEADER_TECH_FIELDS =

  • IMPORTING

  • PURCHASEORDER =

tables

po_items = po_items

  • PO_ITEM_ADD_DATA =

po_item_schedules = po_item_schedules

  • PO_ITEM_ACCOUNT_ASSIGNMENT =

  • PO_ITEM_TEXT =

RETURN = return

  • PO_LIMITS =

  • PO_CONTRACT_LIMITS =

  • PO_SERVICES =

  • PO_SRV_ACCASS_VALUES =

  • PO_SERVICES_TEXT =

  • PO_BUSINESS_PARTNER =

  • EXTENSIONIN =

  • POADDRDELIVERY =

.

LOOP AT return.

WRITE / return-message.

ENDLOOP.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,599

Hi,

The PO header structure should be BAPIEKKOC..And it shouldn't be internal table ..Structure is enough...

For the PO items the structure should be BAPIEKPOC instead of BAPIEKPO..

THanks,

Naren

16 REPLIES 16
Read only

Former Member
0 Likes
1,600

Hi,

The PO header structure should be BAPIEKKOC..And it shouldn't be internal table ..Structure is enough...

For the PO items the structure should be BAPIEKPOC instead of BAPIEKPO..

THanks,

Naren

Read only

0 Likes
1,599

yaah....but the 'return' message i got says:

"Enter Purchasing Org. "

Regards

Nirav

Read only

Former Member
0 Likes
1,599

Hi,

TO the PO_HEADER parameter pass the structure PO_HEADER instead of BAPIEKKO..

THanks,

Naren

Read only

0 Likes
1,599

yes...i have done tht. now the code is somewhat like this

REPORT z_h_d_bapi_1 .

DATA : po_header LIKE bapiekkoc,

po_items LIKE bapiekpoc OCCURS 0 WITH HEADER LINE,

po_item_schedules like bapieket occurs 0 with header line,

return LIKE bapireturn OCCURS 0 WITH HEADER LINE.

purOrder like bapiekkoc-purchase

*POPULATE ITEM DATA.

CLEAR po_items.

REFRESH po_items.

po_items-po_item = '00030'.

po_items-material = 'T-M15D06'.

po_items-plant = '1000'.

po_items-store_loc = '0001'.

*po_items-quantity = '1000'.

po_items-unit = '10'.

po_items-net_price = '1000000'.

po_items-price_unit = '67000'.

APPEND po_items.

*POPULATE SCHEDULES DATA

clear po_item_schedules.

refresh po_item_schedules.

po_item_schedules-po_item = '00030'.

po_item_schedules-deliv_date = sy-datum.

po_item_schedules-quantity = '1000'.

append po_item_schedules.

CALL FUNCTION 'BAPI_PO_CREATE'

EXPORTING

po_header = po_header

  • PO_HEADER_ADD_DATA = po_header

  • HEADER_ADD_DATA_RELEVANT = '1'

  • PO_ADDRESS =

SKIP_ITEMS_WITH_ERROR = 'X'

  • ITEM_ADD_DATA_RELEVANT = '1'

  • HEADER_TECH_FIELDS =

  • IMPORTING

  • PURCHASEORDER =

tables

po_items = po_items

  • PO_ITEM_ADD_DATA =

po_item_schedules = po_item_schedules

  • PO_ITEM_ACCOUNT_ASSIGNMENT =

  • PO_ITEM_TEXT =

RETURN = return

  • PO_LIMITS =

  • PO_CONTRACT_LIMITS =

  • PO_SERVICES =

  • PO_SRV_ACCASS_VALUES =

  • PO_SERVICES_TEXT =

  • PO_BUSINESS_PARTNER =

  • EXTENSIONIN =

  • POADDRDELIVERY =

.

LOOP AT return.

WRITE / return-message.

ENDLOOP.

Return message tht i get is " enter purchas org"

btw. thanx for ur replies

Read only

Former Member
0 Likes
1,599

Hi,

You still have to populate the PO_HEADER structure..

<b>po_header-created_on = '06/05/2006' .

po_header-purch_org = '1000' .

po_header-pur_group = '026' .

po_header-vendor = '420' .

po_header-sales_pers = 'Mr. rahul' .</b>

I think by mistake you removed the above code..

THanks,

Naren

Read only

0 Likes
1,599

return message m getting now is

"No Master Record exists for vendor 420"

But an entry with vendor no 420 exists in the ekko table.

Read only

Former Member
0 Likes
1,599

<b>po_header-vendor = '0000000420'</b> .

here u have to pass complete number.

<b>check vendor + Purchase Org Combinations +Company COde in EKKO .</b>

Regards

Prabhu

Read only

0 Likes
1,599

nopes. still gettin the same message.

Read only

0 Likes
1,599

Check in table LFM1 if vendor 420 is defined for purhase org '026' and LOEVM eq SPACE.

Kind Regards

Eswar

Read only

0 Likes
1,599

hi,

for us we are not passing the vendor . You can try that !

Regards

Nishant

Read only

0 Likes
1,599

still it gives the same msg...

Read only

anversha_s
Active Contributor
0 Likes
1,599

hi nirav,

chk this.

DATA: BEGIN OF po_header OCCURS 0.

INCLUDE STRUCTURE BAPIEKKOC.

DATA: END OF po_header.

DATA: BEGIN OF po_iteam OCCURS 10.

INCLUDE STRUCTURE BAPIEKPOC.

DATA: END OF po-items.

DATA: BEGIN OF PO_ITEM_SCHEDULES OCCURS 0.

INCLUDE STRUCTURE BAPIEKET.

DATA: END OF PO_ITEM_SCHEDULES.

DATA: BEGIN OF I_BAPIRETURN OCCURS 0.

INCLUDE STRUCTURE BAPIRETURN.

DATA: END OF I_BAPIRETURN.

CALL FUNCTION 'BAPI_PO_CREATE'

EXPORTING

PO_HEADER = PO_HEADER

SKIP_ITEMS_WITH_ERROR = 'X'

TABLES

PO_ITEMS = PO_ITEMS

PO_ITEM_SCHEDULES = PO_ITEM_SCHEDULES

RETURN = I_BAPIRETURN

EXCEPTIONS

OTHERS = 1.

chnage ur code like this.

chk the structures declared inside the header,item and schedule.

rgds

anver

if hlped mark points

Read only

0 Likes
1,599

it gives same msg....'no master record found for vendor'.

Read only

0 Likes
1,599

its damn tough!!!!!

Read only

0 Likes
1,599

Hiral,

Check the below code for creating PO using the BAPI BAPI_PO_CREARE.

Check u have used conversion input (CONVERSION_EXIT_ALPHA_INPUT) for the vendor. Also check in table <b>lfa1</b> that the given vendor is present or not.

&----


*& Report YPRA_SAMPLE08 *

*& *

&----


*& *

*& *

&----


REPORT ypra_sample08.

Create Service PO

DATA: wa_po_header TYPE bapiekkoc,

wa_po_add_header TYPE bapiekkoa,

ws_po_number TYPE bapiekkoc-po_number,

ws_po_number1 TYPE bapimepoheader-po_number,

ws_pack_no TYPE packno,

i_poitems TYPE bapiekpoc OCCURS 0 WITH HEADER LINE,

i_poitems_sch TYPE bapieket OCCURS 0 WITH HEADER LINE,

i_acct_ass TYPE bapiekkn OCCURS 0 WITH HEADER LINE,

i_return TYPE bapireturn OCCURS 0 WITH HEADER LINE,

i_return1 TYPE bapiret2 OCCURS 0 WITH HEADER LINE,bapiret2,

i_services TYPE bapiesllc OCCURS 0 WITH HEADER LINE,

bapi_esll TYPE bapiesllc OCCURS 0 WITH HEADER LINE,

i_srv_accass TYPE bapiesklc OCCURS 0 WITH HEADER LINE,

i_po_limits TYPE bapiesuhc OCCURS 0 WITH HEADER LINE,

i_po_contract_limits TYPE bapiesucc OCCURS 0 WITH HEADER LINE.

DATA: serial_no LIKE bapiesknc-serial_no,

line_no LIKE bapiesllc-line_no,

pack_no LIKE bapiesllc-line_no.

wa_po_header-doc_date = sy-datum.

wa_po_header-doc_type = 'ZES3'.

wa_po_header-co_code = 'SP01'.

wa_po_header-purch_org = 'SP01'.

wa_po_header-pur_group = 'ES1'.

wa_po_header-vendor = '0001000025'.

wa_po_header-created_by = sy-uname.

wa_po_header-langu = sy-langu.

i_poitems-po_item = 10.

i_poitems-item_cat = '9'.

i_poitems-acctasscat = 'K'.

i_poitems-plant = 'SP01'.

i_poitems-short_text = '007002046'.

i_poitems-disp_quan = '1'.

*i_poitems-mat_grp = 'ZES1'.

*i_poitems-pckg_no = '0000000265'.

*i_poitems-line_no = 1.

i_poitems-pckg_no = 10.

APPEND i_poitems.

i_poitems_sch-po_item = 10.

i_poitems_sch-deliv_date = sy-datum.

APPEND i_poitems_sch.

i_acct_ass-po_item = 10.

i_acct_ass-serial_no = 01.

*i_acct_ass-g_l_acct = '0007910100'.

i_acct_ass-co_area = '1000'.

i_acct_ass-cost_ctr = '0000012000'.

APPEND i_acct_ass.

i_acct_ass-po_item = 10.

i_acct_ass-serial_no = 02.

i_acct_ass-co_area = '1000'.

i_acct_ass-cost_ctr = '0000012000'.

APPEND i_acct_ass.

i_acct_ass-po_item = 10.

i_acct_ass-serial_no = 03.

i_acct_ass-co_area = '1000'.

i_acct_ass-cost_ctr = '0000012000'.

APPEND i_acct_ass.

*i_acct_ass-po_item = 10.

*i_acct_ass-serial_no = 04.

*i_acct_ass-co_area = '1000'.

*i_acct_ass-cost_ctr = '0000012000'.

*APPEND i_acct_ass.

bapi_esll-pckg_no = 10.

bapi_esll-line_no = 1.

bapi_esll-outl_no = '0'.

bapi_esll-outl_ind = 'X'.

bapi_esll-subpckg_no = 20.

bapi_esll-from_line = 1.

bapi_esll-to_line = 3.

APPEND bapi_esll.

bapi_esll-pckg_no = 20.

bapi_esll-line_no = 2.

bapi_esll-service = '000000000003000018'.

bapi_esll-quantity = '317946.000'.

bapi_esll-gr_price = '21111.0000'.

bapi_esll-price_unit = '10000'.

APPEND bapi_esll.

*bapi_esll-pckg_no = 30.

*bapi_esll-line_no = 1.

*bapi_esll-outl_no = '0'.

*bapi_esll-outl_ind = 'X'.

*bapi_esll-subpckg_no = 40.

*APPEND bapi_esll.

bapi_esll-pckg_no = 20.

bapi_esll-line_no = 3.

bapi_esll-service = '000000000003000017'.

bapi_esll-quantity = '317946.000'.

bapi_esll-gr_price = '21111.0000'.

bapi_esll-price_unit = '10000'.

APPEND bapi_esll.

i_srv_accass-pckg_no = 10.

i_srv_accass-line_no = 1.

i_srv_accass-serno_line = 01.

i_srv_accass-serial_no = 01.

i_srv_accass-percentage = 100.

APPEND i_srv_accass.

i_srv_accass-pckg_no = 20.

i_srv_accass-line_no = 2.

i_srv_accass-serno_line = 02.

i_srv_accass-serial_no = 02.

i_srv_accass-percentage = 100.

i_srv_accass-quantity = '1'.

APPEND i_srv_accass.

i_srv_accass-pckg_no = 20.

i_srv_accass-line_no = 3.

i_srv_accass-serno_line = 03.

i_srv_accass-serial_no = 03.

i_srv_accass-percentage = 100.

i_srv_accass-quantity = '1'.

APPEND i_srv_accass.

*i_srv_accass-pckg_no = 40.

*i_srv_accass-line_no = 3.

*i_srv_accass-serno_line = 03.

*i_srv_accass-serial_no = 03.

*i_srv_accass-percentage = 100.

*i_srv_accass-quantity = '1'.

*APPEND i_srv_accass.

CALL FUNCTION 'BAPI_PO_CREATE'

EXPORTING

po_header = wa_po_header

po_header_add_data = wa_po_add_header

  • HEADER_ADD_DATA_RELEVANT =

  • PO_ADDRESS =

skip_items_with_error = 'X'

  • ITEM_ADD_DATA_RELEVANT =

  • HEADER_TECH_FIELDS =

IMPORTING

purchaseorder = ws_po_number

TABLES

po_items = i_poitems

  • PO_ITEM_ADD_DATA =

po_item_schedules = i_poitems_sch

po_item_account_assignment = i_acct_ass

  • PO_ITEM_TEXT =

return = i_return

  • po_limits = i_po_limits

  • po_contract_limits = i_po_contract_limits

po_services = bapi_esll

po_srv_accass_values = i_srv_accass

  • PO_SERVICES_TEXT =

  • PO_BUSINESS_PARTNER =

  • EXTENSIONIN =

  • POADDRDELIVERY =

.

IF NOT ws_po_number IS INITIAL.

ws_po_number1 = ws_po_number.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = '2'.

WRITE: / ws_po_number.

ENDIF.

break gbpra8.

LOOP AT i_return.

ENDLOOP.

Regards,

Prakash.

Read only

0 Likes
1,599

still dosent work.