[60486] in SAPr3-news
Re: =?ISO-8859-1?Q?Zus=E4tzliches_eigenes_Druckprogramm_und_Formu?=
daemon@ATHENA.MIT.EDU (Raphaela Corall)
Fri Jan 11 16:25:06 2008
To: sapr3-news@mit.edu
Date: Fri, 11 Jan 2008 21:23:36 GMT
From: "Raphaela Corall" <rc@llaroc.de>
Message-ID: <fm8pob.310.1@alphA.llaroc.de>
St. Kother wrote:
> Raphaela Corall schrieb:
>> Einfachste Möglichkeit: Eigene Nachrichtenart "Kopie für Lager".
>> Dafür kannst Du das Customizig der normalen AB kopieren und
>> brauchst weder eine eigenes Druckprogramm noch ein eigenes
>> Formular.
>
> NAST-KSCHL = 'ZNOT' mit ZRVADOR01 auf ZRVORER03
Interpretation dieser Angabe:
Es gibt einen Eintrag in der Nachrichtensteuerung, der für die
normale AB das Druckprogramm ZRVADOR01 mit Entry ZRVORER03 steuert.
Diesen hast Du für die neue Nachrichtenart ZNOT kopiert.
>> Stattdessen fragst Du einfach am Ende der AB die Nachrichtenart
>> ab und hängst ggf. nach Seitenwechsel den zusätzlichen Text per
>> include dran.
>
> Im (Standard-)Formular ZRVORDER03
hmm.. könnte natürlich auch sein, daß da oben ein "D" fehlte und Du
das Formular angegeben hast. Z-irgendwas ist übrigens eben nicht
Standard, sondern was Eigengestricktes (unter Umständen aus
SAP-Standard kopiert, aber eben kein Standard im Sinne von SAP,
sondern höchstens Euer hausinterner Standard), aber das nur so am
Rande, weil Du gerne mal ein bißchen ungenau und verhuscht bist ;-)
> habe ich jetzt unter Element
> SUPPLEMENT_TEXT folgendes als Kommandos (/:) eingefügt:
>
> IF &NAST-KSCHL& EQ 'ZNOT'
> PERFORM GET_NOTE IN PROGRAM 'ZNOTIZ01'
> USING &VBDKA-SPRAS&
> USING &VBDKA-TDNAME&
> ENDPERFORM
Normalerweise werden performs im Formular gemacht, um Daten
zurückzukriegen, daher gibt es neben dem USING dann auch noch den
CHANGING. Keine Ahnung, was SAP damit anfängt, wenn der fehlt.
Was willst Du hier überhaupt mit einem PERFORM? Und wo ist die
Asugabe des Textes, und wo das ENDIF?
> Das Druckprogramm sieht so aus:
Nicht _Druck_programm, sondern Formularexit.
> [abap]
> REPORT ZNOTIZ01.
>
> data: it_line type table of tline,
> wa_line type tline.
>
> data: str_itcpo like itcpo.
>
> data: notiz type tdline.
>
> form get_note tables belegdaten structure itcsy.
Wie Volker schon bemerkte, hat so ne Routine, die aus dem Formular
aufgerufen wird, normalerweise zwei Tabellen: Die intab, in die die
USING-Parameter eingestellt werden, und die outtab, in der die
CHANGING-Parameter zurückgeliefert werden. Da Du CHANGING beim
Aufruf weggelassen hast, ist das auf den ersten Blick zwar
konstistent, aber wie schon gesagt: Ich weiß nicht, was SAP damit
anfängt, wenn CHANGING nicht angegeben ist.
>
> data: sprache like vbdka-spras,
> text like vbdka-tdname.
>
> read table belegdaten index 1.
> move belegdaten-value to sprache.
>
> read table belegdaten index 2.
> move belegdaten-value to text.
>
> CALL FUNCTION 'READ_TEXT'
> EXPORTING
> id = '0002'
> language = sprache(1)
> name = text
> object = 'VBBK'
> TABLES
> lines = it_line.
>
> perform data_on_printer.
> endform.
>
> form data_on_printer.
> if not it_line is initial.
> * Formular ausdrucken *
???? Was meinst Du denn hier mit "Formular ausdrucken"? Es würde
mich schon interessieren, was sich hinter diesem Pseudocode
verbirgt. Du wirst da doch nicht mit ..._FORM auf den ZRVORDER03
zugreifen wollen?
> endif.
> endform.
> [/abap]
>
> Allerdings bekomme ich einen Kurzdump, wenn ich mir schon nur die
> Vorschau der ZNOT-AB ansehen will:
>
> [dump]
> Durch PERFORM wurde die Routine "GET_NOTE" des Programms
> "ZNOTIZ01 " aufgerufen. Diese Routine besitzt 2 formale
> Parameter. Der aktuelle Aufruf enthält jedoch 4 aktuelle
> Parameter. [/dump]
Klingt, als hätte der fehlende CHANGING hier seine Auswirkungen,
aber sicher kann ich das natürlich nicht sagen.
> Leider hänge ich jetzt an dieser Stelle fest und komme im Moment
> auch mit Doku und Hilfe nciht klar. Meine Unterlagen zeigen mir
> auch nur Beipsielcodings mit einer übergebenen Variablen und
> einer die zurück gegeben wird.
So wird der perform normalerweise ja auch genutzt: Ich möchte etwas
ausgeben, das das Druckprogramm mir nicht liefert, also ruf ich eine
Routine auf, die mir das anhand der übergebenen USING(s) ermittelt
und in CHANGING(s) zurückliefert, damit ich es dann im Formular
ausgeben kann.
> Was muss ich ändern bzw. wie muss die Übergabe der Variablen aus
> dem Skript in das Programm erfolgen? Wie kann ich dann die beiden
> Werte korrekt abfragen?
Schmeiß den PERFORM (und den zusätzlichen ABAP) weg und schreib
stattdessen Folgendes im Formular:
/: new-page
/: INCLUDE &VBDKA-TDNAME& OBJECT VBBK ID 0002 LANGUAGE &VBDKA-SPRAS&
Wenn das am Ende des Elements SUPPLEMENT_TEXT steht, wird nach allen
anderen Angaben der AB ein Seitenwechsel erzwungen und der
Zusatztext auf der neuen Seite angehängt. Das isses doch, was Du
haben willst, oder?
Gruß
Raphaëla
--
Wenn einer am Boden liegt, weil er vom eigenen Armutszeugnis
erdrückt wurde, haut man nicht noch drauf herum.
[Michael Scheer in hdc]