Name eines Datenelements zur Laufzeit ermitteln

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

Name eines Datenelements zur Laufzeit ermitteln

Beitrag von der_neuling (ForumUser / 82 / 17 / 3 ) »
Moin an alle,

ich möchte gerne zur Laufzeit eines Reports den Namen eines Datenelementes herausfinden.

Zum Beispiel:

Code: Alles auswählen.

DATA: my_var TYPE string.
Soll dann "MY_VAR" ausgegeben werden.

Ich komme hier jedoch nicht weiter, mit den RTTS Funktionen kann ich die Feldnamen einer Struktur ausgeben, jedoch nicht bei einzelnen Elementen.
Als Workaround könnte ich die Datenelemente in eine Struktur packen und dann ausgeben, aber das wäre natürlich wieder ein Schritt mehr und damit umständlicher.

Hat jemand einen Ansatz für mich?
Hier der Code für den Workaround:

Code: Alles auswählen.

TYPES: BEGIN Of struc,
       my_var TYPE string,
       END OF struc.

DATA: structure TYPE struc.

DATA(components) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_data( p_data = structure ) )->components.

WRITE: / components[ 1 ]-name.
"Ausgabe : "MY_VAR"

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



Re: Name eines Datenelements zur Laufzeit ermitteln

Beitrag von PeterPaletti (Specialist / 336 / 29 / 96 ) »
Irgendwie verstehe ich noch nicht so recht, was du möchtest. Wenn du den Feldnamen herausfinden möchtest, muss du doch das Feld irgendwie identifizieren und wie identifizierst du das Feld, wenn nicht über den Feldnamen?

Re: Name eines Datenelements zur Laufzeit ermitteln

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Du willst den Namen einer Variablen herausfinden.
Aber wie PeterPaletti bereits fragte: in welchem Kontext soll das passieren?
mit FUBA RS_PROGRAM_INDEX bekommst du alle globalen Variablen:

Code: Alles auswählen.

REPORT ztestvar.

PARAMETERS p_repid TYPE syrepid DEFAULT 'ZTESTVAR'.

START-OF-SELECTION.
  DATA without_tree  TYPE abap_bool.
  DATA compo         TYPE STANDARD TABLE OF scompo.
  DATA inc           TYPE STANDARD TABLE OF d010inc.

  CALL FUNCTION 'RS_PROGRAM_INDEX'
    EXPORTING
      pg_name      = p_repid
      without_tree = 'X'
    TABLES
      compo        = compo
      inc          = inc
    EXCEPTIONS
      syntax_error = 1
      OTHERS       = 2.
  IF sy-subrc = 0.
    cl_demo_output=>display_data( compo ).
  ENDIF.


Re: Name eines Datenelements zur Laufzeit ermitteln

Beitrag von der_neuling (ForumUser / 82 / 17 / 3 ) »
PeterPaletti hat geschrieben:
13.11.2023 16:14
Irgendwie verstehe ich noch nicht so recht, was du möchtest. Wenn du den Feldnamen herausfinden möchtest, muss du doch das Feld irgendwie identifizieren und wie identifizierst du das Feld, wenn nicht über den Feldnamen?
Konkretes Beispiel: Report mit SELECTION-SCREEN.
PARAMETER: p_var TYPE X.

Über MODIFY SCREEN soll nun genau dieses Feld nach einer Bedingung unsichtbar geschalten werden. Dafür braucht es den parameter als Text. .

Code: Alles auswählen.

PARAMETERS: MY_VAR TYPE X.

LOOP AT SCREEN INTO DATA(screen_elem).
    CHECK screen_elem-name = 'MY_VAR'.
        screen_elem-active = 0.
ENDLOOP.
Klar, natürlich nicht alles State-of-the-Art, aber ich würde gerne trotzdem unvermeidbare Legacy robuster gestalten. Dazu gehört diese Problemstellung meiner Meinung nach dazu.

Re: Name eines Datenelements zur Laufzeit ermitteln

Beitrag von PeterPaletti (Specialist / 336 / 29 / 96 ) »
Verstehe ich immer noch nicht oder vielleicht ist mir die Aufgabenstellung zu hoch. Wenn du nun 5 Parameter auf dem Selektionsbildschirm hättest, wie soll denn der eine, der ausgeschaltet werden soll, identifiziert werden, wenn nicht über den Namen?

Re: Name eines Datenelements zur Laufzeit ermitteln

Beitrag von der_neuling (ForumUser / 82 / 17 / 3 ) »
PeterPaletti hat geschrieben:
17.11.2023 11:12
Verstehe ich immer noch nicht oder vielleicht ist mir die Aufgabenstellung zu hoch. Wenn du nun 5 Parameter auf dem Selektionsbildschirm hättest, wie soll denn der eine, der ausgeschaltet werden soll, identifiziert werden, wenn nicht über den Namen?
Klar wird der über den Namen identifiziert, aber eben als Literal und nicht als Referenz. Gehen wir nun davon aus, wir nutzen den SELECTION-SCREEN als Include in vielen, vielen Programmen und der Name wird geändert so müssen alle Literale manuell angepasst werden. Und werden nicht alle gefunden entstehen Fehler.

Re: Name eines Datenelements zur Laufzeit ermitteln

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Für so eine Aufgabe arbeitet man mit MODIFY ID, damit man eben nicht einzelne Feldnamen abfragt.

Wenn du das SELECTION-SCREEN-Felder-ändern-Include in ganz vielen Programmen einsetzen willst, wie willst dann muss bei Änderungen im Programm eben auch das Include angepasst werden. ¯\_(ツ)_/¯

Re: Name eines Datenelements zur Laufzeit ermitteln

Beitrag von PeterPaletti (Specialist / 336 / 29 / 96 ) »
Man könnte natürlich spaßeshalber das Literal als Konstante setzen und diese Konstante nutzen, um über den Namen das Feld einem Feldsymbol zuzuweisen und dann abzufragen, ob die Zuweisung erfolgreich war.
Ich halte allerdings die Idee von Enno, MODIF ID zu nutzen für völlig ausreichend.

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1162
Views
default URL einer BSP zur Laufzeit ermitteln??
von Stentor » 10.01.2006 23:12 • Verfasst in Web-Dynpro, BSP + BHTML
4
Antw.
2027
Views
Kurzbeschreibung einer Tabelle zur Laufzeit ermitteln
von standardmodell » 10.08.2016 14:47 • Verfasst in ABAP® für Anfänger
5
Antw.
2684
Views
Laufzeit einer Z-Transaktion ermitteln...ST03N?
von vman » 18.03.2014 00:19 • Verfasst in ABAP® Core
2
Antw.
1019
Views
Pflege eines Datenelements, aber wie??
von Chriss » 22.03.2006 15:32 • Verfasst in ABAP® Core
0
Antw.
1341
Views
Bilanzdaten ermitteln Bilanzpositionen ermitteln
von Blueshape » 20.01.2006 09:12 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 73

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

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 73

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 132
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 166