SELECT-FROM-Befehl und Löschen von Einträgen

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

SELECT-FROM-Befehl und Löschen von Einträgen

Beitrag von lr_1504 (ForumUser / 1 / 0 / 0 ) »
Hallo,

ich bin ABAP-Anfänger und habe folgenden Code:

Code: Alles auswählen.

SELECT att1 att2 datum1 datum2 typ att3 att4
  FROM tabelle INTO CORRESPONDING FIELDS OF TABLE gt_tabelle
  WHERE att1 = pa_att1 AND ( typ = '1' OR typ = '2' )
  ORDER BY typ ASCENDING datum1 DESCENDING datum2 ASCENDING.
Ich möchte am Ende jeweils eine Ausgabe des aktuellsten Tabelleneintrags (datum1) von typ=1 und typ=2 haben. Sofern mehrere Einträge gleichen Datums vorhanden sind, soll auf datum2 zurückgegriffen werden, das in der Zukunft liegen kann, aber nicht muss.

Wie ist es möglich, dass mir in der Tabelle nur noch diese aktuellsten Einträge angezeigt werden? Meine Idee war der Befehl SELECT DISTINCT MIN, damit komme ich allerdings nicht weiter.

Vielen Dank für eure Hilfe!

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


Re: SELECT-FROM-Befehl und Löschen von Einträgen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Nur im SQL (also im SELECT) wirst Du diese Anforderung nicht verbacken bekommen, sondern Du musst erst mal aus der Datenbank lesen und dann Dein Ziel in der internen Tabelle erreichen.

Zunächst einmal möchte ich Dir aber nahelegen, den OR aus der WHERE-Klausel durch IN zu ersetzen, da er Dir als OR den Indexzugriff ruiniert (abhängig davon, was für Indizes Deine Datenbanktabelle hat) und sich auch schlechter liest. Also:

Code: Alles auswählen.

SELECT att1 att2 datum1 datum2 typ att3 att4
  FROM tabelle INTO CORRESPONDING FIELDS OF TABLE gt_tabelle
  WHERE att1 = pa_att1 
    AND typ IN ('1','2')
  ORDER BY typ ASCENDING datum1 DESCENDING datum2 ASCENDING.
Sodann ist der Zusammenhang zwischen Deinem SELECT mit den komischen ORDERs und Deiner Anforderung auch nicht wirklich erkennbar. Wenn ich Dich richtig verstehe, dann sollte der folgende Code (nach Deinem SELECT) Deine Anforderung erfüllen:

Code: Alles auswählen.

data: ergebnis_typ_1 like line of gt_tabelle,
      ergebnis_typ_2 like line of gt_tabelle.

sort gt_tabelle by typ datum1 descending datum2 descending.

ergebnis_typ_1 = gt_tabelle[ typ = '1' ].
ergebnis_typ_2 = gt_tabelle[ typ = '2' ].
Die beiden Zuweisungen am Ende liefern die jeweils erste Zeile des jeweiligen Typs, und aufgrund des davor stehenden SORTs sollte das die sein, die Deiner Anforderung entspricht.

Wenn nicht, erläutere Deine Anforderung bitte noch einmal genauer. Generell ist es auch hilfreich, bei jeglichen Codefragmenten die genaue Typisierung der Felder bzw. Tabellen mitzuliefern.

Seite 1 von 1

Vergleichbare Themen

8
Antw.
4167
Views
Löschen von Einträgen in einer Customizingtabelle
von LyNx » 10.06.2008 11:25 • Verfasst in ABAP® für Anfänger
2
Antw.
1221
Views
Manuelles Löschen aller Einträgen einer Customizingtabelle
von LyNx » 12.06.2008 09:14 • Verfasst in ABAP® für Anfänger
4
Antw.
1054
Views
17
Antw.
2370
Views
SQL SELECT-BEFEHL
von hmaxi96 » 02.11.2015 12:07 • Verfasst in ABAP® für Anfänger
5
Antw.
2051
Views
Typecast bei Select-Befehl
von Senshi » 05.11.2007 16:17 • Verfasst in ABAP® für Anfänger

Ü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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141