Zeitabhängige Daten selektieren....

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Zeitabhängige Daten selektieren....

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Moin moin,

gerade beschäftige ich mich mit einem großen Programm, das ein kleines Problem aufwirft. Folgender SELECT sei gegeben:

Code: Alles auswählen.

select kostl ktext
   from cskt
   into table gt_cskt
   for all entries in gt_blablub
   where spras = 'EN'
    and  kokrs = p_kokrs
    and  kostl = gt_blablub-kostl.
    and  datbi = ????.
Ich will hierbei den aktuell gültigen Satz selektieren, sprich den mit dem höchsten Datum, das aber kleiner als SY-DATUM sein muss.

Ich weiß, ich könnte das mit Einzelsatz-Selektion machen, aber bei Massendaten ist das nicht wirklich klug.

DATBI GT SY-DATUM geht auch nicht, weil das im Zweifel auf ne Menge Sätze zutrifft, insbesondere auf die veralteten.

Gibts einen EINFACHEN und von der Laufzeit her SCHNELLEN Weg, die (zur Laufzeit) aktuell gültigen Texte zu selektieren?


Ralf

P.S.: Ja, das EN als Sprache soll hart verdrahtet sein ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
sicherlich soll "E" als Sprache hart verdrahtet sein... :wink:

Code: Alles auswählen.

...and datbi >= sy-datum
   and datab <= sy-datum.
:roll:

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Ich weiß ja nicht, welche CSKT *du* vorliegen hast, *meine* hat kein Feld DATAB.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
tja...
denn geht das wohl nicht so... :oops:

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Ok, liebe Zuschauer, neues Spiel, neues Glück, nur Gewinne, keine Nieten, tolle Preise, wer hat noch nicht, wer will nochmal?

Mist, ich war wohl zu lange auf dem DOM, ich meinte: Das Problem ist also noch ungelöst, wer eine Idee hat, möge sich melden. ;)



Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeitabhängige Daten selektieren....

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ralf.wenzel hat geschrieben:Ich will hierbei den aktuell gültigen Satz selektieren, sprich den mit dem höchsten Datum, das aber kleiner als SY-DATUM sein muss.
Warum ist bei einem aktuell gültigen satz das "Bis-gültig-Datum" kleiner als das aktuelle Datum??
ralf.wenzel hat geschrieben:DATBI GT SY-DATUM geht auch nicht, weil das im Zweifel auf ne Menge Sätze zutrifft, insbesondere auf die veralteten.
Das sollte dann wohl eher auf die in der Zukunft geplanten zutreffen.
Und die könnte man dann doch später mit DELETE ADJACENT DUPLICATES rauslöschen, oder?
Also SELECT ... WHERE DATBI >= SY-DATUM

Re: Zeitabhängige Daten selektieren....

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
ewx hat geschrieben:Warum ist bei einem aktuell gültigen satz das "Bis-gültig-Datum" kleiner als das aktuelle Datum??
Du hast recht, es ist der jeweils erste Satz wo das aktuelle Datum GRÖSSER ist als DATBI.
ewx hat geschrieben:Das sollte dann wohl eher auf die in der Zukunft geplanten zutreffen.
Und die könnte man dann doch später mit DELETE ADJACENT DUPLICATES rauslöschen, oder?
Also SELECT ... WHERE DATBI >= SY-DATUM
Genau so mach ich es. Danke für den Tipp.

Ralf

Hier haben wir einen Hauptgewinner, er hat einen wunderschönen kleinen Stoff-Knut gewonnen!!!

Ob ich mal wieder auf den DOM gehen sollte? :lol: :lol: :lol:
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeitabhängige Daten selektieren....

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
ralf.wenzel hat geschrieben:...

Code: Alles auswählen.

select kostl ktext
   from cskt
   into table gt_cskt
   for all entries in gt_blablub
   where spras = 'EN'
    and  kokrs = p_kokrs
    and  kostl = gt_blablub-kostl.
    and  datbi = ????.
Ich will hierbei den aktuell gültigen Satz selektieren, sprich den mit dem höchsten Datum, das aber kleiner als SY-DATUM sein muss.

Ich weiß, ich könnte das mit Einzelsatz-Selektion machen, aber bei Massendaten ist das nicht wirklich klug.

DATBI GT SY-DATUM geht auch nicht, weil das im Zweifel auf ne Menge Sätze zutrifft, insbesondere auf die veralteten.

Gibts einen EINFACHEN und von der Laufzeit her SCHNELLEN Weg, die (zur Laufzeit) aktuell gültigen Texte zu selektieren?


Ralf

P.S.: Ja, das EN als Sprache soll hart verdrahtet sein ;)
Hallo Ralf,

