[ABAP] BAPI: Bestellung anlegen

PARAMETERS: p_bukrs TYPE bukrs DEFAULT '0001'.
PARAMETERS: p_bsart TYPE bsart DEFAULT 'NB'.
PARAMETERS: p_ekorg TYPE ekorg DEFAULT '0001'.
PARAMETERS: p_ekgrp TYPE ekgrp DEFAULT '123'.
PARAMETERS: p_werks TYPE werks DEFAULT '01'.
PARAMETERS: p_lgort TYPE lgort_d DEFAULT '10'.
PARAMETERS: p_matnr TYPE matnr DEFAULT '1234567890'.
PARAMETERS: p_vendor TYPE lifnr DEFAULT '0000012345'.

* Testmodus
PARAMETERS: p_test TYPE bapiflag-bapiflag DEFAULT abap_true.
* Authority-Check
PARAMETERS: p_noauth TYPE bapiflag-bapiflag DEFAULT abap_true.

* Returnparameter
DATA: it_return TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY.
DATA: it_poitem TYPE STANDARD TABLE OF bapimepoitem WITH DEFAULT KEY.
DATA: it_poitemx TYPE STANDARD TABLE OF bapimepoitemx WITH DEFAULT KEY.

DATA(ls_poheader) = VALUE bapimepoheader( comp_code  = p_bukrs
                                          doc_type   = p_bsart
                                          purch_org  = p_ekorg
                                          pur_group  = p_ekgrp
                                          doc_date   = sy-datum
                                          suppl_plnt = p_werks
                                          vendor     = p_vendor
                                        ).

DATA(ls_poheaderx) = VALUE bapimepoheaderx( comp_code  = abap_true
                                            doc_type   = abap_true
                                            purch_org  = abap_true
                                            pur_group  = abap_true
                                            doc_date   = abap_true
                                            suppl_plnt = abap_true
                                            vendor     = abap_true
                                          ).


it_poitem = VALUE #( ( po_item  = '00001'
                       material = p_matnr
                       plant    = p_werks
                       stge_loc = p_lgort
                       quantity = '1.0'
                     )
                   ).

it_poitemx = VALUE #( ( po_item  = '00001'
                        material = abap_true
                        plant    = abap_true
                        stge_loc = abap_true
                        quantity = abap_true
                      )
                    ).

DATA: lv_new_po TYPE bapimepoheader-po_number.
DATA: lv_expheader TYPE bapimepoheader.
DATA: lv_exppoexpimpheader TYPE bapieikp.

* Bestellung anlegen
CALL FUNCTION 'BAPI_PO_CREATE1'
  EXPORTING
    no_authority      = p_noauth
    testrun           = p_test
    poheader          = ls_poheader
    poheaderx         = ls_poheaderx
  IMPORTING
    exppurchaseorder  = lv_new_po
    expheader         = lv_expheader
    exppoexpimpheader = lv_exppoexpimpheader
  TABLES
    return            = it_return
    poitem            = it_poitem
    poitemx           = it_poitemx.

IF NOT lv_new_po IS INITIAL.
* Wenn Bestellung angelegt wurde, COMMIT durchführen
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = abap_true.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.

* Ausgabe der Meldungen
cl_demo_output=>write_data( it_return ).
cl_demo_output=>write_data( it_poitem ).
cl_demo_output=>write_data( it_poitemx ).
cl_demo_output=>write_data( lv_new_po ).
cl_demo_output=>write_data( lv_expheader ).
cl_demo_output=>write_data( lv_exppoexpimpheader ).

* HTML-Code holen
DATA(lv_html) = cl_demo_output=>get( ).
* Daten im Inline-Browser im SAP-Fenster anzeigen
cl_abap_browser=>show_html( EXPORTING
                              title        = 'Daten zur Bestellung'
                              html_string  = lv_html
                              container    = cl_gui_container=>default_screen ).
* cl_gui_container=>default_screen erzwingen
WRITE: space.

[SAP] Bestellung

Transaktionen

MEPO (Bestellung)

  • Transaktion für ME21N/ME22N/ME23N

ME21N (Bestellung anlegen)
ME22N (Bestellung ändern)
ME23N (Bestellung anzeigen)

ME25 (Bestellung anlegen, Lieferant unbekannt)
ME28 (Sammelfreigabe)
ME29N (Einzelfreigabe)
ME58 (Bestellungen über Banf Zuordnungsliste)
ME59N (automatische Bestellerzeugung aus BANFen)
ME80FN (Allgemeine Auswertungen)

  • Listansicht zu versch. Belegarten
  • Selektion nach Materialnummer, Werk, Lagerort, Belegart, Datum, EKOrg, gemerkt etc.

ME81N (Bestellwertanalyse zu Bestellungen)

ME2L (Bestellungen zum Lieferanten)

  • mit Selektionsparameter WE101 (offener Wareneingang)

ME2M (Bestellungen zum Material)
ME2N (Bestellungen zur Bestellnummer)
ME2K (Bestellungen zur Kontierung)
ME2C (Bestellungen zur Warengruppe)
ME91F (Bestellungen mahnen und erinnern)

  • Liefermahnungen

ME9F (Nachrichtenausgabe Bestellungen)
OMH6 (Nummernkreise Einkaufsbelege)

Funktionsbausteine

ME_DISPLAY_PURCHASE_DOCUMENT (Anzeigen eines Einkaufsbeleges)

BAPIs

BAPI_PO_CREATE1 (Create Purchase Order)
BAPI_PO_CHANGE (Change Purchase Order)
BAPI_PO_GETDETAIL1 (Detail Information for a Purchase Order)

Tabellen

EKKO (Einkaufsbelegkopf)
EKPO (Einkaufsbelegposition)
EKKN (Kontierung im Einkaufsbeleg)
EKBE (Historie zum Einkaufsbeleg)
EBAN (Bestellanforderung)
T161 (Einkaufsbelegarten)

Views

MASSEKPO (Bestellposition)
V_EKKONA (View zur Ausgabe von Einkaufsbelegen) (EKKO, NAST)

Fiori-Apps

F3292 (Bestellungen zentral verwalten)
F2593 (Massenänderungen an Bestellungen)

Links