unperformanter Select

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

unperformanter Select

Beitrag von Prego (Specialist / 106 / 22 / 1 ) »
Hallo Forumsteilnehmer,

nach 3 Wochen äußert nützlichen Stöberns habe ich mich jetzt auch angemeldet. Bin im ABAP ein absoluter Anfänger (4 Wochen dabei).

Folgendes Problem hat mein Programm.
Selektion der Kreditorenumsätze in der BSEG und aufsummieren eben dieser. Das Ergebnis scheint korrekt zu sein, aber in der Laufzeitanalyse benötigt das Programm auf der DB "90.000.000" Mikrosekunden.
Anzahl Einträge innerhalb der selektierten Kreditoren 318.

Folgendes Coding:

[code]FORM Berechnen_Umsaetze USING ZUMSATZ type bseg-DMBTR
ZBUKRS TYPe lfm1-EKORG
Zlifnr type lfm1-lifnr.
clear zumsatz.

select BSCHL DMBTR from bseg into table it_bseg
where lifnr = Zlifnr and
bukrs = ZBUKRS and
GJAHR in so_Jahr.
if sy-subrc EQ 0.

loop at it_bseg.
case it_bseg-bschl.
when '31'.
ZUMSATZ = ZUMSATZ + it_bseg-dmbtr.
when '21'.
ZUMSATZ = ZUMSATZ - it_bseg-dmbtr.
endcase.
endloop.
endif.

ENDFORM. " Berechnen_Umsaetze[/code]
Komm da grad echt nicht weiter. :cry:

Danke

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


Beitrag von PsychoMantis (ForumUser / 98 / 0 / 0 ) »
Auf den ersten Blick würde ich sagen, du triffst den Tabellenschlüssel nicht und deshalb muss ein FULL TABLE SCAN durchgeführt werden... Du hast also keinen Key-Zugriff auf die Tabelle sondern einen "Filter-Zugriff".

Die Schlüsselfelder der Tabelle kannst du dir beispielsweise in der SE11 angucken.

Gruß
Psy

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Moin.

Der Zugriff auf die BSEG ist eigentlich immer langsam, wenn man nicht über Schlüsselfelder selektiert.
Dafür hat SAP "Index-Tabellen" eingebaut, mit denen man relativ viel abfrühstücken kann. In Deinem Fall würde ich Dir raten, mal einen Blick auf die Tabellen BSIK und BSAK zu werfen. Das scheint auf den ersten Blick das zu sein, was Du brauchst.

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
jo genau, bei dieser Fragestellung niemals nicht über BSEG (nur wenn man genau weiß, welche Belegnummern gebraucht werden), brauchst dann zwar zwei select's, ist aber immer noch hundertmal schneller.

Beitrag von Prego (Specialist / 106 / 22 / 1 ) »
Danke an alle, habe den Select auf die BSAK abgeändert. Jetzt bin ich die extrem hohen Datenbankzugriffszeiten los.

Re: unperformanter Select

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hi,

es geht noch schneller:

:arrow: schau dir mal die Tabelle lfc1 an,
hier stehen die monatlichen Summen (Verkehrszahlen)
zum Kreditor.

:arrow: weiterhin kannst du dir einmal die logische datenbank KDF (TA: SE36) und
die reports rfkuml00 und RFKSLD00 anschauen


- ein weiterer Tip : die harte Abfrage auf die Buchungsshlüssel ist auch nicht gut, es gibt die Tabelle TBSL, wo du die Bschl validieren kannst und in der hinterlegt ist , ob der bschl umsatzwirksam ist und ob er im Soll oder Haben steht .


lg Andreas

Wie wärs mit eigenem Index?

Beitrag von hjstruebig (ForumUser / 49 / 0 / 0 ) »
Die Geschichte mit LFC1 ist zwar schon prima,
aber Fachbereiche sind ja immer recht speziell.

Wie wäre die Alternative, eines Indizes? Hoppla -
sehe gerade, BSEG = Clustertabelle. Hm - Insofern
ist der Zugriff via BSAK doch geschickter.

Kurze Anmerkung noch zur logischen Datenbank. Bin in der Vergangenheit häufiger auf log. Fehler in log. Datenbanken gestossen. Weiteres Argument gegen log. Datenbanken sind die DB-Zugriffe. Da findet man noch so schöne Sachen wie Full-Table Scan und sog. select/endselect Statements. Insofern meide ich immer diese Art der Datenbeschaffung und gehe lieber in die Anwendung und such einen passenden Funktionsbaustein.

Grüsse...
...Jochen

Beitrag von Prego (Specialist / 106 / 22 / 1 ) »
Vielen Dank nochmals für die vielen Infos. Habe jetzt noch den Tip von Asaph zu Herzen genommen und die Abfrage auf die TBSL eingebaut. :D

Seite 1 von 1

Vergleichbare Themen

4
Antw.
21648
Views
Select nach Parameter & Select-Options
von doeme » 10.07.2012 16:37 • Verfasst in ABAP® für Anfänger
2
Antw.
1672
Views
Job hängt an select, wie herausfinden welches select
von dpz » 01.08.2019 10:23 • Verfasst in ABAP® Core
8
Antw.
8077
Views
SELECT SINGLE oder SELECT UP TO 1 ROWS?
von nickname8 » 12.04.2021 10:38 • Verfasst in ABAP® für Anfänger
2
Antw.
3597
Views
Select * und Select von einzelnen Werten zugleich
von StefanJue » 04.10.2006 18:10 • Verfasst in ABAP® für Anfänger
4
Antw.
11013
Views
Performance: SELECT UP TO 1 ROWS vs. SELECT SINGLE
von roman1983 » 04.09.2008 14:29 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Ermittlung der Arbeitstage (Mosid)
vor 4 Stunden von wreichelt 9 / 45311
LSMW-Problem
vor einer Woche von DeathAndPain gelöst 6 / 3098
SFP (Adobe Forms) QR-Code wird nicht angezeigt
vor einer Woche von Sebastian82 gelöst 4 / 1681

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.