Skip to Content
1
Oct 08, 2013 at 10:29 AM

BAPI_PO_CREATE1 create po without material master record

1300 Views

Hello,

I try to create a purchase order foe several positions without material master records using the BAPI BAPI_PO_CREATE1. In the return table of the BAPI I get the error messages MEPO 049 (Purchase order item 00010 still contains faulty account assignments) and ME 083 (Enter G/L Account).

The G/L Account still is okay and can be used in M21N. Where is the problem?

Best regards

Armin

Position Table:

*PO_ITEM Positionsnummer des Einkaufsbelegs
lv_pos = sy-tabix * 10.
ls_poitem-po_item = lv_pos.
ls_poitemx-po_item = lv_pos.
ls_poitemx-po_itemx = 'X'.
*SHORT_TEXT Kurztext
"Kurztext Preigruppe und Kostenstelle
CONCATENATE ls_po->preisgrp ls_po->kostl INTO ls_poitem-short_text SEPARATED BY space.
ls_poitemx-short_text = 'X'.
*MATERIAL Materialnummer
ls_poitem-material = ''.
ls_poitemx-material = 'X'.
*PLANT Werk
ls_poitem-plant = '1000'.
ls_poitemx-plant = 'X'.
*STGE_LOC Lagerort
ls_poitem-stge_loc = iv_lgort.
ls_poitemx-stge_loc = 'X'.
*TRACKINGNO Bedarfsnummer
*MATL_GROUP Warengruppe
ls_poitem-matl_group = c_matl_group.
ls_poitemx-matl_group = 'X'.
*QUANTITY Bestellmenge
ls_poitem-quantity = ls_po->anzahl.
ls_poitemx-quantity = 'X'.
*PO_UNIT Bestellmengeneinheit
ls_poitem-po_unit = 'ST'.
ls_poitemx-po_unit = 'X'.
*PO_UNIT_ISO Bestellmengeneinheit im ISO-Code
ls_poitem-po_unit_iso = 'ST'. " Bestellmengeneinheit im ISO-Code
ls_poitemx-po_unit_iso = 'X'.
*ORDERPR_UN Bestellpreismengeneinheit
ls_poitem-orderpr_un = 'ST'. " Bestellpreismengeneinheit
ls_poitemx-orderpr_un = 'X'.
*ORDERPR_UN_ISO ISO-Code zur Bestellpreismengeneinheit
ls_poitem-orderpr_un_iso = 'ST'. " ISO-Code zur Bestellpreismengeneinheit
ls_poitemx-orderpr_un_iso = 'X'.
*CONV_NUM1 Zähler für die Umrechnung BPRME in BME
ls_poitem-conv_num1 = '1'.
ls_poitemx-conv_num1 = 'X'.
*CONV_DEN1 Nenner für die Umrechnung BPRME in BME
ls_poitem-conv_den1 = '1'.
ls_poitemx-conv_den1 = 'X'.
*NET_PRICE Währungsbetrag für BAPIs (mit 9 Nachkommastellen)
ls_poitem-net_price = ls_po->preis.
ls_poitemx-net_price = 'X'.
*PRICE_UNIT Preiseinheit
ls_poitem-price_unit = 1.
ls_poitemx-price_unit = 'X'.
*GR_PR_TIME Bearbeitungszeit für Wareneingang in Tagen
ls_poitem-gr_pr_time = '0'.
ls_poitemx-gr_pr_time = 'X'.
*TAX_CODE Umsatzsteuerkennzeichen
ls_poitem-tax_code = '19'.
ls_poitemx-tax_code = 'X'.
*PRNT_PRICE Preisdruck
ls_poitem-prnt_price = 'X'.
ls_poitemx-prnt_price = 'X'.
*UNLIMITED_DLV Kennzeichen: unbegrenzte Überlieferung erlaubt
ls_poitem-unlimited_dlv = 'X'.
ls_poitemx-unlimited_dlv = 'X'.
*ITEM_CAT Positionstyp im Einkaufsbeleg
ls_poitem-item_cat = ' '.
ls_poitemx-item_cat = 'X'.
*ACCTASSCAT Kontierungstyp
ls_poitem-acctasscat = 'K'.
ls_poitemx-acctasscat = 'X'.
*DISTRIB Verteilungskennzeichen für Mehrfachkontierung
ls_poitem-distrib = ''. "Verteilungskennzeichen = Einfachkontierung
ls_poitemx-distrib = 'X'.
*GR_IND Wareneingangskennzeichen
ls_poitem-gr_ind = 'X' .
ls_poitemx-gr_ind = 'X' .
*GR_NON_VAL Wareneingang unbewertet
*IR_IND Rechnungseingangskennzeichen
ls_poitem-ir_ind = 'X' .
ls_poitemx-ir_ind = 'X' .
*GR_BASEDIV Kennzeichen für WE-bezogene Rechnungsprüfung
ls_poitem-gr_basediv = 'X'.
ls_poitemx-gr_basediv = 'X'.
*PRICEDATE Steuerung Preisfindungsdatum
ls_poitem-pricedate = 'T'. "Tagesdatum
ls_poitemx-pricedate = 'X'.
*PRICE_DATE Datum der Preisermittlung
ls_poitem-price_date = sy-datum.
ls_poitemx-price_date = 'X'.
*PO_PRICE Type Preisübernahme: 1 = Brutto, 2 = Netto
ls_poitem-po_price = 2.
ls_poitemx-po_price = 'X'.

Accounting Table:

lv_pos = sy-tabix * 10.
ls_account-po_item = lv_pos.
ls_accountx-po_item = lv_pos.
ls_accountx-po_itemx = 'X'.

" Einteilungsnummer
lv_sl = sy-tabix * 10.
ls_account-sched_line = lv_sl.
ls_accountx-sched_line = 'X'.

"laufende Nummer der Kontierung
ls_account-serial_no = '01'.
ls_accountx-serial_no = 'X'.

" Datum
ls_account-creat_date = sy-datum.
ls_accountx-creat_date = 'X'.

" Kostenstelle
ls_account-costcenter = ls_po->kostl.
ls_accountx-costcenter = 'X'.

" Kostenrechnungskreis
ls_account-co_area = '1000'.
ls_accountx-co_area = 'X'.

"Geschäftsbereich
CONCATENATE '000' ls_po->kostl INTO lv_kostl.
SELECT SINGLE gsber FROM csks INTO ls_account-bus_area
WHERE kostl = lv_kostl AND
kokrs = '1000' AND
datbi GE sy-datum.
ls_accountx-bus_area = 'X'.


" Menge + Einheit
ls_account-quantity = ls_po->anzahl.
ls_accountx-quantity = 'X'.

ls_account-net_value = ls_po->preis.
ls_accountx-net_value = 'X' .

" Kontierung
ls_account-gl_account = c_gl_account.
ls_accountx-gl_account = 'X'.

ls_account-tax_code = '19'.
ls_accountx-tax_code = 'X'.

ls_account-gr_rcpt = '0'. "Warenempfänger, Unterkostenstellen
ls_accountx-gr_rcpt = 'X'.

"Bezugsdatum für Abrechnung
ls_account-ref_date = sy-datum.
ls_accountx-ref_date = 'X'.