Ermittlung von Datensätzen mit bestimmten Status

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

Ermittlung von Datensätzen mit bestimmten Status

Beitrag von kaim77 (Specialist / 200 / 0 / 0 ) »
Guten Tag zusammen,

ich habe folgendes Problem ein SQL aufzubauen.

Folgende Tabelleninhalte werden für die Nummer 8011 in der SE16 für die Tabelle ZXY ausgegeben.

PRONR ENDDA BEGDA GTW
8011 31.03.2021 01.12.2020 2
8011 30.11.2020 03.08.2020 2
8011 02.08.2020 01.08.2020 1
8011 31.07.2020 07.10.2019 2

Sobald im Dynpro 2020 eingegeben hat soll er rückwirkend ab dem 31.12.2020 zurück gehen solange GTW = 2 ist. Er soll sozusagen in einer Tabelle zurückgeben von wann bis 31.12.2020 PRONR Nummer den GTW ZUstand 2 gehabt hat. Es soll nur das Jahr was eingeben wurde betrachtet werden.
Also 03.08.2020 - 31.12.2020. Den Datensatz dass es zwischen dem 01.01.2020 bis 31.07.2020 soll er nicht wiedergeben, da es dazwischen ein Datensatz mit GTW = 1 gibt.

Kann man so etwas mit SQL abbilden?

Danke für die Hilfestellungen
Kaim

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


Re: Ermittlung von Datensätzen mit bestimmten Status

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
Ich würde jetzt mal so grob SELECT MAX(ENDDA) .... vorschlagen

Re: Ermittlung von Datensätzen mit bestimmten Status

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »

Code: Alles auswählen.

REPORT.

SELECT MIN( begda ) AS begda,
       MAX( endda ) AS endda,
       gtw
  FROM zxy AS itab
  WHERE begda <= '20201231'  " Start nicht nach 2020
    AND endda >= '20200101'  " Ende  nicht vor 2020
    AND gtw    = '2'         " Vorgabe
* Es darf kein Intervall nach einer selektierten Zeile geben, die im Jahr 2020 liegt aber nach dem Beginndatum der Zeile der DB-Tabelle
    AND NOT EXISTS ( SELECT * FROM zxy WHERE begda <= '20201231'     " Noch in 2020
                                               AND begda  > itab~begda " Aber nach dem Intervall
                                               AND gtw   <> '2'
                   )
  GROUP BY gtw
  INTO @DATA(ls_data).
  WRITE:/ ls_data-begda, ls_data-endda.
ENDSELECT.
Allerdings must du nachher noch BEGDA und ENDDA auf das Jahr 2020 einschränken, wenn die außerhalb liegen. Das habe ich mit CASE nicht hinbekommen, da Vergleiche hier nicht für Datumstypen erlaubt sind und eine weitere Konvertierung das dann nahezu unleserlich machen würde, falls es überhaupt geht.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

10
Antw.
4273
Views
DELETE von über 420 Mio. Datensätzen
von RantanplanFX » 24.03.2014 11:10 • Verfasst in ABAP® Core
9
Antw.
8007
Views
Fehler: Insert führt zu duplikaten Datensätzen
von Dyrdek » 18.10.2016 14:08 • Verfasst in ABAP® Core
2
Antw.
854
Views
1
Antw.
1567
Views
Anzahl von Datensätzen aus einer Datenbanktabelle dynamisch lesen
von tekko » 31.03.2022 16:26 • Verfasst in ABAP Objects®
4
Antw.
2429
Views
Anzahl von Datensätzen aus einer Datenbanktabelle dynamisch lesen
von tekko » 31.03.2022 16:26 • Verfasst in ABAP Objects®

Über diesen Beitrag



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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 511
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2146
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8742