Rheinwerk < openbook > SAP-Wissen aus erster Hand
SAP-Wissen aus erster Hand.
 
Inhaltsverzeichnis
Vorwort zur vierten Auflage
1 ABAP und die ersten Schritte im SAP-System
2 ABAP Dictionary
3 Programmieren im ABAP Editor
4 Felder und Berechnungen
5 Modifikation von Zeichenketten
6 Debugging von Programmen
7 Modifikation von transparenten Datenbanktabellen
8 Rechnen mit Datum und Zeit, Mengen und Währungen
9 Mit Daten in einer Datenbanktabelle arbeiten
10 Programmablaufsteuerung und logische Ausdrücke
11 Selektionsbildschirme
12 Interne Tabellen
13 Modularisierung von Programmen
14 Weiterführende Themen
A Icons auf einen Blick
B Abkürzungsverzeichnis
C Die Autoren
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 23 KB

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Einstieg in ABAP von Karl-Heinz Kühnhauser, Thorsten Franz
Buch: Einstieg in ABAP

Einstieg in ABAP
Pfeil 13 Modularisierung von Programmen
Pfeil 13.1 Überblick
Pfeil 13.2 Quelltext-Module
Pfeil 13.3 Prozeduren
Pfeil 13.3.1 Unterprogramme
Pfeil 13.3.2 Funktionsbausteine
Pfeil 13.3.3 ABAP-Klassen
Pfeil 13.4 Speicherbereiche für Datenübergabe
Pfeil 13.4.1 Globales SAP Memory
Pfeil 13.4.2 Lokales SAP Memory
Pfeil 13.4.3 ABAP Memory
Pfeil 13.4.4 Shared Objects
Pfeil 13.5 Codebeispiele zur Modularisierung
Pfeil 13.6 Codebeispiele zum Aufruf fremder Reports
 
Zum Seitenanfang

13.6    Codebeispiele zum Aufruf fremder Reports Zur vorigen ÜberschriftZur nächsten Überschrift

Der Report Z_TEILNEHMERLISTE13_B (siehe Listing 13.6) zeigt den Aufruf fremder Reports von Unterprogrammen in Reports und von Funktionsbausteinen auf. Ferner wird exemplarisch die Datenübergabe zwischen Reports über verschiedene Speicherbereiche durchgeführt. Analog zum Beispiel aus Listing 13.3 existieren auch hier jeweils ein Include-Programm für Selektionsparameter (siehe Listing 13.7) und eines für Deklarationen (siehe Listing 13.8).

 1  *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE13_B *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *& *
