Code: Alles auswählen.
method CREATE_CONTAINER_MATERIAL.
"Import: assembly_material_number type matnr "Zu dieser Nummer wird ein 'Container-Material' angelegt
data(template_matnr) = GET_CONTAINER_TEMPLATE_MATNR( ).
select single * from mara
into @data(template_mara)
where matnr = @template_matnr.
check sy-subrc = 0.
select single * from marc
into @data(template_marc)
where matnr = @template_matnr
and WERKS = 'xxx'.
select * from mard
into table @data(template_mard)
where matnr = @template_matnr
and WERKS = 'xxx' .
select * from mlgn
into table @data(template_mlgn)
where matnr = @template_matnr
and LGNUM = 'yyy'.
select single * from makt
into @data(source_makt)
where matnr = @ASSEMBLY_MATNR
and SPRAS = @sy-langu.
data mara_ueb_tab type TABLE OF MARA_UEB.
data makt_ueb_tab type TABLE OF MAKT_UEB.
data marc_ueb_tab type TABLE OF MARC_UEB.
data mard_ueb_tab type TABLE OF MARD_UEB.
data mlgn_ueb_tab type TABLE OF MLGN_UEB.
data errors type TABLE OF MERRDAT.
data mara_ueb type mara_ueb.
data makt_ueb type MAKT_UEB.
data marc_ueb type MARC_UEB.
data mard_ueb type MARD_UEB.
data mlgn_ueb type MLGN_UEB.
data container_materialnumber type matnr.
container_materialnumber = ASSEMBLY_MATNR && C_MATERIAL_SUFFIX_CONTAINER.
move-CORRESPONDING template_mara to mara_ueb.
mara_ueb-matnr = container_materialnumber.
mara_ueb-tcode = 'MM01'.
mara_ueb-tranc = 1.
append mara_ueb to mara_ueb_tab.
move-CORRESPONDING template_marc to marc_ueb.
marc_ueb-matnr = mara_ueb-matnr.
marc_ueb-tranc = 1.
append marc_ueb to marc_ueb_tab.
LOOP AT template_mard ASSIGNING FIELD-SYMBOL(<tpl_mard>).
move-CORRESPONDING <tpl_mard> to mard_ueb.
mard_ueb-matnr = mara_ueb-matnr.
mard_ueb-tranc = 1.
append mard_ueb to mard_ueb_tab.
ENDLOOP.
LOOP AT template_mlgn ASSIGNING FIELD-SYMBOL(<tpl_mlgn>).
move-CORRESPONDING <tpl_mlgn> to mlgn_ueb.
mlgn_ueb-matnr = mara_ueb-matnr.
mlgn_ueb-tranc = 1.
append mlgn_ueb to mlgn_ueb_tab.
ENDLOOP.
data(new_material_description) = conv maktx( |Teile für { source_makt-matnr } { source_makt-maktx }| ).
append value #( matnr = MARA_UEB-matnr
SPRAS = source_makt-SPRAS
maktx = new_material_description
maktg = to_upper( new_material_description )
tranc = 1
)
to makt_ueb_tab.
call function 'MATERIAL_MAINTAIN_DARK'
exporting
FLAG_MUSS_PRUEFEN = 'X' " Alle Mußfelder prüfen (= X)
* SPERRMODUS = 'E' " Sperrmodus (shared,exclusiv,keine Sperre)
* MAX_ERRORS = 0 " Max. Anzahl fehlerhafte Transaktionen
P_KZ_NO_WARN = 'N' " Steuerung der Reaktion der Prüfbausteine
KZ_PRF = '' " Meldg. bei nicht eingabebereiten Feldern
* KZ_VERW = 'X' " Verwaltungsdaten schreiben ja / nein
* KZ_AEND = 'X' " Änderungsbelege erstellen ja / nein
KZ_DISPO = 'X' " Dispo - Sätze schreiben ja / nein
KZ_TEST = SPACE " Testmodus - keine DB - Fortschreibung
* NO_DATABASE_UPDATE = SPACE " DB - Fortschreibung mit extra Funktionsbaustein
* CALL_MODE = ' ' " Identifikation des Aufrufers
* CALL_MODE2 = SPACE " 2. Identifikation des Aufrufers
* USER = SY-UNAME " Benutzer für Änderungsbeleg (nicht Berechtigung)
* SUPPRESS_ARRAY_READ = ' '
* FLG_MASS = SPACE " Dynpros, zeigt Benutzereingabe an
* IV_CHANGE_DOC_TCODE = SPACE " Characterfeld der Länge 10
* importing
* MATNR_LAST = " Letzte erfolgreich bearbeitete Materialnummer
* NUMBER_ERRORS_TRANSACTION = " Anzahl fehlerhafte Transaktionen
tables
AMARA_UEB = MARA_UEB_tab " Tabelle der MARAs erweitert um Tcode,Transzähler
AMAKT_UEB = makt_ueb_tab " Tabelle der Kurztexte
AMARC_UEB = marc_ueb_tab " Tabelle der MARC´s
AMARD_UEB = mard_ueb_tab
* AMFHM_UEB =
* AMARM_UEB =
* AMEA1_UEB =
* AMBEW_UEB =
* ASTEU_UEB =
* ASTMM_UEB =
AMLGN_UEB = mlgn_ueb_tab
* AMLGT_UEB =
* AMPGD_UEB =
* AMPOP_UEB =
* AMVEG_UEB = " Gesamtverbrauch
* AMVEU_UEB = " ungeplanter Verbräuche
* AMVKE_UEB =
* ALTX1_UEB =
* AMPRW_UEB =
* AE1CUCFG_UEB = " ALE Konfigurationsdaten: Nicht verwenden
* AE1CUINS_UEB = " ALE Konfigurationsdaten: Nicht verwenden
* AE1CUVAL_UEB = " ALE Konfigurationsdaten: Nicht verwenden
* AE1CUCOM_UEB = " ALE Konfigurationsdaten: Nicht verwenden
* AMFIELDRES = " Liste der zurückzusetzenden Felder
AMERRDAT = errors " Fehlerliste
exceptions
KSTATUS_EMPTY = 1
TKSTATUS_EMPTY = 2
T130M_ERROR = 3
INTERNAL_ERROR = 4
TOO_MANY_ERRORS = 5
UPDATE_ERROR = 6
ERROR_PROPAGATE_HEADER = 7
OTHERS = 8
.
dequeue_material( container_materialnumber ).
delete errors where msgid = 'M3'
and msgno = 364. "Meldung "Material wird erweitert" ausblenden
if line_exists( errors[ MSGTY = 'E' ] )
or line_exists( errors[ MSGTY = 'A' ] ).
ROLLBACK WORK.
return.
endif.
endmethod.