Aufruf von anderen Programmen & Übergabe von

Werbung
Aufruf von anderen Programmen & Übergabe von Parametern ................................................ 1
Parameterübergabe an ein aufgerufenes Programm ............................................................... 2
Über Parameter in Selektionsbildern.................................................................................. 2
Programmaufruf mit Angabe von Parametern ............................................................... 2
Programmaufruf mit Selektionsbild ............................................................................... 3
Get- /Set-Parameter ............................................................................................................ 3
Übergabe über den ABAP-Memory ................................................................................... 3
SAP-Memory vs. ABAP-Memory ......................................................................................... 5
Weitere Übergabemechanismen ......................................................................................... 6
Aufruf von anderen Programmen & Übergabe von Parametern
Vorbereitung: Programm anlegen, das aufgerufen werden kann
REPORT
Z80304_AUFRUFPROGRAMM.
WRITE 'Ich bin das Programm'.
Programm speichern & aktivieren!!!
(Es kann nur die aktive Fassung eines Programms aufgerufen werden)
Aufruf eines Programms
SUBMIT programmname.

Abarbeitung des aktuellen Programms wird exakt an dieser Stelle beendet und es
wird mit der Abarbeitung des aufgerufenen Programms begonnen.
(Nach der Abarbeitung des aufgerufenen Programms erfolgt KEIN Rücksprung zur
Aufrufstelle, sondern die komplette Abarbeitung wird beendet)
SUBMIT programmname AND RETURN.

wie oben, aber nach der Abarbeitung des aufgerufenen Programms wird zur
Aufrufstelle zurückgekehrt und die Abarbeitung dort fortgesetzt
Beispiel 1:
REPORT
Z80304_PROGRAMMAUFRUF.
1 WRITE 'vor dem submit'.
2 SUBMIT Z80304_AUFRUFPROGRAMM.
3 WRITE 'nach dem submit'.
 Ausgabe:
Grund:
1
„vor dem submit“ wird in dem Listenpuffer geschrieben und für die Ausgabe
vorgemerkt. (Liste wird nach der letzten Programmanweisung, d.h. nach 3 angezeigt)
Jedes Programm hat seinen eigenen Listenpuffer!
2
„Z80304_AUFRUFPROGRAMM“ wird aufgerufen, alle Ausgaben werden in den
Listenpuffer von Z80304_AUFRUFPROGRAMM geschrieben und nach Beendigung
von Z80304_AUFRUFPROGRAMM wird die Liste angezeigt (Ausgabe: nur writeAnweisung aus Z80304_AUFRUFPROGRAMM)
3
Wird NIE erreicht, da KEIN Rücksprung zur Aufrufstelle realisiert wird.
 rufendes Programm wird NICHT korrekt beendet
 KEINE Ausgabe (Anzeige) der Liste
Beispiel 2:
REPORT Z80304_PROGRAMMAUFRUF.
1 WRITE 'vor dem submit'.
2 SUBMIT Z80304_AUFRUFPROGRAMM AND RETURN.
3 WRITE 'nach dem submit'.
 Ausgabe:
„vor dem submit“ wird in Listenpuffer des rufenden Programms geschrieben
Z80304_AUFRUFPROGRAMM wird aufgerufen und ein neuer Listenpuffer erzeugt
(alle Ausgaben aus Z80304_AUFRUFPROGRAMM werden in diesem Puffer
realisiert) Nach Beendigung von Z80304_AUFRUFPROGRAMM wird der
Listenpuffer ausgegeben und zurück zum rufenden Programm gesprungen
„nach dem submit“ wird in den Listenpuffer des rufenden Programms geschrieben
und danach wird der Listenpuffer angezeigt (Ausgabe aus 1 und 2)
1
2
3
Parameterübergabe an ein aufgerufenes Programm
Über Parameter in Selektionsbildern
REPORT
Z80304_AUFRUFPROGRAMM.
PARAMETER a TYPE i.
WRITE 'Ich bin das aufgerufene Programm'.
WRITE: /'a= ',a.
 bei direkter Ausführung:
 Selektionsbild zur Eingabe von a erscheint
 nach dem Erfassen eines Wertes für a erscheint die Listenausgabe
 bei Aufruf über SUBMIT
 wenn ein Programm mit SUBMIT aufgerufen wird, erscheint nach dem