7 *&---------------------------------------------*
8
9 REPORT z_teilnehmerliste13_b.
10
11 * Deklarationsteil
12 INCLUDE z_teilnehmer_deklarationen.
13 * Selektionsbildschirm deklarieren
14 INCLUDE zteilnehmer13_b_selektionsbild.
15 *----------------------------------------------*
16 * initialization.
17 *----------------------------------------------*
18 * at selection-screen.
19 *----------------------------------------------*
20 START-OF-SELECTION.
21 * In anderen Report über Selektionsbildschirm verzweigen
ohne Rückkehr
22 PERFORM absprung_ow.
23 * Unterprogramm eines anderen Reports aufrufen (externes
Unterprogramm)
24 * In anderen Report über Selektionsbildschirm verzweigen
mit Rückkehr
25 PERFORM absprung_mw.
26 *----------------------------------------------*
27 END-OF-SELECTION.
28 SKIP.
29 WRITE: / 'Hauptprogramm Z_TEILNEHMERLISTE13_B beendet'.
30 * Ende des Hauptprogramms
31 *----------------------------------------------*
32 * Beginn der Unterprogramme
33 *&---------------------------------------------*
34 *& Form absprung_ow
35 *&---------------------------------------------*
36 * text
37 *----------------------------------------------*
38 * --> p1 text
39 * <-- p2 text
40 *----------------------------------------------*
41 FORM absprung_ow .
42 IF rsow IS NOT INITIAL.
43 * Aufruf mit Selektionsbildschirm ohne Parameterübergabe
44 SUBMIT z_teilnehmerliste13_a VIA SELECTION-SCREEN.
45 ENDIF.
46 IF rsowas IS NOT INITIAL.
47 * Aufruf mit Selektionsbildschirm mit Parameterübergabe
48 SUBMIT z_teilnehmerliste13_a
49 WITH par02 = 'X'
50 WITH par03 = 'X'
51 VIA SELECTION-SCREEN.
52 ENDIF.
53 IF rsowih IS NOT INITIAL.
54 * Aufruf ohne Selektionsbildschirm mit Parameterübergabe
55 SUBMIT z_teilnehmerliste13_a
56 WITH par02 = 'X'.
57 ENDIF.
58 ENDFORM. " absprung_ow
59 *&---------------------------------------------*
60 *& Form absprung_mw
61 *&---------------------------------------------*
62 * text
63 *----------------------------------------------*
64 * --> p1 text
65 * <-- p2 text
66 *----------------------------------------------*
67 FORM absprung_mw .
68 CHECK rsmw IS NOT INITIAL.
69 GET PARAMETER ID 'RID' FIELD progname.
70 SET PARAMETER ID 'Z_TEST' FIELD progname.
71 nvml = 'X'.
72 PERFORM itab04_fuellen IN PROGRAM
z_teilnehmerliste13_a
73 USING itab04
74 zzaehler_itab04
nvml.
75 READ TABLE itab04 INTO wa_itab04 WITH KEY
mandant = sy-mandt
tnummer = 3.
76 IF sy-subrc = 0.
77 WRITE: / 'Ausgabe aus Programm Z_TEILNEHMERLISTE13_B',
78 / 'Teilnehmer Nummer', wa_itab04-tnummer,
'=', wa_itab04-tname .
79 ENDIF.
80 EXPORT itab04 TO MEMORY ID progname.
81 SUBMIT z_teilnehmerliste13_a AND RETURN.
82 ENDFORM. " absprung_mw

Listing 13.6    Report Z_TEILNEHMERLISTE13_B

 1  *&---------------------------------------------*
2 *& INCLUDE Z_TEILNEHMER_deklarationen *
3 *&---------------------------------------------*
4
5 * Tabellenarbeitsbereiche deklarieren
6 DATA wa_zteilnehmer02 TYPE zteilnehmer02.
7
8 * Felder deklarieren
9 DATA: glob_tmax TYPE i VALUE 12,
10 lokale_datei TYPE string,
11 nvml TYPE c LENGTH 1, " itab04 füllen
und verarbeiten in
Z_TEILNEHMERLISTE13_A
12 progname TYPE c LENGTH 25,
13 repname LIKE progname,
14 zeilen_itab01 TYPE i,
15 zzaehler_itab04.
16
17 * Datentypen für Zeilen deklarieren
18 TYPES: BEGIN OF zeile01_typ,
19 zzkurstitel TYPE zteilnehmer02-zzkurstitel,
20 tkurspreis TYPE zteilnehmer02-tkurspreis,
21 END OF zeile01_typ.
22
23 TYPES BEGIN OF zeile02_typ.
24 INCLUDE TYPE zeile01_typ.
25 TYPES minteiln TYPE i.
26 TYPES END OF zeile02_typ.
27
28 TYPES: BEGIN OF zeile03_typ,
29 bezeichnung TYPE zteilnehmer02-zzkurstitel,
30 preis TYPE zteilnehmer02-tkurspreis,
31 maxteil TYPE i,
32 END OF zeile03_typ.
33
34 TYPES zeile04_typ TYPE zteilnehmer02.
35
36 * Datentypen für interne Tabellen deklarieren
37 TYPES itab01_typ TYPE STANDARD TABLE OF zeile01_typ.
38 TYPES itab02_typ TYPE STANDARD TABLE OF zeile02_typ.
39 TYPES itab03_typ TYPE STANDARD TABLE OF zeile03_typ.
40 TYPES itab04_typ TYPE STANDARD TABLE OF zeile04_typ.
41
42 * Interne Tabellen deklarieren ohne Kopfzeile
43 DATA itab01 TYPE itab01_typ.
44 DATA itab02 TYPE itab02_typ.
45 DATA itab03 TYPE itab03_typ.
46 DATA itab04 TYPE itab04_typ.
47 DATA itab05 TYPE itab04_typ.
48
49 * Workareas für interne Tabellen deklarieren
50 DATA wa_itab01 TYPE zeile01_typ.
51 DATA wa_itab02 TYPE zeile02_typ.
52 DATA wa_itab03 TYPE zeile03_typ.
53 DATA wa_itab04 TYPE zeile04_typ.
54 DATA wa_itab05 TYPE zeile04_typ.

