by Krista3856 » Tue May 06, 2014 7:36 pm
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.
Gruss
Raf