Felder einer dyn.internen Tabelle zuweisen

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!

Felder einer dyn.internen Tabelle zuweisen

Postby Celin4809 » Wed Mar 09, 2005 3:40 pm

Hallo,

wer weiß wie ich es hinbekomme, bei einer dyn.erstellten ITAB Felder zuzuweisen.

Momentan geht nur:

loop at atab into <ls_itab>.
append <ls_itab> to <lt_itab>.
endloop.

ich möchte aber gerne genau die Felder bestimmen und zuweisen. Ich weiß aber nicht wie!!!
Celin4809
..
..
 
Posts: 15
Joined: Fri Feb 04, 2005 11:05 am

Postby Juliana3781 » Wed Mar 09, 2005 3:53 pm

Wenn du die Feldnamen weißt, kannst du einzelne Felder des Arbeitsbereichs einem Feldsymbol zuweisen.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   <feld> type any.
  2.  
  3. ...
  4. assign component 'FELD1'
  5.   of structure <ls_itab> to <feld>.
  6.  
GeSHi ©


Wenn du die Feldnamen nicht weißt, musst du sie über die Klasse CL_ABAP_TABLEDESCR bzw. CL_ABAP_STRUCTDESCR ermitteln.

Gruß, Heiko.
Juliana3781
..
..
 
Posts: 47
Joined: Mon Jan 10, 2005 3:28 pm

Re: Felder einer dyn.internen Tabelle zuweisen

Postby Silke1341 » Wed Mar 09, 2005 3:56 pm

Thorsten hat geschrieben:Hallo,

wer weiß wie ich es hinbekomme, bei einer dyn.erstellten ITAB Felder zuzuweisen.

Momentan geht nur:

loop at atab into <ls_itab>.
append <ls_itab> to <lt_itab>.
endloop.

ich möchte aber gerne genau die Felder bestimmen und zuweisen. Ich weiß aber nicht wie!!!

schau Dir mal den Befehl ASSIGN COMPONENT an.
Da Du eine dynamische Tabelle hat, wirst Du wahrscheinlich die Felder dazu in einer Tabelle definiert haben.
Das Ganze wird typischerweise in einer DO-Schleife abgehandelt.

Nachtrag: ein sogenannter Doppelpost... :D
Silke1341
.....
.....
 
Posts: 1985
Joined: Thu Aug 19, 2004 3:20 pm

Postby Edin1867 » Wed Mar 09, 2005 4:01 pm

Moin.

Müßte mit Feldsymbolen vom Typ ANY gehen. Ich schreibsel hier mal 'n Coding hin, ist aber aus dem Kopf programmiert und nicht getestet.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.     : <l_field>  TYPE ANY
  2.     , <l_field2> TYPE ANY
  3.     , <ls_itab2> TYPE ANY
  4.     .
  5. LOOP AT atab INTO <ls_itab>.
  6.   ASSIGN COMPONENT 'FELD1'          " *
  7.          OF STRUCTURE <ls_itab>     " *
  8.          TO <l_field>.              " *
  9.   IF sy-subrc IS INITIAL.           " *
  10.     ASSIGN COMPONENT 'FELD1'        " *
  11.            OF STRUCTURE <ls_itab2>  " *
  12.            TO <l_field2>.           " *
  13.     IF sy-subrc IS INITIAL.         " *
  14.       MOVE <l_field> TO <l_field2>. " *
  15.       APPEND <ls_itab2> TO <lt_itab>.
  16.     ENDIF.
  17.   ENDIF.
  18.  
GeSHi ©


Die mit "*" markierte Codingstrecke natürlich für Deine gesamte Feldliste und den APPEND am Ende. :wink:

Gruss,
Haubi

/edit: wie jetzt, zwei andere waren schneller und dann auch noch popeiko dabei... :shock:
Edin1867
...
...
 
Posts: 406
Joined: Wed Dec 18, 2002 11:50 am

Postby Celin4809 » Wed Mar 09, 2005 5:15 pm

Hallo Haubi,

klappte fast so (ein Assign fehlte). Danke. Jetzt habe ich nur noch das Problem, dass ich den Feldnamen zusammenbaue. Sobald ich dann beim ASSIGN die Variable oder ein Field-Symbol angebe, kommt SY-SUBRC 4 und er erkennt das Feld nicht. Wie gesagt, ich habe es als Variable und Feld-Symbol probiert. Leider nichts. Vielleicht weißt Du ja noch was. Wäre toll.

