Warum funktioniert das? FOR ALL ENTRIES IN

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

Warum funktioniert das? FOR ALL ENTRIES IN

Postby Ramon1237 » Wed May 14, 2014 3:27 pm

Hallo Leute,

ich bin auf Folgendes gestoßen:

Sachverhalt:

ArchiveLink Tabelle TOA01
Business Objekt: VBRK

Der Schlüssel des Businessobjektes VBRK besteht aus Fakturanummer + NAST Schlüssel, also beispielsweise:

'2900000023 0000003387' (zwischendrin viele Blanks, das Forum reduziert aber auf 1 Blank)

Ziel ist es, zu diesem Schlüssel alle Verknüpfungseinträge aus der TOA01 zu holen. Das Problem ist aber, dass wir nur den linken Teil des Schlüssels haben. Also in diesem Fall 2900000023.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. DATA: lt_toav0 TYPE toav0_t,
  2. ls_toav0 TYPE toav0,
  3. lt_links TYPE toav0.
  4.  
  5. ls_toav0-sap_object = 'VBRK'.
  6. ls_toav0-object_id = '2900000023'.
  7. APPEND ls_toav0 TO lt_toav0.
  8.  
  9. SELECT * FROM TOA01
  10. INTO TABLE lt_links
  11. FOR ALL ENTRIES IN LT_TOAV0
  12. WHERE sap_object EQ lt_toav0-sap_object.
  13.  
GeSHi ©


Also vergleichen wir im Prinzip '2900000023' mit '2900000023 0000003387'. Meines Erachtens nach darf das doch nicht funktionieren, aber ich bekomme trotzdem einwandfrei das gewünschte Ergebnis, also alle Verknüpfungseinträge zurück.

Wer weiß warum?

Viele Grüße
Ramon1237
.
.
 
Posts: 4
Joined: Mon Aug 26, 2013 10:52 am

Re: Warum funktioniert das? FOR ALL ENTRIES IN

Postby Bianka187 » Mon May 19, 2014 8:00 am

guten Morgen drewy,

die Abfrage funktioniert, da du mit der Bedingung
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. WHERE sap_object EQ lt_toav0-sap_object
GeSHi ©
"VBRK" mit "VBRK" vergleichst. Schau dir nach dem erfolgten SELECT im Debugger den Inhalt der Tabelle lt_links an, dort müssten alle Einträge aus TOA01 mit sap_object = VBRK stehen
Bianka187
....
....
 
Posts: 612
Joined: Thu Feb 23, 2006 5:34 pm

Re: Warum funktioniert das? FOR ALL ENTRIES IN

Postby Ramon1237 » Mon May 19, 2014 9:04 am

Hi Alexander,

genau das habe ich auch gedacht, aber es ist tatsächlich nur der eine Eintrag in lt_links bei dem auch die object_id = '29000000023 ...' ist. Daher hat mich das verwundert.

VG
Ramon1237
.
.
 
Posts: 4
Joined: Mon Aug 26, 2013 10:52 am

Re: Warum funktioniert das? FOR ALL ENTRIES IN

Postby Bianka187 » Mon May 19, 2014 9:16 am

so wie dein SELECT aufgebaut ist kann das Ergebnis aber nichts mit 29000000023 zu tun haben. In der WHERE-Bedingung fragst du ja nur nach sap_object ab, und dieses ist bei dir = VBRK. Hast du schon mal geschaut wie viele Einträge in TOA01 der Bedingung entsprechen würden? Und wenn es mehrere sein sollten, könnte es eventuell an der Deklaration von lt_links liegen? Versuch mal manuell zwei Datensätze in die Tabelle lt_links zu schreiben
Bianka187
....
....
 
Posts: 612
Joined: Thu Feb 23, 2006 5:34 pm


Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 11 guests