Variablen Namen dynamisch zuweisen

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

Benutzeroberflächen in SAP®-Systemen.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Variablen Namen dynamisch zuweisen

Beitrag von Google ( / / 0 / 3 ) »
Hallo Zusammen
Ich habe folgendes Problem.
Ich möchte, dass das Feld so heisst, wie der Inhalt der Variable w_icon. Allerdings bekomme ich dann immer einen Kurzdump, weil er es nicht assignen konnte. Was mach ich falsch??

Code: Alles auswählen.

          UNASSIGN <f>.
*Feld sollte wie Wert von w_icon heissen z.B. C1          
          ASSIGN (w_icon) TO <f>.

          CALL FUNCTION 'ICON_CREATE'
               EXPORTING
                    name                  = 'ICON_LOCATION'
                    text                  = ' '
                    info                  = w_info
                    add_stdinf            = 'X'
               IMPORTING
                    result                = w_icon
               EXCEPTIONS
                    icon_not_found        = 1
                    outputfield_too_short = 2
                    OTHERS                = 3.
          MOVE w_icon TO <f>.

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


Re: Variablen Namen dynamisch zuweisen

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Google hat geschrieben:Hallo Zusammen
Ich habe folgendes Problem.
Ich möchte, dass das Feld so heisst, wie der Inhalt der Variable w_icon. Allerdings bekomme ich dann immer einen Kurzdump, weil er es nicht assignen konnte. Was mach ich falsch??

Code: Alles auswählen.

          UNASSIGN <f>.
*Feld sollte wie Wert von w_icon heissen z.B. C1          
          ASSIGN (w_icon) TO <f>.

          CALL FUNCTION 'ICON_CREATE'
               EXPORTING
                    name                  = 'ICON_LOCATION'
                    text                  = ' '
                    info                  = w_info
                    add_stdinf            = 'X'
               IMPORTING
                    result                = w_icon
               EXCEPTIONS
                    icon_not_found        = 1
                    outputfield_too_short = 2
                    OTHERS                = 3.
          MOVE w_icon TO <f>.
ein ASSIGN kann einen Zeiger nur auf eine existente Variable setzen.
Um eine Variable neu zu erzeugen muss CREATE DATA benutzt werden:

Code: Alles auswählen.

DATA: 
  ld_var TYPE REF TO DATA.
FIELD-SYMBOLS:
  <l_var> TYPE ANY.

CREATE DATA ld_var TYPE string.
ASSIGN ld_var->* TO <l_var>.
...
PS: Code ist nicht getestet... ;)

Beitrag von google ( / / 0 / 3 ) »
die variablen existieren ja bereits... habe nur diesen codeausschnitt nicht reingetan. müssen diese zwingend mit create data definiert werden?

Im moment ist die definition so:

Code: Alles auswählen.

data w_icon TYPE icons-text.

*Field-Symbols
FIELD-SYMBOLS: <f> TYPE icons-text
             .

Beitrag von Gast ( / / 0 / 3 ) »
das ist noch der ganze Code-Abschnitt...

Code: Alles auswählen.

    LOOP AT i_white_ingame.
      CASE screen-name.
        WHEN i_white_ingame-pos.
          MOVE i_white_ingame-pos TO w_icon.
          MOVE i_white_ingame-stein TO w_info.

          UNASSIGN <f>.
*Feld sollte wie Wert von w_icon heissen z.B. C1
          ASSIGN (w_icon) TO <f>.
          IF <f> IS ASSIGNED.

            CALL FUNCTION 'ICON_CREATE'
                 EXPORTING
                      name                  = 'ICON_LOCATION'
                      text                  = ' '
                      info                  = w_info
                      add_stdinf            = 'X'
                 IMPORTING
                      result                = w_icon
                 EXCEPTIONS
                      icon_not_found        = 1
                      outputfield_too_short = 2
                      OTHERS                = 3.
            MOVE w_icon TO <f>.
          ENDIF.
      ENDCASE.
    ENDLOOP.

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Sorry, aber Du verwechselt da etwas:
Mit ASSIGN (w_icon) ... willst Du einen Zeiger, der in <f> gespeichert werden soll, auf eine Variable zeigen lassen, deren Name sich in der Variablen w_icon (hier C1) befindet.
An Hand Deiner Beispiele kann ich keine Deklaration der Variablen C1 erkennen.

Wenn ich mir Dein Coding so ansehe, solltest Du i_white_ingame um ein Feld für den Icontext ergänzen. Dann kannst Du Dir den ganzen Teil mit ASSIGN schenken.
Um doch noch mit Feldsymbolen zu arbeiten, kannst Du den LOOP um ein ASSIGNING <feldleiste> ergänzen. Damit würde ein MODIFY nach Erzeugen des ICON wegfallen bzw. nicht benötigt werden.

PS:
der Tabellenname i_white_ingame ist ungeschickt gewählt, weil hiermit im SAP-Umfeld typischerweise eine einfache, unstrukturierte Variable verstanden wird.
Besser wäre: it_white_ingame (IT => Tabelle)
Gruß
Ereglam


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

Beitrag von Gast ( / / 0 / 3 ) »
:idea:
Vielen Dank für deine Hilfe. Jetzt ist mir erst klar geworden, was mit dem Assign eigentlich genau geschieht.

Seite 1 von 1

Vergleichbare Themen

5
Antw.
2074
Views
Namen einer Variablen erfahren
von stele » 29.07.2004 07:58 • Verfasst in ABAP® Core
2
Antw.
3319
Views
Typ dynamisch aus String zuweisen
von Talvien » 02.09.2014 12:31 • Verfasst in ABAP® für Anfänger
19
Antw.
13818
Views
dynamisch type zuweisen
von MarkusW » 13.02.2007 13:01 • Verfasst in ABAP® Core
4
Antw.
2249
Views
Variablentyp dynamisch zuweisen
von Kresiquadratur » 16.07.2007 16:34 • Verfasst in ABAP® für Anfänger
5
Antw.
1492
Views
Den Namen der auszulesenden Spalte dynamisch ändern
von legi » 16.05.2006 10:26 • 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

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