[ABAP] Datenelemente anhand von Datentypen und Suchstrings (Tabelle DD01L, DD01T) suchen

In der Praxis kommt es oft vor, dass man zu einem Datenelement oder einer Tabelle einen passenden fertigen SAP-Datentyp aus dem DDIC sucht. Dieses kleine Programm hilft dabei, schnell und effizient das passende aus den Tabellen DD01L und DD01T zu suchen (Datentyp, Sprache, Kurztext).

* Datentyp
PARAMETERS: p_dtyp TYPE dd04l-datatype DEFAULT 'DATS'.
* Sprache
PARAMETERS: p_lang TYPE dd04t-ddlanguage DEFAULT 'D'.
* Suchtext für Suche in Kurzbeschreibung
PARAMETERS: p_search TYPE string LOWER CASE.

START-OF-SELECTION.

  SELECT dl~rollname,  " Datenelement
         dl~domname,   " Domäne
         dl~datatype,  " Datentyp
         dl~leng,      " Zahl der Stellen
         dl~memoryid,  " Parameter-Id
         dl~entitytab, " Wertetabelle
         dt~ddtext     " Kurzbeschreibung
    INTO TABLE @DATA(it_result)
    FROM dd04l AS dl
    INNER JOIN dd04t AS dt ON ( dl~rollname = dt~rollname AND dl~dtelmaster = dt~ddlanguage AND dl~as4local = dt~as4local AND dl~as4vers = dt~as4vers )
    WHERE dl~as4local   = 'A'
      AND dl~datatype   = @p_dtyp
      AND dt~ddlanguage = @p_lang.

  IF sy-subrc = 0.
    TRY.
        DATA(it_result2) = it_result.

* wenn nach bestimmten Inhalt gesucht werden soll -> Filtern
        IF NOT p_search IS INITIAL.
          it_result2 = VALUE #( FOR <s> IN it_result WHERE ( ddtext CS p_search )
                                (
                                   <s>
                                )
                              ).
        ENDIF.

* SALV-Table
        DATA: o_salv TYPE REF TO cl_salv_table.

        cl_salv_table=>factory( IMPORTING
                                  r_salv_table   = o_salv
                                CHANGING
                                  t_table        = it_result2 ).

* Grundeinstellungen
        o_salv->get_functions( )->set_all( abap_true ).
        o_salv->get_columns( )->set_optimize( abap_true ).
        o_salv->get_display_settings( )->set_list_header( |Datentypen ({ lines( it_result2 ) })| ).
        o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
        o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* Spaltenüberschriften: technischer Name und Beschreibungstexte
        LOOP AT o_salv->get_columns( )->get( ) ASSIGNING FIELD-SYMBOL(<c>).
          DATA(o_col) = <c>-r_column.
          o_col->set_short_text( || ).
          o_col->set_medium_text( || ).
          o_col->set_long_text( |{ o_col->get_columnname( ) } [{ o_col->get_long_text( ) }]| ).
        ENDLOOP.

        o_salv->display( ).
      CATCH cx_root INTO DATA(e_txt).
        WRITE: / e_txt->get_text( ).
    ENDTRY.
  ENDIF.

Links

[ABAP] Übersicht SAP-Klassen und -Interfaces

Klasse                        Paket                         Funktion

/ui2/cl_abap2json             /UI2/BASIS_SERVICES_START_UP  ABAP nach JSON konvertieren
/ui2/cl_json                  /UI2/NWBC_CORE                JSON converter
/ui2/cl_number                /UI2/BASIS_TINY_DATA          Generic compressed serialization class

/ui5/cl_theme_util            /UI5/THEMING_INFRA            UI Theming: Utility functions

cf_reca_message_list          RE_CA_BC                      Nachrichtensammler: Factory

