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

Error while creating a Service PO using BAPI_PO_CREATE1

Former Member
0 Likes
1,120

Hi,

Im facing Error as "In case of account assignment, please enter acc. assignment data for item" while creating Service PO using BAPI_PO_CREATE1.

    • Header Data

w_poheader-comp_code = w_src-bukrs. "Company Code

w_poheader-doc_type = w_src-bsart. "Document type

  • w_poheader-delete_ind = w_src-vrtkz. "Deletion Indicator

CLEAR: lv_date.

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'

EXPORTING

date_external = w_src-aedat

IMPORTING

date_internal = lv_date

EXCEPTIONS

date_external_is_invalid = 1

OTHERS = 2.

w_poheader-creat_date = lv_date. "Creation Date

w_poheader-created_by = sy-uname. "Creator Name

w_poheader-vendor = w_src-lifnr. "Vendor

w_poheader-pmnttrms = w_src-zterm. "Payment Terms

w_poheader-purch_org = w_src-ekorg. "Purchase Organization

w_poheader-pur_group = w_src-ekgrp. "Purchase Group

w_poheader-ref_1 = w_src-ihrez. "OLD PO

w_poheaderx-comp_code = 'X'. "Company Code

w_poheaderx-doc_type = 'X'. "Document type

  • w_poheaderx-delete_ind = 'X'. "Deletion Indicator

w_poheaderx-creat_date = 'X'. "Creation Date

w_poheaderx-created_by = 'X'.

w_poheaderx-vendor = 'X'.

w_poheaderx-pmnttrms = 'X'. "Payment Terms

w_poheaderx-purch_org = 'X'. "Purchase Organization

w_poheaderx-pur_group = 'X'. "Purchase Group

w_poheaderx-ref_1 = 'X'.

  • Item Data

w_poitem-po_item = w_src-ebelp.

IF NOT w_src-elikz IS INITIAL.

w_poitem-delete_ind = w_src-elikz.

ENDIF.

IF NOT w_src-txz01 IS INITIAL.

w_poitem-short_text = w_src-txz01.

ENDIF.

IF NOT w_src-werks IS INITIAL.

w_poitem-plant = w_src-werks.

ENDIF.

  • Material group

IF NOT w_src-matkl IS INITIAL.

w_poitem-matl_group = w_src-matkl.

ENDIF.

  • Open or Partial Qty

IF w_src-opqty IS NOT INITIAL.

w_poitem-quantity = w_src-opqty.

ELSEIF NOT w_src-paqty IS INITIAL.

w_poitem-quantity = w_src-paqty.

ENDIF.

IF NOT w_src-meins IS INITIAL.

w_poitem-po_unit = w_src-meins. "Base Unit of Measure

ENDIF.

IF NOT w_src-netpr IS INITIAL.

w_poitem-net_price = w_src-netpr. "Net Price

ENDIF.

IF NOT w_src-mwskz IS INITIAL.

w_poitem-tax_code = w_src-mwskz.

ENDIF.

IF NOT w_src-pstyp IS INITIAL.

w_poitem-item_cat = w_src-pstyp.

ENDIF.

IF NOT w_src-knttp IS INITIAL.

w_poitem-acctasscat = w_src-knttp.

ENDIF.

IF NOT w_src-vrtkz IS INITIAL.

w_poitem-distrib = w_src-vrtkz.

ENDIF.

  • Package No

IF NOT w_src-packno IS INITIAL.

w_poitem-pckg_no = w_src-packno. "Package no

ENDIF.

IF w_poitem-delete_ind IS INITIAL AND

w_poitem-short_text IS INITIAL AND

w_poitem-plant IS INITIAL AND

w_poitem-matl_group IS INITIAL AND

w_poitem-quantity IS INITIAL AND

w_poitem-po_unit IS INITIAL AND

w_poitem-net_price IS INITIAL AND

w_poitem-tax_code IS INITIAL.

CLEAR lv_item.

ELSE.

APPEND w_poitem TO i_poitem.

CLEAR: w_poitem.

lv_item = 'X'.

ENDIF.

w_poitemx-po_item = w_src-ebelp.

w_poitemx-delete_ind = 'X'.

w_poitemx-short_text = 'X'.

w_poitemx-plant = 'X'.

w_poitemx-matl_group = 'X'.

w_poitemx-quantity = 'X'.

w_poitemx-po_unit = 'X'.