z.B.
concatenate 'Feld' zahl into vari.
und
Assign vari to <feld>.

und dann

ASSIGN COMPONENT <VARI> " *
OF STRUCTURE <ls_itab2> " *
TO <l_field2>.

geht leider nicht!?

mfg
Thorsten
Celin4809
..
..
 
Posts: 15
Joined: Fri Feb 04, 2005 11:05 am

Postby Silke1341 » Wed Mar 09, 2005 5:40 pm

Thorsten hat geschrieben:Hallo Haubi,

klappte fast so (ein Assign fehlte). Danke. Jetzt habe ich nur noch das Problem, dass ich den Feldnamen zusammenbaue. Sobald ich dann beim ASSIGN die Variable oder ein Field-Symbol angebe, kommt SY-SUBRC 4 und er erkennt das Feld nicht. Wie gesagt, ich habe es als Variable und Feld-Symbol probiert. Leider nichts. Vielleicht weißt Du ja noch was. Wäre toll.

z.B.
concatenate 'Feld' zahl into vari.
und
Assign vari to <feld>.

und dann

ASSIGN COMPONENT <VARI> " *
OF STRUCTURE <ls_itab2> " *
TO <l_field2>.

geht leider nicht!?

mfg
Thorsten

der Befehl hört auf den Syntax:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ASSIGN COMPONENT 'Feldname' OF ...
  2. ASSIGN COMPONENT vari OF ...
  3. * oder
  4. ASSIGN COMPONENT index OF ...
  5.  
GeSHi ©

wenn der Inhalt von vari nicht dem Namen eines Feldes entspricht, kommt tatsächlich SY-SUBRC = 4

Also mal im Debugger schauen, wie der Feldname in der Varablen aussieht.
Silke1341
.....
.....
 
Posts: 1985
Joined: Thu Aug 19, 2004 3:20 pm

Postby Juliana3781 » Wed Mar 09, 2005 5:43 pm

Bei einem ASSIGN COMPONENT müssen die Feldnamen groß geschrieben werden.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. concatenate 'Feld' zahl into vari.
  2.  
  3. *>>>
  4. TRANSLATE vari TO UPPER CASE.
  5. *<<<
  6.  
  7. ASSIGN COMPONENT vari " *
  8. OF STRUCTURE <ls_itab2> " *
  9. TO <l_field2>.
  10.  
GeSHi ©
Juliana3781
..
..
 
Posts: 47
Joined: Mon Jan 10, 2005 3:28 pm

Postby Alva1590 » Wed Mar 09, 2005 6:17 pm

Hallo,

so einfach kann es sein. Das klappte auch mit dem GROßSCHREIBEN. Aber jetzt habe ich noch ein Problem. Ich habe z.B eine dyn.Tabelle mit den Feldern Feld1 - Feld50. Jetzt loope ich über eine andere Tabelle und möchte aus dieser Tabelle den Betrag je nach Sy-Tabix in das Feld Feldxx der dyn.Tabelle setzen. Das Problem ist, dass der ASSIGN die Tabelle, in der ich die Felder zuweise, immer wieder initialisiert. Wie kann ich den aktuellen Zwischenstand festhalten? Also sobald ich Loop at atab assigning <tab1> mache, und das Feld2 der dyn.Tabelle schon gefüllt war, ist es danach wieder init und FELD1 ist wieder nur gefüllt, weil es aus dem aktuellen Loop kommt. Kann man das verhindern?

Also ich möchte die ersten 50 Einträge der Tabelle ATAB-BETRG in die Felder der Dyn.Tabelle Feld1 - Feld50 übertragen.

mfg
T.Herter
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Hat sich erledigt!! Danke an Alle

Postby Celin4809 » Thu Mar 10, 2005 11:49 am

:D Problem gelöst, Danke an Alle!!! :lol:
Celin4809
..
..
 
Posts: 15
Joined: Fri Feb 04, 2005 11:05 am


Return to Tips + Tricks & FAQs

Who is online

Users browsing this forum: No registered users and 17 guests