Variablenname zur Laufzeit ermittlen (cl_abap_typedescr)

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Variablenname zur Laufzeit ermittlen (cl_abap_typedescr)

Beitrag von hfahrian (ForumUser / 53 / 7 / 0 ) »
Hallo zusammen,

Eine Routine wird mit einem TABLES Parameter definiert:
FORM f_ums_txt_col_do TABLES pt_tabd ...

Im Programm wird eine interne Tabelle(gt_dd020t) definiert wie z.B.:
DATA: gw_dd020t LIKE d020t,
gt_dd020t LIKE TABLE OF gw_dd020t.

Die Routine wird aufgerufen:
PERFORM f_ums_txt_col_do TABLES gt_dd020t ...

In der Routine wird der Übergabeparameter analysiert und Details zur übergebenen internen Tabelle gesammelt => mit Hilfe von cl_abap_typedescr:
DATA: descr_ref TYPE REF TO cl_abap_typedescr.
descr_ref = cl_abap_typedescr=>describe_by_data( pt_tabd ).
IF descr_ref->absolute_name CS 'DD01T'.
....
ENDIF.

Nun meine Frage:
cl_abap_typedescr liefert alle möglichen Informationen über den Typus, referenzeirte DDIC Struktur wie z.B. "DD02T", Komonenten der internen Tabelle ...
Gibt es eine Möglichkeit den Namen/Variablennamen der übergebenen internen Tabelle zu ermitteln? Also ich meine in dem geannten Beispiel den Namen "gt_dd020t"?

Habe schon alles mögliche versucht aber ohne Erfolg!

Für Hilfe wäre ich sehr dankbar!

Gruss, Henry :-)
Henry Fahrian
Director Innovate ITC - SAP Consulting/Development
Mauritius

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


Re: Variablenname zur Laufzeit ermittlen (cl_abap_typedescr)

Beitrag von a-dead-trousers (Top Expert / 4396 / 223 / 1182 ) »
nein, so etwas gibt es nicht.
Für was würdest du das denn brauchen?
Eigentlich hast du ja schon alle Informationen, die du über den Parameter wissen musst über den Typedescr ermittelt.
Normalerweise, wenn man denselben Datentyp hat aber anhand des Zieles unterschiedliche Zwecke verfolgt (z.B. Rechnungen -> Eingangs- bzw. Ausgangsrechnungen) bewerkstelligt man das über jeweils eigene Routinen (GET_IN_INVOICE, GET_OUT_INVOICE).
Das wäre die "Mercedes" Variante.

http://ganz-sicher.net/blog/programmier ... ode-tipps/
Do one thing - and do it well

Funktionen sollten stets eine Abstraktionsebene umfassen. Oder in verständlich: Eine Funktion sollte genau eine Sache machen - und die sollte sie möglichst gut/effizient machen. Funktionen die mehrere Dinge machen sollten vermieden werden, denn das macht den Code schwerer verständlich und erhöht den Fluchfaktor im Fehlerfall. Also: Wenn möglich, andere Funktionalität immer auslagern!
Die andere Möglichkeit (wenn es sich denn nicht vermeiden lässt) wäre mit einem zusätzlichen Parameter die Art der Rückgabe zu steueren.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
hfahrian

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Variablenname zur Laufzeit ermittlen (cl_abap_typedescr)

Beitrag von hfahrian (ForumUser / 53 / 7 / 0 ) »
Danke für die Informationen.
Die beschriebene ITAB Analyse kommt in einem Übersetzungs- und Sprachhebungstool zum Einsatz. Dabei könnten komplette Entwicklungsklassen(DDIC Objekte, Programme, Klassen ...) auf eine andere Sprache gehoben werden. Dabei kommt dann eine externe Übersetzungsdatenbank zum Einsatz. An dem Tool entwickle ich schon seit ein paar Jahren und erweitere eben stetig Funktionalitäten.
Typedescr kommt dabei natürlich häufig zum Einsatz und liefert auch soweit alle relevanten Informationen.
Das geannte Beispiel ist soweit realisiert, indem beim Routinenaufruf als ein weiterer Parameter der "Variablennamen" der Internen Tabelle mitgegeben wird.
Mich hat es einfach mal interessiert, ob der Variablennamen "dynamisch" zur Laufzeit ermittelt werden könnte.

Grüsse, Henry.
Henry Fahrian
Director Innovate ITC - SAP Consulting/Development
Mauritius

Re: Variablenname zur Laufzeit ermittlen (cl_abap_typedescr)

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
Hallo Henry,

das was du willst ist selbst in der Theorie nicht möglich.

Stell dir doch mal folgendes Beispiel vor.

Hauptprogramm ruft Routine A. Diese ruft Funktionsbaustein B mittels "Übergabe via Referenz". Und dieser dann eine Routine C.
Und um es richtig schön zu machen wird außer der übergebenen Variablen noch ein Feldsymbol deklariert was auf die Variable zeigt.
Dann ruft das Hauptprogramm Routine A mit dem Feldsymbol auf.
Ich bin mir ziemlich sicher, dass es jetzt diverse Ideen gibt, was denn die Routine C als "echten" Variablennamen zurückgeben könnte - und viele dieser Ideen sollten gleichberechtigt nebeneinader bestehen können, denn letztlich ist der Name einer Variablen austauschbar und nur dafür nötig um den Zugriff auf eine Variable menschenlesbar zu machen.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
hfahrian

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

4
Antw.
1510
Views
aktuelles Abrbeitsverzeichnis ermittlen per Coding
von hfahrian » 03.12.2004 14:05 • Verfasst in ABAP® Core
5
Antw.
3939
Views
dynamischer Variablenname
von Dörk » 31.03.2008 10:19 • Verfasst in ABAP® Core
3
Antw.
2822
Views
Variablenname + Laufende Nummer verbinden
von metbo » 15.04.2010 15:10 • Verfasst in ABAP® für Anfänger
1
Antw.
1283
Views
Laufzeit
von christof » 23.03.2016 13:25 • Verfasst in ABAP® für Anfänger
6
Antw.
3203
Views
Laufzeit optimieren!
von made » 27.06.2005 11:54 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 23 / 3746
User Exit EXIT_RQCPRM10_001
vor 15 Stunden von a-dead-trousers 2 / 295
Trennen Strasse und Hausnummer
vor 21 Stunden von payten 13 / 10654
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1347

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

Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 23 / 3746
User Exit EXIT_RQCPRM10_001
vor 15 Stunden von a-dead-trousers 2 / 295
Trennen Strasse und Hausnummer
vor 21 Stunden von payten 13 / 10654
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1347

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2880
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9473