Page 1 of 1

Formular Fenster nur bei Bedarf ausgeben

PostPosted: Wed Apr 30, 2014 11:46 pm
by Krista3856
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

Re: Formular Fenster nur bei Bedarf ausgeben

PostPosted: Thu May 01, 2014 9:40 am
by Joeline5261
Hallo Raf,

im Rechnungsformular gibt es ja das Fenster 'INFO1'. Das wird ja bei einer abweichenden
Versandadresse gedruckt. Diese Routine dort wird aus dem Treiberreport 'RVADIN01' (bei uns)
aufgerufen.
Du mußt eben ein neues Fenster definieren und dieses Fenster dann aus den Treiberreport
aufrufen. Dort kannst du dann auch deine Logik bzgl. VBDKR: VBDKR-KUNRG NE VBDKR-KUNRE
einbauen.
Hoffe das hilft zu Punkt 1 etwas.
Die Adresse zu Punkt 2 musst Du über die Tabelle ADRC lesen.

Gruß
Wolfgang

Re: Formular Fenster nur bei Bedarf ausgeben

PostPosted: Thu May 01, 2014 4:36 pm
by Krista3856
Hallo Wolfgang, danke für die Mail.
zu1) Ja stimmt, da habe ich als erstes dran gedacht.
Ich gehe davon aus, dass das neue Fenster dann im Druckprogramm codiert werden muss, analog zum INFO1-Fenster.
Dann müsste die Abfrage direkt im neuen Fenster abgehandelt werden, oder?

Zu2) Hast du hierzu ein Beispiel-Coding?
Denn Man müsste doch im Treiber(Druck) Programm entsprechendes Coding einfügen, oder?

Gruss
Raf

Re: Formular Fenster nur bei Bedarf ausgeben

PostPosted: Fri May 02, 2014 9:43 am
by Joeline5261
Hi Raf,

das Beispielcoding könnte etwa so aussehen:

select single * from vbpa where vbeln = VBDKR-VBELN_VAUF and
parvw = 'RE'.
if sy-subrc = 0.
select single * from adrc where addrnumber = vbpa-adrnr.

Gruß
Wolfgang

Re: Formular Fenster nur bei Bedarf ausgeben

PostPosted: Tue May 06, 2014 7:36 pm
by Krista3856
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