cl_abap_browser               SABAPDOCU                     Anzeige einer HTML- oder XML-Datei
cl_abap_char_utilities        S ABP_CONVERT                 Hilfsmittel für Zeichenverarbeitung
cl_abap_classdescr            SABP_RTTI                     Run Time Type Services
cl_abap_codepage              SABP_CONVERT                  codepage utility class
cl_abap_conv_obj              SCP                           Ein CCC Converter-Objekt
cl_abap_container_utilities   SABP_CONVERT                  Container Programmierung
cl_abap_conv_in_ce            SABP_CONVERT                  Codepage- und Endian Konvertierung (Extern -> Systemformat)
cl_abap_conv_out_ce           SABP_CONVERT                  Codepage- und Endian Konvertierung (Systemformat -> Extern)
cl_abap_datadescr             SABP_RTTI                     Run Time Type Services
cl_abap_datfm                 SABP_CONVERT                  Internationalisierung und Datumsformat
cl_abap_dyn_prg               SABP                          Support for dynamic programming
cl_abap_elemdescr             SABP_RTTI                     Run Time Type Services
cl_abap_exceptional_values    SABP_CORE                     Liefert min,max...-Werte vordefinierter Typen
cl_abap_file_utilities        SABP                          Hilfsmittel für Files
cl_abap_format                SABP                          Hilfsmittel zur Formatierung
cl_abap_gzip                  ABAP_EXPIMP                   Klasse zur (De-) Kompression (gzip)
cl_abap_hmac                  SECH                          Message Authentication Code (MAC) einer Nachricht
cl_abap_list_layout           SABP_LIST_TOOLS               Hilfsmittel für ABAP-Listen
cl_abap_matcher               SABP_REGEX                    Reguläre Ausdrücke
cl_abap_message_digest        SECH                          Kryptografischer Hash-Wert einer Nachricht
cl_abap_memory_utilities      SABP_CORE                     Hilfsmittel zur ABAP-Speicherverwaltung
cl_abap_random                SABP_RANDOM                   Pseudozufallszahlengenerator
cl_abap_random_int            SABP_RANDOM                   Integer Zufallszahlen
cl_abap_random_float          SABP_RANDOM                   Float Zufallszahlen
cl_abap_runtime               SABP_RUNTIME                  Hilfsklasse für Laufzeitmessungen
cl_abap_session_temperature   SABP_DAAG                     DB-Zugriffssteuerung für Data Aging
cl_abap_stack_temperature     SABP_DAAG                     DB-Zugriffssteuerung für Data Aging
cl_abap_structdescr           SABP_RTTI                     Run Time Type Services
cl_abap_syst                  SABP_CORE                     Sichere Ermittlung der SYST-Werte
cl_abap_tabledescr            SABP_RTTI                     Run Time Type Services
cl_abap_timefm                SABP_CONVERT                  Zeitformat
cl_abap_tstmp                 SABP_CONVERT                  Arithmetik- und Konvertierung für TimeStamps
cl_abap_typedescr             SABP_RTTI                     Run Time Type Services
cl_abap_zip                   ABAP_EXPIMP                   Zip-Utility

cl_alink_connection           SAOP                          ArchiveLink Verknüpfungen

cl_alv_table_create           SLIS                          Dynamischer Create einer ALV-Datentabelle

cl_binary_relation            SOBL                          API für Binäre Verknüpfung

cl_bcs_convert                SBCOMS                        BCS: Utilities für den Dokumenteninhalt
cl_bcs_message                SBCS_SEND                     BCS: Nachricht versenden
cl_bcs_utilities              SBCS_SEND                     Hilfsfunktionen zur Sendeschnittstelle

cl_bs_period_toolset_basics   BS_PERIOD_API                 Period Toolset - Basic Functions

cl_ci_query_attributes        S_CODE_INSPECTOR              Code Inspector: Abfrage von Attributen

cl_clb_tools                  S_CLB_COMMON                  Collaboration: Common Tools
cl_clb_parse_json             S_CLB_COMMON                  Utility Class to Parse JSON
cl_ctmenu                     SGUI                          Context Menu
cl_cts_language_file_io       STRALAN                       Filezugriffklasse des Sprachentransports