Listing 13.7    Include-Programm Z_TEILNEHMER_DEKLARATIONEN

1  *&----------------------------------------------------*
2 *& Include ZTEILNEHMER13_B_SELEKTIONSBILD
3 *&----------------------------------------------------*
4 SELECTION-SCREEN BEGIN OF BLOCK v13b
WITH FRAME TITLE text-001.
5 PARAMETERS: rsmw AS CHECKBOX, " Report starten mit
Wiederkehr
6 rsow AS CHECKBOX, " Report starten ohne
Wiederkehr, mit leerem Selektionsbildschirm
7 rsowas AS CHECKBOX, " Report starten ohne
Wiederkehr, mit ausgefülltem Selektionsbildschirm
8 rsowih AS CHECKBOX. " Report starten ohne
Wiederkehr, mit dunklem Selektionsbildschirm
9 SELECTION-SCREEN END OF BLOCK v13b.

Listing 13.8    Include-Programm Z_TEILNEHMERLISTE13_B_SELEKTIONSBILD

Anmerkungen zum Quellcode

Auch bei diesem Report ist die betriebswirtschaftliche Aufgabenstellung zweitrangig; im Vordergrund stehen die Darstellung der Aufruf- und Ablauflogik sowie die Datenübergabe.

Zeile 12 bis 30

Für die Datendeklarationen wird auf das gemeinsame Include-Programm zugegriffen. Die Deklarationen für den Selektionsbildschirm liegen in einem eigenen Include-Programm. Unter den Ereignissen liegen nur die Aufrufe der einzelnen Teilaufgaben. Die Ereignisse und die Ebenen des Reports sollten möglichst übersichtlich strukturiert sein.

Zeile 41 bis 58

Der fremde Report Z_TEILNEHMERLISTE13_A wird als integrierte Komponente aufgerufen. Mit dem Aufruf dieses Reports endet der Report Z_TEILNEHMERLISTE13_B – Report A ist sozusagen das alternative Ende von Report B. Ein Rücksprung in Report B nach dem Ende von Report A erfolgt nicht.

Über den Selektionsbildschirm von Report B wird gesteuert, wie der Absprung in Report A erfolgen soll. Im Quellcode-Beispiel gibt es hierzu drei Möglichkeiten:

  • Report A wird über dessen Selektionsbildschirm aufgerufen. Der Benutzer muss den Selektionsbildschirm ausfüllen und den Report über den Ausführen-Button (inline image) starten. Insgesamt erscheinen zwei Selektionsbildschirme nacheinander, zunächst der von Report B, dann der von Report A.

  • Report A wird über dessen Selektionsbildschirm gerufen, aber die Selektionsparameter für Report A werden übergeben; der Selektionsbildschirm von Report A enthält Vorschlagswerte. Der Benutzer kann diese Vorschlagswerte prüfen, übernehmen oder ändern und Report A wiederum über den Ausführen-Button (inline image) starten.

  • Report A werden die Selektionsparameter übergeben, ohne dass der Selektionsbildschirm des Reports angezeigt wird. Der Benutzer füllt nur den Selektionsbildschirm von Report B aus; Report A läuft unsichtbar im Hintergrund.

