Anfang des Inhaltsbereichs

Hintergrunddokumentation Eingabe- und Ausgabekonvertierungen  Dokument im Navigationsbaum lokalisieren

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, kann Sie durch die Angabe einer Konvertierungsroutine in der zugrundeliegenden Domäne übersteuert werden.

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:

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.

Wann wird eine Konvertierungsroutine ausgeführt?

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. Die Konvertierungsroutine der Domäne wird auch bei der Ausgabe des Feldinhalts mittels der ABAP-Anweisung WRITE angestoßen.

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 soll die Flugdauer in der Form HHH:MM (Stunden:Minuten) eingegeben und angezeigt werden. Auf der Datenbank soll die eingegebene Flugdauer aber als Integer-Zahl (Anzahl der Minuten, die der Flug dauert) abgespeichert werden. Die Eingabe 3:27 wird also als 207 (3 Stunden 27 Minuten = 207 Minuten) auf der Datenbank abgespeichert.

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

Diese Grafik wird im zugehörigen Text erklärt

Eine Konvertierungsroutine kann 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 angestoßen werden. Mit dem Zusatz USING NO EDIT MASK bei der WRITE-Anweisung wird eine bei der Domäne definierte Konvertierungsroutine bei der Ausgabe übergangen.

Parameter

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 sollten kein Bezugsfeld haben, da der beim Aufruf übergebene Wert eine andere Länge als eigentlich 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 (weniger sinnvoll) S-Messages ausgelöst werden. E-Messages führen zu einem Fehlerdialog. Ausnahmen werden beim Aufruf nicht abgefangen.

Die Ausgabe-Konvertierung wird auch bei WRITE und WRITE-TO angestoßen. Bei Listen erfolgt der Aufruf der Konvertierungsroutine also unter Umständen sehr häufig. Deshalb sollte 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.