cl_db_sys                     SABP_CORE                     Abfragen von Datenbank-Informationen
cl_demo_output                SABAP_DEMOS_OUTPUT_STREAM     Demo-Ausgaben mit statischen Methoden oder Instanzmethoden

cl_fdt_xl_spreadsheet         SFDT_EXCEL_CORE               FDT:Spreadsheet document

cl_fxs_image_processor        S_XSLFO_SUPPLEMENTARY_IMAGE   Image Processor
cl_fxs_image_info             S_XSLFO_SUPPLEMENTARY_IMAGE   Image Information Determiner
cl_fxs_mime_types             S_XSLFO_SUPPLEMENTARY         Mime Type Constants

cl_gos_attachment_query       SGOS_ATTA                     Statistiken für Anlagen

cl_gui_abapedit               SEDI                          Abap Edit Control
cl_gui_alv_grid               SLIS                          ALV List Viewer
cl_gui_calendar               SAPCALENDAR                   Calendar Control Proxy Class
cl_gui_cfw                    SCET                          Control Framework Basisklasse
cl_gui_chart_engine           SPIG                          Graphics: Präsentationsgrafiken
cl_gui_chart_engine_win       SPIG                          Graphics: Präsentationsgrafiken (WinGUI)
cl_gui_column_tree            SEU_TREE_CONTROL              Column Tree Control
cl_gui_container              SCET                          Abstracter Container fuer GUI Controls
cl_gui_control                SCET                          Proxy-Klasse für Control im GUI
cl_gui_custom_container       SCET                          Container fuer Custom Controls in der Dynpro Area
cl_gui_dialogbox_container    SCET                          Container fuer Custom Controls in der Dynpro Area
cl_gui_docking_container      SCET                          Docking Control Container
cl_gui_ecl_2dviewer           SECLVIEWER                    Engineering Client 2D Viewer
cl_gui_ecl_3dviewer           SECLVIEWER                    Engineering Client 3D Viewer
cl_gui_ecl_viewerbox          SECLVIEWER                    ECL Viewer als Pop-up Fenster
cl_gui_frontend_services      SCET                          Frontend Services
cl_gui_gos_container          SCET                          Generic Object Services Container
cl_gui_html_viewer            SAPHTML                       HTML Control proxy class
cl_gui_list_tree              SEU_TREE_CONTROL              List Tree Control
cl_gui_picture                SAPPICTURE                    SAP Picture Control
cl_gui_props_consumer         SCET                          Nimmt globale Gui-Props entgegen
cl_gui_simple_tree            SEU_TREE_CONTROL              Simple Tree Control
cl_gui_splitter_container     SCET                          Splitter Control
cl_gui_textedit               SAPTEXTEDIT                   SAP TextEdit Control
cl_gui_timer                  SCET                          SAP Timer Control
cl_gui_toolbar                SAPTOOLBAR                    Toolbar Control

cl_fdt_json                   SFDT_CORE                     Create JSON format from ABAP data and vice versa

cl_hrpad_date_computations    PAOC_PAD_DATE_COMPUTATIONS    Datumsberechnungen

cl_http_client                SHTTP                         HTTP client control block
cl_http_server                SIHTTP                        HTTP Framework (iHTTP) HTTP Server
cl_http_utility               SIHTTP                        HTTP Framework (iHTTP) HTTP Utilities

cl_icf_csv                    SHTTP                         ICF-Schnitstelle für CSV-File
cl_igs_image_converter        SPIG                          Internet Graphics Service: Image Converter

cl_openxml_helper             S_OOXML_CROSS                 OpenXML Helper Class

cl_s_aut_bal_log              S_AUT                         Meldungsprotokoll-Behandler

cl_salv_controller_metadata   SALV_OM_OBJECTS               ALV: abstrakter Controller
cl_salv_ex_util               SALV_EX                       utlity Klasse
cl_salv_table                 SALV_OM_OBJECTS               Basisklasse für einfache Tabellen

cl_time_chart_simple          S_DBMON_ORA_COCKPIT           Simple time chart (based on chart engine)

cl_xml_document               SWXML                         XML-Dokument für WF- WEB-Aktivität