In allen drei Fällen wird aber nach dem Ende von Report A nicht zu Report B zurückgekehrt.

Zeile 67 bis 82

Zunächst wird aus dem SAP Memory der Parameter RID gelesen, der den Programmnamen von Report B enthält. Anschließend wird der Programmname in die Parameter-ID Z_TEST geschrieben. Nach dem Füllen der internen Tabelle über ein externes Unterprogramm werden die Rumpfzeilen der internen Tabelle in den Cluster, der im Feld PROGNAME steht, in das ABAP Memory geschrieben. Anschließend wird Report A so aufgerufen, dass nach dem Ende des Reports das System wieder zurück zu Report B verzweigt und die Verarbeitung mit der Anweisung fortsetzt, die der SUBMIT-Anweisung folgt.

Im gerufenen Report A wird der Inhalt der Parameter-ID Z_TEST geprüft. Steht dort ein Programmname, wurde Report A von einem anderen Programm aufgerufen. In diesem Fall wird der Cluster aus dem ABAP Memory gelesen und in eine interne Tabelle gestellt. Anschließend wird die interne Tabelle verarbeitet und die Parameter-ID initialisiert. Über den Inhalt dieser Parameter-ID kann Report A unterscheiden, ob er von einem Benutzer oder von einem fremden Report aufgerufen wurde.

Je nach Aufrufart reagiert Report A unterschiedlich:

  • Im Fall des Aufrufs durch einen fremden Report generiert der Report eine bestimmte Liste. Mit dem Zurück-Button (inline image) gelangt der Benutzer zuerst in die Listausgabe von Report B und dann in dessen Selektionsbildschirm. Der Selektionsbildschirm von Report A wird in diesem Fall nicht wieder gezeigt.

  • Wird Report A hingegen direkt vom Benutzer gestartet, generiert dieser Report zwar auch eine Liste, aber mit dem Zurück-Button (inline image) gelangen Sie in den Selektionsbildschirm von Report A und können dort entweder Report A noch einmal starten oder beenden.

Ausgabe des Quellcodes

Beim Selektionsbildschirm dieses Reports (siehe Abbildung 13.32) steht nicht die Datenselektion im Vordergrund, sondern die Ablaufsteuerung. Man könnte sich diesen Report als Wurzel einer Baumstruktur vorstellen: Von hier aus werden die weiteren Verarbeitungsschritte angestoßen und gesteuert; ausgeführt werden sie dann in den gerufenen Komponenten, Prozeduren und Reports. Mit dieser Art »Dach« kann man eine zentrale Steuerungskomponente für sachlich zusammengehörende Reports bauen.

Selektionsbildschirm Z_TEILNEHMERLISTE13_B

Abbildung 13.32    Selektionsbildschirm Z_TEILNEHMERLISTE13_B

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in ABAP Einstieg in ABAP
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: SAP – Der technische Einstieg
SAP – Der technische Einstieg


Zum Rheinwerk-Shop: ABAP Objects – Das umfassende Handbuch
ABAP Objects – Das umfassende Handbuch


Zum Rheinwerk-Shop: ABAP-Entwicklung für SAP S/4HANA
ABAP-Entwicklung für SAP S/4HANA


Zum Rheinwerk-Shop: Kundeneigene Erweiterungen mit ABAP
Kundeneigene Erweiterungen mit ABAP


Zum Rheinwerk-Shop: Schrödinger programmiert ABAP
Schrödinger programmiert ABAP


Zum Rheinwerk-Shop: Migration nach SAP S/4HANA
Migration nach SAP S/4HANA


Zum Rheinwerk-Shop: Design Thinking mit SAP
Design Thinking mit SAP


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2020
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
[Rheinwerk]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern