Tabellenzuweidung über ASSIGN COMPONENT ...

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Tabellenzuweidung über ASSIGN COMPONENT ...

Postby Alan4607 » Thu Jul 21, 2011 4:53 pm

Hallo Zusammen,

Ich habe folgendes Problem!
ich habe eine Struktur struc1 in der ein feld feld1 ein Tabellentyp xy ist.

Jetzt möchte ich das Feld feld1 über ASSIGN COMPONENT ... einem Feldsymbol zuweisen.
Bekomme die Meldung "<fs> ist noch nicht zugewiesen" wenn ich durch den Debugger gehe.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.      <fs> TYPE ANY TABLE.
  2.  
  3. LOOP AT lt_data ASSIGNING <fs_data>.
  4.  ASSIGN COMPONENT  'feld1' OF STRUCTURE <fs_data> to <fs>.
  5.  
  6.  
GeSHi ©


<fs>muss ich doch als ANY TABLE deklarieren, da ich ja ihn eine Tabelle zuweisen möchte.
Feldname 'feld1' gibt es auch ;)
Wo liegt der Fehler?

Viele Grüße & Danke
sunny
Alan4607
..
..
 
Posts: 11
Joined: Fri Jun 17, 2011 2:02 pm

Re: Tabellenzuweidung über ASSIGN COMPONENT ...

Postby Tron » Thu Jul 21, 2011 10:48 pm

Moin,
wenn Du Feldsymbole generisch deklarierst und einer Feldleiste/Tabelle zuweist (assign) , dann "kennt" das Feldsymbol keine Feldnamen.....
Beispiel:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *&---------------------------------------------------------------------*
  2. *& Report  YBC_TEST_FIELD_COMPONENT
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *&
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT  ybc_test_field_component.
  10.  
  11. TYPES: ty_sf TYPE sflight.
  12. TYPES: ty_sb TYPE sbook.
  13.  
  14. DATA it_sfl TYPE TABLE OF ty_sf.
  15. DATA it_sbo TYPE TABLE OF ty_sb.
  16.  
  17.  
  18. TYPES: BEGIN OF tt_sf,
  19.        a(3) TYPE c,
  20.        x LIKE it_sfl,
  21.        y LIKE it_sbo,
  22.        END OF tt_sf.
  23.  
  24.  
  25. DATA dt TYPE tt_sf.
  26.  
  27.  
  28. dt-a = '777'.
  29. SELECT * FROM sflight INTO TABLE dt-x.
  30. SELECT * FROM sbook INTO TABLE dt-y.
  31.  
  32. FIELD-SYMBOLS <p> TYPE any.
  33. FIELD-SYMBOLS <fs> TYPE any.
  34.  
  35. LOOP AT dt-x ASSIGNING <p>.
  36.   DO.
  37.     ASSIGN COMPONENT sy-index OF STRUCTURE <p> TO <fs>.
  38.     IF sy-subrc <> 0.
  39.       EXIT.
  40.     ENDIF.
  41.   ENDDO.
  42.  
  43.  
GeSHi ©
und der Zugriff muss dann über einen Index erfolgen.
Würde das Feldsymbol z.B. mit "<p> type sflight" deklariert, dann kann man Feldnamen verwenden.
gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Tabellenzuweidung über ASSIGN COMPONENT ...

Postby Ilja583 » Fri Jul 22, 2011 9:53 am

Hallo sunny,

der Fehler ist, dass du den Feldnamen in Großbuchstaben schreiben musst.

funktioniert nicht
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ASSIGN COMPONENT  'feld1' OF STRUCTURE <fs_data> TO <fs>.
GeSHi ©

funktioniert
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ASSIGN COMPONENT  'FELD1' OF STRUCTURE <fs_data> TO <fs>.
GeSHi ©
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Re: Tabellenzuweidung über ASSIGN COMPONENT ...

Postby Tron » Fri Jul 22, 2011 11:38 am

Moin,
upps .. stimmt...
Beispiel:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. REPORT  YBC_TEST_ASSIGN.
  2.  
  3. TYPES: ty_sf TYPE sflight.
  4. TYPES: ty_sb TYPE sbook.
  5.  
  6. DATA it_sfl TYPE TABLE OF ty_sf.
  7. DATA it_sbo TYPE TABLE OF ty_sb.
  8.  
  9.  
  10. TYPES: BEGIN OF tt_sf,
  11.        a(3) TYPE c,
  12.        x LIKE it_sfl,
  13.        y LIKE it_sbo,
  14.        END OF tt_sf.
  15.  
  16.  
  17. DATA dt TYPE tt_sf.
  18.  
  19.  
  20. dt-a = '777'.
  21. SELECT * FROM sflight INTO TABLE dt-x.
  22. SELECT * FROM sbook INTO TABLE dt-y.
  23.  
  24. FIELD-SYMBOLS <p> TYPE any.
  25. FIELD-SYMBOLS <fs> TYPE any.
  26.  
  27. LOOP AT dt-x ASSIGNING <p>.
  28.  
  29. ASSIGN COMPONENT 'PAYMENTSUM' OF STRUCTURE <p> TO <fs>.
  30.  
  31.  
GeSHi ©

...wie dieses Beispiel zeigt.

Hatte ich verwechselt mit:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. * Geht nicht !!
  2. FIELD-SYMBOLS <t> TYPE ANY.
  3. DATA ls_sfl TYPE sflight.
  4. ASSIGN ls_sfl TO <t>.
  5. <t>-paymentsum = '3.14'.
  6.  
  7. * so gehts !!
  8. FIELD-SYMBOLS <t> TYPE Sflight.
  9. DATA ls_sfl TYPE sflight.
  10. ASSIGN ls_sfl TO <t>.
  11. <t>-paymentsum = '3.14'.
  12.  
  13.  
GeSHi ©

gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Tabellenzuweidung über ASSIGN COMPONENT ...

Postby Alan4607 » Mon Aug 01, 2011 8:04 pm

Hallo Jungs,

danke für die Antworten. War im Urlaub, hab sie jetzt erst gelesen! ;)

Danke
Sunny
Alan4607
..
..
 
Posts: 11
Joined: Fri Jun 17, 2011 2:02 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 3 guests