LOOP AT ITAB und CREATE DATA

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

LOOP AT ITAB und CREATE DATA

Beitrag von lilly-joe (ForumUser / 5 / 0 / 0 ) »
Hallo,

ich habe eine interne Tabelle, über die ich lopen möchte. Zu jeder Zeile soll dann eine Variable deklariert werde, die so heißt wie der Inhalt in Spalte 1 und dann den Wert der Spalte 2 zugewiesen bekommt.

Also in Spalte 1 stehen z.B. Eigenschaften und in Spalte 2 die Ausprägungen:

Laenge 1,234
Breite 5,678
Hoehe 9,123

Ich habe mir das so gedacht:

DATA: dref type ref to data.
FIELD-SYMBOLS <fs> type any.

LOOP AT itab INTO wa.
CREATE DATA dref TYPE p DECIMALS 3.
*Wie kann ich jetzt die Feldinhalte meiner Variablen zuweisen?
*Oder muss ich den Namen vorher vergeben?
endloop.


Sorry, bin noch ein ziemlicher ABAP-Anfänger. Ich hab schon diverse Einträge zu CREATE DATA durchforstet, aber irgendwie werden da immer Tabeleln angelegt oder der Tabellenname variabel belegt.

Danke!
lilly-joe

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


Re: LOOP AT ITAB und CREATE DATA

Beitrag von PeterPaletti (Specialist / 336 / 29 / 96 ) »

Code: Alles auswählen.

loop at tab into wa.
  create data dref type p decimals 3.
  assign dref->* to <fs>.
  <fs> = wa-spalte_2.
endloop.
So in etwa?

Re: LOOP AT ITAB und CREATE DATA

Beitrag von lilly-joe (ForumUser / 5 / 0 / 0 ) »
Hallo,

super, jetzt kann ich den Wert schon einmal zuweisen. Aber wie kann ich dref umbenennen? Ich will ja nicht nur eine Variable erzeugen sondern für jede Zeile eine neue ( im Beispiel also Länge, Breite und Höhe).

lilly-joe

Re: LOOP AT ITAB und CREATE DATA

Beitrag von lilly-joe (ForumUser / 5 / 0 / 0 ) »
Falls das nich tgeht, wie würde ich es machen, wen ich die Variablen vorher deklariere.
Dann wäre meine Wunschvorstellung

variable(wa-spalte1) = wa-spalte2

DATA: breite type p decimals 3.
DATA: laenge type p decimals 3.
DATA: hoehe type p decimals 3.

loop at tab into wa.
variable(wa-spalte1) = wa-spalte2
endloop.

Re: LOOP AT ITAB und CREATE DATA

Beitrag von PeterPaletti (Specialist / 336 / 29 / 96 ) »

Code: Alles auswählen.


types: begin of ty,
       spalte_1(6) type c,
       spalte_2 type p decimals 3,
       end of ty,
       tt type table of ty.

data hoehe type p decimals 3.
data laenge type p decimals 3.


data: tab type tt,
      wa  type ty.
FIELD-SYMBOLS <fs> type any.

wa-spalte_1 = 'LAENGE'.
wa-spalte_2 = '123.456'.
append wa to tab.

wa-spalte_1 = 'HOEHE'.
wa-spalte_2 = '654.421'.
append wa to tab.

loop at tab into wa.
   assign (wa-spalte_1) to <fs>.
  <fs> = wa-spalte_2.
endloop.
So in etwa?

Re: LOOP AT ITAB und CREATE DATA

Beitrag von lilly-joe (ForumUser / 5 / 0 / 0 ) »
Vielen Dank,
das verkürzt mein Programm um so einiges und macht es wesentlich flexibler.

Aber ich habe es jetzt schon richtig verstanden, dass es nicht möglich ist, während des Programmes neue Variablen zu deklarieren, die individuelle Namen haben?

Danke.
lilly-joe

Re: LOOP AT ITAB und CREATE DATA

Beitrag von a-dead-trousers (Top Expert / 4281 / 214 / 1140 ) »
lilly-joe hat geschrieben:Aber ich habe es jetzt schon richtig verstanden, dass es nicht möglich ist, während des Programmes neue Variablen zu deklarieren, die individuelle Namen haben?
Die Antwort darauf ist ein ganz klares JEIN :wink:
Du kannst keine VARIABLEN zur Laufzeit erzeugen.
Was aber geht, ist das Erzeugen von SPEICHERBEREICHEN in denen du Werte ablegen kannst.
Diese können der Einfachheit halber auch tabellarisch abgelegt werden um eine gewisse Flexibilität zu erreichen.

Ein kleines Beispiel:

Code: Alles auswählen.

types:
  begin of ts_data,
    NAME type CHAR30,
    VALUE type ref to DATA,
  end of ts_data,
  tt_data type standard table of ts_data with default key.
data:
  lt_data type tt_data.
field-symbols:
  <la_field> type any,
  <ls_data> type ts_data.
Bezogen auf deine Vorgaben, das Erzeugen eines Speicherbereichs für 'HÖHE':

Code: Alles auswählen.

READ TABLE lt_data ASSIGNING <ls_data> WITH KEY NAME = 'HOEHE'.
if sy-subrc ne 0.
  APPEND INITIAL LINE TO lt_data ASSIGNING <ls_data>.
  <ls_data>-NAME = 'HOEHE'.
  CREATE DATA <ls_data>-value TYPE p decimals 3.
endif.
ASSIGN <ls_data>-value->* to <la_field>.
Alles was man nun in <la_field> reinschreibt wird in der Tabelle unter 'HOEHE' abgelegt.

lg ADT
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

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1620
Views
Create Data
von asano » 11.08.2004 16:54 • Verfasst in ABAP® Core
1
Antw.
223
Views
Delete in Loop abglecih 2 ITAb
von autohandel7 » 17.12.2021 10:35 • Verfasst in ABAP® für Anfänger
4
Antw.
1807
Views
Daten in ITAB lesen für jeden Eintrag ohne Loop
von kpas » 04.08.2006 08:07 • Verfasst in ABAP® Core
5
Antw.
2351
Views
LOOP über eine dynamisch angelegte itab ohne Kopfzeile
von Dudu » 25.04.2005 19:23 • Verfasst in ABAP® Core
1
Antw.
728
Views

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.

Unbeantwortete Forenbeiträge

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