Formular Fenster nur bei Bedarf ausgeben

Getting started ... Alles für einen gelungenen Start.

Formular Fenster nur bei Bedarf ausgeben

Postby Krista3856 » Wed Apr 30, 2014 11:46 pm

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
Krista3856
.
.
 
Posts: 9
Joined: Sun Dec 01, 2013 9:51 am

Re: Formular Fenster nur bei Bedarf ausgeben

Postby Joeline5261 » Thu May 01, 2014 9:40 am

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
Joeline5261
...
...
 
Posts: 387
Joined: Thu Aug 18, 2005 2:42 pm

Re: Formular Fenster nur bei Bedarf ausgeben

Postby Krista3856 » Thu May 01, 2014 4:36 pm

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
Krista3856
.
.
 
Posts: 9
Joined: Sun Dec 01, 2013 9:51 am

Re: Formular Fenster nur bei Bedarf ausgeben

Postby Joeline5261 » Fri May 02, 2014 9:43 am

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
Joeline5261
...
...
 
Posts: 387
Joined: Thu Aug 18, 2005 2:42 pm

Re: Formular Fenster nur bei Bedarf ausgeben

Postby 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
Krista3856
.
.
 
Posts: 9
Joined: Sun Dec 01, 2013 9:51 am


Return to ABAP® für Anfänger

Who is online

Users browsing this forum: No registered users and 14 guests