SAP Jobsuche bei DV-Treff
Sushi83
  • Sushi83
  • SAP Forum - Neuling Thema Starter
vor 10 Jahre
Hallo zusammen,

ich möchte eine Bedingung für die Nachrichtenfindung in der Bestellung (ME21N/ME22N) programmieren, in der ich aber Daten aus der Bestellung selbst abfrage, speziell in meinem Fall die Materialnummer der Position(en).

In den vorhandenen internen Tabellen habe ich diese aber leider nicht zur Verfügung (also beim Anlegen, beim Ändern könnte ich die notfalls von der Datenbank lesen). Es gibt da ja diverse Tricks über Dirty Assign, etc.

Habe aber für die Bestellung noch nichts passendes gefunden.

Eventuell gibt es jemanden, der schon mal das selbe Problem hatte und eine Lösung weiß.

Gruß

Sascha

Förderer

StefanAB
vor 10 Jahre
Hallo Sascha,

für mein Verständnis: Du möchtest ein Feld aus der Positionsebene zur Findung der Nachricht heranziehen ?

Das würde ja bedeuten, dass die Bestellung lediglich eine Position hat oder dass die Informationen auf Positionsebene alle gleich sein müssen.

Im Customizing ist mir die Transaktion M/59 aufgefallen, mit der man Konditionssätze für die Nachrichtenfindung anlegen kann. In der Auswahlliste befindet sich auch das Feld Material. Evtl. könnte das Dein Problem lösen.

Gruß

Stefan

kata4711
vor 10 Jahre
Die M/59 ist die Anlage für Konditionstabellen für Bestellungen.

Hier kannst du eine eigene Tabelle für die Nachrichtenfindung anlegen zb für Material.

Dann legst du eine neue Zugriffsfolge für die Nachrichtenfindung an zb Belegart->Lieferant->Material.

Für jedes material mußt du eine Nachrichtenkondition anlegen.

Mir erschliesst sich zwar der Sinn nicht, da Standardmäßig für die gesamte Bestellung eine nachricht gedruckt wird, und nicht, wenn sich ein bestimmtes Material in der Bestellung befindet.

Soll für Bestellungen, die nicht dieses Material enthalten, keine Nachricht erzeugt werden ????

Ansonsten bin ich ganz bei StefanAB .

M&Mler
vor 10 Jahre
Hallo

das ist leider etwas tricky....

Klar, die Nachrichtenfindung läuft auf Kopfebene.

Eine Möglichkeit wäre der von dir beschriebene assign in der Bedingung... das hat aber zur Konsequenz, dass niemand mehr nachvollziehen kann, warum wie welche Bestellung gefaxt, per eMail oder wie auch immer übermittelt wurde.

Da du eh schon am programmieren bist, würde ich eher ein ZFELD in den Kopf der Bestellung hängen das im BADi ME_PROCESS_PO_CUST gefüllt und in der Nachrichtenfindung abgefragt wird.

So kann man ein Kriterienkatalog in der Bestellung programmieren, der zB einen Versand per EDI verbietet.

(keine Lieferantenmaterialnummer gepflegt, Blackliste usw)

Beispiel für die Bedingung in der Nachrichtenfindung:

FORM kobed_920.

  FIELD-SYMBOLS:  TYPE ekko.

  ASSIGN ('(SAPLMEPO)EKKO') TO .

  IF  IS ASSIGNED.

    IF -zz_ein_feld IS NOT INITIAL.

      sy-subrc = 4.

    ELSE.

      sy-subrc = 0.

    ENDIF.

    UNASSIGN .

  ENDIF.

ENDFORM. 

Sushi83
  • Sushi83
  • SAP Forum - Neuling Thema Starter
vor 10 Jahre
Hallo, danke für die bisherigen Antworten.

Noch etwas mehr zum Hintergrund der Frage: Wenn in den Positionen Materialien mit Zeichnungen enthalten sind, müssen diese über einen anderen Fax-Server laufen und dementsprechend muss eine andere Nachrichtenart gefunden werden.

Die letzte Idee fande ich sehr gut und wollte diese gerade mal umsetzen. Bin aber dabei schon auf ein Problem gestoßen. Ein Zusatzfeld, welches ich in der EKKO per Append anlege, erscheint ja nicht automatisch in der Kopfstruktur MEPOHEADER des Badis. Also kann ich das EKKO-Feld über das Badi gar nicht befüllen. Mir geistern gerade noch ein paar andere Ideen durch den Kopf...

- ungenutztes Standardfeld der EKKO "mißbrauchen"

- Zusatztabelle befüllen

Aber so die zündende Idee fehlt irgendwie. Vielleicht kann mir einer von euch nochmal weiterhelfen?

Viele Grüße

Sascha

M&Mler
vor 10 Jahre
Hi

du musst den append im Exit:

MM06E005 - CI_EKKODB anlegen. Dann müsste es im badi berücksichtigt werden.

Grüße