Interne Tabelle dynamisch typisieren


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

Interne Tabelle dynamisch typisieren

Beitragvon McQueenSix » 23.12.2016, 14:07

Hallo zusammen,

ich suche einen "einfachen" Weg, eine interne Tabelle dynamisch zu typisieren.

Die interne Tabelle soll immer die Felder einer beliebigen(!) Struktur/Tabelle aus dem DDIC haben, plus ein paar fester Felder.
Wenn DAS hier funktionieren würde, wäre ich happy, geht aber leider nicht:

Code: Alles auswählen
TYPES: BEGIN OF ty_test,
festfeld1 TYPE bla,
festfeld2 TYPE blubb.
INCLUDE STRUCTURE (g_var_mit_strukturname, z.B. SFLIGHT). <-- Und genau das geht leider nicht
TYPES: END OF ty_test.

DATA: lt_tab TYPE TABLE OF ty_test.


Ich hoffe es kommt rüber, was ich erreichen will. Jemand nen Tipp?

Vielen Dank, mfG, Jens
McQueenSix
ForumUser
 
Beiträge: 1
Registriert: 23.12.2016, 13:59
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Interne Tabelle dynamisch typisieren

Beitragvon Tron » 23.12.2016, 17:06

Moin Jens.
"Dynamisch" und "Einfach" ist ein Widerspruch in sich. :wink:
Aber schau Dir bitte mal diesen Beitrag an:
viewtopic.php?f=3&t=17061

gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.
Tron
Expert
 
Beiträge: 816
Registriert: 04.08.2007, 21:08
Wohnort: Hamburg
Dank erhalten: 142 mal
Ich bin: Entwickler/in

Re: Interne Tabelle dynamisch typisieren

Beitragvon black_adept » 27.12.2016, 11:26

Hallo Jens und Jens,

soooooo kompliziert oder aufwändig ist das doch gar nicht, wenn man einfach nur ein paar Felder vor oder hinter eine Struktur hängen möchte.

Ich hänge mal ein Beispielprogrämmle hier rein - das reine Erzeugen der erweiterten Struktur bzw. eine Referenz darauf sind nur 12 Zeilen + ein paar Datendeklarationen, die in neueren Releases wahrscheinlich inline gemacht werden könnten. Und genau genommen braucht man die nicht mal alle, aber es erklärt mehr wenn die drin sind.
Code: Alles auswählen
REPORT.

CLASS lcl DEFINITION FINAL.
  PUBLIC SECTION.
    CLASS-METHODS: extend_structure IMPORTING is_structure                 TYPE any
                                    RETURNING VALUE(rr_extended_structure) TYPE REF TO data.
ENDCLASS.
CLASS lcl IMPLEMENTATION.
  METHOD extend_structure.

    DATA: BEGIN OF ls_fixed_fields,
            hugo1 TYPE syuname,
            hugo2 TYPE sydatum,
            hugo3 TYPE syuzeit,
          END OF ls_fixed_fields.

    DATA: lt_component_table TYPE abap_component_tab,
          lo_descr_extended  TYPE REF TO cl_abap_structdescr.

    FIELD-SYMBOLS: <ls_component> LIKE LINE OF lt_component_table.

*--------------------------------------------------------------------*
* Fixe Struktur am Anfang
*--------------------------------------------------------------------*
    APPEND INITIAL LINE TO lt_component_table ASSIGNING <ls_component>.
    <ls_component>-name       = ''.  " nicht extra benannt, da als Include eingebunden
    <ls_component>-type       ?= cl_abap_structdescr=>describe_by_data( ls_fixed_fields ).
    <ls_component>-as_include = 'X'.
    <ls_component>-suffix     = ''.  " kein suffix

*--------------------------------------------------------------------*
* Variable Struktur hernach
*--------------------------------------------------------------------*
    APPEND INITIAL LINE TO lt_component_table ASSIGNING <ls_component>.
    <ls_component>-name       = ''.  " nicht extra benannt, da als Include eingebunden
    <ls_component>-type       ?= cl_abap_structdescr=>describe_by_data( is_structure ).
    <ls_component>-as_include = 'X'.
    <ls_component>-suffix     = ''.  " kein suffix

    lo_descr_extended = cl_abap_structdescr=>create( lt_component_table ).
    CREATE DATA rr_extended_structure TYPE HANDLE lo_descr_extended.

  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  DATA: ls_data TYPE sflight,
        lr_data TYPE REF TO data.
  FIELD-SYMBOLS: <gs_data> TYPE any,
                 <gt_data> TYPE STANDARD TABLE.
  lr_data = lcl=>extend_structure( ls_data ).
  ASSIGN lr_data->* TO <gs_data>.
  CREATE DATA lr_data LIKE STANDARD TABLE OF <gs_data>.
  ASSIGN lr_data->* TO <gt_data>.
  APPEND <gs_data> TO <gt_data>.
  BREAK-POINT.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2547
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 337 mal
Ich bin: Freiberufler/in


Zurück zu ABAP® Core

  Aktuelle Beiträge   
UI Komponente bestimmen
vor 3 Stunden von Kai999 0 Antw.
UI Komponente bestimmen
vor 2 Stunden von Kai999 1 Antw.
gelöst Können lokale Klasse von Globalen erben?
vor 4 Stunden von gs3rr4 2 Antw.
Planprimärbedarf anlegen von Excel-file
vor 8 Stunden von holderda 0 Antw.
PDF im Container öffnen
vor einer Stunde von ewx 4 Antw.

  Ähnliche Beiträge beta
Interne Tabelle dynamisch erzeugen
23.01.2003, 22:36 von Wolfgang G. Propfe 13 Antw.
Interne Tabelle dynamisch füllen
29.10.2007, 13:49 von stas 3 Antw.
interne tabelle dynamisch in der select anweisung??????
15.11.2003, 21:06 von Daniel 16 Antw.
dynamische interne Tabelle dynamisch sortieren
15.10.2004, 10:15 von Gast 11 Antw.
Workarea und Interne Tabelle dynamisch anlegen
19.10.2005, 09:28 von ereglam 6 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!