Ich möchte im Bereich der Multiclientumgebung (Cytrix) so genannte Umgebungsvariablen auslesen.
Umgebungsvariablen erhalte ich, wenn ich auf der Ebene der DOS-Eingabeaufforderung den Befehl ?set? eingebe.
Die Klasse ?cl_gui_frontend_services? bietet mir u.a. die Methode ?IS_TERMINAL_SERVER? und die Methode ?ENVIRONMENT_GET_VARIABLE?.
Mit ?IS_TERMINAL_SERVER? stelle ich fest, ob ich mich in einer Multiclientumgebung befinde; mit ?ENVIRONMENT_GET_VARIABLE? hole ich mir die entsprechenden Umgebungsvaribalen; z.B. ?CLIENTNAME?.
Wo liegt mein Problem: Ich bewege mich im Bereich des Formulardrucks (RDI). Die SAP bietet ein Programm (ZOSS332354, siehe Hinweis 332354) in dem standardmäßig der Hostname in IP-Adresse zurückgegeben wird und dem RDI-Header zur Verfügung gestellt wird. Dies Programm mache ich mir zu Nutze und wende die oben genannte Klasse an.
Gebe ich bei einer Bestellung in der Nachrichtenfindung als Zusatzparameter ?sofort versenden beim sichern der Anwendung? kommt es zu einem Verbuchungsabbruch. Das liegt scheinbar daran, dass mir kein ?GUI? zur Verfügung steht; so genannte Hintergrundverarbeitung. Gebe ich als Parameter ?versenden durch anwendungseigene Transaktion? mit, werden mir die entsprechenden Daten geliefert.
Meine Frage lautet: Wie komme ich bei einer Hintergrundverarbeitung an die Umgebungsvaribalen?
im Erweiterungskonzept CMOD gibt es den Exit EXIT_SAPLV61B_002. Der wird angesprungen, wenn du in der Nachrichtenkondition bei "drucken" den Eintrag "Userexit" machst.
Du kannst dann im Coding unter anderem den Drucker und auch den Spooltitel sowie die Spool-Suffixe ändern.
Das passiert waehrend der Nachrichtenfindung.
Du könntest dann evtl. deine Parameter ermitteln und z.B. in DSUF2 schreiben. Das Feld müsste auch im Datenstrom beim Drucken übergeben werden.