Programmaufruf KEIN Selektionsbild, sondern alle Variablen werden mit ihren
Standardwerten belegt
 Es besteht KEINE Möglichkeit einen Wert für a zu erfassen und es wird „a = 0“
ausgegeben
Programmaufruf mit Angabe von Parametern
SUBMIT programmname [AND RETURN] WITH parameter1 = wert1 …
Falls der Parameter im aufgerufenen Programm definiert ist, dann wird ihm der angegebene
Wert zugewiesen, falls der angegebene Parameter nicht definiert ist, wird die Angabe
ignoriert.
z.B.
REPORT
Z80304_PROGRAMMAUFRUF.
WRITE 'vor dem submit'.
SUBMIT Z80304_AUFRUFPROGRAMM WITH a = 5.
WRITE 'nach dem submit'.
 Ausgabe:
 Variable a wird im aufgerufenen Programm auf 5 gesetzt
Programmaufruf mit Selektionsbild
SUBMIT programmname [AND RETURN] VIA SELECTION-SCREEN.
Problem: Selektionsbild wird beim Aufruf UND beim Rücksprung erneut angezeigt
Get- /Set-Parameter
SET PARAMETER ID ‘Meine ID’ FIELD variable.
 Der Wert der angegebenen Variablen wird im SAP-Memory unter der angegeben ID
abgelegt



ID ist frei wählbar, maximale Länge von 20 Zeichen, darf nicht nur aus Leerzeichen
bestehen
Variable: nur einfache Datentypen erlaubt, die beim speichern in zeichenartige Daten
(c) konvertiert werden
Falls unter der ID bereits ein Wert hinterlegt ist, wird dieser überschrieben
Lesen eines Parameters
GET PARAMETER ID ’Meine ID’ FIELD variable.
 Der Wert im SAP-Memory unter der angegbenen ID hinterlegte Wert wird in die
angegebene Variable geschrieben


Vaiable muss ein zeichenartiger Datentyp sein (sonst Fehler beim Syntaxcheck)
Falls unter der angegebenen ID kein Wert hinterlegt war, dann behällt die Variable
ihren alten Wert. Es sollte in jedem Fall nach dem Lesen mit GET der returncode
ausgewertet werden. (0 = erfolgreich, 4 = kein Wert gelesen)
Übergabe über den ABAP-Memory
Programm 1
REPORT
Z80304_PROGRAMMAUFRUF.
PARAMETER a TYPE i VALUE 5.
EXPORT a TO MEMORY ID 'meine_ID'.
SUBMIT Z80304_AUFRUFPROGRAMM.
Variable deren Inhalt
gespeichert werden soll
(beliebige Datentypen, d.h.
auch Strukturen/Objekte
erlaubt)
Frei wählbare ID, mit max.
60 Zeichen (darf nicht nur
aus Leerzeichen bestehen)
 Inhalt der Variablen wird unter der angegebenen ID im ABAP-Memory abgelegt
REPORT
Z80304_AUFRUFPROGRAMM.
DATA a TYPE i.
IMPORT a FROM MEMORY ID 'meine_ID'.
Name & Datentyp muss
mit der Variable
übereinstimmen, die mit
EXPORT gespeichert
wurde
ID unter der die Variable
gespeichert wurde
 Falls der Inhalt der Variablen unter der angegebenen ID hinterlegt wurde, wird der Wert
