Funktionsbaustein BAPI GOODSMVT CREATE
Aus SAP-Wiki
Zur Navigation springenZur Suche springen
Siehe Kategorie: BAPI.
Mit dem Funktionsbaustein BAPI_GOODSMVT_CREATE kann man Warenbewegungen buchen, wie in der Transaktion MIGO.
Mustercode
CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_code = * TESTRUN = ' ' * GOODSMVT_REF_EWM = * GOODSMVT_PRINT_CTRL = * IMPORTING * GOODSMVT_HEADRET = * MATERIALDOCUMENT = * MATDOCUMENTYEAR = TABLES goodsmvt_item = * GOODSMVT_SERIALNUMBER = return = * GOODSMVT_SERV_PART_DATA = * EXTENSIONIN = * GOODSMVT_ITEM_CWM = .
Beispiel
*&---------------------------------------------------------------------*
*& Form GO_MIGO
*&---------------------------------------------------------------------*
*& Bestandsbuchung
*& Vorlage: Report = Z_MM_POST_UNDERDELIVERY
*&---------------------------------------------------------------------*
FORM go_BAPI_GOODSMVT_CREATE
USING iv_vbeln TYPE likp-vbeln.
DATA(ls_headret) = VALUE bapi2017_gm_head_ret( ).
DATA(lt_return) = VALUE bapiret2_t( ).
DATA(ls_return) = VALUE bapiret2( ).
* Lesen Positionen zur Anlieferung
SELECT * ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
FROM lips
WHERE vbeln = @iv_vbeln
AND vgbel IS NOT INITIAL
INTO TABLE @DATA(lt_lips).
* Kopfdaten füllen
DATA(ls_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
).
* MMIM: Umschlüsselung GM_CODE auf Transaktion der BestFührung
DATA(ls_mvt_code) = VALUE bapi2017_gm_code( gm_code = '01' ).
* Positionen füllen
DATA(lt_items_to_move) = VALUE bapi2017_gm_item_create_t( FOR <fs_lips> IN lt_lips
(
material = CONV #( <fs_lips>-matnr ) "18-stellige Materialnummer
plant = <fs_lips>-werks "Werk
stge_loc = <fs_lips>-lgort "Lagerort
move_type = '107' "Bewegungsart (Bestandsführung) (Bewegung in bew. Sperrbestand)
entry_qnt = <fs_lips>-lfimg "Menge in Erfassungsmengeneinheit
entry_uom_iso = 'PCE' "ISO-Code Maßeinheit Stück
po_number = <fs_lips>-vgbel "Bestellnummer
po_item = <fs_lips>-vgpos "Bestellposition
mvt_ind = 'B' "Movement Indicator B für Bestellung
deliv_numb = <fs_lips>-vbeln "Anlieferung
deliv_item = <fs_lips>-posnr "Position
)
).
* Funktionsbaustein mit Warenbewegung buchen
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_header
goodsmvt_code = ls_mvt_code
* testrun = p_test
IMPORTING
goodsmvt_headret = ls_headret
TABLES
goodsmvt_item = lt_items_to_move
return = lt_return.
* Fehlerauswertung: E - Error, A - Abort
LOOP AT lt_return ASSIGNING FIELD-SYMBOL(<fs_return>).
MESSAGE ID <fs_return>-id "Nachrichtenklasse
TYPE 'I' "Typ (E = Error, S = Success, I = Info, A = Abbruch)
NUMBER <fs_return>-number "Nachrichtennummer
WITH <fs_return>-message_v1 "Platzhaltervariable1
<fs_return>-message_v2 "Platzhaltervariable2
<fs_return>-message_v3 "Platzhaltervariable3
<fs_return>-message_v4. "Platzhaltervariable4
ENDLOOP.
* Wenn Returntabelle gefüllt ist, liegt ein Fehler vor
IF lines( lt_return ) > 0.
* Rollback bei Fehler
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
return = ls_return.
IF ls_return IS NOT INITIAL.
MESSAGE ID ls_return-id "Nachrichtenklasse
TYPE 'I' "Typ (E = Error, S = Success, I = Info, A = Abbruch)
NUMBER ls_return-number "Nachrichtennummer
WITH ls_return-message_v1 "Platzhaltervariable1
ls_return-message_v2 "Platzhaltervariable2
ls_return-message_v3 "Platzhaltervariable3
ls_return-message_v4. "Platzhaltervariable4
ENDIF.
* Wenn Returntabelle leer ist, ist alles ok und COMMIT WORK
ELSE.
* Daten verbuchen
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true
IMPORTING
return = ls_return.
* Erfolgsmeldung
MESSAGE i082(/isdfps/mm) WITH ls_headret-mat_doc "Materialbeleg &1/&2 erfolgreich gebucht.
ls_headret-doc_year.
IF ls_return IS NOT INITIAL.
MESSAGE ID ls_return-id "Nachrichtenklasse
TYPE 'I' "Typ (E = Error, S = Success, I = Info, A = Abbruch)
NUMBER ls_return-number "Nachrichtennummer
WITH ls_return-message_v1 "Platzhaltervariable1
ls_return-message_v2 "Platzhaltervariable2
ls_return-message_v3 "Platzhaltervariable3
ls_return-message_v4. "Platzhaltervariable4
ENDIF.
ENDIF.
ENDFORM.