Ansicht
Dokumentation

ABENCONVERSION_EXITS - CONVERSION EXITS

ABENCONVERSION_EXITS - CONVERSION EXITS

CPI1466 during Backup   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

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 einen 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 eine 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

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.
  • Es kann ein optionaler Eingabeparameter mir dem vordefinierten Namen REFVAL angelegt werden. Dieser bekommt bei der Konvertierung eines Dynpro-Felds vom Typ CURR oder QUAN automatisch den Wert eines zugeordneten Referenzfelds vom Typ CUKY bzw. UNIT zugewiesen. Bei WRITE USING EDIT MASK wird der Eingabeparameter REFVAL nicht versorgt.
  • Zusätzliche optionale Eingabeparameter sind möglich, werden aber nicht automatisch versorgt.
  • 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 beschreibt die Auswirkungen der Konvertierung.

Ausnahmen in Konvertierungsroutinen führen immer zu einem Programmabbruch. Konvertierungsroutinen können nur mit dem Zwei-Prozess-Debugger debuggt werden.

Hinweise

  • Es sollte darauf geachtet werden, dass die OUTPUT-Konvertierung sehr performant ist, 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.






General Material Data   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8166 Date: 20240523 Time: 154718     sap01-206 ( 107 ms )