Hallo Zusammen,
meine Frage hat 2 Punkte:
Das Sapscriptformular zur Nachricht RD00 enthält die Adresse des Rechnungsempfänger als Adressat.
1. Es soll ein zusätzliches Fenster nur bei Erfüllung einer Bedingung angedruckt werden:
Regulierer ungleich Rechnungsempfänger, vermutlich aus VBDKR: VBDKR-KUNRG NE VBDKR-KUNRE
Ich gehe davon aus, dies kann nur im Druckprogramm codiert werden, aber wie finde ich die geeignete Stelle?
Kann dies evtl auch im Formular gemacht werden?
2. Das zus. Fenster soll dann die Adresse des Regulierers enthalten.
Diese Adresse steht in keiner der Tabellen.
Wie kann ich diese adresse holen? (Coding-Beispiel?)
Danke im Voraus für die Tipps
Raf
ad 1) Das geht auch im Druckformular:
Einfach den ganzen Inhalt im Fenster in eine IF-Abfrage packen.
lg
ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
Hallo, vielen Dank an die User, die Ideen beisteuerten.
Manchmal sind die Sachen doch einfacher als vermutet:
ES gibt bestimmt andere Lösungen. Hier nun meine für den Fall, dass jemand sie irgenwann brauchen könnte:
1. Formular: ein neues Fenster Payer mit einem Textelement /E namens Payer.
Dort habe ich die Adresse mit Programmsymbolen etwa: (IT = interne Tabelle im Druckprogramm)
ADDRESS DELIVERY PARAGRAPH AS
NAME &IT-NAME1&
STREET &IT-STRS&
CITY &IT-ORT01&
POSTCODE &IT-PLZ&
COUNTRY &IT-LAND1&
/:ENDADDRESS
Positionsdaten des Fenster und Rahmen darunter (bei Bedarf)
2. Das Druckprogramm für die Nachrichtenart (hier: RD00), siehe Transaktion NACE
und die passende Subroutine (Entry) identifiziert.
Zunächst eine Interne Tabelle mit den im Fenster benötigten Feldern definiert:
Data: begin of IT occurs 0,
name1 type REGUH-NAME1,
strs type REGUH-<passendes Feld>,
ort01 type REGUH-<passendes Feld>,
plz type REGUH-<passendes Feld>,
Land1 type REGUH-<passendes Feld>.
End of IT.
Im Programm/ Routine Entry eine neue Form aufgerufen:
Perform PayRoutine
Mit doppelklick / Vorwärtsnavigation die Routine angelegt:
Form PayRoutine.
clear IT. "Interne Tabelle leer gemacht
IF VBDRK-KUNRE NE VBDRK-KUNRG. " hier ist die Bedingung ohne die das Fenster nicht erst gedruckt wird
Select <Feld1> <Feld2> <Feld3> ... . " Felder NAME1, etc...
from REGUH
into IT
WHERE KUNNR = VBDRK-KUNRG. " somit werden die Felder von IT gefüllt und stehen mit Werten für das Fenster im
" SAPSCRIPT Formular zur Verfügung.
Endselect.
ENDIF.
Endform.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = PAYER.
*FUNCTION =
*TYPE =
WINDOW = PAYER.
Dann klapt es und das Fenster mitsamt Linien, etc... werden nur dann auf dem Formular angedruckt, wenn
die IF-Bedingung erfüllt ist.