Code: Alles auswählen.
form schreibe_aenderung .
data: lt_maraueb type table of mara_ueb
, lt_marcueb type table of marc_ueb
, lt_amerrdat type table of merrdat
, ls_maraueb type mara_ueb
, ls_marcueb type marc_ueb
, ls_amerrdat type merrdat
, lt_fieldres type table of mfieldres
, ls_fieldres type mfieldres
.
select single * from mara
into corresponding fields of ls_maraueb
where matnr eq p_matnr.
move: 'JP28' to ls_maraueb-tcode
, 1 to ls_maraueb-tranc
, 1 to ls_maraueb-d_ind
.
* VLB-Warengruppe
if gs_handel-zvlbw is initial.
move: 'MARA-ZVLBW' to ls_fieldres-fname
, 1 to ls_fieldres-d_ind
, 1 to ls_fieldres-tranc
.
append ls_fieldres to lt_fieldres.
clear ls_maraueb-zvlbw.
else.
move gs_handel-zvlbw to ls_maraueb-zvlbw.
endif.
* Erlösgruppe
if gs_handel-zzerlgrp is initial.
move: 'MARA-ZZERLGRP' to ls_fieldres-fname
, 1 to ls_fieldres-tranc
, 1 to ls_fieldres-d_ind
.
append ls_fieldres to lt_fieldres.
clear ls_maraueb-zzerlgrp.
else.
move gs_handel-zzerlgrp to ls_maraueb-zzerlgrp.
endif.
* Rabattgruppe
if gs_handel-zzerlgrp is initial.
move: 'MARA-ZZRABGRP' to ls_fieldres-fname
, 1 to ls_fieldres-tranc
, 1 to ls_fieldres-d_ind
.
append ls_fieldres to lt_fieldres.
clear ls_maraueb-zzrabgrp.
else.
move gs_handel-zzrabgrp to ls_maraueb-zzrabgrp.
endif.
append ls_maraueb to lt_maraueb.
select single * from marc
into corresponding fields of ls_marcueb
where matnr eq p_matnr.
* Ursprungsland
move: 1 to ls_marcueb-tranc
, 1 to ls_marcueb-d_ind
, gs_handel-herkl to ls_marcueb-herkl
.
if gs_handel-herkl is initial.
move: 'MARC-HERKL' to ls_fieldres-fname
, 1 to ls_fieldres-d_ind
, 1 to ls_fieldres-tranc
.
append ls_fieldres to lt_fieldres.
clear ls_marcueb-herkl.
else.
move gs_handel-herkl to ls_marcueb-herkl.
endif.
append ls_marcueb to lt_marcueb.
call function 'MATERIAL_MAINTAIN_DARK'
exporting
p_kz_no_warn = 'N'
kz_prf = ''
tables
amara_ueb = lt_maraueb
amarc_ueb = lt_marcueb
amfieldres = lt_fieldres
amerrdat = lt_amerrdat
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.
if sy-subrc ne 0.
message e000(38) with text-f03 sy-subrc.
endif.
read table lt_amerrdat into ls_amerrdat with key msgty = 'E'.
if sy-subrc eq 0.
message id ls_amerrdat-msgid
type ls_amerrdat-msgty
number ls_amerrdat-msgno
with ls_amerrdat-msgv1 ls_amerrdat-msgv2
ls_amerrdat-msgv3 ls_amerrdat-msgv4.
endif.
endform. " SCHREIBE_AENDERUNG
SAP-Doku hat geschrieben:Der Commit-Work muß vom Aufrufer durchgeführt werden.
Der Commit work wird ausgeführt, die Zeile fiel aber beim Zurechtstutzen des Codings für das Originalposting leider raus. Die letzten Zeilen in der Routine lauten bei mirewx hat geschrieben:SAP-Doku hat geschrieben:Der Commit-Work muß vom Aufrufer durchgeführt werden.
Code: Alles auswählen.
read table lt_amerrdat into ls_amerrdat with key msgty = 'E'.
if sy-subrc eq 0.
message id ls_amerrdat-msgid
type ls_amerrdat-msgty
number ls_amerrdat-msgno
with ls_amerrdat-msgv1 ls_amerrdat-msgv2
ls_amerrdat-msgv3 ls_amerrdat-msgv4.
else.
commit work.
message s000(38) with text-001.
endif.
Steht denn in lt_amerrdat etwas anderes drinn? Es wird ja nur auf E geprüft.Margolwes hat geschrieben:Also, das Problem ist: Commit ist gesetzt, MARC wird geändert, MARA nicht.
Hatte ich eingangs geschrieben. Es wird die Nachricht M3/801 ausgegeben: "Das Material & wird geändert". Also auch von daher eigentlich alles in Ordnung.JHM hat geschrieben:Steht denn in lt_amerrdat etwas anderes drinn? Es wird ja nur auf E geprüft.Margolwes hat geschrieben:Also, das Problem ist: Commit ist gesetzt, MARC wird geändert, MARA nicht.
Naja der MATERIAL_MAINTAIN_DARK speichert auch, wenn er nicht alle Daten ändern konnte, dann gibt es S/W Messages die einen evtl. auf den Fehler hinweisen, warum er nicht speichert.Margolwes hat geschrieben:Hatte ich eingangs geschrieben. Es wird die Nachricht M3/801 ausgegeben: "Das Material & wird geändert". Also auch von daher eigentlich alles in Ordnung.
Das war's, vielen Dank.ralf.wenzel hat geschrieben:JHM hat recht, du musst kundeneigene Felder in der Transaktion OMSR pflegen, sonst werden die nicht übernommen.
Also, wenn Du mit "Hilfe" die FuBa-Doku meinst, dann irrst Du Dich.ralf.wenzel hat geschrieben:Aber auch das steht deutlich in der Hilfe, wenn ich mich nicht irre.
Hexen kann ich nicht, ich muss das auch irgendwo her haben - und genau aus dieser Online-Hilfe habe ich das. Das ist genau das, was man per OMSR pflegt (nämlich die Tabelle T130F). Ich hatte nicht erwartet, dass du in der Onlinehilfe nach "OMSR" suchst, sondern die Hilfe komplett liest und den Links folgst.Der Materialstamm "denkt" in den Kombinationen Materialstammtabelle und Pflegestatus. Die zu pflegenden Kombinationen werden dabei je Pflegevorgang (d.h. je Transaktion) aus den übergebenen Daten ermittelt. Dabei gibt es mehrere Pflegestatusermittlungsarten (aktuell je Transaktionstyp vorgebbar im Customizing). Weitere Informationen finden Sie in der Dokumentation zu der Pflegestatusermittlungsart.