Liste von Feldbezeichungen einer Struktur

Getting started ... Alles für einen gelungenen Start.
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Liste von Feldbezeichungen einer Struktur

Beitrag von SkyHobbit (Specialist / 170 / 0 / 1 ) »
Hallo,

ich habe eine Tabelle definiert, die im Grunde genommen aus der T510S und einigen zusätzlichen Feldern besteht.

Jetzt möchte eine Liste erstellen, die nichts weiter als alle Feldbezeichnungen dieser Tabelle enthält, wobei natürlich nur die im DDIC definierten Standardfelder automatisch in die Liste gestellt werden könnten.

Habe ich also aus der Tabelle T510S das Feld MOLGA, soll die Liste den Eintrag (z.B. die Kurzbezeichnung) 'Ländergrpg' bekommen.

Tabelle T510S:
MANDT
MOLGA
ORGMO
DAYMO
...

die Egebnisliste:
'Mandant'
'Ländergrpg'
'ZLGrp'
'TgGrpg'
...

Geht das überhaupt, oder muß ich die Liste manuell aufbauen ?

Hat jemand eine Idee ?

Gruß
SkyHobbit

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
FB "DDIF_FIELDINFO_GET"
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo SkyHobbit,

schau Dir mal die Klasse CL_ABAP_TYPEDESCR an. Damit sind RunTimeType-Informationen zu erhalten. Das sollte auch die Feldnamen beinhalten.
Ob man damit dann noch die Beschreibungen der Datenelemente bekommen kannst, müsstest Du mal ausprobieren. (black_adept's FB könnte dort helfen)
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von PsychoMantis (ForumUser / 98 / 0 / 0 ) »
Allerdings glaube ich, dass es die Klasse cl_abap_typedescr erst ab 4.7 gibt. Meine das ich sowas in irgendeinem Buch gelesen hätte... *grübel* :)

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Hi Psychomantis,

auf meinen Minisap (4.6) und bei vielen Kunden hab ich die Klasse schon gesehen - auch in Release 4.6.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von PsychoMantis (ForumUser / 98 / 0 / 0 ) »
Hi black_adept,
dann ist ja gut :)

Allerdings hab ich die Stelle gerade wiedergefunden. Es steht im Buch "ABAP Best Practices" vonner SAP Press :) Aber die können sich ja auch mal irren...

Beitrag von SkyHobbit (Specialist / 170 / 0 / 1 ) »
Hallo,

vielen Dank für die Antworten.

Ich habe den Funktionsbaustein verwendet, komme aber nicht so richtig weiter.
Wenn ich die Doku richtig verstanden habe und meine Tests richtig deute, dann kann man den Funktionsbaustein nur für Tabellen verwenden, die im Dictonary definiert sind.
Meine Tabelle habe ich aber nur im Programm definiert. An sich aber kein Problem, da ich ja auch einzelne Felder abfragen kann. Nur, wie übergebe ich in einer Schleife jeweils die einzelnen Feldnamen meiner Struktur ?
Über Feldsymbole schaffe ich es zwar jeweils an den Inhalt der Struktur zu kommen aber nicht an den Feldnamen des jeweiligen Feldes.

Gibt es auch da eine Möglichkeit ??

Gruß
SkyHobbit

Beitrag von PsychoMantis (ForumUser / 98 / 0 / 0 ) »
Hallo SkyHobbit,
wie ich oben erwähnt habe, les ich ja gerade mal wieder nen schlaues Buch über ABAP und darin ist etwas ganz ähnliches beschrieben. Ich versuch mal den Code auf dein Problem umzuschreiben:

Code: Alles auswählen.

DATA:
  oDescrTable TYPE REF TO cl_abap_tabledescr,
  oDescrStruc TYPE REF TO cl_abap_strucdescr,
  itab        TYPE TABLE OF xxx, "Definierte Tabelle
  iFieldTab   TYPE TABLE OF yyy. "Tabelle mit Feldbz.

Field-Symbols:
  <fs_FieldTab> TYPE yyy,
  <fsCompStruc> TYPE abap_compdescr.

oDescrTable ?= cl_abap_tabledescr=>describe_by_data( itab ).
oDescrStruc ?= oDescrTable->get_table_line_type( ).

