SAP NetWeaver AS ABAP Release 750, ©Copyright 2016 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation →
ABAP - Referenz →
Benutzerdialoge →
Konvertierungsroutinen
Eine Konvertierungsroutine (auch Konvertierungs-Exit genannt) dient dazu, die standardmäßige
Konvertierung, die bei der Übertragung von Werten von einem ABAP-Datenobjekt in ein Dynpro-Feld
bzw. von einem Dynpro-Feld in ein ABAP-Datenobjekt sowie bei der Aufbereitung von Daten mit den Anweisungen
WRITE und
WRITE TO stattfindet, durch eine selbst geschriebene Implementierung zu übersteuern.
Eigenschaften von Konvertierungsroutinen
Ein Konvertierungsroutine hat eine fünfstelligen Namen CNVRT, über den sie
- durch den Zusatz USING EDIT MASK bei der WRITE-Anweisung angegeben werden kann.
Technisch gesehen besteht eine Konvertierungsroutine aus zwei
Funktionsbausteinen.
Die Zugehörigkeit der Funktionsbausteine zur Konvertierungsroutine wird durch eine Namenskonvention hergestellt:
- Ein Funktionsbaustein namens CONVERSION_EXIT_CNVRT_INPUT führt die Konvertierung vom Anzeigeformat in die ABAP-Darstellung durch, wenn CNVRT der fünfstellige Name der Konvertierungsroutine ist.
- Ein Funktionsbaustein namens CONVERSION_EXIT_CNVRT_OUTPUT führt die Konvertierung von der
ABAP-Darstellung in das Anzeigeformat durch, wenn CNVRT der fünfstellige Name der Konvertierungsroutine ist.
Ausführung von Konvertierungsroutinen
Konvertierungsroutinen werden wie folgt ausgeführt:
- Ist ein Dynpro-Feld
mit Bezug auf eine Domäne mit Konvertierungsroutine definiert oder ist ihm in seinen Eigenschaften
direkt eine Konvertierungsroutine zugeordnet, wird der INPUT-Funktionsbaustein bei der Übernahme
von Eingaben in das zugehörige Bildschirmfeld nach ABAP und der OUTPUT-Funktionsbaustein bei
der Übergabe von Ausgaben von ABAP in das Bildschirmfeld automatisch ausgeführt und jeweils der konvertierte Inhalt verwendet.
- Ist ein ABAP-Datenobjekt
mit Bezug auf ein Domäne mit Konvertierungsroutine deklariert, wird der OUTPUT-Funktionsbaustein
bei der Aufbereitung des Inhalts mit WRITE
oder WRITE TO standardmäßig
ausgeführt und der konvertierte Inhalt ausgegeben bzw. zugewiesen. Das Standardverhalten kann mit dem Zusatz USING [NO] EDIT MASK übersteuert werden.
Natürlich können die Funktionsbausteine auch wie üblich aufgerufen und getestet werden.
Funktionsbausteine für Konvertierungsroutinen
Die Funktionsbausteine müssen außer der Namenskonvention folgenden Anforderungen genügen:
- Beide Funktionsbausteine sollten in einer gemeinsamen
Funktionsgruppe implementiert sein, die sonst keine Funktionsbausteine enthält.
- Beide Funktionen müssen die folgenden beiden obligatorischen Parameter haben:
- Eingabeparameter INPUT für den zu konvertierenden Wert
- Ausgabeparameter OUTPUT für den konvertierten Wert
-
Zusätzliche optionale Eingabeparameter sind möglich. Bei der INPUT-Konvertierung sollte
der Parameter INPUT und bei der OUTPUT-Konvertierung sollte der Parameter OUTPUT generisch sein, da der Typ des zugeordneten Dynpro- oder ABAP-Felds sich je nach Verwendung ändern kann.
- In den Funktionsbausteinen dürfen keine Anweisungen ausgeführt werden, durch die der Programmablauf unterbrochen oder eine
SAP-LUW beendet wird. Bei der OUTPUT-Konvertierung sind höchstens
Abbruchmeldungen sinnvoll. Bei der INPUT-Konvertierung können
Abbruchmeldungen,
Fehlermeldungen sowie (wenig brauchbar)
Statusmeldungen gesendet werden. Fehlermeldungen führen zu einem Fehlerdialog.
- Die Dokumentation der beiden Funktionsbausteine sollte die Wirkung der Konvertierung beschreiben.
Ausnahmen in Konvertierungsroutinen führen immer zu einem Programmabbruch. Konvertierungsroutinen können nur mit dem Zwei-Prozess-Debugger debuggt werden.
Hinweise
- Die OUTPUT-Konvertierung sollte sehr performant sein, da ein OUTPUT-Funktionsbaustein bei einer Listenausgabe sehr häufig aufgerufen werden kann.
- Für Konvertierungsroutinen gilt besonders die
Regel, keine externen Unterprogramme aufzurufen, da deren Zuordnung zu einer
Programmgruppe in diesem Fall kaum nachvollziehbar ist.
Beispiel
Die Funktionsbausteine CONVERSION_EXIT_SDURA_INPUT und CONVERSION_EXIT_SDURA_OUTPUT
der Konvertierungsroutine SDURA. Die Konvertierungsroutine wandelt bei der Ausgabe Sekunden in Minuten bzw. Minuten in Stunden um und bei der Eingabe Minuten in Sekunden bzw. Stunden in Minuten.