[ABAP] Infos zu Datenelementen und Domänen lesen

* Name Datenelement
PARAMETERS: p_dtype TYPE ddobjname DEFAULT 'CCCATEGORY'.

START-OF-SELECTION.

  DATA: lv_gotstate	TYPE ddgotstate.
  DATA: lv_dd04v_wa	TYPE dd04v.
  DATA: lv_tpara_wa	TYPE tpara.

* DD: Schnittstelle zum Lesen eines Datenelements aus dem ABAP/4 Dictionary
  CALL FUNCTION 'DDIF_DTEL_GET'
    EXPORTING
      name          = p_dtype
    IMPORTING
      gotstate      = lv_gotstate
      dd04v_wa      = lv_dd04v_wa
      tpara_wa      = lv_tpara_wa
    EXCEPTIONS
      illegal_input = 1
      OTHERS        = 2.

  IF sy-subrc = 0.
    DATA: lv_gotstate_d	TYPE ddgotstate.
    DATA: lv_dd01v_wa	TYPE dd01v.
    DATA: it_dd07v_tab TYPE STANDARD TABLE OF dd07v WITH DEFAULT KEY.

* DD: Schnittstelle zum Lesen einer Domäne aus dem ABAP/4 Dictionary
    CALL FUNCTION 'DDIF_DOMA_GET'
      EXPORTING
        name          = lv_dd04v_wa-domname
      IMPORTING
        gotstate      = lv_gotstate_d
        dd01v_wa      = lv_dd01v_wa
      TABLES
        dd07v_tab     = it_dd07v_tab
      EXCEPTIONS
        illegal_input = 1
        OTHERS        = 2.

    IF sy-subrc = 0.
      cl_demo_output=>next_section( |Datentyp { p_dtype }| ).
      cl_demo_output=>write_data( lv_gotstate ).
      cl_demo_output=>write_data( lv_dd04v_wa ).
      cl_demo_output=>write_data( lv_tpara_wa ).

      cl_demo_output=>next_section( |Domäne { lv_dd04v_wa-domname }| ).
      cl_demo_output=>write_data( lv_gotstate_d ).
      cl_demo_output=>write_data( lv_dd01v_wa ).
      cl_demo_output=>write_data( it_dd07v_tab ).

* HTML-Code vom Demo-Output holen
      DATA(lv_html) = cl_demo_output=>get( ).

* Daten im Inline-Browser im SAP-Fenster anzeigen
      cl_abap_browser=>show_html( EXPORTING
                                    title        = 'Infos'
                                    html_string  = lv_html
                                    container    = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
      WRITE: space.
    ENDIF.
  ENDIF.

Links

[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

* Strukturen
* DD02L
* DD03L
* DD03T


* 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
ICL_THEAD_TAB  THEAD               tabelle mit THEAD

[ABAP] Wertebereich einer Domäne auslesen

Variante 1 (get_ddic_fixed_values)

CLASS lcl_domvalues DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: get_by_type
      IMPORTING
                iv_data               TYPE any
      RETURNING VALUE(rt_ddfixvalues) TYPE ddfixvalues.
    CLASS-METHODS: get_by_name
      IMPORTING
                iv_name               TYPE domname
      RETURNING VALUE(rt_ddfixvalues) TYPE ddfixvalues.
ENDCLASS.

CLASS lcl_domvalues IMPLEMENTATION.

  METHOD get_by_type.
    TRY.
* liefert Typebeschreibung für DDIC-Typ
        rt_ddfixvalues = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( iv_data ) )->get_ddic_fixed_values( ).
      CATCH cx_root.
    ENDTRY.
  ENDMETHOD.

  METHOD get_by_name.
    TRY.
* liefert Typebeschreibung für DDIC-Typ
        rt_ddfixvalues = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_name( iv_name ) )->get_ddic_fixed_values( ).
      CATCH cx_root.
    ENDTRY.
  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

* Domäne über Variablen-Typ
  DATA(lv_cat) = VALUE cccategory( ).
  DATA(it_by_type) = lcl_domvalues=>get_by_type( lv_cat ).

* Domäne über Name
  DATA(it_by_name) = lcl_domvalues=>get_by_name( 'CCCATEGORY' ).

  cl_demo_output=>write_data( it_by_type ).
  cl_demo_output=>write_data( it_by_name ).

  cl_demo_output=>display( ).

Variante 2 (DD_DOMVALUES_GET)

DATA(it_dd07v_tab) = VALUE dd07v_tab( ).
DATA(lv_rc) = VALUE sy-subrc( ).

CALL FUNCTION 'DD_DOMVALUES_GET'
  EXPORTING
    domname        = 'CCCATEGORY'
    text           = abap_true
*   LANGU          = ' '
*   BYPASS_BUFFER  = ' '
  IMPORTING
    rc             = lv_rc
  TABLES
    dd07v_tab      = it_dd07v_tab
  EXCEPTIONS
    wrong_textflag = 1
    OTHERS         = 2.

IF sy-subrc = 0.
  IF lv_rc = 0.
    cl_demo_output=>display( it_dd07v_tab ).
  ENDIF.
ENDIF.

Variante 3 (SQL)

* Name der Domäne
DATA(lv_domain) = 'CCCATEGORY'.
* Anmeldesprache
DATA(lv_lang) = cl_abap_syst=>get_logon_language( ).

SELECT l~domvalue_l, t~ddtext
  INTO TABLE @DATA(it_dom)
  FROM dd07l AS l
  INNER JOIN dd07t AS t ON l~domname = t~domname AND l~valpos = t~valpos AND l~domvalue_l = t~domvalue_l
  WHERE l~domname    = @lv_domain
    AND t~ddlanguage = @lv_lang.

cl_demo_output=>display( it_dom ).

Variante 4 (cl_reca_ddic_doma)

DATA(it_rsdomaval) = VALUE re_t_rsdomaval( ).

* DDIC-Objekt: Domäne
cl_reca_ddic_doma=>get_values( EXPORTING id_name   = 'CCCATEGORY'
                               IMPORTING et_values = it_rsdomaval ).

cl_demo_output=>display( it_rsdomaval ).

Variante 5 (cl_reca_ddic_doma)

DATA(lv_dd01v) = VALUE dd01v( ).
DATA(it_rsdomaval) = VALUE re_t_rsdomaval( ).

* DDIC-Objekt: Domäne
cl_reca_ddic_doma=>get_complete( EXPORTING id_name      = 'CCCATEGORY'
                                 IMPORTING es_header    = lv_dd01v
                                           et_rsdomaval = it_rsdomaval ).

cl_demo_output=>write_data( lv_dd01v ).
cl_demo_output=>write_data( it_rsdomaval ).
cl_demo_output=>display( ).

Links