zurück in die Variable geschrieben
Returncode:
0 = Wert erfolgreich übertragen
4 = Kein Wert hinterlegt, d.h. nichts gelesen
SAP-Memory vs. ABAP-Memory
Nutzersession, d.h. ein über eine SAP-GUI angemeldeter Nutzer
Externer Modus 1
Externer Modus 2
Interner Modus 1
Interner Modus 1
z.B. SE80
lokale Variablen
Listenpuffer
z.B. SE80
lokale Variablen
Listenpuffer
A
B
A
P
Daten
M
E
M
O
R
IMPORT/EXPORT
Y
Interner Modus 2
z.B. Programm wird
aufgerufen
lokale Variablen
Listenpuffer
Interner Modus 3
z.B. Aufruf mit
SUBMIT...
Interner Modus 2
z.B. Programm wird
aufgerufen
lokale Variablen
Listenpuffer
Interner Modus 3
z.B. Aufruf mit
SUBMIT...
lokale Variablen
lokale Variablen
Listenpuffer
Listenpuffer
Daten GET/SET
SAP–MEMORY
REPORT
Z80304_PROGRAMMAUFRUF.
DATA: zeile TYPE scarr,
id TYPE c LENGTH 10,
name TYPE c LENGTH 10.
SELECT SINGLE * INTO zeile FROM scarr WHERE carrid = 'LH'.
id = zeile-carrid.
name = zeile-carrname.
EXPORT zeile TO MEMORY ID 'ID_zeile'.
ABAP-Memory
SET PARAMETER ID 'ID_id' FIELD id.
SET PARAMETER ID 'ID_name' FIELD name.
SAP-Memory
SUBMIT Z80304_AUFRUFPROGRAMM.
REPORT
Z80304_AUFRUFPROGRAMM.
DATA: zeile TYPE scarr,
id TYPE c LENGTH 10,
name TYPE c LENGTH 10.
IMPORT zeile FROM MEMORY ID 'ID_zeile'.
IF sy-subrc <> 0. write 'Fehler bei Import'. ENDIF.
GET PARAMETER ID 'ID_id' FIELD id.
IF sy-subrc <> 0. write 'Fehler bei GET id'. ENDIF.
GET PARAMETER ID 'ID_name' FIELD name.
IF sy-subrc <> 0. write 'Fehler bei GET name'. ENDIF.
write: /'ABAP ', zeile-carrid, zeile-carrname.
write: /'SAP ', id, name.
A
B
A
P
Daten
M
E
M
O
R
Y
.....
Aktion
Z80304_ PROGRAMMAUFRUF
starten
Über SUBMIT wird
Z80304_AUFRUFPROGRAMM
aufgerufen
Zugriff auf ABAP-Memory
(Export/Import)
Zugriff möglich X
Zugriff auf SAP-Memory
(Get/Set)
Zugriff möglich XXX
Z80304_ PROGRAMMAUFRUF
Zugriff möglich X
starten

ABAP-Memory ist für eine
Danach:
komplette Nutzersession
Z80304_AUFRUFPROGRAMM im
aktiv
gleichen Modus starten

Im gleichen Modus kann
jederzeit darauf
zugegriffen werden
Zugriff möglich XXX
Z80304_ PROGRAMMAUFRUF
KEIN Zugriff möglich XX
starten

ABAP-Memory ist an den
Danach:
Modus gebunden, d.h. in
Z80304_AUFRUFPROGRAMM
einem anderen Modus
In einemeigenem externen
(Fenster) sind die Daten
Modus (in dem vorher
nicht verfügbar, da der
noch NICHT Z80304_
zweite Modus einem eigenen
PROGRAMMAUFRUF
ABAP-Memory besitzt
ausgeführt wurde)
Zugriff möglich XXX

SAP-Memory gilt für alle
Modi innerhalb einer
Nuzersession, d.h. jedes
Programm, kann aus jedem
Modus heraus darauf
zugreifen
Z80304_ PROGRAMMAUFRUF
starten
Komplett abmelden (alle
Modi schliessen) & neu
anmelden
Z80304_AUFRUFPROGRAMM
ausführen
KEIN Zugriff möglich XXX

SAP-Memory ist
Sessionbezogen, d.h. er
wird bei der Abmeldung
des Nutzers vom System
gelöscht
KEIN Zugriff möglich XX

ABAP-Memory ist
Sessionbezogen, d.h. wird
in jeden Fall bei der
Abmeldung des Nutzers
gelöscht
Weitere Übergabemechanismen


Datenbanktabellen, d.h. ein Programm speichert Daten in einer DB-Tabelle ab und ein
anderes Programm kann diese zu einem späteren Zeitpunkt auslesen und verarbeiten.
o Sessionübergreifend
o Mandantenübergreifend
Dateisystem, d.h. ein Programm speichert Daten in einer lokalen Datei ab und ein
anderes Programm kann die Daten lesen und weiterverarbeiten
o Sessionübergreifend
o Mandantenübergreifend
o Systemübergreifend
Herunterladen