so in etwa habe ich es mir vorgestellt, geht aber leider nicht, weil im Subselect kein UP TO n ROWS oder ORDER BY verwendet werden darf... :-(

Code: Alles auswählen.

select tx~kostl
       tx~ktext
   from cskt AS tx
   into table gt_cskt
   for all entries in gt_blablub
   where spras = 'E' "intern einstellig !!!!
    and  kokrs = p_kokrs
    and  kostl = gt_blablub-kostl.
    AND datbi IN (SELECT datbi 
                    UP TO 1 ROWS
                    FROM cskt AS dt
                    WHERE dt~spras EQ tx~spras
                    AND   dt~kokrs EQ tx~kokrs
                    AND   dt~kostl EQ tx~kostl
                    AND   dt~datbi GE sy-datum 
                    ORDER BY dt~datbi DESCENDING ).
PS:
das Feld SPRAS ist intern einstellig und daher sollte man auch nicht zweistellige Werte mitgeben.
PPS:
SPRAS 'd' ist ungleich 'D' (ersteres ist serbokroatisch... )

:(
schon wieder zu lange mit meiner Antwort gebraucht...
Gruß
Ereglam


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

Re: Zeitabhängige Daten selektieren....

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ralf.wenzel hat geschrieben:Ob ich mal wieder auf den DOM gehen sollte? :lol: :lol: :lol:
...aber nicht, dass du dann die Zeit zu der du wieder zu Hause sein solltest mit der Zeit verwechselst zu der du tatsächlich zu Hause gewesen sein hättest dürfen solln... :D

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Nur mal so, wie werden bei euch die Kostenstellen angelegt? Bei uns steht im DATBI der 31.12.9999 drin (letzter aktueller Satz).
Sofern man die Kostenstelle in der KS02 ändert, bleibt diese Ende Datum auch unberührt.
Wäre doch sicherlich mal nen Versuch wert ODER?

Alternativ findest du den DATAB in CSKT_CSKS, dann kannst du mit deinen Gültigkeitszeitraum arbeiten.

Thomas.

Re: Zeitabhängige Daten selektieren....

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
ereglam hat geschrieben: so in etwa habe ich es mir vorgestellt, geht aber leider nicht, weil im Subselect kein UP TO n ROWS oder ORDER BY verwendet werden darf...
Mit Aggregation geht auch der Subselect:

Code: Alles auswählen.

select tx~kostl
       tx~ktext
   from cskt AS tx
   into table gt_cskt
   for all entries in gt_blablub
   where spras = 'E' "intern einstellig !!!!
    and  kokrs = p_kokrs
    and  kostl = gt_blablub-kostl.
    AND datbi = (SELECT MIN(dt~datbi)
                    FROM cskt AS dt
                    WHERE dt~spras EQ tx~spras
                    AND   dt~kokrs EQ tx~kokrs
                    AND   dt~kostl EQ tx~kostl
                    AND   dt~datbi GE sy-datum ).
Gruß Hendrik

Re: Zeitabhängige Daten selektieren....

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Danke für die vielen Hinweise, da hab ich richtig was bei gelernt. Ich werde mal die letzte Variante zuerst ausprobieren, die sieht mir am kompaktesten aus.



Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeitabhängige Daten selektieren....

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
JHM hat geschrieben:
ereglam hat geschrieben: so in etwa habe ich es mir vorgestellt, geht aber leider nicht, weil im Subselect kein UP TO n ROWS oder ORDER BY verwendet werden darf...
Mit Aggregation geht auch der Subselect:

Code: Alles auswählen.

select tx~kostl
       tx~ktext
   from cskt AS tx
   into table gt_cskt
   for all entries in gt_blablub
   where spras = 'E' "intern einstellig !!!!
    and  kokrs = p_kokrs
    and  kostl = gt_blablub-kostl.
    AND datbi = (SELECT MIN(dt~datbi)
                    FROM cskt AS dt
                    WHERE dt~spras EQ tx~spras
                    AND   dt~kokrs EQ tx~kokrs
                    AND   dt~kostl EQ tx~kostl
                    AND   dt~datbi GE sy-datum ).
Danke. Hatte gestern nicht genügend Zeit, es weiter zu verfolgen und ohnehin viel zu kompliziert gedacht, aber von Ansatz her war ich schon auf dem richtigen Weg...;)
Gruß
Ereglam


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

Seite 1 von 1

Vergleichbare Themen

10
Antw.
5617
Views
BW: Zeitabhängige und zeitunabhängige Daten im Bericht
von brinam » 19.01.2007 19:35 • Verfasst in Sonstige Module
2
Antw.
2781
Views
Zeile auf ALV-Grid selektieren Daten auslesen
von crustycheesewithextrachee » 26.04.2006 11:12 • Verfasst in ABAP Objects®
17
Antw.
5227
Views
Daten einer Tabelle über Daten aus einer internen Tabelle selektieren
von Sonne1234 » 09.12.2019 08:54 • Verfasst in ABAP® für Anfänger
20
Antw.
7652
Views
Zeitabhängige Tabelleneinträge
von ewx » 07.04.2011 11:08 • Verfasst in ABAP® Core
14
Antw.
2175
Views
Berechtigungsabfragen selektieren
von Bright4.5 » 05.02.2019 09:54 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Regex in where
vor 9 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

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 9 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822