Offset in Where-Klausel

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

Offset in Where-Klausel

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo zusammen,

ich wäre gerade dabei einen Select zu erstellen, bei welchem ich in der PRPS nur die letzten 6 Zeichen mit einer Variablen vergleichen möchte.

Leider scheint der Offset hier nicht zu funktionieren:

SELECT POSID
From PRPS
INTO lv_posid
WHERE POSIS + 5(6) = ls_data .

Ich bekomme hier immer eine Fehlermeldung :/.

Weiß jemand wie man so etwas elegant programmieren könnte?

Vielen Dank im Voraus.

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


Re: Offset in Where-Klausel

Beitrag von rob_abc (Specialist / 107 / 27 / 44 ) »
Schau mal, ob du es mit like gelöst bekommst.

https://help.sap.com/doc/abapdocu_lates ... p_like.htm

Re: Offset in Where-Klausel

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hmm da kommt leider, das bei "Like" nur das Feld vom Typ c sein darf : /.

Re: Offset in Where-Klausel

Beitrag von sap_enthusiast (ForumUser / 95 / 25 / 23 ) »
Sollst die substring womit du suchen möchtest in eine lokale string variable mit den Suchcharaktern ("%") zwischenspeichern

Code: Alles auswählen.

DATA(temp_str) = |{ |%| && substring( val = ls_data-feld off = 5 leng = 6 ) &&  |%| }|.
SELECT POSID
From PRPS
INTO lv_posid
WHERE POSIS + 5(6) = ls_data .
ich denke hier bei ls_data sollte es eher folgendermaßen aussehen:

Code: Alles auswählen.

ls_data-feld.

Folgende Benutzer bedankten sich beim Autor sap_enthusiast für den Beitrag:
L0w-RiDer


Re: Offset in Where-Klausel

Beitrag von Alpmann (ForumUser / 62 / 5 / 19 ) »
Hallo L0w-RiDer,

probier mal folgendes - bin gerade nicht am System, sollte aber klappen:

DATA: lv_posid type PRPS-POSID.
DATA: ls_data type PRPS-POSID.
ls_data = '_____01800N'.

SELECT single POSID From PRPS INTO lv_posid WHERE posid like ls_data.

Die "_" in ls_data entsprechen einem beliebigem Zeichen. Du könntest am Ende noch ein % für einen beliebigen Text am Ende anfügen. Das '01800N' steht dann für deinen sechs Zeichen langen String.

Mit freundlichen Grüßen
Matthias Alpmann

Folgende Benutzer bedankten sich beim Autor Alpmann für den Beitrag:
L0w-RiDer


Re: Offset in Where-Klausel

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
Ich schlage vor auch Lösungen bei den CDS Views zu suchen.
CONCAT( kna1.name1, kna1.name2 ) as full_name
oder hier
https://saplearners.com/how-to-use-stri ... cds-views/
gruß Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
L0w-RiDer

<:: 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: Offset in Where-Klausel

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Gerade bei einem Kunden ausprobiert: Folgendes geht ( allerdings hat der Kunde eine etwas andere Struktur der WBS-Elemente, so dass ich statt+5(6) +9(2) nehmen musste.

Code: Alles auswählen.

PARAMETERS: lv_part TYPE char2.

SELECT  posid
  FROM prps
  WHERE substring( posid, 9,2 ) = @lv_part
  INTO TABLE @DATA(lt_posid).
Bitte beachte allerdings, dass substring erst mit Release 7.50 eingeführt wurde und dass auf dem Feld POSID ein Konvertierungsexit liegt - du musst also mit der internen Version vergleichen und nicht mit der, die über den Konvertierungsexit ausgegeben wird.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 3):
Tronsap_enthusiastL0w-RiDer

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Offset in Where-Klausel

Beitrag von LeMinion (ForumUser / 20 / 1 / 6 ) »
Die Lösung von Stefan klappt super, aber da Du keine Angaben zum vorliegenden Release gemacht hast, klappt sie eben nur vielleicht bei Dir. 😉 Bei einem früheren Release mußt Du ggf. erst den Ansatz von Matthias verfolgen, wobei es dabei auch zu beachten gilt, daß jeder Unterstrich im Wert Deiner ls_data benannten Variable ebenfalls als Platzhalter betrachtet wird und Du dadurch ev. mehr Einträge "triffst", als Du es beabsichtigt haben könntest.
Außerdem wird in Deinem Code-Beispiel nicht klar, ob Du einen einzelnen Satz oder eine Menge von Sätzen liest. Ich verwende übrigens seit langem keine Präfixe mehr für meine Variablennamen, aber dafür gebe ich ihnen (hoffentlich) sprechende Namen, die in Singular gehalten sind, wenn sie nur einen Satz oder einen einfachen Wert enthalten, und im Plural, wenn es sich um eine interne Tabelle handelt (siehe auch Clean-ABAP-Empfehlungen) – das natürlich nur nebenbei und ein wenig Offtopic. 😇
Auf welchem Release arbeitst Du?

Folgende Benutzer bedankten sich beim Autor LeMinion für den Beitrag:
L0w-RiDer


Re: Offset in Where-Klausel

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Super, hat geklappt.

Vielen Dank an alle!

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1634
Views
Select mit Offset?
von vwaadenm » 22.01.2007 09:15 • Verfasst in ABAP® für Anfänger
1
Antw.
1065
Views
ASSIGN ung OFFSET im UNICODE
von alicemal » 03.09.2008 12:36 • Verfasst in ABAP® Core
1
Antw.
1548
Views
ASSIGN+OFFSET in Unicode
von mazu » 14.04.2008 14:12 • Verfasst in ABAP® Core
2
Antw.
6385
Views
Unzulässiger Teilfeldzugriff: Offset zu groß
von c oco » 18.04.2013 16:54 • Verfasst in ABAP® für Anfänger
3
Antw.
547
Views
ALV-List-Layout: Offset der Spalten ermitteln
von Josef Bauernfeind » 07.09.2022 16:14 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2411
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9002