TYPES: BEGIN OF ty_s_material,
matnr TYPE mara-matnr, " Materialnummer
erfmg TYPE mseg-erfmg, " Menge in Erfassungsmengeneinheit (mseg-erfmg) / Menge (mseg-menge)
entry_uom_iso TYPE bapi2017_gm_item_create-entry_uom_iso, " ISO-Code Maßeinheit
END OF ty_s_material.
TYPES: ty_it_material TYPE STANDARD TABLE OF ty_s_material WITH KEY matnr.
PARAMETERS: p_test AS CHECKBOX DEFAULT 'X'.
START-OF-SELECTION.
DATA(it_material) = VALUE ty_it_material( ( matnr = '0815' erfmg = '1' entry_uom_iso = 'PCE' )
( matnr = '0816' erfmg = '2' entry_uom_iso = 'PCE' )
).
* Header
DATA(lv_header) = VALUE bapi2017_gm_head_01( pstng_date = sy-datum " Buchungsdatum im Beleg
doc_date = sy-datum " Belegdatum im Beleg
pr_uname = sy-uname " Benutzername
gr_gi_slip_no = '12345' " Warenbegleitscheinnummer
header_txt = 'Text1' " Belegkopftext
ref_doc_no = 'Refdoc' " Nummer des externen Materialscheins
).
* gm_code (siehe auch Tabelle T158G)
* 01 MB01 (Wareneingang zur Bestellung buchen)
* 02 MB31 (Wareneingang zum Fertigungsauftrag)
* 03 MB1A (Warenentnahme)
* 04 MB1B (Umbuchung)
* 05 MB1C (Wareneingang Sonstige)
* 06 MB11 (Warenbewegung)
* 07 MB04 (Nachverrechnung von Beistellmaterial)
DATA(lv_mvt_code) = VALUE bapi2017_gm_code( gm_code = '03' ). " Zuordnung Code zu Transaktion für BAPI Warenbewegung
* Items für Bewegungsdaten füllen
DATA(it_items_to_move) = VALUE bapi2017_gm_item_create_t( FOR <m> IN it_material
(
material = CONV #( <m>-matnr ) " 18-stellige Materialnummer
plant = '10' " Werk
stge_loc = '01' " Lagerort
move_type = '262' " Bewegungsart (Bestandsführung)
* KZBEW (Bewegungskennzeichen)
* ' ' Warenbewegung ohne Referenz
* B Warenbewegung zur Bestellung
* F Warenbewegung zum Auftrag
* L Warenbewegung zum Lieferschein
* K Warenbewegung zur Kanban-Anforderung (Nur WM intern)
* O Nachverrechnung von Beistellmaterial
* W Nachverrechnung von Anteils-/Produkt ME Material
mvt_ind = ' ' " Bewegungskennzeichen (Warenbewegung ohne Referenz)
entry_qnt = CONV #( <m>-erfmg ) " Menge in Erfassungsmengeneinheit
entry_uom_iso = <m>-entry_uom_iso " ISO-Code Maßeinheit
gl_account = '' " Nummer des Sachkontos
gr_rcpt = 'ABC' " Warenempfänger
costcenter = '100200' " Kostenstelle
orderid = '' " Auftragsnummer
wbs_elem = '' " Projektstrukturplanelement (PSP-Element)
)
).
DATA(lv_headret) = VALUE bapi2017_gm_head_ret( ).
DATA(it_return) = VALUE bapiret2_t( ).
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = lv_header
goodsmvt_code = lv_mvt_code
testrun = p_test
IMPORTING
goodsmvt_headret = lv_headret
TABLES
goodsmvt_item = it_items_to_move
return = it_return.
* Fehlerauswertung: E - Error, A - Abort
LOOP AT it_return ASSIGNING FIELD-SYMBOL(<e>).
WRITE: / |RETURN [{ <e>-type } { <e>-number }]: { <e>-message }|.
ENDLOOP.
DATA(lv_return) = VALUE bapiret2( ).
IF lines( it_return ) > 0.
* Rollback bei Fehler
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
return = lv_return.
WRITE: / |ROLLBACK [{ lv_return-type } { lv_return-number }]: { lv_return-message }|.
ELSE.
* Daten verbuchen
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true
IMPORTING
return = lv_return.
WRITE: / |COMMIT [{ lv_return-type } { lv_return-number }]: { lv_return-message }|.
ENDIF.
Links