if_salv_gui_table_ida         SALV_IDA_PUB                  ALV with integrated data access (ALV with IDA)

[ABAP] RTTI / RTTC / RTTS: Verwendung von Typdescriptoren

* Typ-Beispiele:
* Struct
*   RSDSSELOPT
* Table
*   RSELOPTION
* Klasse
*   CL_DEMO_OUTPUT
* Interface
*   IF_RANDOM_NUMBER
* Datenelement
*   I
* Referenz
*   ?
PARAMETERS: p_name TYPE string DEFAULT 'RSDSSELOPT'.

START-OF-SELECTION.

  DATA(o_type_desc) = cl_abap_typedescr=>describe_by_name( p_name ).

  CASE o_type_desc->kind.
    WHEN cl_abap_typedescr=>kind_struct.
      DATA(o_struct_desc) = CAST cl_abap_structdescr( o_type_desc ).
      cl_demo_output=>write_data( o_struct_desc->components ).
    WHEN cl_abap_typedescr=>kind_table.
      DATA(o_table_desc) = CAST cl_abap_tabledescr( o_type_desc ).
      DATA(o_tl_struct_desc) = CAST cl_abap_structdescr( o_table_desc->get_table_line_type( ) ).
      cl_demo_output=>write_data( o_tl_struct_desc->components ).
    WHEN cl_abap_typedescr=>kind_class.
      DATA(o_class_desc) = CAST cl_abap_classdescr( o_type_desc ).
      LOOP AT o_class_desc->methods ASSIGNING FIELD-SYMBOL(<m>).
        cl_demo_output=>write( <m>-name ).
      ENDLOOP.
    WHEN cl_abap_typedescr=>kind_intf.
      DATA(o_if_desc) = CAST cl_abap_intfdescr( o_type_desc ).
      LOOP AT o_if_desc->methods ASSIGNING FIELD-SYMBOL(<i>).
        cl_demo_output=>write( <i>-name ).
      ENDLOOP.
    WHEN cl_abap_typedescr=>kind_elem.
      DATA(o_elem_desc) = CAST cl_abap_elemdescr( o_type_desc ).
      cl_demo_output=>write_data( o_elem_desc->type_kind ).
    WHEN cl_abap_typedescr=>kind_ref.
  ENDCASE.

  cl_demo_output=>display( ).

Links

[ABAP] Konvertierung einer Struktur in Binärdaten (x, xstring) und zurück

Variante 1 (FIELD-SYMBOLS, CASTING: Struktur <-> Typ x)

* einfachen Typ deklarieren
TYPES: BEGIN OF ty_struct,
         matnr TYPE matnr,
         int   TYPE i,
         float TYPE f,
         text  TYPE char10,
       END OF ty_struct.

* Feldsymbol für Binärdaten
FIELD-SYMBOLS <x> TYPE x.
* Feldsymbol für Strukturdaten
FIELD-SYMBOLS <s> TYPE ty_struct.

* Struktur anlegen, deren Daten kovertiert werden soll
DATA(lv_s) = VALUE ty_struct( matnr = '1234567890'
                              int   = 1
                              float = '1.1'
                              text  = 'abc' ).

* Struktur in Binärdaten umwandeln
ASSIGN lv_s TO <x> CASTING.
IF <x> IS ASSIGNED.
* Binärdaten in Struktur umwandeln
  ASSIGN <x> TO <s> CASTING.
  IF <s> IS ASSIGNED.
    DATA(lv_s2) = <s>.
* Datenausgabe
    WRITE: / lv_s2-matnr.
    WRITE: / lv_s2-int.
    WRITE: / lv_s2-float.
    WRITE: / lv_s2-text.
  ENDIF.
ENDIF.

Variante 2 (xstring -> Struktur)

* https://www.consolut.com/s/sap-ides-zugriff/d/e/doc/M-CL_ABAP_CONV_IN_CE/
* einfachen Typ deklarieren
TYPES: BEGIN OF ty_struct,
         text TYPE char5,
         int  TYPE i,
       END OF ty_struct.

