Dynamischer Strukturzugriff mit Field Symbols

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

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Dynamischer Strukturzugriff mit Field Symbols

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
Hallo abap Community!
das suchen mit Google hat mir nicht weitergeholfen darum versuche ich es mal hier!

Ich möchte hier gerade auf die Komponente einer eigenen DDIC Struktur zugreifen, aber nicht hardkodiert sondern über usereingabe im dynpro.

Ich habe diese beiden strukturen mit einer gleichen komponente:
die cv variablen sind changing Parameter für mein fuba.

cv_station_inv = station_struc1-treibstoff
cv_spieler_inv = player_struc-treibstoff.


Dann habe ich noch ein eingabefeld im dynpro mit der variablen lv_name.
Nun möchte ich dass diese eingabe genommen wird um die beiden CV variablen zuzuweisen.

Also wenn der user Treibstoff eingibt, soll dann mit treibstoff gearbeitet werden im code.

Statt das:
cv_station_inv = station_struc1-treibstoff
cv_spieler_inv = player_struc-treibstoff.


Soll dann sowas wie das da stehen:

cv_station_inv = station_struc1-lv_name
cv_spieler_inv = player_struc-lv_name.

Damit man verschiedene gueter handeln kann indem man nur die namen dieser güter eingibt..

Ist sowas möglich? Im internet hab ich nix hilfreiches gefunden.

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


Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von lausek (ForumUser / 64 / 2 / 20 ) »

Code: Alles auswählen.

DATA lv_name TYPE string VALUE 'TREIBSTOFF'.

ASSIGN COMPONENT lv_name OF STRUCTURE station_struc1 TO FIELD-SYMBOL(<lfs_sstruc1>).
IF sy-subrc = 0.
  " komponente gefunden
ENDIF.
Das Gleiche dann noch mit

Code: Alles auswählen.

player_struc
und du hast zwei Feldsymbole mit den jeweiligen Werten.

Folgende Benutzer bedankten sich beim Autor lausek für den Beitrag:
Abaphalbsocke


Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
Danke für diese Schnelle antwort, aber nun bin ich noch verwirrter:
wofür steht denn das <lfs_sstruc1>?

Ich verstehe nicht wie ich das einbauen und dann verwenden muss... :/

Code: Alles auswählen.

  CASE sy-ucomm.
    WHEN 'BACK' OR 'EXIT' OR 'CNCL'.
      LEAVE PROGRAM.

    WHEN 'FCT_BUY'.

      CALL FUNCTION 'ZCB_HANDELSMODUL'
        EXPORTING
          iv_preis           = ls_gueter-preis
          iv_menge           = lv_menge
        CHANGING
          cv_credits         = player_struc-credits
          cv_station_inv     = station_struc1-treibstoff
          cv_spieler_inv     = player_struc-treibstoff
          cv_station_credits = station_struc1-credits.

    WHEN 'FCT_BACK'.
      CALL SCREEN 0100.
  ENDCASE.
ENDMODULE.

Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von lausek (ForumUser / 64 / 2 / 20 ) »
Feldsymbole sind Referenzen auf andere Felder. ASSIGN COMPONENT sucht sich die Strukturkomponente mit dem passenden Namen und sagt dem angegebenen Feldsymbol, dass es jetzt so tun soll, als ob es dieses Feld ist.

Welchen Datentyp haben cv_station_inv und cv_spielver_inc in deinem Funktionsbaustein?

Folgende Benutzer bedankten sich beim Autor lausek für den Beitrag:
Abaphalbsocke


Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
Ganz simpel DEC 4

Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von lausek (ForumUser / 64 / 2 / 20 ) »
Solange alle anderen Strukturkomponenten den gleichen Typ haben, sollte es keine Probleme geben. Die zugewiesenen Feldsymbole können dann an die Aufrufstelle des Funktionsbausteins anstelle der "Treibstoff"-Felder.

Folgende Benutzer bedankten sich beim Autor lausek für den Beitrag:
Abaphalbsocke


Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
hm.. sorry aber die Verwirrtheit hat nicht abgenommen.

ASSIGN COMPONENT lv_name OF STRUCTURE station_struc1 TO FIELD-SYMBOL(<lfs_sstruc1>).
ich sage hier also jetzt dass lv_name so tun soll als wäre es eine Komponente von der Struktur Station_struc1?



und was ich mit lfs_sstruc1 machen soll weis ich auch noch immer nicht...

Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von lausek (ForumUser / 64 / 2 / 20 ) »
lv_name enthält das, was dein Nutzer auf dem Dynpro eingibt. Also 'Treibstoff' als Zeichenkette. ASSIGN COMPONENT sieht sich dann die Felder von station_struc1 an und schaut ob es da ein Feld gibt, was so heißt. Wenn es eines gibt, wird <lfs_sstruc1> zugewiesen und enthält den Wert von station_struc1-treibstoff.

Das heißt, dass du überall dort wo jetzt station_struc1-treibstoff steht einfach <lfs_sstruc1> hinschreiben kannst. Sollte der Nutzer sich dann entscheiden, statt Treibstoff lieber mit Birnen zu handeln, ist das das gleiche Spiel. Dieses mal wird <lfs_sstruc1> allerdings zu station_struc1-birnen und enthält deren Werte.

Folgende Benutzer bedankten sich beim Autor lausek für den Beitrag:
Abaphalbsocke


Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
Okay, so langsam lösen sich die Knoten im Gehirn, danke für die Ausformulierung für Dummys. Jedoch bekomme ich diverse Fehlermeldungen:
Wenn ich <lfs_sstruc1> über doppelklick anlege, verschwindet die Fehlermeldung mit <lfs_sstruc1> aber die Fehlermeldung mit "FIELD-SYMBOL(<lfs_sstruc1>) bleibt bestehen, bzw inkrementiert nur die Zeile von 120 auf 121. Zeile 120 ist übrigens leer, und auf 121 steht das Assign component

