This is a test message to test the length of the message box.
Login
ABAP Cloud Datum aufbereiten
Erstellt von Software-Heroes

ABAP Cloud - Datum aufbereiten

93

Wie kannst du eigentlich ein Datum in ABAP Cloud in das passende Ausgabeformat bekommen? Schauen wir uns dazu ein Beispiel im System an.

Werbung


In diesem Artikel schauen wir uns verschiedene Varianten an, wie du ein Datum für die Ausgabe vorbereiten kannst, welche Möglichkeiten es gibt und wie du sie nutzen kannst.

 

Einleitung

Normalerweise übernimmt die Datumsaufbereitung das System für dich, wenn zum Beispiel ein Datum im Fiori UI angezeigt wird. Abhängig von der eingestellten Sprache und den weiteren Einstellungen des Users, kann das Datum entsprechend flexibel angezeigt und aufbereitet werden. Dies wird als externes Format bezeichnet.

 

Schauen wir uns ein Datum im ABAP Format an, also zur Laufzeit im System, dann folgt das Datum immer der gleichen Regel, um von dort in das externe Format konvertiert werden zu können. Solche Aufbereitungen brauchen wir zum Beispiel beim Druck oder Mailversand.

 

String Template

String Templates gibt es bereits seit einer ganzen Weile und damit kannst du ganz einfach verschiedene Texte zusammenfügen, diese aber auch entsprechend Formatieren. Wollen wir zum Beispiel ein Datum im aktuell eingestellten Userformat ausgeben, dann können wir aus dem Bereich DATE das Format für USER wählen. Die Dokumentation für weitere Formate findest du unten im Artikel verlinkt.

output = |{ actual_date DATE = USER }|.

 

Allerdings bringt uns diese Aufbereitung nicht, wenn wir ein spezifisches Format haben wollen. Zum Beispiel wollen wir das aktuelle Format für Deutschland haben, dann können wir den Zusatz für COUNTRY angeben. Grundsätzlich funktioniert das auch für andere Datentypen, wie Uhrzeit, Zahlen oder Timestamps.

output = |{ actual_date COUNTRY = 'DE ' }|.

 

Wenn du dir die Ausgabe anschaust, dann ist das Leerzeichen bei DE auch gewollt. Ohne das Leerzeichen gibt der Compiler eine Fehlermeldung aus und weißt uns auf das richtige Format hin.

 

CL_ABAP_DATFM

Eine Alternative zu den String Templates ist die Klasse CL_ABAP_DATFM, diese ist ebenfalls für ABAP Cloud freigegeben. Diese bietet zahlreiche Hilfsmethoden zur Aufbereitung von Daten zur Laufzeit. Schauen wir uns dazu einmal die öffentlichen Methoden der Klasse an.

 

Wir haben hier einige Prüfmethoden die mit CHECK beginnen, einige GET Methoden um verschiedene Einstellungen zu lesen und die CONV Methoden, um spezifische Konvertierungen durchzuführen. Im ersten Schritt müssen wir uns das Datumsformat für das Land ermitteln. Dieses wird aus dem Länder Customizing abgeleitet. Dann rufen wir die Konvertierung mit dem Format auf. Bei der Klasse müssen wir allerdings auch das Fehlerhandling übernehmen und die Ausnahme abfangen.

DATA(format_de) = cl_abap_datfm=>get_country_datfm( 'DE' ).

TRY.
    cl_abap_datfm=>conv_date_int_to_ext( EXPORTING im_datint   = actual_date
                                                   im_datfmdes = format_de
                                         IMPORTING ex_datext   = output ).

  CATCH cx_abap_datfm_format_unknown.
ENDTRY.

 

Eine ähnliche Methode können wir auch verwenden, wenn wir zum Beispiel das kurze Datum ohne das Jahr haben wollen. In diesem Beispiel erzeugen wir die Ausgabe für die USA.

DATA(format_us) = cl_abap_datfm=>get_country_datfm( 'US' ).

TRY.
    cl_abap_datfm=>conv_date_int_to_shortex( EXPORTING im_datint     = actual_date
                                                       im_datfmdes   = format_us
                                             IMPORTING ex_abbrdatext = output ).

  CATCH cx_abap_datfm_format_unknown.
ENDTRY.

 

Schauen wir uns zum Abschluss das Ergebnis in der Konsole an, wo wir die verschiedenen Methoden miteinander vergleichen können. Der Mehrwert der Klasse liegt vor allem in den zahlreichen Möglichkeiten ein Datum darzustellen und auch Aufbereitungen für ein Jahr oder ein kurzes Datum zu erhalten.

 

Vollständiges Beispiel