loop at iFieldTab assigning <fs_FieldTab>.
  loop at oDescrStruc->components assigning <fsCompStruc>.
    IF <fsCompStruc>-name = <fs_FieldTab>-name.
      write: / <fsCompStruc>-name.
    ENDIF.
  endloop.
endloop.
    

loop at itab into wa_itab.
Hoffe mal ich hab es richtig hinbekommen.

Viel Erfolg beim Testen.

Gruß
Psy

Beitrag von Gast ( / / 0 / 3 ) »
Hallo PsychoMantis,

kann es sein, daß Dein Vorschlag auf ein Release > 4.6C basiert ??
Beim Testen des Codingstücks meckert nämlich die Syntaxprüfung, weil der Typ 'cl_abap_strucdescr' unbekannt sein soll, wogegen 'cl_abap_tabledescr' bekannt ist.

Gruß
SkyHobbit

Beitrag von SkyHobbit (Specialist / 170 / 0 / 1 ) »
Uoops,

da ist irgendwie meine Anmeldung verloren gegangen.

Gruß
Skyhobbit

Beitrag von PsychoMantis (ForumUser / 98 / 0 / 0 ) »
Hallo SkyHobbit,

ja, das kann gut sein. Wie ich ein paar Postings weiter oben schon geschrieben hatte, dachte ich, das es die gesamte Klasse cl_abap_typedescr im 4.6er noch nicht gibt. Nach black_adepts Posting hab ich die Lösung doch geposted in der Hoffnung das es auch aufm 4.6er klappt.

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Moinsen.

Das ist ein Schreibfehler, es muss heissen "CL_ABAP_STRUCTDESCR", dann klappt's auch mit dem Nachbarn. :wink:

Tipp: Transaktion SE24, als Klasse "CL_ABAP_*DESCR" eingeben und Wertehilfe nutzen, dann sieht man, was man so alles "describen" kann... :idea:

/edit: der Kram nennt sich RTTI (Run Time Type Identification) und steht komplett unter 4.6C zur Verfügung.

C ya,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von SkyHobbit (Specialist / 170 / 0 / 1 ) »
Hallo,

ich habe inzwischen eine Lösung als Kombination aller Vorschläge gefunden:

Code: Alles auswählen.

  DATA: feldname(30).
  DATA: feldbeschreibung TYPE dfies OCCURS 1.
  DATA: my_data TYPE typ_ausgabeliste_t510s.
  DATA: descr_ref TYPE REF TO cl_abap_structdescr.

  FIELD-SYMBOLS:
  <comp_wa> TYPE abap_compdescr.

  descr_ref ?= cl_abap_typedescr=>describe_by_data( my_data ).

  LOOP AT descr_ref->components ASSIGNING <comp_wa>.
    feldname = <comp_wa>-name.

    CALL FUNCTION 'DDIF_FIELDINFO_GET'
      EXPORTING
        tabname              = 'T510S'
        fieldname            = feldname
        langu                = sy-langu
*       LFIELDNAME           = ' '
*       ALL_TYPES            = ' '
*       IMPORTING
*       X030L_WA             =
*       DDOBJTYPE            =
*       DFIES_WA             =
*       LINES_DESCR          =
     TABLES
       dfies_tab            = feldbeschreibung
*      FIXED_VALUES         =
     EXCEPTIONS
       not_found            = 1
       internal_error       = 2
       OTHERS               = 3
              .
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

   ...

  ENDLOOP.
Damit kann ich die Standardfelder ohne Zusatzcode verarbeiten und bin flexibel gegenüber Änderungen der Struktur.

Vielen Dank !! :D

Gruß
SkyHobbit

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1898
Views
Struktur als Kopie von vorhandener Struktur anlegen
von Marwin » 20.04.2005 15:29 • Verfasst in ABAP® Core
1
Antw.
2726
Views
Dialogsteuerung Liste->Dynpro->Liste sy-ucomm
von cut1 » 08.12.2006 14:28 • Verfasst in Dialogprogrammierung
1
Antw.
575
Views
3
Antw.
3990
Views
Screen->Liste->Screen und dann wieder Liste???
von dimes » 19.07.2007 15:19 • Verfasst in Dialogprogrammierung
8
Antw.
6019
Views
struktur
von swonny » 19.06.2007 10:34 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Regex in where
vor 9 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 23 Stunden von Bright4.5 3 / 1487

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 9 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 23 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822