SELECT LIKE '%Var.name'?!

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

SELECT LIKE '%Var.name'?!

Beitrag von Tobbworld (ForumUser / 13 / 0 / 0 ) »
Hallo,

mal wieder eine typische Anfängerfrage.
Für ein Formular muss ich Daten aus den SAP Tabellen lesen. (Feld BISMT)

Als Key übergebe ich der Tabelle "Mara" IMATNR.

Mein Prob:
Meine übergebene Variable hat den Wert:
IMATNR => 13764937

In der Tabelle steht jedoch
MATNR => 00000013764937

Durch die Nullen vor der Zahl findet der nun aber den Datensatz nicht.

Wenn nicht meinen Query so aufbaue:

SELECT * FROM MARA
WHERE MATNR LIKE '%13764937'.

oder so

SELECT * FROM MARA
WHERE MATNR = '000000013764937'.

funktioniert alles ohne Probleme.

Wie kann ich das nun machen, dass ich den Wert aus der übergebenen Variable MATNR dort verwende anstatt der festeingegebenen Zahl?

Vielen Dank für eure Hilfe und ein schönes Wochenende.

MfG
Tobias

Hier mein Orig.query der nicht funkioniert:

SELECT * FROM MARA
WHERE MATNR LIKE '%IMATNR'.

IBISMT = MARA-BISMT

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


Beitrag von Gast ( / / 0 / 3 ) »
Nimm statt dem like nen =.

Also

Code: Alles auswählen.

SELECT * FROM MARA
WHERE MATNR = IMATNR. 
Gruß
Psy

Beitrag von Desaster (ForumUser / 68 / 0 / 0 ) »
Hi Tobbworld,

mara-matnr hat die Domäne matnr die wiederum eine Konvertierungsroutine für die führenden Nullen hat.

SELECT * FROM MARA
WHERE MATNR = IMATNR.

kannst Du nur machen, wenn IMATNR den Bezug zu MARA-MATNR hat.

Oder als IMATNR(18) type c definiert ist. Dann muss Du die führenden Nullen vorher mit: CONVERSION_EXIT_ALPHA_INPUT ergänzen, wobei Input und Output IMATNR sein kann.

Gruss Desaster

Beitrag von Gast ( / / 0 / 3 ) »
Obige Lösung funktioniert aber nur, wenn die Variable IMATNR die gleichen Eigenschaften wie MATNR hat. Definiere sie also wie folgt:

Code: Alles auswählen.

Data: imatnr like mara-matnr.
Überprüfe an der Stelle, an der IMATNR gefüllt wird, ob das Feld danach die führenden Nullen enthält. Falls nicht, fülle das Feld mit den führenden Nullen:


[/code]
Translate imatnr using ' 0'.

Beitrag von TakerOne (Specialist / 102 / 0 / 3 ) »
Hi,
da die MatNr sowohl numerisch mit führenden Nullen, als auch alphanumerisch linksbündig im Feld MatNr stehen kann.

Ich habe speziell dafür folgenden Funktionsbaustein gebastelt:


FUNCTION z_umsmatnr.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" REFERENCE(P_ORG_MATNR) TYPE MARA-MATNR
*" EXPORTING
*" REFERENCE(P_UMS_MATNR) TYPE MARA-MATNR
*"----------------------------------------------------------------------
* Funktion: Umsetzen Mat-Nummer 1234567-123-12 in 000000123456712312
* Umsetzen Mat-Nummer AAAAAAA-123-12 in AAAAAAA12312......
*
* Übergabe: Materialnummer 18stellig
* Rückgabe: Materialnummer 18stellig
*-----------------------------------------------------------------------


DATA: zwi_matnr(18) TYPE c,
lge_matnr TYPE i.

* zwischenspeichern der Materialnummer
MOVE p_org_matnr TO zwi_matnr.


* umsetzen - in space und verdichten
TRANSLATE zwi_matnr USING '- '.
CONDENSE zwi_matnr NO-GAPS.
TRANSLATE zwi_matnr TO UPPER CASE.

IF zwi_matnr CO '0123456789 '.

* Länge ermitteln
lge_matnr = strlen( zwi_matnr ).

* Anzahl führende Nullen ermitteln
lge_matnr = 18 - lge_matnr.
p_ums_matnr = '000000000000000000'.

* in das neue Feld schreiben
WRITE zwi_matnr TO p_ums_matnr+lge_matnr.
ELSE.

* Spaces anhängen
CONCATENATE
zwi_matnr
' '
INTO
p_ums_matnr.

ENDIF.

ENDFUNCTION.


Bei uns wird die Matnr in der Form 1234567-123-12 aufbereitetet. Der FuBa setzt alle Arten von Eingabe´n entsprechend um.

Vielleicht eine Anregung?

Grüßle
Ich bin eigentlich ein sehr netter Mensch.
Wenn ich Freunde hätte, könnten diese es bestätigen. :-)