w_poitemx-net_price = 'X'.

w_poitemx-tax_code = 'X'.

w_poitemx-item_cat = 'X'.

w_poitemx-acctasscat = 'X'.

w_poitemx-distrib = 'X'.

IF NOT w_src-packno IS INITIAL.

w_poitemx-pckg_no = 'X'.

ENDIF.

IF lv_item = 'X'.

APPEND w_poitemx TO i_poitemx.

CLEAR: w_poitemx,

lv_item.

ENDIF.

  • PO Deliery Address

w_poaddrdelivery-po_item = w_src-ebelp.

IF NOT w_src-adrn2 IS INITIAL.

w_poaddrdelivery-addr_no = w_src-adrn2.

APPEND w_poaddrdelivery TO i_poaddrdelivery.

CLEAR w_poaddrdelivery.

ENDIF.

  • POschedule

w_poschedule-po_item = w_src-ebelp.

CLEAR: lv_date.

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'

EXPORTING

date_external = w_src-eindt

IMPORTING

date_internal = lv_date

EXCEPTIONS

date_external_is_invalid = 1

OTHERS = 2.

IF NOT lv_date IS INITIAL.

w_poschedule-del_datcat_ext = 'D'. "Delivery Date in Day Format

w_poschedule-delivery_date = lv_date.

w_poschedule-quantity = w_src-menge.

APPEND w_poschedule TO i_poschedule.

CLEAR w_poschedule.

lv_schd = 'X'.

ENDIF.

w_poschedulex-po_item = w_src-ebelp.

w_poschedulex-del_datcat_ext = 'X'.

w_poschedulex-delivery_date = 'X'.

w_poschedulex-quantity = 'X'.

IF lv_schd = 'X'.

APPEND w_poschedulex TO i_poschedulex.

CLEAR : w_poschedulex,

lv_schd.

ENDIF.

  • PO Account Assignment

w_poaccount-po_item = w_src-ebelp.

w_poaccount-serial_no = w_src-zekkn.

  • Distribution Indicator is 1

IF w_src-vrtkz EQ '1'.

w_poaccount-distr_perc = w_src-vproz.

IF NOT w_src-menge IS INITIAL.

CLEAR lv_menge.

lv_menge = w_src-menge.

ENDIF.

lv_acct_qty = lv_menge * w_src-vproz / 100.

  • Get Round value of Quanity

frac = FRAC( lv_acct_qty ).

IF frac EQ 0.

lv_acct_qty = FLOOR( lv_acct_qty ).

ELSE.

lv_acct_qty = CEIL( lv_acct_qty ).

ENDIF.

w_poaccount-quantity = lv_acct_qty.

ELSEIF w_src-vrtkz IS INITIAL.

w_poaccount-quantity = w_src-menge.

ENDIF.

w_poaccount-gl_account = w_src-saknr.

w_poaccount-costcenter = w_src-kostl.

w_poaccount-asset_no = w_src-anln1.

w_poaccount-wbs_element = w_src-wbs.

w_poaccount-network = w_src-nplnr.

w_poaccount-tax_code = w_src-mwskz.

w_poaccount-activity = w_src-vornr.

APPEND w_poaccount TO i_poaccount.

CLEAR w_poaccount.

w_poaccountx-po_item = w_src-ebelp.

w_poaccountx-serial_no = w_src-zekkn.

IF w_src-vrtkz EQ '1'.

w_poaccountx-distr_perc = 'X'.

ENDIF.

w_poaccountx-quantity = 'X'.

w_poaccountx-gl_account = 'X'.

w_poaccountx-costcenter = 'X'.

w_poaccountx-wbs_element = 'X'.

w_poaccountx-network = 'X'.

w_poaccountx-tax_code = 'X'.

w_poaccountx-activity = 'X'.

APPEND w_poaccountx TO i_poaccountx.

CLEAR w_poaccountx.

  • PO Services

w_poservices-pckg_no = w_src-packno. "Package no

w_poservices-line_no = w_src-srv_line_no. "Line item

w_poservices-ext_line = w_src-extrow. "External line

  • w_poservices-outl_level = 0.

  • w_poservices-outl_ind = 'X'.

w_poservices-subpckg_no = w_src-sub_packno. "Sub package no

w_poservices-quantity = w_src-srqty. "Service Quantity

w_poservices-base_uom = w_src-srmeins. "Service Basic unit of Measure

