for all entries

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

for all entries

Postby Nelly1148 » Wed Feb 12, 2003 7:10 am

Hallo zusammen,

ich erzeuge mittels
call method cl_alv_table_create=>create_dynamic_table
zwei interne Tabellen (CE3 und CE4 des COPA)

Der erste select der ce3 daten funktioniert.
Nun wollte ich mittels select for all entries in ce3... alle zugehörigen ce4
sätze lesen.

Problem: Wie kann ich die where bedingung erzeugen wenn ich ich die tabellen mittels feldsymbolen anspreche ?

Der Syntaxcheck liefert:

Der angegebene Typ besitzt keine Struktur und hat daher auch keine Komponente mit Name PAOBJNR. :?


Danke

Dieter

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. select  * from (lv_tabnam)
  2.         into corresponding fields of table <fs_4table>
  3.         for all entries in <fs_3table>
  4.         where PAOBJNR = <fs_3table>-PAOBJNR
  5.         and   PASUBNR = <fs_3table>-PASUBNR
GeSHi ©
Nelly1148
..
..
 
Posts: 12
Joined: Fri Jan 24, 2003 3:27 pm

Klappt nicht

Postby Edin1867 » Wed Feb 12, 2003 9:28 am

Moin.

Leider funktioniert dieses Konstrukt genau gar nicht. :(

Ich meine, unter 6.x0 müsste das mit dynamischen Tabellen klappen, die mittels CREATE DATA erzeugt werden, aber sicher bin ich mir da nicht. Probiere ich ggf. nochmal aus.

Gruss,
Haubi
Edin1867
...
...
 
Posts: 406
Joined: Wed Dec 18, 2002 11:50 am

Postby Kalle » Thu Feb 13, 2003 1:14 pm

Hi Dieter,

ich weiß nicht, ob die Tabelle, die der ALV erzeugt eine Tabelle mit Kopfzeile ist. Denn wenn das nicht der Fall ist kann das Konstrukt nicht funktionieren. Unter der Annahme, dass eine Kopfzeile da ist, kannst Du versuchen, das ganze mit einer dynamischen where-Klausel zu machen:

Also in der Art (Beispiel aus SAP-Doku):
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. PARAMETERS: airline&#40;2&#41; TYPE C,
  2.             date       TYPE D.
  3. DATA: where_clause TYPE STRING,
  4.       connid       TYPE sflight-connid.
  5.  
  6. CONCATENATE     'carrid = ''' airline ''''
  7.             ' AND fldate = ''' date '''' INTO where_clause.
  8.  
  9. SELECT connid FROM sflight INTO connid
  10.   WHERE &#40;where_clause&#41;.
  11.   WRITE: / date, airline, connid.
  12.  
GeSHi ©


Gruss,
Kalle
Kalle
 

Postby Jessy5246 » Sun Feb 16, 2003 7:18 pm

Dear Dieter:
The method call method cl_alv_table_create=>create_dynamic_table uses a subroutine generation, so you might as well generate a subroutine yourself, declare the table, and declare typed field-symbols. Then you should be able to use the field symbols (or the itab name itself) to get to the fields.

Regards,
Wolfgang
Jessy5246
..
..
 
Posts: 23
Joined: Tue Dec 03, 2002 8:20 pm

Postby Quinn1225 » Wed Aug 13, 2003 12:41 pm

Hallo Dieter,
der Syntaxfehler kommt natürlich zurecht, weil <fs_3table> sicherlich vom Typ ANY TABLE ist und damit die Struktur dem Compiler nicht bekannt ist. Wenn Du nun aber genau weiss, dass Du das Feld PAOBJNR auf der Datenbank vergleichen willst (deren Namen Du nicht kennst), dass kennst Du doch aber sicherlich auch den Typ von PAOBJNR. Leg doch die Forallentries-Tabelle dann einfach statisch über diesem Typ an. Dann klappt es auch. Wenn der Typ von PAOBJNR je nach Tabelle unterschiedlich ist, so bleibt Dir nichts anderes übrig als auch die Forallentries-Tabelle dynamisch zu erzeugen. In diesem Fall muss dann aber auch die Where-Bedingung dynamisch sein.
Quinn1225
..
..
 
Posts: 30
Joined: Thu Jan 02, 2003 4:16 pm


Return to ABAP® Core

Who is online

Users browsing this forum: Bing [Bot] and 6 guests