4AP.de ~ alles fuer ABAP-Programmierer - Infos zur SAP Programmiersprache


das Neueste

10 Jahre 4ap.de

10 Jahre 4ap.de - kleines und stilles Jubiläum

|

 

Buchrezensionen

Einige neue Buchrezensionen sind vorhanden.

|

 

neues Coding: braune Kekse

Lange schwebte mir die Idee vor, aber es fehlte schlicht die Zeit. Heute war es endlich soweit: ich nahm sie mir, die Zeit :-) Ergebnis unter: braune Kekse.

|

 

neues Kontaktformular

Wegen Formularspoofing wurde eine neue Kontaktmöglichkeit geschaffen.
|

 

Codings gesucht

Codings gesucht, die NICHT im SDN stehen.
|

 

Suche



 


Dieser Inhalt wurde zuletzt geändert am:
09.05.2007 von TN

Performance

ABAP Performance-Tipps

Der folgende Abschnitt dient für mich hauptsächlich als Nachschlagewerk, deshalb ist er nur knapp mit den wesentlichen Informationen versehen und die Beispiele sind arg verkürzt. Wer es genauer wissen will sollte im Buch ABAP Performance Workshop (siehe Bücherliste ) nachschlagen.
  • möglichst präzise, möglichst selten nur die unbedingt benötigten Daten selektieren
  • KEIN select *, niemals! Immer alle Spalten benennen! Besser select bookid customid from sbook into (sbook-bookid, sbook-customid) where carrid = S_carrid.
  • noch besser INTO struktur : data:beginn of struktur, bookid type sbook-bookid, customid type sbook-customid, end of struktur.
  • Vorsicht bei 'into corresponding fields of mara', nur bei großen Datenmengen verwenden
  • ggfls. statt INTO besser APPENDING nehmen
  • SELECT field INTO TABLE tabname nicht bei Speicherengpässen (große Mengen)
  • kein Verwenden von FOR ALL ENTRIES
  • der JOIN ist dein Freund (jedoch Laufzeit testen!)
  • immer den Mandanten benutzen! mandt = sy-mandt
  • ORDER-BY umgeht die Pufferung von Tabellen!
  • ggfls. Datenbank-View anlegen und benutzen
  • keine Nutzung von ON CHANGE OF
  • PACKING SIZE verwenden wenn Daten unsortiert von der DB übernommen werden können, ggfls. EXTRACT
  • Verwenden eines CURSOR (siehe Beispieldatenbank Report DEMO_SELECT_CURSOR_1 bis 3)
  • Laufzeitmessungen immer TAGSÜBER zur Besten Sendezeit machen!
  • bei doppelten Schlüsseln und > 4000 Datensätzen: into STANDARD TABLE und SORT <itab>
  • optimale WHERE-Klausel: aktive Indizes beachten
  • Aggregatfunktionen COUNT, SUM, MIN, MAX, AVG nutzen
  • UPDATE tabname SET tabfeld = 'X'
  • DELETE FROM tabname WHERE tybfeld = 'X'
  • UPDATE tabname FROM TABLE itab
  • DELETE tabname FROM TABLE itab
  • INSERT tabname FROM TABLE itab
  • Kontext verwenden [SE33] (Einzelsatzbehandlung, Dialog)
  • Abfangen der Benutzereingabe 'einmal alles' bei AT SELECTION-SCREEN {Komfort: SET CURSOR FIELD s_field-low}
  • ggfls. Laufzeitabschätzung bei AT SELECTION-SCREEN
  • Verwenden von OBLIGATORY bei select-options und parameters
  • POPUP_TO_DECIDE für Hintergrundausführung anbieten [Fubau JOB_OPEN, SUMIT {anderes Muster}... VIA JOB, Fubau JOB_CLOSE; siehe auch zpws0022.txt]
  • unnötige Typumwandlungen vermeiden, auch bei Rechenoperationen und Datendeklarationen
  • nur das Benötigte loopen: LOOP AT itab TRANPORTING field1 field2.
  • nur das Benötigte modifizieren: MODIFY ityb TRANSPORTING field1.
  • interne Tabellen (ab 10 Einträgen) mit Pointern bearbeiten (keine Kopfzeile nötig; ASSIGNING <fs>)
  • richtigen internen Tabellentyp verwenden: Standard-Tabelle bei Indexzugriffen, bei reinen Schlüsselzugriffen Hashed-Tabelle {READ...WITH KEY} und Sorted-Table bei LOOP AT ...WHERE.
  • logische Datenbank nur wenn immer fast alle Daten gelesen werden, sonst Bottum-Up-Ansatz: das stärkte Filterkriterium zuerst lesen