* Zielstruktur
DATA(lv_s) = VALUE ty_struct( ).

* Konverterobjekt mit UTF-8 und Little Endian Konvertierung
DATA(o_conv) = cl_abap_conv_in_ce=>create( encoding = 'UTF-8' endian = 'L' ).
* View-Objekt
DATA(o_view) = cl_abap_view_offlen=>create_legacy_view( lv_s ).
* Eingabepuffer mit Binärdaten
DATA(lv_buffer) = CONV xstring( '616263202000000005000000' ).

* Konvertierung xstring -> Struct
*  in: HEX: 616263202000000005000000
* out: Struct: text: abc
*               ínt: 5
o_conv->convert_struc( EXPORTING
                         input = lv_buffer
                         view  = o_view
                       IMPORTING
                         data  = lv_s ).

* Datenausgabe
WRITE: / lv_s-text.
WRITE: / lv_s-int.

Variante 3 (Struktur -> xstring)

* https://www.consolut.com/s/sap-ides-zugriff/d/e/doc/M-CL_ABAP_CONV_OUT_CE/
* einfachen Typ deklarieren
TYPES: BEGIN OF ty_struct,
         text TYPE char5,
         int  TYPE i,
       END OF ty_struct.

* Struktur mit Quelldaten
DATA(lv_s) = VALUE ty_struct( text = 'abc'
                              int  = 5 ).

* Konverterobjekt mit UTF-8 und Little Endian Konvertierung
DATA(o_conv) = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' endian = 'L' ).
* View-Objekt
DATA(o_view) = cl_abap_view_offlen=>create_legacy_view( lv_s ).
* Ausgabepuffer für Binärdaten
DATA: lv_buffer type xstring.

* Konvertierung Struct -> xstring
*  in: Struct: text: abc
*               ínt: 5
* out: HEX: 616263202000000005000000
o_conv->convert_struc( EXPORTING
                         data   = lv_s
                         view   = o_view
                       IMPORTING
                         buffer = lv_buffer ).

* Datenausgabe
WRITE: / lv_buffer.

[ABAP] Binärdaten (xstring) zu String wandeln (xstring -> string)

Variante 1 (xstring -> string)

* Binärdaten als xstring
DATA(lv_xstring) = CONV xstring( 'A0B0C0FF' ).
* xstring -> string
DATA(lv_string) = CONV string( lv_xstring ).

WRITE: / lv_string.

Variante 2 (String als formatierten Hexcode ausgeben)

DATA: lv_mime_type TYPE string.
DATA: lv_image_bytes TYPE xstring.
DATA: it_text80 TYPE STANDARD TABLE OF text80 WITH DEFAULT KEY.

TRY.
* Ein paar Bytes holen: Screenshot aufnehmen
    cl_gui_frontend_services=>get_screenshot( IMPORTING
                                                mime_type_str = lv_mime_type
                                                image         = lv_image_bytes ).

* xstring -> string
    DATA(lv_string) = CONV string( lv_image_bytes ).

* formatierte Ausgabe (80 Zeichen Breite)
    CALL FUNCTION 'SWA_STRING_TO_TABLE'
      EXPORTING
        character_string = lv_string
      IMPORTING
        character_table  = it_text80.

    LOOP AT it_text80 ASSIGNING FIELD-SYMBOL(<t>).
      WRITE: / <t>.
    ENDLOOP.

  CATCH cx_root INTO DATA(e_txt).
ENDTRY.

[ABAP] Message-Klasse über Interface if_t100_dyn_msg definieren

* https://blogs.sap.com/2015/11/12/abap-news-for-release-750-converting-messages-into-exceptions/
CLASS lcl_msg_class DEFINITION.
  PUBLIC SECTION.
    INTERFACES if_t100_dyn_msg.

    ALIASES: t100_key FOR if_t100_message~t100key.
    ALIASES: msgty    FOR if_t100_dyn_msg~msgty.
    METHODS
      constructor
        IMPORTING
          msgid TYPE symsgid
          msgno TYPE symsgno
          msgty TYPE symsgty.
