Nur Datensätze mit Preisen lesen Thema ist als GELÖST markiert

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

Nur Datensätze mit Preisen lesen

Beitrag von Marc (pj) ( / / 0 / 3 ) »
Hallo,

ich möchte gerne nur das Material haben, dass einen Preis hat.

Das hier ..

Code: Alles auswählen.

  SELECT * INTO TABLE i_konp
            FROM konp
            FOR ALL ENTRIES IN i_a006
            WHERE knumh = i_a006-knumh
            AND konwa = 'EUR'
            AND loevm_ko = ''
            and kbetr = ''.
liefert mir alles das, was keinen Preis hat. Aber das hier ..

Code: Alles auswählen.

  SELECT * INTO TABLE i_konp
            FROM konp
            FOR ALL ENTRIES IN i_a006
            WHERE knumh = i_a006-knumh
            AND konwa = 'EUR'
            AND loevm_ko = ''
            and kbetr NE ''.
(man beachte die letzte where Bedingung) liefert mir alle Datensätze (egal ob Preis oder nicht)?!

Gibt's hier 'nen Trick oder wo liegt mein Denkfehler??

schönen Gruß, Marc (pj)


Beitrag von ereglam (Top Expert / 1826 / 0 / 6 ) »
Hallo Marc,

das könnte mit der Art zusammenhängen, wie OpenSQL in das DB-spezifischen SQL umgesetzt wird.

Probier doch mal folgendes:

Code: Alles auswählen.

  SELECT * INTO TABLE i_konp 
            FROM konp 
            FOR ALL ENTRIES IN i_a006 
            WHERE knumh = i_a006-knumh 
            AND konwa = 'EUR' 
            AND loevm_ko = '' 
            and NOT ( kbetr EQ '' ).  "<<< Bedingung umdrehen
Die logische Bedingung umdrehen!

Möglicherweise wird dadurch aber ein FULL TABLE SCAN forciert...
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Mitglied im XING

Beitrag von Marc (pj) ( / / 0 / 3 ) »
Hallo,

danke für den Tipp; Ergebnis bleibt aber gleich .. es werden weiterhin alle Datensätze angezeigt.

Übrigens .. mache ich danach ein loop über i_konp und schmeiß die Datensätze entsprechend raus..

Code: Alles auswählen.

   loop at i_konp.
     delete i_konp where kbetr NE ''.
   endloop.
Erhalte ich mit = '' wieder alle Datensätze und mit NE '' nur die, ohne Preis.

Oder muss ich das Feld anders abfragen?

Ich bin irgendwie verwirrt :-)

schönen Gruß, Marc (pj)

Beitrag von ereglam (Top Expert / 1826 / 0 / 6 ) »
da es sich beim Feld KBETR um ein BCD-Feld (binary coded decimal) handelt, setzt SAP möglicherweise ein "= ' '" typgerecht in ein "= '000...000C'" um, aber beläßt ein "NE ' '"... :?: :?:

Also, neuer Versuch:

Code: Alles auswählen.

  SELECT * INTO TABLE i_konp 
            FROM konp 
            FOR ALL ENTRIES IN i_a006 
            WHERE knumh = i_a006-knumh 
            AND konwa = 'EUR' 
            AND loevm_ko = '' 
            and kbetr NE 0.  "sorgt für eine Typumwandlung ??
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Mitglied im XING

Beitrag von Gast ( / / 0 / 3 ) »
Vielleicht:

Code: Alles auswählen.

...........
      and kbetr IS NOT NULL.
 


oder

Code: Alles auswählen.

...........
      and kbetr in seltab.
 
Wo bei die Selectionstabelle seltab "negiert" werden müsste. Also Option und Sign von 'I' und 'EQ' in 'I' und 'NE'.... (o.s.ä.)

Beitrag von Marc (pj) ( / / 0 / 3 ) »
Hallo,

:oops:

danke für eure Bemühungen und sorry .. aber der Fehler lag an einer ganz anderen Stelle!

Ich hab das Ganze dann ruhen lassen und eben nochmal geschaut .. da machte es doch plötzlich "klick"

schönen Gruß, Marc (pj)

Beitrag von ereglam (Top Expert / 1826 / 0 / 6 ) »
Hallo Marc,

dann poste bitte auch, was das Problem war, damit nachfolgende Generationen nicht in die gleiche Falle stolpern.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Mitglied im XING

Beitrag von Marc (pj) ( / / 0 / 3 ) »
hi,

Keine Sorge, ich glaub das macht kein anderer :-)
Nein, stimmt schon .. hier die Ursache meines Problemes ...

Ich hab vorher ein loop über i_mara gemacht (enthält wie der Name schon verrät, Materialnummer u.ä. aus der Mara) und das auch ausgegeben. Ich hab aber in dem loop nicht geprüft, ob zu dem Material ein Preis vorhanden ist, sondern es einfach ausgegeben ...

Also hab ich jetzt ein

Code: Alles auswählen.

CHECK i_konp-kbetr NE ''.
mit in den loop über i_mara aufgenommen und verhindere so generell das ausgeben der entsprechenden Materialdaten

schönen Gruß, Marc (pj)

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Aktuelle Forenbeiträge

F4 Hilfe für Dynprofeld
vor 13 Stunden von ewx gelöst 6 / 46

Vergleichbare Themen

Unterschied: Sequentielles lesen, direktes lesen
von MarkusW » 07.08.2008 16:46
Datensätze zählen
von KatSeh » 14.10.2004 08:15
Datensätze in der Startroutine verschmelzen
von Janni » 26.06.2013 09:57
Zu viele Datensätze in Ausgabe
von samson » 13.11.2005 13:15
Datensätze in LSMW verdichten
von czschunke » 14.07.2019 22:21