SAP Jobsuche bei DV-Treff
kafka
  • kafka
  • SAP Forum - Profi Thema Starter
vor 4 Jahre
Hallo Zusammen,

wir haben Anforderungen an den Materialstamm, dass bei Anlage von Material bzw. Sichten zum Material oder bei Änderungen bestimmte Zusatzaktionen auszuösen sind.

Das können in abhängigkeit von bestimmten Bedingungen sein:

- Bestimmte Zusatzsichten wie Lagertypen, Lagerort, Vertriebssichten, etc.

- Automtisches Einstellen von (kundeneigenen) Feldern

Das Ganze, so wurde mir vorgegeben, der ich ja Quereinsteiger in SAP bin, sollte über Userexit (CMOD) gelöst werden. In diesem existiert eine Erweiterung MGA00001 "Prüfungen und Erweiterungen", FB EXIT_SAPLMGMU_001, Include ZXMG0U02. Hier werden die Grundbedingungen abgefragt und ein FB in eine Queue- Verarbeitung abgelegt, die minütig über einen Job verarbeitet wird. Irgendwo hinten dran ist dann immer ein Aufruf des FB 'MATERIAL_MAINTAIN_DARK', der die Änderungen vornimmt.

Der MATERIAL_MAINTAIN_DARK verabreitet immer den Inhalt einer Struktur, die einem Datensatz einer Tabelle entspricht (in meinen Fällen meist MARC). Problem ist jetzt folgendes: Ein Mitarbeiter arbeitet recht schnell mehrfach auf einem Material und ändert nochmal, bevor die Queue-Verarbeitung stattgefunden hat. Dann werden Änderungen wieder überschrieben.

Wie kann man dem aus dem Wege gehen. Kann man einen Tabelle-Update auch nur auf bestimmte Felder einschränken? Oder sollte man das Problem ganz anders angehen?

Ich bin dankbar für jeden guten Ideenansatz.

Gruß

Dietmar

SanduhrAnzeigeProgramm
vor 4 Jahre
Erste blöde Fraeg hierzu, warum schreibst du nicht direkt im EXIT_SAPLMGMU_001 (sondern erst im "Nachlauf" über Job)?

Zweite blöde Frage, dein Job überschreibt die Änderungen des Users der vor dem Job aktiv war? Verstehe ich das richtig?

Dritte Frage die auch mit der zweiten zusammen hängt, übergibst du mit dem BAPI die gesamte Struktur (= 100%) oder nur die einzelnen Felder die zu ändern sind?

Den meisten BAPIS kannst du sagen welche Felder du verändern möchtest, z.B. über "Ankreuzlisten".

Wenn du nur die gesamte Struktur übergeben kannst, oder das aus anderen Gründen so möchtest, dann musst du natürlich beim ändern das Material sperren, den aktuellen Zustand (raus) lesen, dann deine Änderungen auf den aktuellen anwenden und dann diese "neue" Struktur, übergeben, entsperren, ...

Andernfalls kannst du natürlch immer wieder "Verluste" haben.


*... who can do field replacements in the debugger can do anything in the system

*so this check can not stop (him) anyway.