ENDCLASS.

CLASS lcl_msg_class IMPLEMENTATION.
  METHOD constructor.
    me->t100_key-msgid = msgid.
    me->t100_key-msgno = msgno.
    me->msgty          = msgty.
  ENDMETHOD.

  METHOD if_message~get_text.
    result = cl_message_helper=>get_text_for_message( me ).
  ENDMETHOD.

  METHOD if_message~get_longtext.
    result = cl_message_helper=>get_longtext_for_message( me ).
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  MESSAGE NEW lcl_msg_class( msgid = 'XYZ'
                             msgno = '001'
                             msgty = 'E' ).

[ABAP] RTTS: Interne Tabelle dynamisch erzeugen

Variante 1 (aus DDIC-Struktur)

TRY.
* Strukturdeskriptor für Komponenten (Spalten) der Tabelle anhand einer vorhandenen Struktur erzeugen
    DATA(o_struct_desc) = cl_abap_structdescr=>describe_by_name( 'SFLIGHTS' ).

* Tabellendeskriptor
    DATA(o_table_desc) = cl_abap_tabledescr=>create(
                                                     p_line_type  = CAST #( o_struct_desc )           " Spalten
                                                     p_table_kind = cl_abap_tabledescr=>tablekind_std " Tabellentyp STANDARD TABLE
                                                     p_unique     = abap_false                        " NON-UNIQUE KEY
                                                   ).

* Tabellenobjekt anhand des Tabellendeskriptors erstellen
    DATA: o_table TYPE REF TO data.
    CREATE DATA o_table TYPE HANDLE o_table_desc.

* Feldsymbol auf das Tabellenobjekt
    FIELD-SYMBOLS <table> TYPE ANY TABLE.
    ASSIGN o_table->* TO <table>.

* Daten holen und in Feldsymbol schreiben
    SELECT carrid, connid, carrname, fldate FROM sflights INTO CORRESPONDING FIELDS OF TABLE @<table>.

* Datenausgabe
    cl_demo_output=>display( <table> ).

  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

Variante 2 (eigene Strukturkomponenten)

TRY.
* Dummy für Datadescriptor
    DATA: lv_fldate TYPE sflights-fldate.

* Komponenten (Spalten) der Tabelle
    DATA(it_components) = VALUE cl_abap_structdescr=>component_table(
* Erzeugung über direkte Typangabe, abgeleitet aus dem Typ des eigentlichen Datenelements
* CHAR 3
                                                                      (
                                                                        name = 'CARRID'
                                                                        type = cl_abap_elemdescr=>get_c( 3 ) " S_CARR_ID
                                                                      )
* NUMC 4
                                                                      (
                                                                        name = 'CONNID'
                                                                        type = cl_abap_elemdescr=>get_n( 4 ) " S_CONN_ID
                                                                      )
* Erzeugung über Namen des Datenelements
                                                                      (
                                                                        name = 'CARRNAME'
                                                                        type = CAST #( cl_abap_elemdescr=>describe_by_name( 'S_CARRNAME' ) )
                                                                      )
* Erzeugung über Dummy-Datenobjekt
                                                                      (
                                                                        name = 'FLDATE'
                                                                        type = cast #( cl_abap_datadescr=>describe_by_data( lv_fldate ) )
                                                                      )
                                                                    ).

* Strukturdeskriptor für Komponententabelle
    DATA(o_struct_desc) = cl_abap_structdescr=>create( it_components ).

* Tabellendeskriptor
    DATA(o_table_desc) = cl_abap_tabledescr=>create(
                                                     p_line_type  = o_struct_desc                       " Spalten
                                                     p_table_kind = cl_abap_tabledescr=>tablekind_std   " Tabellentyp STANDARD TABLE
                                                     p_unique     = abap_false                          " NON-UNIQUE KEY
                                                     p_key        = VALUE #(                            " CARRID, CONNID als KEY
                                                                             ( name = 'CARRID' )
                                                                             ( name = 'CONNID' )
                                                                           )
                                                     p_key_kind   = cl_abap_tabledescr=>keydefkind_user " Benutzerdefinierter Schlüssel
                                                   ).