w_poservices-price_unit = '1'.

  • w_poservices-from_line = '1'.

w_poservices-gr_price = w_src-brtwr. "GR Price

w_poservices-short_text = w_src-sh_text1. "Service Short Text

  • w_poservices-matl_group = w_src-matkl. "Material Group

APPEND w_poservices TO i_poservices.

CLEAR w_poservices.

    • PO Service Access values

w_posrvacc-pckg_no = w_src-packno. "Package no

w_posrvacc-line_no = w_src-srv_line_no. "Line item

w_posrvacc-serno_line = w_src-zekkn. "'01'..

IF w_src-vproz IS INITIAL.

w_posrvacc-percentage = '100.0'.

ENDIF.

w_posrvacc-serial_no = w_src-zekkn. "'01'.

w_posrvacc-quantity = w_src-srqty. "Service Quantity

w_posrvacc-net_value = w_src-srqty. "Net value

APPEND w_posrvacc TO i_posrvacc.

CLEAR w_posrvacc.

ENDIF.

***Create a NEW PO

AT END OF ihrez.

  • Call BAPI

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

poheader = w_poheader

poheaderx = w_poheaderx

IMPORTING

exppurchaseorder = gv_ebeln

TABLES

return = i_return

poitem = i_poitem[]

poitemx = i_poitemx[]

poaddrdelivery = i_poaddrdelivery[]

poschedule = i_poschedule[]

poschedulex = i_poschedulex[]

poaccount = i_poaccount[]

poaccountx = i_poaccountx[]

poservices = i_poservices[]

posrvaccessvalues = i_posrvacc[]

extensionin = i_extensionin[].

  • Commit the Transaction

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'.

Regards,

Deepthi.

1 REPLY 1
Read only

Former Member
0 Likes
485

1. If we get error as "In case of account assignment, please enter acc. assignment data for item" than First cehck whetaher u have authorization to Tcode ME23n or not. In my case, I din't had authorization to Me23n tcode.

2. If we get Error as "Please Mainatain Services or Limits". Please create a Service PO in the following Order.

&----


*& Internal Table Declaration

&----


DATA : i_intern TYPE STANDARD TABLE OF alsmex_tabline WITH HEADER LINE,

i_poitem TYPE STANDARD TABLE OF bapimepoitem,

i_poitemx TYPE STANDARD TABLE OF bapimepoitemx,

i_poaddrdelivery TYPE STANDARD TABLE OF bapimepoaddrdelivery,

i_poschedule TYPE STANDARD TABLE OF bapimeposchedule,

i_poschedulex TYPE STANDARD TABLE OF bapimeposchedulx,

i_poaccount TYPE STANDARD TABLE OF bapimepoaccount,

i_poaccountx TYPE STANDARD TABLE OF bapimepoaccountx,

i_poservices TYPE STANDARD TABLE OF bapiesllc,

i_posrvacc TYPE STANDARD TABLE OF bapiesklc,

i_extensionin TYPE STANDARD TABLE OF bapiparex,

i_return TYPE STANDARD TABLE OF bapiret2.

&----


*& Work Area Declaration

&----


DATA:

w_poheader TYPE bapimepoheader,

w_poheaderx TYPE bapimepoheaderx,

w_poitem TYPE bapimepoitem,

w_poitemx TYPE bapimepoitemx,

w_poaddrdelivery TYPE bapimepoaddrdelivery,

w_poschedule TYPE bapimeposchedule,

w_poschedulex TYPE bapimeposchedulx,

w_poaccount TYPE bapimepoaccount,

w_poaccountx TYPE bapimepoaccountx,

w_poservices TYPE bapiesllc,

w_posrvacc TYPE bapiesklc,

w_extensionin TYPE bapiparex,

w_return TYPE bapiret2.

START-OF-SELECTION.

    • Header Data

w_poheader-comp_code = '5791'. "Company Code

w_poheader-doc_type = 'Z0CM'. "Document type

w_poheader-creat_date = sy-datum. "lv_date. "Creation Date

w_poheader-created_by = sy-uname. "Creator Name

w_poheader-vendor = '0005012343'. "Vendor

w_poheader-pmnttrms = 'Z004'. "Payment Terms

w_poheader-purch_org = 'P000'. "Purchase Organization

w_poheader-pur_group = '001'. "Purchase Group

w_poheader-ref_1 = '004500007671'. "OLD PO

