Performanceprobleme bei Loop

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
20 Beiträge • Vorherige Seite 2 von 2 (current)
20 Beiträge Vorherige Seite 2 von 2 (current)

Re: Performanceprobleme bei Loop

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Hi Haubi,
Haubi hat geschrieben:Leider schreibst Du nicht, wie die Tabelle aufgebaut wird und wo Du sie sonst benutzt.
die Tabelle wird nur in dieser Methode benutzt und wird mit einem Select auf die DB aufgebaut.

Code: Alles auswählen.

 SELECT * FROM prps
    INTO CORRESPONDING FIELDS OF TABLE lt_prps
    WHERE prctr IN lr_prctr
      AND pkokr =  i_kokrs.
Haubi hat geschrieben:Wenn Du aber vorhast, mit ER_OBJNR auch wieder eine DB-Abfrage zu machen verdoppelt sich Dein Problem. Eventuell wäre es also besser, die Objektnummern direkt aus LT_PRPS in ER_OBJNR zu übernehmen - ohne DB-Zugriff.
Das war auch meine Befürchtung. Dann ist ein Loop also unumgänglich.

Gruß
coco

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


Re: Performanceprobleme bei Loop

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
c oco hat geschrieben:Hi Haubi,
Haubi hat geschrieben:Leider schreibst Du nicht, wie die Tabelle aufgebaut wird und wo Du sie sonst benutzt.
die Tabelle wird nur in dieser Methode benutzt und wird mit einem Select auf die DB aufgebaut.

Code: Alles auswählen.

 SELECT * FROM prps
    INTO CORRESPONDING FIELDS OF TABLE lt_prps
    WHERE prctr IN lr_prctr
      AND pkokr =  i_kokrs.
Haubi hat geschrieben:Wenn Du aber vorhast, mit ER_OBJNR auch wieder eine DB-Abfrage zu machen verdoppelt sich Dein Problem. Eventuell wäre es also besser, die Objektnummern direkt aus LT_PRPS in ER_OBJNR zu übernehmen - ohne DB-Zugriff.
Das war auch meine Befürchtung. Dann ist ein Loop also unumgänglich.

Gruß
coco
Jop, der ist aber zigmal schneller als die DB-Abfrage. Außerdem benötigst Du ihn sowieso für Deinen COLLECT, der da noch rumgeisterte. :wink:

Und die Umstellung auf HASHED TABLE würde ich auch noch machen.
Das ABAP Kochbuch ab sofort bei Amazon...

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

Re: Performanceprobleme bei Loop

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Ok danke schön.
Ich werde das Ergebnis dann hier reinposten, sobald ich die Laufzeit mit den Massendaten habe.

Viele Grüße
coco

Re: Performanceprobleme bei Loop

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Feedback:

Hallo zusammen,

ich habe heute Morgen bzgl. der Performance eine positive Rückmeldung erhalten.
Und zwar, dass die Laufzeit von Stunden! auf Minuten geschrumpft ist :-)

Ich habe dank eurer Mithilfe folgende Umstellungen vorgenommen, die wirklich eine Verbesserung hervorgebracht haben.
into corresponding fields und move-corresponding habe ich durch direkte Zuweisungen ersetzt.
Die interne Tabelle die im Loop gelesen wird, habe ich vom Typ Hash Table mit Unique Key objnr gemacht.
Die internen Tabellen die nicht mehr gebraucht werden, habe ich gleich refresht.
Hier das verbesserte Coding.

Code: Alles auswählen.

DATA: lt_prps TYPE HASHED TABLE OF ty_pspnr WITH UNIQUE KEY objnr.
 DELETE lt_prps_auth WHERE display IS NOT INITIAL.
      IF lt_prps_auth IS NOT INITIAL.
        mx_check_authority = abap_true.
      ENDIF.
      lt_prps = lt_prps_tmp.
      REFRESH lt_prps_tmp.
      LOOP AT lt_prps_auth ASSIGNING <fs_prps_auth>.
        READ TABLE lt_prps ASSIGNING <fs_prps> WITH TABLE KEY objnr = <fs_prps_auth>-objnr.
        IF sy-subrc = 0.
          DELETE TABLE lt_prps FROM <fs_prps>.
        ENDIF.
      ENDLOOP.

      LOOP AT lt_prps ASSIGNING <fs_prps>.

        lsr_objnr-low    = <fs_prps>-objnr.
        APPEND lsr_objnr TO er_objnr.

        CLEAR: ls_pspnr_info.
        ls_pspnr_info-posid  = <fs_prps>-posid.
        ls_pspnr_info-pspnr  = <fs_prps>-pspnr.
        ls_pspnr_info-objnr  = <fs_prps>-objnr.
        ls_pspnr_info-prctr  = <fs_prps>-prctr.
        ls_pspnr_info-post1  = <fs_prps>-post1.
        ls_pspnr_info-psphi  = <fs_prps>-psphi.
        ls_pspnr_info-pkokr  = <fs_prps>-pkokr.
        ls_pspnr_info-izwek  = <fs_prps>-izwek.
        ls_pspnr_info-isize  = <fs_prps>-isize.
        INSERT ls_pspnr_info INTO TABLE et_pspnr_info.

        ls_prctr_info-prctr = <fs_prps>-prctr.
        ls_prctr_info-kokrs = <fs_prps>-pkokr.
        COLLECT ls_prctr_info INTO et_prctr_info.
      ENDLOOP.
An dieser Stelle möchte ich mich nochmals herzlich bei allen Beteiligten bedanken!!!

Viele Grüße
coco

Re: Performanceprobleme bei Loop

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Supi! Danke für die Rückmeldung! :up:
Das ABAP Kochbuch ab sofort bei Amazon...

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

Vergleichbare Themen

6
Antw.
2126
Views
Performanceprobleme
von Bugfix13 » 04.09.2014 14:45 • Verfasst in ABAP® für Anfänger
1
Antw.
2618
Views
4
Antw.
4323
Views
LOOP in einem LOOP
von Bjuti » 10.09.2013 15:18 • Verfasst in ABAP® für Anfänger
39
Antw.
8866
Views
Loop
von Kai999 » 27.07.2017 16:15 • Verfasst in ABAP® für Anfänger
34
Antw.
7910
Views
ein loop
von user2008 » 19.07.2017 10:50 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

TABSTRIP oder Subscreen
Gestern von ewx 2 / 2685
SELECT SUM CUST
Gestern von wreichelt 4 / 2821
Banf anlegen
vor 2 Tagen von IHe 3 / 14540
FS-CD schnellstmöglich lernen
vor 4 Tagen von waltersen 3 / 7216
Banf anlegen
vor einer Woche von wreichelt 2 / 14891

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

TABSTRIP oder Subscreen
Gestern von ewx 2 / 2685
SELECT SUM CUST
Gestern von wreichelt 4 / 2821
Banf anlegen
vor 2 Tagen von IHe 3 / 14540
FS-CD schnellstmöglich lernen
vor 4 Tagen von waltersen 3 / 7216
Banf anlegen
vor einer Woche von wreichelt 2 / 14891