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.