TYPES: ty_it_materialdescription TYPE STANDARD TABLE OF bapi_makt WITH DEFAULT KEY.
* Kopfdaten
DATA(lv_headdata) = VALUE bapimathead( material = '123456' " MATNR
ind_sector = CONV mbrsh( 'A' ) " Branche (Tabelle T137)
matl_type = CONV mtart( 'VERP' ) " Materialart (Tabelle T134)
basic_view = abap_true " Sicht Grundddaten anlegen
purchase_view = abap_true " Sicht Einkauf anlegen
account_view = abap_true " Sicht Buchhaltung
).
* Mandantenebene (MARA)
* Daten
DATA(lv_clientdata) = VALUE bapi_mara( del_flag = abap_false " Löschvormerkung auf Mandantenebene
matl_group = CONV matkl( '00100000' ) " Warengruppe (Tabelle T023)
base_uom = CONV meins( 'KG' ) " Basismengeneinheit (Tabelle T006)
).
* Speicherflags
DATA(lv_clientdatax) = VALUE bapi_marax( del_flag = abap_true " Löschvormerkung auf Mandantenebene setzen
matl_group = abap_true " Warengruppe setzen
base_uom = abap_true " Basismengeneinheit setzen
).
* Werksebene (MARC)
* Daten
DATA(lv_plantdata) = VALUE bapi_marc( plant = CONV werks_d( '0001' ) " Werk (Tabelle T001W)
del_flag = abap_false " Löschvormerkung auf Werksebene
pur_group = CONV ekgrp( '001' ) " Einkäufergruppe (Tabelle T024)
).
* Speicherflags
DATA(lv_plantdatax) = VALUE bapi_marcx( plant = CONV werks_d( '0001' ) " Werk (Tabelle T001W)
del_flag = abap_true " Löschvormerkung auf Werksebene setzen
pur_group = abap_true " Einkäufergruppe setzen
).
* Materialbewertung (MBEW)
* Daten
DATA(lv_valuationdata) = VALUE bapi_mbew( val_area = CONV bwkey( '0001' ) " Bewertungskreis (Tabelle T001K)
val_type = CONV bwtar_d( 'ABC' ) " Bewertungsarten (Tabelle T149D)
val_class = CONV bklas( '1234' ) " Bewertungsklasse (Tabelle T025)
del_flag = abap_false " Löschvormerkung für alle Materialdaten einer Bewertungsart
).
* Speicherflags
DATA(lv_valuationdatax) = VALUE bapi_mbewx( val_area = CONV bwkey( '0001' ) " Bewertungskreis (Tabelle T001K)
val_type = CONV bwtar_d( 'ABC' ) " Bewertungsarten (Tabelle T149D)
val_class = abap_true " Bewertungsklasse setzen
del_flag = abap_true " Löschvormerkung setzen
).
* Lagerort (MARD)
* Daten
DATA(lv_storagelocationdata) = VALUE bapi_mard( plant = CONV werks_d( '0001' ) " Werk (Tabelle T001W)
stge_loc = CONV lgort_d( '1000' ) " Lagerort (Tabelle T001L)
del_flag = abap_false " Material auf Lagerortebene zum Löschen vormerken
).
* Speicherflags
DATA(lv_storagelocationdatax) = VALUE bapi_mardx( plant = CONV werks_d( '0001' ) " Werk (Tabelle T001W)
stge_loc = CONV lgort_d( '1000' ) " Lagerort (Tabelle T001L)
del_flag = abap_false " Löschvormerkung setzen
).
* Materialkurztext
DATA(it_materialdescription) = VALUE ty_it_materialdescription( ( langu = sy-langu
langu_iso = cl_i18n_languages=>sap1_to_sap2( im_lang_sap1 = sy-langu )
matl_desc = 'Schraube 70mm' ) ).
DATA: lv_return TYPE bapiret2.
DATA: it_returnmessages TYPE STANDARD TABLE OF bapi_matreturn2 WITH DEFAULT KEY.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = lv_headdata
clientdata = lv_clientdata
clientdatax = lv_clientdatax
plantdata = lv_plantdata
plantdatax = lv_plantdatax
valuationdata = lv_valuationdata
valuationdatax = lv_valuationdatax
storagelocationdata = lv_storagelocationdata
storagelocationdatax = lv_storagelocationdatax
IMPORTING
return = lv_return
TABLES
materialdescription = it_materialdescription
returnmessages = it_returnmessages.
* Meldungen des Bausteins ausgeben
LOOP AT it_returnmessages ASSIGNING FIELD-SYMBOL(<m>).
WRITE: / <m>-type,
<m>-id,
<m>-number,
<m>-message,
<m>-log_no,
<m>-log_msg_no,
<m>-message_v1,
<m>-message_v2,
<m>-message_v3,
<m>-message_v4,
<m>-parameter,
<m>-row,
<m>-field,
<m>-system.
ENDLOOP.
* Fehlerauswertung
* Meldungstyp auswerten, Baustein gibt nur S - Success oder E - Error zurück
IF lv_return-type = 'E'.
* Fehler -> ROLLBACK
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
return = lv_return.
WRITE: / lv_return-type, lv_return-id, lv_return-message.
ELSE.
* kein Fehler -> COMMIT
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = abap_true
IMPORTING
return = lv_return.
WRITE: / lv_return-type, lv_return-id, lv_return-message.
ENDIF.