Performante Suche in interner Tabelle bei abweichendem Datentyp

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

Performante Suche in interner Tabelle bei abweichendem Datentyp

Beitrag von DeathAndPain (Top Expert / 1964 / 261 / 415 ) »
Hallo zusammen,

wenn man auf einer sortierten Tabelle einen LOOP...WHERE oder einen DELETE...WHERE macht und dabei Elemente des Tabellenschlüssels auf Gleichheit angibt, dann gibt es eine Compilerwarnung, die darauf hinweist, dass die Datentypen gleich sein sollten, da er anscheinend sonst nicht in der Lage ist, die Schlüsseloptimierung zu nutzen. In meinen Augen etwas dämlich, da es ausreicht, einfach den Vergleichswert per CONV() in das gewünschte Format zu bringen, was der Gleichheitsoperator doch sonst auch überall von alleine (ohne explizites CONV() ) macht, aber sei's drum.

Nun ist mir aufgefallen, dass diese Warnung nicht kommt, wenn man per 7.40-Syntax unter Nutzung des Tabellenschlüssels nach einer bestimmten Tabellenzeile sucht. Fehlt da nur die Warnung, oder stellt ABAP sich an der Stelle von Hause aus geschickter an?

Beispiel:

Code: Alles auswählen.

      IF LINE_EXISTS( <ZEITRAUMTABELLE>-ZEITRAEUME[ BEGDA = <CT_ITAB_INPUT>-BEGINN ENDDA = <CT_ITAB_INPUT>-ENDE ] ).
        DELETE <ZEITRAUMTABELLE>-ZEITRAEUME WHERE BEGDA = CONV BEGDA( <CT_ITAB_INPUT>-BEGINN ) AND ENDDA = <CT_ITAB_INPUT>-ENDE.
      ENDIF.
<ZEITRAUMTABELLE>-ZEITRAEUME ist nach BEGDA sortiert. <ZEITRAUMTABELLE>-ZEITRAEUME-BEGDA ist hier vom Typ BEGDA, wohingegen <CT_ITAB_INPUT>-BEGINN vom Typ STRING ist. Bei dem IF-Statement bekomme ich keine Warnung, wohingegen ich bei dem DELETE die Warnung bekomme, wenn ich den CONV rausnehme. Sollte ich trotzdem auch bei dem IF-Statement den CONV einbauen, oder verhält ABAP sich hier einfach nur inkonsequent?

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


Re: Performante Suche in interner Tabelle bei abweichendem Datentyp

Beitrag von qyurryus (Specialist / 112 / 87 / 45 ) »
Moin,

naiv würde ich es einfach so lassen, wenn der Compiler keine Warnung ausgibt und die IF-Abfrage funktioniert.

Gegenfrage: wozu dient die If-Abfrage überhaupt? Wenn es hier um Performance geht (und ich den Code richtig lese), ist diese doch vollkommen überflüssig? Wenn es die Zeile nicht gibt, wird sie halt nicht gelöscht. Es würde dann aber nur eine Operation auf der internen Tabelle ausgeführt, statt zwei.

Nachtrag: man muss schon den ganzen Beitrag lesen, bitte die Gegenfrage ignorieren.

Re: Performante Suche in interner Tabelle bei abweichendem Datentyp

Beitrag von DeathAndPain (Top Expert / 1964 / 261 / 415 ) »
naiv würde ich es einfach so lassen, wenn der Compiler keine Warnung ausgibt und die IF-Abfrage funktioniert.
Funktionieren tut es so oder so, auch in der WHERE-Klausel. Es ist ja nur eine Warnung, die man da bekommt und die darauf hinweist, dass er offenbar den Tabellenschlüssel nicht für die Suche nutzen kann, wenn die Typen nicht gleich sind. Man hat also schlechtere Performance.

Und deshalb gefällt mir der Ansatz "einfach so lassen und nicht mehr drüber nachdenken" nicht so gut. Auf der anderen Seite bin ich grad aber auch zu faul, ein passendes Testprogramm mit Laufzeitmessung zu schreiben und selber nachzumessen. Daher hatte ich gehofft, dass hier vielleicht jemand ist, der es aus dem Kopf weiß.

Seite 1 von 1

Vergleichbare Themen

5
Antw.
2418
Views
Performante Datenübertragung nach Excel mittels OLE2_OBJECT
von Haubentaucher » 12.04.2007 17:40 • Verfasst in ABAP® Core
6
Antw.
3943
Views
Key Felder von interner Tabelle auf dem ALV
von thesaint » 14.07.2005 16:32 • Verfasst in ABAP Objects®
3
Antw.
2752
Views
Types mit interner Tabelle?
von Gast » 19.07.2005 17:43 • Verfasst in ABAP® für Anfänger
5
Antw.
3002
Views
Prüfung interner Tabelle
von knut » 27.06.2005 14:44 • Verfasst in ABAP® Core
14
Antw.
10534
Views
Löschen aus interner Tabelle
von Beginner014 » 21.11.2014 09:26 • 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

Mahnung erstellen
vor 23 Stunden von wreichelt 2 / 42
Absprung VA02 Position
Gestern von gs3rr4 gelöst 3 / 56
OPD Druck im SPOOL
Gestern von Manfred K. 1 / 34

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

Mahnung erstellen
vor 23 Stunden von wreichelt 2 / 42
Absprung VA02 Position
Gestern von gs3rr4 gelöst 3 / 56
OPD Druck im SPOOL
Gestern von Manfred K. 1 / 34

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
Gestern von Manfred K. 1 / 34
Export von Spools in XLSX
vor 6 Tagen von abapamateur 1 / 451