Interne Tabelle Dynamisch einfuhlen

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

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

Interne Tabelle Dynamisch einfuhlen

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Hi Experten,
ich habe selction von DB in interne Tabelle gt_ekt gemacht.
Dann habe ich mit : cl_alv_table_create=>create_dynamic_table ein Feldkatloag gemacht.
und eine Tebelle gt_alv bekommen:
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = gt_feldkatalog
IMPORTING
ep_table = gt_alv
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.

*** Datenreferenz dem Feldsymbol <TABLE> zuweisen
ASSIGN gt_alv->* TO <gt_alv>.

Jetzt soll ich von gt_eket dynamishc, weil strukturen sind anderes in neue Tabelle <gt_alv> daten fühlen.
FIELD-SYMBOLS :
<gt_alv> TYPE STANDARD TABLE,

meine Frage, wie kann man es machen?
Danke

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


Re: Interne Tabelle Dynamisch einfuhlen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hi!

Code: Alles auswählen.

FIELD-SYMBOLS: 
  <ls_ekt> LIKE LINE OF gt_ekt,
  <la_alv> TYPE ANY,
  <la_field> TYPE ANY.

LOOP AT gt_ekt ASSIGNING <ls_ekt>.
  APPEND INITIAL LINE TO <gt_alv> ASSIGNING <la_alv>.
* Für Felder mit gleichem Namen
  MOVE-CORRESPONDING <ls_ekt> TO <la_alv>.
* Für Felder mit unterschiedlichem Namen
  ASSIGN COMPONENT 'FELDXYZ' OF STRUCTURE <la_alv> TO <la_field>. 
  <la_field> = <la_alv>-feldabc.
ENDLOOP.
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

Re: Interne Tabelle Dynamisch einfuhlen

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
Danke,
da gibt es noch eine Frage, erstmal ich soll pruffen ob Ebeln gleich ist, dann POS gleisch ist und nur dann neue lienie schreiben.
und meine <gt_alv> hat kein kopf zeilen, deshalb kann ich nicht zum feld-name zugreifen.
wie kann man es vergleichen?

Re: Interne Tabelle Dynamisch einfuhlen

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
a-dead-trousers hat geschrieben:hi!

Code: Alles auswählen.

FIELD-SYMBOLS: 
  <ls_ekt> LIKE LINE OF gt_ekt,
  <la_alv> TYPE ANY,
  <la_field> TYPE ANY.

LOOP AT gt_ekt ASSIGNING <ls_ekt>.
  APPEND INITIAL LINE TO <gt_alv> ASSIGNING <la_alv>.
* Für Felder mit gleichem Namen
  MOVE-CORRESPONDING <ls_ekt> TO <la_alv>.
* Für Felder mit unterschiedlichem Namen
  ASSIGN COMPONENT 'FELDXYZ' OF STRUCTURE <la_alv> TO <la_field>. 
  <la_field> = <la_alv>-feldabc.
ENDLOOP.
lg ADT
Hi,
was einst du mit : ASSIGN COMPONENT 'FELDXYZ',
bei mir jedes mal kann sein, das bei get_eket-date-ID kann immer unterschindliche namen sein.
Danke

Re: Interne Tabelle Dynamisch einfuhlen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Das von mir war nur ein BEISPIEL wie man auf Komponenten einer dynamisch erstellten Struktur/Tabelle zugreifen kann.
autohandel7 hat geschrieben:was einst du mit : ASSIGN COMPONENT 'FELDXYZ',
bei mir jedes mal kann sein, das bei get_eket-date-ID kann immer unterschindliche namen sein.
Du weist zur Laufzeit wie dein Feld heißt, denn sonst hättest du nicht den Feldkatalog erstellen können. Also kannst du dir den Feldnamen z.B. auch zusammenbauen.

Code: Alles auswählen.

CONCATENATE 'FELD' 'XYZ' INTO ld_feld.
ASSIGN COMPONENT (ld_feld) OF STRUCTURE <la_alv> TO <la_field>.
Oder umgelegt auf deinen Anwendungsfall:

Code: Alles auswählen.

ASSIGN COMPONENT (<ls_ekt>-date_id) OF STRUCTURE <la_alv> TO <la_field>.
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: Interne Tabelle Dynamisch einfuhlen

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
a-dead-trousers hat geschrieben:Das von mir war nur ein BEISPIEL wie man auf Komponenten einer dynamisch erstellten Struktur/Tabelle zugreifen kann.
autohandel7 hat geschrieben:was einst du mit : ASSIGN COMPONENT 'FELDXYZ',
bei mir jedes mal kann sein, das bei get_eket-date-ID kann immer unterschindliche namen sein.
Du weist zur Laufzeit wie dein Feld heißt, denn sonst hättest du nicht den Feldkatalog erstellen können. Also kannst du dir den Feldnamen z.B. auch zusammenbauen.