w_poheaderx-comp_code = 'X'. "Company Code

w_poheaderx-doc_type = 'X'. "Document type

w_poheaderx-creat_date = 'X'. "Creation Date

w_poheaderx-created_by = 'X'.

w_poheaderx-vendor = 'X'.

w_poheaderx-pmnttrms = 'X'. "Payment Terms

w_poheaderx-purch_org = 'X'. "Purchase Organization

w_poheaderx-pur_group = 'X'. "Purchase Group

w_poheaderx-ref_1 = 'X'.

  • Item Data

w_poitem-po_item = '000010'.

w_poitem-short_text = 'Z0CM - Default Appr. Test '.

w_poitem-plant = '5368'.

  • Trackign no

w_poitem-trackingno = ''.

  • Material group

w_poitem-matl_group = '119'.

w_poitem-po_unit = 'EA'. "Base Unit of Measure

w_poitem-net_price = '17500.00'. "Net Price

w_poitem-tax_code = 'I0'.

w_poitem-item_cat = '9'.

w_poitem-acctasscat = 'K'.

w_poitem-distrib = space.

  • Package must be given in item to create Service PO

w_poitem-pckg_no = 0000000001.

APPEND w_poitem TO i_poitem.

CLEAR: w_poitem.

w_poitemx-po_item = '000010'.

w_poitemx-delete_ind = 'X'.

w_poitemx-short_text = 'X'.

w_poitemx-plant = 'X'.

w_poitemx-trackingno = 'X'.

w_poitemx-matl_group = 'X'.

w_poitemx-quantity = 'X'.

w_poitemx-po_unit = 'X'.

w_poitemx-net_price = 'X'.

w_poitemx-tax_code = 'X'.

w_poitemx-item_cat = 'X'.

w_poitemx-acctasscat = 'X'.

w_poitemx-distrib = 'X'.

w_poitemx-pckg_no = 'X'.

APPEND w_poitemx TO i_poitemx.

CLEAR: w_poitemx.

  • PO Deliery Address

w_poaddrdelivery-po_item = '000010'.

w_poaddrdelivery-addr_no = '0000061208'.

APPEND w_poaddrdelivery TO i_poaddrdelivery.

CLEAR w_poaddrdelivery.

  • POschedule

w_poschedule-po_item = '000010'..

DATA : LV_DATE TYPE SY-DATUM,

lv_schd.

CLEAR: lv_date.

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'

EXPORTING

date_external = '12/2/2009'

IMPORTING

date_internal = lv_date

EXCEPTIONS

date_external_is_invalid = 1

OTHERS = 2.

IF NOT lv_date IS INITIAL.

w_poschedule-del_datcat_ext = 'D'. "Delivery Date in Day Format

w_poschedule-delivery_date = lv_date.

w_poschedule-quantity = '1.000'.

APPEND w_poschedule TO i_poschedule.

CLEAR w_poschedule.

lv_schd = 'X'.

ENDIF.

w_poschedulex-po_item = '000010'.

w_poschedulex-del_datcat_ext = 'X'.

w_poschedulex-delivery_date = 'X'.

w_poschedulex-quantity = 'X'.

IF lv_schd = 'X'.

APPEND w_poschedulex TO i_poschedulex.

CLEAR : w_poschedulex,

lv_schd.

ENDIF.

  • PO Account Assignment

w_poaccount-po_item = '000010'.

w_poaccount-serial_no = '01'.

w_poaccount-distr_perc = ''.

w_poaccount-quantity = '1.000'.

w_poaccount-gl_account = '0000603064'.

w_poaccount-costcenter = '0053680100'.

w_poaccount-asset_no = ''.

w_poaccount-wbs_element = ''.

w_poaccount-network = ''.

w_poaccount-tax_code = 'I0'.

w_poaccount-activity = ''.

APPEND w_poaccount TO i_poaccount.

CLEAR w_poaccount.

w_poaccountx-po_item = '000010'.

w_poaccountx-serial_no = '01'.

w_poaccountx-distr_perc = 'X'.

w_poaccountx-quantity = 'X'.

w_poaccountx-gl_account = 'X'.

w_poaccountx-costcenter = 'X'.

w_poaccountx-wbs_element = 'X'.

w_poaccountx-network = 'X'.

w_poaccountx-tax_code = 'X'.

w_poaccountx-activity = 'X'.

w_poaccountx-cmmt_item = 'X'.

