Werte im select mit IN verarbeiten

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

Werte im select mit IN verarbeiten

Beitrag von kaim77 (Specialist / 200 / 0 / 0 ) »
Guten Tag,

ich möchte im SELECT mit dem IN Operator nachsehen, ob eines der Werte, die ich eingegeben habe in der Tabellenspalte vorkommen.

Dazu habe ich diese Tabelle definiert:

tab_r TYPE TABLE OF line.
APPEND 'ZP1' TO tab_r.

unten im Coding wird mit select nachgesehen ob es vorhanden ist:

SELECT COUNT(*) FROM agr_users
WHERE agr_name in tab_r
...
...


Allerdings kommt folgende Fehlermeldung:
Die Tabelle tab_r hat eine falsche Zeilenstruktur.

Was mache ich falsch?

Viele Grüße
Kaim

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


Re: Werte im select mit IN verarbeiten

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin Kaim,
die Interne Tabelle für den IN operator muß in etwa wie folgt definiert sein:

Code: Alles auswählen.

DATA: BEGIN OF tab_r OCCURS 0,
         sign(1) TYPE c,
         option(2) TYPE c,
         low  LIKE agr_name ,
         high LIKE agr_name ,
      END OF tab_r.
siehe auch : http://help.sap.com/saphelp_470/helpdat ... ontent.htm
Thema "Ranges"
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Werte im select mit IN verarbeiten

Beitrag von kaim77 (Specialist / 200 / 0 / 0 ) »
Guten Tag zusammen,

ich habe in meiner "type table of line" Tabelle lt_ag

folgende Werte

Zeile line[C255]
1 AF1
2 AF2

Was muss ich jetzt tuen um die Werte AF1 und AF2 in meinem Select im IN-Operator zu benutzen?
Die Tabelle lt_ag soll bleiben. Was für eine Variable muss ich definieren und wie kann ich diese Werte der Varaiable übergeben (LOOP?) ?
Über Codebeispiele wäre ich dankbar.

Viele Grüße
Kaim

Re: Werte im select mit IN verarbeiten

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »

Code: Alles auswählen.

SIGN OPTION LOW
I     EQ    AF1
I     EQ    AF2

Re: Werte im select mit IN verarbeiten

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

Alternativ, wenn du alle Vergleiche aus deiner internen Tabelle mit der Datenbank und "ist gleich" stattfinden sollen, gibt es eine performantere Lösung als IN:
FOR ALL ENTRIES.

Code: Alles auswählen.

SELECT * 
FROM ...
FOR ALL ENTRIES IN lt_ag
WHERE ... EQ lt_ag-table_line.
Wichtig hierbei ist, dass keine Zeile in "lt_ag" doppelt vorkommen sollte.
"table_line" ist bietet den Zugriff auf die gesamte Zeile einer internen Tabelle z.B. wenn man die Struktur nicht kennt bzw. wenn es keine Strukturfelder gibt.

Wenn du wirklich lieber eine Range (IN-Operator) verwenden möchstest:

Code: Alles auswählen.

LOOP AT lt_ag ASSIGNING <ls_ag>.
  APPEND INITIAL LINE TO lt_range ASSIGNING <ls_range>.
  <ls_range>-sign = 'I'. "Include oder Exclude
  <ls_range>-operator = 'EQ'.
  <ls_range>-low = <ls_ag>.
ENDLOOP.
Wobei ich aber bei großen internen Tabellen davon abraten würde ein IN zu verwenden, weil damit uU die Größenbeschränkung (ca. 1 - 2 MB) für eine Datenbankquery überschritten werden könnte, da aus jeder Zeile im Range eine entsprechende WHERE Bedingung auf der DB-Schnittstelle generiert wird.

Im Vergleich dazu wird bei FOR ALL ENTRIES die Verarbeitung in mehrere Blöcke zu ca. 5 - 10 Zeilen der internen Tabelle aufgeteilt. Deswegen ist es auch wichtig, dass keine Zeile doppelt vorkommt, weil damit auch das Ergebnis verdoppelt wird. Es werden zwar die Zeilen nach der Durchführung der DB-Abfrage am Appl.Server vor der Weiterverarbeitung wieder zusammengeführt und verdichtet, aber in der Zwischenzeit wird trotzdem der Speicher unnötig belegt und auch die DB unnötig belastet.

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

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1604
Views
Werte in Array und jeden verarbeiten
von stony007_de » 10.01.2014 17:50 • Verfasst in ABAP® für Anfänger
5
Antw.
3219
Views
Konvertieren der Werte bei Select-Options
von ManMan » 31.07.2017 11:05 • Verfasst in ABAP® für Anfänger
0
Antw.
2824
Views
HTML Multiple Select/Option Werte lesen
von BubbleSort » 09.08.2016 10:08 • Verfasst in Web-Dynpro, BSP + BHTML
9
Antw.
1317
Views
Mehrere default Werte bei einer Select Option
von LuisBbeck » 07.09.2021 14:12 • Verfasst in ABAP® für Anfänger
4
Antw.
3149
Views
Abhängige Werte-Liste (F4-Werte)
von Gast » 27.12.2005 10:34 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor einer Minute von edwin 1 / 1
Programm anlegen mit Vorlage
vor 4 Stunden von DeathAndPain 2 / 69
IT0024 Qualifikationen CP-ID
vor 4 Stunden von DeathAndPain 2 / 310
BUSOBJEKT zu CMIS PHIO ermitteln
vor 6 Stunden von snooga87 1 / 49

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.

Aktuelle Forenbeiträge

Regex in where
vor einer Minute von edwin 1 / 1
Programm anlegen mit Vorlage
vor 4 Stunden von DeathAndPain 2 / 69
IT0024 Qualifikationen CP-ID
vor 4 Stunden von DeathAndPain 2 / 310
BUSOBJEKT zu CMIS PHIO ermitteln
vor 6 Stunden von snooga87 1 / 49

Unbeantwortete Forenbeiträge

Regex in where
vor einer Minute von edwin 1 / 1
BUSOBJEKT zu CMIS PHIO ermitteln
vor 6 Stunden von snooga87 1 / 49
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3226