Beitrag von black_adept (Top Expert / 4158 / 136 / 959 ) »
Hi Tobias,

warum umgehst du das Problem nicht einfach dadurch, dass du in der Tabelle, die die Materialnummern im falschen Format enthält, zunächst mal die Materialnummern in Form bringst.
Danach kannst du dann weiterarbeiten wie gewohnt.

Vorgehen etwa:

Code: Alles auswählen.

loop at itab assigning <wa>.
 CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
         EXPORTING
              input  = <wa>-matnr
         IMPORTING
              output = <wa>-matnr.
     
endloOp.
Dann hast du immer die lt. Systemeinstellungen geforderte interne Aufbereitung der Materialnummer, da diese lt. Customizing entweder mit führenden Nullen oder ohne führende Nullen von System zu System unterschiedlich geführt werden kann.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Danke

Beitrag von Tobbworld (ForumUser / 13 / 0 / 0 ) »
So, habe nun ein wenig probiert und habe am Ende 2 Lösungen gefunden.

1.) Über Concate Funktion:

Code: Alles auswählen.

DATA: c1(7) TYPE c VALUE  '0000000'.

CONCATENATE c1 IMATNR INTO IMATNR.
In der ich einfach 7 Nullen vor die Nr. schreibe
Nachteil:
- wenn sich Länge Nr. ändert => FEHLER!

2.)

Code: Alles auswählen.

DATA:imatnr(18) type n.
Die Variable imatnr einfach als 18 stellige Zahl definieren. (Default: 0000000000000000)
Wird am Ende mit dem Wert des übergebenen Parameters Matnr überschrieben. (000000013764937)

Vielen Dank nocheinmal für eure Hilfe.
Werde mir jetzt auch ein ABAP Buch zulegen ;)

Also dann.. schönen Tag noch euch allen.

Bye Tobias

Beitrag von Gast ( / / 0 / 3 ) »
na das sind ja wohl die beiden denkbar schlechtesten lösungen überhaupt... das würde ich dir als kunde nicht abnehmen!

du solltest dich lieber für eine der weiter oben genannten lösungen entscheiden!

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Tobias,

wie schon (letzter) Gast (ganz so direkt wollte ich es nicht schreiben), black_adept und Desaster geschrieben haben, solltest Du von eigenen Aufbereitungen die Finger lassen und das Eingabefeld mit 'TYPE matnr' typsieren. Damit wird implizit der Input-Convertierungsexit für das interne Format durchlaufen und Du findest Deine Daten mit dem Select.

PS:
Lösung 2 führt zu einem Dump, wenn es alphanumerische Materialnummern (wie z.B. Mat1) gibt.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von JDO ( / / 0 / 3 ) »
Hallo ereglam,

Lösung 2 führt nicht zu einem Dump, da NUMC kein Zahlentyp, sondern ein Charactertyp ist, der allerdings nur Ziffern enthalten kann.

"Mat123/2.Wahl" wird ohne Fehler zu "000000000000001232".

Ob das im Einzelfall erwünscht ist, ist eine andere Frage...

MfG Juergen

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Jürgen,

danke für die Richtigstellung. :oops:
Dann war das wohl eine andere Konstellation oder ein numerischer Datentyp, der zu einem Dump führt.

Das Ergebnis ist auf jeden Fall interessant.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Seite 1 von 1

Vergleichbare Themen

4
Antw.
21605
Views
Select nach Parameter & Select-Options
von doeme » 10.07.2012 16:37 • Verfasst in ABAP® für Anfänger
4
Antw.
10981
Views
Performance: SELECT UP TO 1 ROWS vs. SELECT SINGLE
von roman1983 » 04.09.2008 14:29 • Verfasst in ABAP® für Anfänger
2
Antw.
1655
Views
Job hängt an select, wie herausfinden welches select
von dpz » 01.08.2019 10:23 • Verfasst in ABAP® Core
8
Antw.
7979
Views
SELECT SINGLE oder SELECT UP TO 1 ROWS?
von nickname8 » 12.04.2021 10:38 • Verfasst in ABAP® für Anfänger
2
Antw.
3582
Views
Select * und Select von einzelnen Werten zugleich
von StefanJue » 04.10.2006 18:10 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

LSMW-Problem
vor 2 Tagen von mazu gelöst 5 / 986
ATC Finding in Smartforms
vor 6 Tagen von sap_enthusiast 2 / 957

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

LSMW-Problem
vor 2 Tagen von mazu gelöst 5 / 986
ATC Finding in Smartforms
vor 6 Tagen von sap_enthusiast 2 / 957

Unbeantwortete Forenbeiträge

SFP/SEGW - Fehler beim Rendering
letzen Monat von Manfred K. 1 / 86363
Benutzerdefinierte Felder PSP
January 2026 von Rabea1103 1 / 139616