APPEND w_poaccountx TO i_poaccountx.

CLEAR w_poaccountx.

  • Extension for ZZSub

w_extensionin-structure = 'BAPI_TE_MEPOACCOUNTING'.

w_extensionin-valuepart1+0(5) = '00010'..

w_extensionin-valuepart1+5(2) = '01'.

w_extensionin-valuepart1+28(5) = ''.

APPEND w_extensionin TO i_extensionin.

CLEAR w_extensionin.

w_extensionin-structure = 'BAPI_TE_MEPOACCOUNTINGX'.

w_extensionin-valuepart1+0(5) = '00010'.

w_extensionin-valuepart1+5(2) = '01'.

w_extensionin-valuepart1+11(1) = 'X'.

APPEND w_extensionin TO i_extensionin.

CLEAR w_extensionin.

  • Extension to add Expense Type only

w_extensionin-structure = 'BAPI_TE_MEPOHEADER'.

w_extensionin-valuepart1+10(4) = '0131'.

APPEND w_extensionin TO i_extensionin.

CLEAR w_extensionin.

w_extensionin-structure = 'BAPI_TE_MEPOHEADERX'.

w_extensionin-valuepart1+10(4) = 'X'.

APPEND w_extensionin TO i_extensionin.

CLEAR w_extensionin.

EXPORT i_extensionin[] TO MEMORY ID 'SUB'.

              • PO Services

  • PO Services( One Line Iem)

  • Assign the dummy no as Pacakage no

w_poservices-pckg_no = 0000000001. "(assign package no as a dummy number)

w_poservices-line_no = 0000000001. "Line item

w_poservices-outl_ind = 'X'.

  • Assign Dummy no as sub package no

w_poservices-subpckg_no = 0000000003. "(Dummy No.) "Sub package no

w_poservices-from_line = '1'.

APPEND w_poservices TO i_poservices.

CLEAR w_poservices.

  • PO Services(Second Line Item )

  • Assign the same sub package dummy no which is mentioned above

w_poservices-pckg_no = 0000000003. "(Dummy No.) "Sub package no

w_poservices-line_no = 0000000002.

w_poservices-ext_line = '0000000010'. "External line

w_poservices-quantity = '17500.0'. "Service Quantity

w_poservices-base_uom = 'EA'. "Service Basic unit of Measure

w_poservices-price_unit = '1'.

w_poservices-gr_price = '1'. "GR Price

w_poservices-short_text = 'Z0CM - Default Appr. T'. "Service Short Text

  • w_poservices-matl_group = '119'. "w_src-matkl. "Material Group

APPEND w_poservices TO i_poservices.

CLEAR w_poservices.

  • PO Service Access values

w_posrvacc-pckg_no = 0000000003. "w_src-sub_packno. "Sub package no

w_posrvacc-line_no = 0000000002. "w_src-srv_line_no. "Line item

w_posrvacc-serno_line = '01'.

w_posrvacc-percentage = '100.0'.

w_posrvacc-serial_no = '01'.

w_posrvacc-quantity = '17500.0'. "w_src-srqty. "Service Quantity

APPEND w_posrvacc TO i_posrvacc.

CLEAR w_posrvacc.

DATA : gv_ebeln TYPE ebeln.

  • Call BAPI

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

poheader = w_poheader

poheaderx = w_poheaderx

IMPORTING

exppurchaseorder = gv_ebeln

TABLES

return = i_return

poitem = i_poitem[]

poitemx = i_poitemx[]

poaddrdelivery = i_poaddrdelivery[]

poschedule = i_poschedule[]

poschedulex = i_poschedulex[]

poaccount = i_poaccount[]

poaccountx = i_poaccountx[]

poservices = i_poservices[]

posrvaccessvalues = i_posrvacc[]

extensionin = i_extensionin[].

  • Commit the Transaction

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

WRITE:/5 gv_ebeln COLOR 5.

SKIP 2.

DATA : lv_msg TYPE string.

LOOP AT i_return INTO w_return WHERE type = 'E'.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = w_return-id

lang = 'EN'

no = w_return-number

v1 = w_return-message_v1

v2 = w_return-message_v2

v3 = w_return-message_v3

v4 = w_return-message_v4

IMPORTING

msg = lv_msg

EXCEPTIONS

not_found = 1

OTHERS = 2.

WRITE:/10 lv_msg.

ENDLOOP.