Code: Alles auswählen.

CONCATENATE 'FELD' 'XYZ' INTO ld_feld.
ASSIGN COMPONENT (ld_feld) OF STRUCTURE <la_alv> TO <la_field>.
Oder umgelegt auf deinen Anwendungsfall:

Code: Alles auswählen.

ASSIGN COMPONENT (<ls_ekt>-date_id) OF STRUCTURE <la_alv> TO <la_field>.
OK, aber ich brauche kein Name, sondern Wert.
Schau mal Bild.

Re: Interne Tabelle Dynamisch einfuhlen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Da ich nach wie vor nicht weiß welches Feld du wo haben willst, kann ich leider nur raten. So vielleicht?

Code: Alles auswählen.

LOOP AT gt_ekt ASSIGNING <ls_ekt>.
  APPEND INITIAL LINE TO <gt_alv> ASSIGNING <la_alv>.
*...  
  ASSIGN COMPONENT (<ls_ekt>-date_id) OF STRUCTURE <la_alv> TO <la_field>.
  <la_field> = <ls_ekt>-plan_date_low.
*...
ENDLOOP.
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: Interne Tabelle Dynamisch einfuhlen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
autohandel7 hat geschrieben:Danke,
da gibt es noch eine Frage, erstmal ich soll pruffen ob Ebeln gleich ist, dann POS gleisch ist und nur dann neue lienie schreiben.
und meine <gt_alv> hat kein kopf zeilen, deshalb kann ich nicht zum feld-name zugreifen.
wie kann man es vergleichen?
Ach so... Jetzt versteh ich auf was du hinaus willst.

Code: Alles auswählen.

DATA:
  ls_key LIKE LINE OF gt_ekt.
FIELD-SYMBOLS:
  <ls_ekt> LIKE LINE OF gt_ekt,
  <la_alv> TYPE ANY,
  <la_field> TYPE ANY.

LOOP AT gt_ekt ASSIGNING <ls_ekt>.
* Gruppenstufenverarbeitung
  IF ls_key-ebeln NE <ls_ekt>-ebeln OR ls_key-ebelp NE <ls_ekt>-ebelp.
    APPEND INITIAL LINE TO <gt_alv> ASSIGNING <la_alv>.
    MOVE-CORRESPONDING <ls_ekt> TO <la_alv>.
    ls_key = <ls_ekt>.
  ENDIF.
  ASSIGN COMPONENT (<ls_ekt>-date_id) OF STRUCTURE <la_alv> TO <la_field>.
  <la_field> = <la_alv>-plan_date_low.
ENDLOOP.
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: Interne Tabelle Dynamisch einfuhlen

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
a-dead-trousers hat geschrieben:
autohandel7 hat geschrieben:Danke,
da gibt es noch eine Frage, erstmal ich soll pruffen ob Ebeln gleich ist, dann POS gleisch ist und nur dann neue lienie schreiben.
und meine <gt_alv> hat kein kopf zeilen, deshalb kann ich nicht zum feld-name zugreifen.
wie kann man es vergleichen?
Ach so... Jetzt versteh ich auf was du hinaus willst.

Code: Alles auswählen.

DATA:
  ls_key LIKE LINE OF gt_ekt.
FIELD-SYMBOLS:
  <ls_ekt> LIKE LINE OF gt_ekt,
  <la_alv> TYPE ANY,
  <la_field> TYPE ANY.

LOOP AT gt_ekt ASSIGNING <ls_ekt>.
* Gruppenstufenverarbeitung
  IF ls_key-ebeln NE <ls_ekt>-ebeln OR ls_key-ebelp NE <ls_ekt>-ebelp.
    APPEND INITIAL LINE TO <gt_alv> ASSIGNING <la_alv>.
    MOVE-CORRESPONDING <ls_ekt> TO <la_alv>.
    ls_key = <ls_ekt>.
  ENDIF.
  ASSIGN COMPONENT (<ls_ekt>-date_id) OF STRUCTURE <la_alv> TO <la_field>.
  <la_field> = [b]<la_alv>-plan_date_low.[/b]