* Tabellenobjekt anhand des Tabellendeskriptors erstellen
    DATA: o_table TYPE REF TO data.
    CREATE DATA o_table TYPE HANDLE o_table_desc.

* Feldsymbol auf das Tabellenobjekt
    FIELD-SYMBOLS <table> TYPE ANY TABLE.
    ASSIGN o_table->* TO <table>.

* Daten holen und in Feldsymbol schreiben
    SELECT carrid, connid, carrname, fldate FROM sflights INTO CORRESPONDING FIELDS OF TABLE @<table>.

* Datenausgabe
    cl_demo_output=>display( <table> ).

  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

[ABAP] Abbildung von boolschen Werten im ABAP

Typen

Typ          Herkunft                  Anmerkung
----------------------------------------------------------------------------------------------------------------------------------
abap_bool    Typegruppe ABAP           empfohlen in den offiziellen ABAP Programming Guidelines
                                       Ab Release 7.40 sind bei Predicative Method Calls Rückgabewerte vom Typ ABAP_BOOL notwendig
                                       https://help.sap.com/doc/abapdocu_752_index_htm/7.52/de-DE/abenpredicative_method_calls.htm
boolean      Datenelement BOOLEAN      hat keine Feldbezeichner
xfeld        Datenelement XFELD        hat keine Feldbezeichner
os_boolean   Datenelement OS_BOOLEAN
wdy_boolean  Datenelement WDY_BOOLEAN
ddbool_d     Datenelement DDBOOL_D

Werte

boolscher Typ  ABAP-Konstante                ABAP-Wert  Definition         Datentyp  Länge
------------------------------------------------------------------------------------------
true           abap_true                     'X'        Typegruppe ABAP    char      1
false          abap_false                    ' '        Typegruppe ABAP    char      1
               abap_undefined                '-'        Typegruppe ABAP    char      1
true           cl_abap_typedescr=>true       'X'        cl_abap_typedescr  char      1
false          cl_abap_typedescr=>false      ' '        cl_abap_typedescr  char      1
               cl_abap_typedescr=>undefined  '-'        cl_abap_typedescr  char      1

[ABAP] Nützliche ABAP-Datentypen, Domänen, Tabellentypen

Datentypen

* DD04L
* DD04T
* DD04V

Name          Typ         Länge   Beschreibung
---------------------------------------------------------------------------
MANDT         CLNT        3       Mandant

DEC_16_01_S   DEC         16,1    Dezimalwert mit 1 Nachkommastelle
DEC_16_02_S   DEC         16,2    Dezimalwert mit 2 Nachkommastellen
DEC_16_03_S   DEC         16,3    Dezimalwert mit 3 Nachkommastellen
DEC_16_04_S   DEC         16,4    Dezimalwert mit 4 Nachkommastellen
DEC_16_05_S   DEC         16,5    Dezimalwert mit 5 Nachkommastellen
DEC_16_06_S   DEC         16,6    Dezimalwert mit 6 Nachkommastellen
DEC20_2       DEC         20,2    Dezimalwert mit 2 Nachkommastellen
DEC20_3       DEC         20,3    Dezimalwert mit 3 Nachkommastellen
DECIMAL21_7   DEC         21,7    Dezimalwert mit 7 Nachkommastellen
DEC23_2       DEC         23,2    Dezimalwert mit 2 Nachkommastellen
DEC31_14      DEC         31,14   Dezimalwert mit 14 Nachkommastellen

SURL          CHAR        255     URL Länge 255
SWK_URL       CHAR        2048    URL Länge 2048
SKWF_URL      CHAR        4096    URL Länge 4096
USS_Y_URL     CHAR        255     URL Länge 255
VBC_URL2      CHAR        1024    URL Länge 1024