Hier findest du das vollständige Beispiel der oben gezeigten Code Snippets in der vollständigen Klasse. Du kannst das Beispiel in dein System kopieren und direkt mit dem Experimentieren starten.

CLASS zcl_bs_demo_date_conversion DEFINITION
  PUBLIC FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

  PRIVATE SECTION.
    DATA out    TYPE REF TO if_oo_adt_classrun_out.
    DATA output TYPE string.

    METHODS print
      IMPORTING !description TYPE string DEFAULT ``.

    METHODS use_string_template
      IMPORTING actual_date TYPE d.

    METHODS use_datfm_class
      IMPORTING actual_date TYPE d.
ENDCLASS.


CLASS zcl_bs_demo_date_conversion IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    me->out = out.
    DATA(actual_date) = zcl_syst=>create( )->system_date( ).

    use_string_template( actual_date ).
    use_datfm_class( actual_date ).
  ENDMETHOD.


  METHOD print.
    IF description IS INITIAL.
      out->write( output ).
    ELSE.
      out->write( |{ description }: { output }| ).
    ENDIF.
  ENDMETHOD.


  METHOD use_string_template.
    output = |{ actual_date DATE = USER }|.
    print( `Format for User` ).

    output = |{ actual_date COUNTRY = 'DE ' }|.
    print( `Country (DE)` ).

    output = |{ actual_date COUNTRY = 'US ' }|.
    print( `Country (US)` ).
  ENDMETHOD.


  METHOD use_datfm_class.
    DATA(format_de) = cl_abap_datfm=>get_country_datfm( 'DE' ).
    DATA(format_us) = cl_abap_datfm=>get_country_datfm( 'US' ).

    TRY.
        cl_abap_datfm=>conv_date_int_to_ext( EXPORTING im_datint   = actual_date
                                                       im_datfmdes = format_de
                                             IMPORTING ex_datext   = output ).
        print( `DATFM Date (DE)` ).

      CATCH cx_abap_datfm_format_unknown.
    ENDTRY.

    TRY.
        cl_abap_datfm=>conv_date_int_to_shortex( EXPORTING im_datint     = actual_date
                                                           im_datfmdes   = format_us
                                                 IMPORTING ex_abbrdatext = output ).
        print( `DATFM Shortex (US)` ).

      CATCH cx_abap_datfm_format_unknown.
    ENDTRY.

    TRY.
        cl_abap_datfm=>conv_date_int_to_shortex( EXPORTING im_datint     = actual_date
                                                           im_datfmdes   = format_de
                                                 IMPORTING ex_abbrdatext = output ).
        print( `DATFM Shortex (DE)` ).

      CATCH cx_abap_datfm_format_unknown.
    ENDTRY.
  ENDMETHOD.
ENDCLASS.

 

Fazit

Die Aufbereitung des Datums muss nicht immer schwer sein. SAP stellt in ABAP Cloud verschiedene Alternativen zur Verfügung, die recht einfach zu nutzen sind, um das richtige Zielformat zu erhalten. Damit sparst du dir eventuelle Teilstringzugriffe, um das Datum in das passende Format zu bekommen, vor allem wenn es um länderspezifische Formate geht.

 

Quelle:
SAP Help - String Template (Format options)
ABAP Cloud - Systemfelder


Enthaltene Themen:
ABAP CloudABAPDatumAusgabeCL_ABAP_DATFM
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP Cloud - Message Logging

Kategorie - ABAP

Wie loggst du im Moment eigentlich Nachrichten über größere Blöcke von ABAP Code und wie gehst du dabei mit den unterschiedlichen Formaten um? Mal wieder ein neues Open Source Projekt.

22.08.2025

ABAP Cloud - Clean Core Level Concept

Kategorie - ABAP

Das neue Clean Core Level Concept für ABAP Cloud ist da, dieses löst das 3-TIER Model ab. In diesem Artikel schauen wir uns die Änderungen und Anpassungen im Detail an.

15.08.2025

ABAP Cloud - Test Daten Container

Kategorie - ABAP

Test Daten Container sind unter ABAP Cloud nicht freigegeben, wie also auf generische Testdaten zugreifen können? Hier ein Vorschlag für ein einfaches Framework.

08.07.2025

ABAP Cloud ... ohne BTP?

Kategorie - ABAP

In diesem Artikel gehen wir der Frage nach, ob ABAP Cloud auch ohne BTP möglich ist und was du dabei beachten solltest.

24.06.2025

ABAP Cloud - Fähigkeiten für den Start

Kategorie - ABAP

Wann kannst du eigentlich mit moderner ABAP Entwicklung starten und welche Fähigkeiten brauchst du dafür mindestens? Lass uns diese Frage gemeinsam klären.

17.06.2025