ENDLOOP.
Danke, für deine Hilfe,
leider bekomme ich wieder eine Fehler:
"Das Datenobjekt "<LA_ALV>" besitzt keine Struktur und daher auch keine Komponente mit Namen "PLAN_DATE_LOW"."
Weisst due was kann man machen?
Danke

Re: Interne Tabelle Dynamisch einfuhlen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
ups sorry, natürlich gehört da <ls_etk>-plan_date_low.
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: Interne Tabelle Dynamisch einfuhlen

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
a-dead-trousers hat geschrieben:ups sorry, natürlich gehört da <ls_etk>-plan_date_low.
Danke, es wieder eine Fehle.
Sehe Bild. Beim Assing.

wenn ich so mache:
ASSIGN COMPONENT (<ls_eket>-date_id) OF STRUCTURE <la_alv> TO <la_field>.

<la_field> = <ls_eket>-plan_date_low.
bekomme ich Fehler:
Feld "(<LS_EKET>-DATE_ID)" unbekannt. Es ist weder in einer der angegebenen Tabellen enthalten noch durch eine "DATA"-Anweisung definiert.

wenn so:
ASSIGN COMPONENT <ls_eket>-date_id OF STRUCTURE <la_alv> TO <la_field>.

<la_field> = <ls_eket>-plan_date_low.
dann Assing problemme.

Re: Interne Tabelle Dynamisch einfuhlen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Prüf mal ob in DATE_ID der richtige Name drinnensteht.
Generell ist mein Coding nur als Beispiel zu sehen und nicht die fertige Lösung die du brauchst.
Es fehlen daher noch so ziemlich alle Fehlerverarbeitungen. Dafür bist du verantwortlich, da ich dein SAP-Umfeld nicht kenne. Schau dir die Hilfe zu ASSIGN an.

lg ADT

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

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: Interne Tabelle Dynamisch einfuhlen

Beitrag von autohandel7 (Specialist / 186 / 67 / 0 ) »
a-dead-trousers hat geschrieben:Prüf mal ob in DATE_ID der richtige Name drinnensteht.
Generell ist mein Coding nur als Beispiel zu sehen und nicht die fertige Lösung die du brauchst.
Es fehlen daher noch so ziemlich alle Fehlerverarbeitungen. Dafür bist du verantwortlich, da ich dein SAP-Umfeld nicht kenne. Schau dir die Hilfe zu ASSIGN an.

lg ADT
Danke Dir für Hilfe.
es Funktoniert.
Für alle die gleiche Problemme Haben hier die Lösung.

DATA:
ls_key LIKE LINE OF gt_eket.
FIELD-SYMBOLS:
<ls_eket> LIKE LINE OF gt_eket,
<la_alv> TYPE ANY,
* <la_alv> LIKE LINE OF <gt_alv>,
<la_field> TYPE ANY.

LOOP AT gt_eket ASSIGNING <ls_eket>.
* Gruppenstufenverarbeitung
IF ls_key-ebeln NE <ls_eket>-ebeln OR ls_key-ebelp NE <ls_eket>-ebelp.
APPEND INITIAL LINE TO <gt_alv> ASSIGNING <la_alv>.
MOVE-CORRESPONDING <ls_eket> TO <la_alv>.
ls_key = <ls_eket>.
ENDIF.
ASSIGN COMPONENT <ls_eket>-date_id OF STRUCTURE <la_alv> TO <la_field>.
ASSIGN COMPONENT <ls_eket>-plan_date_low of STRUCTURE <ls_eket> to <la_field>.
<la_field> = <ls_eket>-plan_date_low.
ENDLOOP.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
3464
Views
Interne Tabelle dynamisch füllen
von stas » 27.10.2007 10:41 • Verfasst in ABAP® Core
5
Antw.
2896
Views
Interne Tabelle dynamisch anzeigen
von Embryo » 24.01.2013 10:38 • Verfasst in ABAP® für Anfänger
12
Antw.
8036
Views
dynamisch interne Tabelle füllen
von LittleT » 03.04.2007 15:27 • Verfasst in ABAP® für Anfänger
8
Antw.
1728
Views
Interne Tabelle dynamisch erzeugen
von Der Formulator » 21.10.2021 09:30 • Verfasst in ABAP® Core
8
Antw.
5392
Views
Interne Tabelle dynamisch generieren
von inab » 22.10.2008 10:19 • Verfasst in ABAP Objects®

Ü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

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

Daten an Tabelle binden
vor 14 Stunden von Bright4.5 1 / 283
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1923
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8525