Code: Alles auswählen.

ASSIGN COMPONENT lv_name OF STRUCTURE station_struc1 TO FIELD-SYMBOL(<lfs_sstruc1>).

  CASE sy-ucomm.
    WHEN 'BACK' OR 'EXIT' OR 'CNCL'.
      LEAVE PROGRAM.

    WHEN 'FCT_BUY'.

      CALL FUNCTION 'ZCB_HANDELSMODUL'
        EXPORTING
          iv_preis           = ls_gueter-preis
          iv_menge           = lv_menge
        CHANGING
          cv_player_credits  = player_struc-credits
          cv_station_inv     = <lfs_sstruc1>
          cv_spieler_inv     = <lfs_sstruc1>
          cv_station_credits = station_struc1-credits.

    WHEN 'FCT_BACK'.
      CALL SCREEN 0100.
  ENDCASE.
ENDMODULE.   

Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von lausek (ForumUser / 64 / 2 / 20 ) »
Scheinbar hast du noch eine ältere NetWeaver-Version. Dann kommst du leider nicht in die Convenience-Features von ABAP 7.5... :D

Das Problem kannst du allerdings lösen, indem du dein Feldsymbol einfach wie eine Variable oben in deiner Routine anlegst.

Code: Alles auswählen.

FIELD-SYMBOLS <lfs_sstruc1> TYPE zcb_menge.
Zuletzt geändert von lausek am 17.05.2018 15:27, insgesamt 1-mal geändert.

Folgende Benutzer bedankten sich beim Autor lausek für den Beitrag:
Abaphalbsocke


Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
So tat ich:
Sidenote: In meiner Version muss es statt Field-Symbol Field-SymbolS mit S heißen.
VERDAMMTE AXT

Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von lausek (ForumUser / 64 / 2 / 20 ) »
Stimmt, mein Fehler. Das kommt davon wenn man nicht alles nochmal in der SE38 eintippt :?

Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von schick (ForumUser / 52 / 5 / 15 ) »
Wenn du das Feld-Symbol schon definiert hast musst du anschließend mit

Code: Alles auswählen.

ASSIGN COMPONENT lv_name OF STRUCTURE station_struc1 TO <lfs_sstruc1>.
statt

Code: Alles auswählen.

ASSIGN COMPONENT lv_name OF STRUCTURE station_struc1 TO FIELD-SYMBOL(<lfs_sstruc1>).
weiter machen.

Folgende Benutzer bedankten sich beim Autor schick für den Beitrag:
Abaphalbsocke


Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Und wenn du das Ganze dann wieder vereinfachst, wird es auch wieder verständlicher:

Code: Alles auswählen.

ASSIGN COMPONENT 'TREIBSTOFF' OF STRUCTURE station_struc1 TO FIELD-SYMBOL(<lv_treibstoff_01>).

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Abaphalbsocke


Re: Dynamischer Strukturzugriff mit Field Symbols

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
Vielen vielen Dank, nun funktioniert der Kot auch wieder ohne murren, aber ich bin noch nicht fertig xD
Ich möchte ja erreichen dass je nach eingabe des users:
1. Die entsprechende Strukturkomponente angesprochen wird
2. Mein Dynpro je nach eingabe eben auch die Menge der angesprochenen Komponente ausgibt

Bei Item gebe ich den Namen der Komponente ein.

Einfach den Feldnamen im Dynpro ändern funktioniert nicht, weil er dann versucht mehrfach das gleiche zu deklarieren. Evtl Platzhalter einbauen und die dynamisch zuweisen wie eben schon?

Code: Alles auswählen.

  ASSIGN COMPONENT lv_name OF STRUCTURE station_struc1 TO <lfs_sstruc1>.
  ASSIGN COMPONENT lv_name OF STRUCTURE player_struc TO <lfs_sstruc2>.

  CASE sy-ucomm.
    WHEN 'BACK' OR 'EXIT' OR 'CNCL'.
      LEAVE PROGRAM.

    WHEN 'FCT_BUY'.
      CALL FUNCTION 'ZCB_HANDELSMODUL'
        EXPORTING
          iv_preis           = ls_gueter-preis
          iv_menge           = lv_menge
        CHANGING
          cv_player_credits  = player_struc-credits
          cv_station_inv     = <lfs_sstruc1>
          cv_spieler_inv     = <lfs_sstruc2>
          cv_station_credits = station_struc1-credits.

    WHEN 'FCT_BACK'.
      CALL SCREEN 0100.
  ENDCASE.
ENDMODULE.

Vergleichbare Themen

13
Antw.
11881
Views
Field-Symbols
von cschmoel » 23.08.2012 09:21 • Verfasst in ABAP® für Anfänger
13
Antw.
5811
Views
Field Symbols
von Trulchen » 27.06.2014 08:10 • Verfasst in ABAP® für Anfänger
3
Antw.
1836
Views
field symbols
von Riceman » 20.03.2006 15:08 • Verfasst in ABAP® Core
10
Antw.
4005
Views
FIELD-SYMBOLS
von kostonstyle » 15.08.2008 08:07 • Verfasst in ABAP® für Anfänger
7
Antw.
2831
Views
field symbols
von bohne » 20.10.2006 15:07 • Verfasst in ABAP® für Anfänger

Ü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

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140