Anfang des Inhaltsbereichs

Funktionsdokumentation Eingabe- und Ausgabekonvertierungen  Dokument im Navigationsbaum lokalisieren

Verwendung

Beim Umwandeln des Inhalts eines Bildschirmfeldes vom Anzeigeformat in das SAP-interne Format und umgekehrt erfolgt je nach Datentyp des Feldes eine Konvertierung. Falls diese Standardkonvertierung ungeeignet ist, können Sie sie durch Angabe einer Konvertierungsroutine in der zugrundeliegenden Domäne übersteuern.

Eine Konvertierungsroutine wird über einen fünfstelligen Namen identifiziert und ist als Gruppe von zwei Funktionsbausteinen abgelegt. Die Funktionsbausteine haben dabei eine festgelegte Namenskonvention. Der Konvertierungsroutine xxxxx sind folgende Funktionsbausteine zugeordnet:

      CONVERSION_EXIT_xxxxx_INPUT

      CONVERSION_EXIT_xxxxx_OUTPUT

Der INPUT-Baustein führt die Konvertierung vom Anzeigeformat in das interne Format durch, der OUTPUT-Baustein umgekehrt die Konvertierung vom internen Format in das Anzeigeformat.

Funktionsumfang

Ausführung der Konvertierungsroutine

Verweist ein Bildschirmfeld auf eine Domäne mit Konvertierungsroutine, so wird diese Konvertierungsroutine beim Sichern einer Eingabe in dieses Bildschirmfeld oder beim Anzeigen von Werten über dieses Bildschirmfeld automatisch ausgeführt.

Hinweis

Die Konvertierungsroutine der Domäne wird auch bei der Ausgabe des Feldinhalts mittels der ABAP-Anweisung WRITE angestoßen.

Das folgende Beispiel erläutert eine Konvertierungsroutine für eine Tabelle.

Beispiel

Die Tabelle SPFLI im Flugmodell enthält Informationen zu den von den Fluggesellschaften angebotenen Flügen. Zu jedem Flug ist im Feld FLTIME die Flugdauer vermerkt. Auf Eingabemasken wird die Flugdauer in der Form HHH:MM (Stunden:Minuten) eingegeben und angezeigt. Auf der Datenbank wird die eingegebene Flugdauer als ganze Zahl (Anzahl der Minuten, die der Flug dauert) abgespeichert. Die Eingabe 3:27 wird als 207 (3 Stunden 27 Minuten = 207 Minuten) auf der Datenbank abgespeichert.

Das Feld FLTIME zeigt auf die Domäne S_DURA, der die Konvertierungsroutine SDURA zugeordnet ist. Die beschriebene Wertekonvertierung wird von den beiden Funktionsbausteinen CONVERSION_EXIT_SDURA_INPUT und CONVERSION_EXIT_SDURA_OUTPUT durchgeführt.

Dieses Beispiel wird in der folgenden Abbildung dargestellt.

Diese Grafik wird im zugehörigen Text erklärt

Hinweis

Sie können eine Konvertierungsroutine auch durch Angabe ihres fünfstelligen Namens bei den Attributen eines Feldes im Screen Painter oder durch den Zusatz USING EDIT MASK <Name der Konvertierungsroutine>  bei der WRITE-Anweisung im Programm anstoßen. Mit dem Zusatz USING NO EDIT MASK bei der WRITE-Anweisung wird eine bei der Domäne definierte Konvertierungsroutine bei der Ausgabe übergangen.

Beide Funktionsbausteine einer Konvertierungsroutine müssen genau zwei Parameter mit den Namen INPUT und OUTPUT für den zu konvertierenden Wert und den konvertierten Wert haben.

Der INPUT-Parameter bei der INPUT-Konvertierung und der OUTPUT-Parameter bei der OUTPUT-Konvertierung dürfen kein Bezugsfeld haben, da der beim Aufruf übergebene Wert eine andere Länge als erwartet haben kann.

Programmierung von Konvertierungsroutinen

ABAP-Anweisungen, die zu einer Unterbrechung der Verarbeitung führen (z.B. CALL SCREEN, CALL DIALOG, CALL TRANSACTION, SUBMIT, COMMIT WORK, ROLLBACK WORK, MESSAGE I, MESSAGE W), sind in Konvertierungsroutinen nicht erlaubt.

Bei der Ausgabe-Konvertierung sind höchstens A-Messages sinnvoll, bei der Eingabe-Konvertierung können A-, E- sowie (wenig sinnvoll) S-Messages ausgelöst werden. E-Messages führen zu einem Fehlerdialog. Ausnahmen werden beim Aufruf nicht abgefangen.

Die Ausgabekonvertierung wird auch bei WRITE und WRITE TO angestoßen. Bei Listen erfolgt der Aufruf der Konvertierungsroutine unter Umständen sehr häufig. Deshalb muss die Ausgabe-Konvertierung möglichst effizient programmiert sein.

In Konvertierungsroutinen sollten keine externen Performs verwendet werden. Extern aufgerufene Programme nutzen die Tabellenarbeitsbereiche des ersten aufrufenden Hauptprogramms. Dies kann bei Konvertierungsroutinen zu schwer analysierbaren Fehlern führen, da diese zu manchmal unvorhergesehenen Zeitpunkten im Programmablauf aufgerufen werden.

 

 

 

Ende des Inhaltsbereichs