BAPI_MSG      CHAR        220     Meldungstext
ERR_TEXT      CHAR        60      Fehlertext
TEXT255       CHAR        255     Text Lowercase
TWB_S_TXT     CHAR        200     Groß / Kleinschreibung berücksichtigt
TXT50         CHAR        50      Text
VBC_TEXT      CHAR        255     Beschreibung Lowercase
VBI_TEXT      CHAR        255     Beschreibung Lowercase
VEPTEXT       CHAR        255     Kurzbeschreibung Lowercase

SYSUUID_C     CHAR        32      UUID in Character-Darstellung

EDPLINE       CHAR        72      EDIC Programm-Editor Zeile

TABNAME       CHAR        30      Tabellenname

ERNAM         CHAR        12      Name des Benutzers
XUANAME       CHAR        12      Anleger des Benutzerstamms
XUBNAME	      CHAR        12      Benutzername im Benutzerstamm
XUMODIFIER    CHAR        12      Letzter Änderer

AWKGR         CURR        15,2    Betrag
BELWER        CURR        15,2    Betrag
KWERT         CURR        13,2    Konditionswert

ABBDT         DATS        8       Beginndatum des Zeitabschnitts
ABDATUM       DATS        8       Beginn eines Zeitraumes
ADATU         DATS        8       Datum Gültigkeitsbeginn
BEGDATUM      DATS        8       Beginndatum
BEGINDATE     DATS        8       Beginndatum
ERSDA         DATS        8       Erstellungsdatum (JJJJMMDD)
LAEDA         DATS        8       Datum der letzten Änderung (JJJJMMDD)
XULDATE       DATS        8       Letzes Login-Datum (JJJJMMDD)
XUERDAT       DATS        8       Anlegedatum des Benutzerstamms (JJJJMMDD)
XUMODDATE     DATS        8       Modifikationsdatum (JJJJMMDD)

BEGINUZ       TIMS        6       Beginnuhrzeit
BEGUZ         TIMS        6       Beginnuhrzeit
XULTIME       TIMS        6       Letzte Anmeldeuhrzeit (HHMMSS)
XUMODTIME     TIMS        6       Modifikationszeit (HHMMSS)

TIMESTAMP     DEC         15      UTC-Zeitstempel in Kurzform (JJJJMMTThhmmss)
TIMESTAMPL    DEC         21,7    UTC-Zeitstempel in Langform (JJJJMMTThhmmssmmmuuun)

Domänen

* DD01L
* DD01T
* DD01V

Name          Typ         Länge   Beschreibung
---------------------------------------------------------------------------
RSDSSELOPT    CHAR        45      Zeilentyp für RANGE-Tabelle
FUNCNAME      CHAR        30      Unterprogrammname
TDSFNAME      CHAR        30      Smart Forms: Formularname

Tabellentypen

* DD40L
* DD40T

Typ            Zeilentyp   Länge   Beschreibung
----------------------------------------------------------------------------
BAPIRETTAB     BAPIRET2            Tabelle mit BAPI Return Informationen
BAPIRET2_T     BAPIRET2            Returntabelle
BDCDATA_TAB    BDCDATA     309     Tabelle für Batchdaten
SOTR_TXTS      CHAR        255     Texttabelle
TTTEXT255      CHAR        255     Texttabelle
HTML_TABLE     W3HTML      255     Texttabelle für HTML
W3_HTMLTAB     W3_HTML     255     Texttabelle für HTML
INT4_TABLE     INT4        10      Standard Table of INT4
W3MIMETABTYPE  RAW         255     Tabelle für RAW-Daten
XML_RAWDATA    RAW         255     Tabelle für RAW-Daten
WD_OBJECTS     REF                 Tabelle zur Speicherung von REF TO OBJECT
RSEC_T_SPOPLI  SPOPLI      67      Auswahl von Werten
RSELOPTION     RSDSSELOPT  93      SELECT-OPTIONS Tabelle
STRINGTAB      STRING              Tabelle mit Strings
STRING_TABLE   STRING              Tabelle mit Strings
TLINE_T        TLINE               Tabelle mit TLINE