Die Transaktion VL10 wird über 3 Varianten per Job gestartet. Hierbei werden für gefundene noch nicht belieferte Aufträge direkt Lieferungen mit der Tr. VL01N erzeugt.
Jetzt ist aber so das die obigen 3 Varianten in einer eigenen Customizing-Tabelle aktiviert bzw. inaktiviert werden können. Ist die Variant aktiviert so muß das Incoterm1-Feld geändert werden im Lieferbeleg-Kopf (LIKP-INCO1). Ich habe auch einen User-Exit gefunden in dem ich das entsprechend codiert habe.
Jetzt ist aber das Problem das diese Änderung des Incoterms nur durchgeführt werden soll wenn die Lieferungen über die VL10 angelegt werden.
Wenn also ein User über die VA01 einen Auftrag anlegt und diesen auch gleich beliefern möchte soll der Incoterm nicht über den User-Exit geändert werden.
Wie kann man das realisieren? Hat hier jemand eine Idee?
Mein Lösungsansatz bisher ist:
- in einem User-Exit der VL10 sichere ich mir die ausgewählte Variante mit dem User-Namen in eine transparente Tabelle. Vor der Sicherung lösche ich alle Einträge der transparenten Tabelle die den aktuellen Usernamen im Schlüssel haben
- im User-Exit der VL01N lese ich den Namen der benutzten Variante und prüfe ob diese aktiv oder inaktiv ist
- ist die Variante aktiv ändere ich den Incoterm1 und die Lieferung wird gesichert
Das funktioniert soweit ja... nur wie oben beschrieben wenn der gleiche User über die VA01 einen Auftrag beliefert wird auch der User-Exit der VL01N durchlaufen und dort wird dann wieder geprüft ob die Variante aktiv ist. UND DAS SOLL EBEN NICHT PASSIEREN!!!
dir könnten vielleicht ganz einfach ein paar Systemfelder helfen:
SY-BATCH ==> Knz. Anwendung läuft im Batch, damit scheidet VA01 im Online aus
SY-CPROG ==> oberstes bzw. erstes Programm, bei VL10 ist das RVV50R10C
mfg dele
p.s.
Ich würde anstatt mit einer transparenten Tabelle mit "Export to Memory" arbeiten. Ist flexibler und schneller
vielen Dank für deine Tips, das habe ich auch schon leider erfolglos probiert. Der User-Exit in der VL01N befindet sich in einem RFC-Funktionsbaustein und damit sind die Infos die ich ins Memory exportiere zu dem Zeitpunkt nicht vorhanden, die Felder der SYST enthalten nicht die benötigten Informationen die ich brauche.
Ich habe es jetzt wie folgt gelöst:
- in der VL10 wird der Transaktionscode "VL10X" in das Memory exportiert bevor die Transaktion VL01N aufgerufen wird.
- in der VL01N hole ich mir das Memory wieder nach dem der RFC-Funktionsbaustein aufgerufen wird und kann dann wenn im Memory "VL10X" drinsteht entsprechend reagieren