Anfang des Inhaltsbereichs

Einstiegsbilder über SPA/GPA-Parameter füllen Dokument im Navigationsbaum lokalisieren

Um die Eingabefelder einer aufgerufenen Transaktion mit Daten aus dem aufrufenden Programm zu versorgen kann die SPA/GPA-Technik verwendet werden. SPA/GPA-Parameter sind Werte, die im globalen benutzerbezogenen SAP-Memory gepeichert sind. Mit dem SAP-Memory können Werte transaktionsübergreifend zwischen Programmen übergeben werden. Das SAP-Memory steht einem Benutzer während der gesamten Dauer einer Terminalsitzung und für alle parallelen Modi zur Verfügung. Jeder SPA/GPA-Parameter wird durch eine 20-stellige Kennung identifiziert. Die Pflege von SPA/GPA-Parametern erfolgt beispielsweise im Repository Browser der ABAP Workbench. Die Speicherung von Werten in SPA/GPA-Parametern ist benutzerspezifisch.

ABAP-Programme haben über die Anweisungen SET PARAMETER und GET PARAMETER Zugriff auf die SPA/GPA-Parameter.

Zum Füllen eines SPA/GPA-Parameters verwendet man:

SET PARAMETER ID <pid> FIELD <f>.

Diese Anweisung speichert den Inhalt des Felds <f> unter der Kennung <pid> im SAP-Memory. Die Kennung <pid> kann aus zwanzig Zeichen bestehen. Die Anweisung überschreibt einen schon vorhandenen Wert mit der Kennung <pid>. Durch Doppelklick auf <pid> im ABAP-Editor können nichtvorhandene Parameter als Repository-Objekt erzeugt werden.

Zum Lesen eines SPA/GPA Parameters verwendet man:

GET PARAMETER ID <pid> FIELD <f>.

Diese Anweisung stellt den unter der Kennung <pid> abgelegten Wert in die Variable <f>. Falls das System keinen Wert zu <pid> im SAP-Memory findet, wird SY-SUBRC auf 4, ansonsten auf 0 gesetzt.

Um Einstiegsbilder über SPA/GPA-Parameter zu füllen, benötigt man normalerweise nur die Anweisung SET PARAMETER.

Die Voraussetzung für das Füllen von Eingabefeldern über SPA/GPA-Parameter ist eine Verknüpfung dieser Felder mit jeweils einem SPA/GPA-Parameter.

Bei Selektionsbildern erfolgt die Verknüpfung mit dem Zusatz MEMORY ID der Anweisungen PARAMETERS oder SELECT-OPTIONS. Wenn bei der Deklaration eines Parameters oder eines Selektionskriteriums eine SPA/GPA-Parameterkennung angegeben wird, ist das entsprechende Eingabefeld mit dem Parameter verknüpft.

Bei Dynpros erfolgt die Verknüpfung während der Definition des Dynpros mit dem Werkzeug Screen Painter. Beim Setzen der Feldattribute eines Eingabefelds kann im Attribut Parameter-Id die Kennung eines SPA/GPA-Parameters angegeben werden. In den Ankreuzfeldern SET-Parameter und GET-Parameter kann festgelegt werden, ob zum Zeitpunkt PBO das Dynprofeld mit dem Wert des SPA/GPA-Parameters gefüllt wird, bzw. ob zum Zeitpunkt PAI der SPA/GPA-Parameter mit der Benutzereingabe auf dem Dynpro gefüllt wird.

Wenn ein Eingabefeld mit SPA/GPA-Parametern verknüpft ist, wird es bei jedem Senden des Bildschirmbilds mit dem derzeitigen Wert des Parameters initialisiert. Solche Verknüpfungen mit SPA/GPA-Parametern sind normalerweise der Grund dafür, daß Eingabefelder auf den Bildschirmbildern des R/3-Systems bei wiederholten Aufrufen oft mit den alten Werten vorgefüllt sind.

Bei Programmaufrufen können diese Verknüpfungen ohne weiteren ABAP-Programmieraufwand ausgenutzt werden, wenn beispielsweise das aufrufende und das aufgerufene Programm diesselben Mußfelder auf ihren Einstiegsbildern haben. Das System überträgt dann die Eingabefeldinhalte des aufrufenden Programms automatisch in die Eingabefelder des aufgerufenen Programms

Um die Eingabefelder des aufgerufenen Programms programmgesteuert zu setzen verwendet man vor dem Programmaufruf die Anweisung SET PARAMETER. Diese Technik ist besonders dann zu empfehlen, wenn das Einstiegsbild übergangen werden soll, da hierfür alle Mußfelder gefüllt werden müssen.

Für das Setzen der SPA/GPA-Parameter vor dem Aufruf von Programmen muß bekannt sein, welche SPA/GPA-Parameter mit den Eingabefeldern des Einstiegsbilds verknüpft sind. Hierfür kann man beispielsweise das Programm starten, den Cursor auf den Eingabefeldern plazieren, und die F1-Hilfe wählen. Nach der Auswahl von Technische Info auf dem folgenden Dialogfenster, findet man den jeweils zugehörigen SPA/GPA-Parameter im Feld Parameter-Id. Man kann sich natürlich auch die Definition des Einstiegsbilds im Screen Painter ansehen.

Beispiel

Die technische Info für das erste Eingabefeld des Einstiegsbilds einer Verbuchungstransaktion sieht beispielsweise folgendermaßen aus:

Diese Grafik wird im zugehörigen Text erklärt

Demnach hat der SPA/GPA-Parameter für das Eingabefeld Fluggesellschaft die Kennung CAR. Auf gleiche Weise finden Sie für die übrigen Eingabefelder die Kennungen CON, DAY und BOK.

Das folgende ausführbare Programm ist mit der logischen Datenbank F1S verknüpft und ruft die Verbuchungstransaktion auf:

REPORT bookings NO STANDARD PAGE HEADING.

TABLES sbook.

START-OF-SELECTION.
  WRITE: 'Select a booking',
       / '----------------'.
  SKIP.

GET sbook.
  WRITE: sbook-carrid, sbook-connid,
         sbook-fldate, sbook-bookid.
  HIDE:  sbook-carrid, sbook-connid,
         sbook-fldate, sbook-bookid.

AT LINE-SELECTION.
  SET PARAMETER ID: 'CAR' FIELD sbook-carrid,
                    'CON' FIELD sbook-connid,
                    'DAY' FIELD sbook-fldate,
                    'BOK' FIELD sbook-bookid.
  CALL TRANSACTION 'BOOK'.

Die Grundliste des Programms zeigt Felder aus der Datenbanktabelle SBOOK entsprechend der Benutzereingaben auf dem Selektionsbild. Diese Daten werden auch im HIDE-Bereich jeder Zeile abgelegt

Diese Grafik wird im zugehörigen Text erklärt

Wählt der Benutzer eine Zeile der Buchungsdaten durch Dopelklick aus, werden bei dem Ereignis AT LINE-SELECTION die abgelegten Daten aus dem HIDE-Bereich geholt und in die SPA/GPA-Parameter des Einstiegsbilds der Transaktion gestellt. Danach wird die Transaktion aufgerufen. Da das Einstiegsbild nicht mit AND SKIP FIRST SCREEN unterdrückt wird, erscheint es z.B. wie folgt gefüllt:

Diese Grafik wird im zugehörigen Text erklärt

Wäre der Zusatz AND SKIP FIRST SCREEN bei der Anweisung CALL TRANSACTION angegeben und ein Folgebild definiert, würde sofort das zweite Bild der Transaktion erscheinen, da alle Mußfelder ausgefüllt sind.

Ende des Inhaltsbereichs