Funktionsbaustein BAPI PO CREATE1
Aus SAP-Wiki
Zur Navigation springenZur Suche springen
Siehe Kategorie: BAPI.
Siehe Sammlung Funktionsbausteine.
Mit dem Funktionsbaustein 'BAPI_PO_CREATE1' wird eine Bestellung, bzw. Umlagerbestellung im SAP-System angelegt und wird daher recht oft benötigt.
Hier ein Beispiel aus dem Projektalltag.
* Erstellung Umlagerbestellung METHOD create_bapi_po_create1. DATA: ls_poheader TYPE bapimepoheader, ls_poheaderx TYPE bapimepoheaderx, lt_poitem TYPE STANDARD TABLE OF bapimepoitem, ls_poitem TYPE bapimepoitem ##NEEDED, lv_po_item TYPE ebelp, lt_poitemx TYPE STANDARD TABLE OF bapimepoitemx, ls_poitemx TYPE bapimepoitemx, * lt_popartner TYPE STANDARD TABLE OF bapiekkop, * lt_poshipping TYPE STANDARD TABLE OF bapiitemship, * lt_poshippingx TYPE STANDARD TABLE OF bapiitemshipx, lt_return_ub TYPE STANDARD TABLE OF bapiret2, lv_po_number TYPE bapimepoheader-po_number ##NEEDED, ls_expheader TYPE bapimepoheader ##NEEDED, ls_exppoexpimpheader TYPE bapieikp ##NEEDED, lv_our_ref TYPE unsez, lv_material type mara-matnr. CONSTANTS: lc_doc_type_ub TYPE bapimepoheader-doc_type VALUE 'UB', lc_vendor_1010 TYPE bapimepoheader-vendor VALUE '1010', lc_purch_org_1010 TYPE bapimepoheader-purch_org VALUE '1010', lc_pur_group_007 TYPE bapimepoheader-pur_group VALUE '007', lc_curr_eur TYPE bapimepoheader-currency VALUE 'EUR', lc_werk_1010 TYPE bapimepoheader-suppl_plnt VALUE '1010', lc_plant_1044 TYPE bapimepoitem-plant VALUE '1044', lc_stge_loc_144a TYPE bapimepoitem-stge_loc VALUE '144A', lc_shiptype_ds TYPE bapimepoitem-shiptype VALUE 'DS'. * Die Fortlaufende Nummer in das Feld "Unser Zeichen" der Umlagerbestellung schreiben, * damit man eine Referenz auf den Prozeß der Umlagerbestellung UK hat * z. B. "UML: 16" lv_our_ref = |UML: { mv_nummer ALPHA = OUT }|. "aus dem Feld MV_NUMMER führende Nullen entfernen * Kopffelder Umlagerbestellung füllen ls_poheader = VALUE #( our_ref = lv_our_ref "Unser Zeichen comp_code = mp_bukrs "Buchungskreis doc_type = lc_doc_type_ub "Einkaufsbelegart creat_date = sy-datum "Erstellungsdatum created_by = sy-uname "Ersteller "ITEM_INTVL = "Positionsnummer-Intervall vendor = lc_vendor_1010 "Lieferant purch_org = lc_purch_org_1010 "Einkaufsorganisation pur_group = lc_pur_group_007 "Einkäufergruppe currency = lc_curr_eur "Währung suppl_plnt = lc_werk_1010 ). "Werk ls_poheaderx = VALUE #( our_ref = abap_true comp_code = abap_true "X-Buchungskreis doc_type = abap_true "X-Einkaufsbelegart creat_date = abap_true "X-Erstellungsdatum created_by = abap_true "X-Ersteller vendor = abap_true "X-Lieferant purch_org = abap_true "X-Einkaufsorganisation pur_group = abap_true "X-Einkäufergruppe currency = abap_true "X-Währung suppl_plnt = abap_true ). "X-Werk * Positionsfelder Umlagerbestellung füllen: Komponenten Zelt oder Ersatzteile LOOP AT ct_itab ASSIGNING FIELD-SYMBOL(<fs_itab>). * Position füllen ADD 10 TO lv_po_item. * Positionsdaten füllen ls_poitem = VALUE #( po_item = lv_po_item "Positionsnummer material = <fs_itab>-matnr "Material plant = lc_plant_1044 "Ziel-Werk stge_loc = lc_stge_loc_144a "Ziel-Lagerort quantity = <fs_itab>-menge_del "Liefermenge suppl_stloc = <fs_itab>-lgort "Quell-Lagerort shiptype = lc_shiptype_ds "Direct Shipping ). APPEND ls_poitem TO lt_poitem. * Änderungsstruktur zur Position füllen ls_poitemx = VALUE #( po_item = lv_po_item "Positionsnummer material = abap_true "X-Material plant = abap_true "X-Ziel-Werk stge_loc = abap_true "X-Ziel-Lagerort quantity = abap_true "X-Liefermenge suppl_stloc = abap_true "X-Quell-Lagerort shiptype = abap_true "X-Direct Shipping ). APPEND ls_poitemx TO lt_poitemx. ENDLOOP. CALL FUNCTION 'BAPI_PO_CREATE1' EXPORTING poheader = ls_poheader poheaderx = ls_poheaderx IMPORTING exppurchaseorder = lv_po_number expheader = ls_expheader exppoexpimpheader = ls_exppoexpimpheader TABLES return = lt_return_ub poitem = lt_poitem poitemx = lt_poitemx. * popartner = lt_popartner * poshipping = lt_poshipping * poshippingx = lt_poshippingx. IF lt_return_ub IS NOT INITIAL. ... ENDIF. * Commit work and wait sollte nicht nötig sein. So wird es ein wenig schneller ausgeführt CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. ENDMETHOD.