Wieso IEQ-Erweiterung bei Selektionseingabe?

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Wieso IEQ-Erweiterung bei Selektionseingabe?

Beitrag von Mike ( / / 0 / 3 ) »
Hallo,

ich will einen loop über eine interne Tabelle machen, den ich von einer Parametereingabe ( select-options s_kostl for ekkn-kostl.) abhängig machen will.
Komischer Weise wurden nie entsprechende Daten gefunden. Beim Debuggen hab ich festgestellt, wenn ich z.B. in der Eingabemaske die Kostenstelle 1201 suche, ist das Feld s_kostl jetzt jedoch nicht wie eingegeben mit 1201 belegt sondern mit IEQ1201??? :shock:

Woran liegt das, denn so kann das Programm ja nie entsprechende Datensätze finden.

Gruß und Danke

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


Beitrag von LoLo ( / / 0 / 3 ) »
Hallo Mike,

die Anweisung select-options erzeugt eine Selektionstabelle. Siehe hierzu auch die Doku:
Die Anweisung SELECT-OPTIONS hat folgende Wirkung:

Die Anweisung deklariert im Programm eine Selektionstabelle mit dem Namen selcrit . Eine Selektionstabelle ist eine interne Standardtabelle mit Kopfzeile und Standardschlüssel. In Selektionstabellen können mehrere logische Bedingungen abgespeichert werden. Der Inhalt von Selektionstabellen kann in einem logischen Ausdruck und in einem Ausdruck einer WHERE-Bedingung in Open SQL ausgewertet werden. Selektionstabellen haben die vier folgenden Spalten:

sign vom Typ c der Länge 1. Der Inhalt von sign bestimmt für jede Zeile, ob das Ergebnis der in der Zeile formulierten Bedingung in der Gesamtergebnismenge aller Zeilen ein- oder ob es ausgeschlossen wird. Auswertbare Werte sind "I" für Einschluss und "E" für Ausschluss.


option vom Typ c der Länge 2. option enthält die Selektionsoption für die Bedingung der Zeile in Form von logischen Operatoren. Auswertbare Operatoren sind "EQ", "NE", "GE", "GT", "LE", "LT", "CP" und "NP", falls die Spalte high initial ist, und "BT", "NB", falls die Spalte high nicht initial ist. Bei den Optionen "CP" und "NP" muss der Datentyp der Spalten low und high vom Datentyp c sein, und low muss mindestens ein Maskierungszeichen "+" oder "*" enthalten, wobei "+" ein einzelnes Zeichen und "*" eine beliebige, auch leere, Zeichenkette maskiert.


low von dem Datentyp, der hinter FOR definiert ist. Diese Spalte ist für den Vergleichswert in Einzelvergleichen oder die untere Intervallgrenze bei Intervallabgrenzungen vorgesehen.


high von dem Datentyp, der hinter FOR definiert ist. Diese Spalte ist für die obere Intervallgrenze bei Intervallabgrenzungen vorgesehen.
D.h. in Deinem Fall I steht für 'inclusive', EQ steht für 'equal' und dann kommt der eigentliche Selektionswert, nämlich die Kostenstelle.

Deine select-Anweisung muss dann entsprechend umgestellt werden, nämlich:

Code: Alles auswählen.

select * from kktab where kostl in s_kostl.
s_kostl ist in dem Fall die durch select-options erzeugte selektionstabelle.

LoLo

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Moin.

SELECT-TOPTIONS legt eine interne Tabelle mit dem folgenden Aufbau an:

Code: Alles auswählen.

SIGN     C  1
OPTION   C  2
LOW      (variabel)
HIGH     (variabel)
SIGN nimmt die Werte I (Include) oder E (Exclude) an, in OPTION steht der Vergleichoperator (EQ=Equals, GE=Greater or Equal, BT=BeTween etc.). In LOW und HIGH stehen die eigentlichen Eingrenzungen.

Wenn Du also nur die Kostenstelle 1201 abfragst sieht die erste Zeile der internen Tabelle für die Selektion also genau so aus, wie Du es beschrieben hast.

Die SELECT-OPTION musst Du dann im entsprechenden SELECT-Befehl in der WHERE-Klausel mit dem IN-Oprerator verwenden, also

Code: Alles auswählen.

...
WHERE kostl IN s_kostl.
Dann klappt's auch mit dem Nachbarn. :wink:

C ya,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von Mike ( / / 0 / 3 ) »
Und schon wieder was dazu gelernt! :wink:

DANKE EUCH

Seite 1 von 1

Vergleichbare Themen

1
Antw.
705
Views
Wieso brauche ich hier Klammern?
von tekko » 21.10.2020 13:41 • Verfasst in ABAP® für Anfänger
2
Antw.
1236
Views
Wieso ist die globale Tabelle gt_obj leer?
von barbara » 29.03.2006 12:46 • Verfasst in ABAP® für Anfänger
3
Antw.
1418
Views
Wieso ist mein Thread gesperrt??? Voll das Ding!
von danielA. » 25.04.2006 09:29 • Verfasst in ABAP® Core
7
Antw.
1409
Views
Wieso crasht der ABAP-Compiler bei diesem Code?
von DeathAndPain » 23.02.2021 16:18 • Verfasst in ABAP® Core
3
Antw.
313
Views
Erweiterung
von BecomingAnAbapGuru » 10.02.2022 19:43 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.