Laden Archivierter Daten - Performance Problem

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

Laden Archivierter Daten - Performance Problem

Beitrag von tom125 (ForumUser / 3 / 0 / 0 ) »
Hallo,

mein Report soll archivierte Daten lesen um Jahresauswertungen zu ermöglichen.
Das funktioniert bereits sehr gut und alle Daten (ob Archiviert oder nicht Archiviert) werden im ALV ausgegeben. Nun habe ich allerdings brutal langsame Ladezeiten. Ich weiß das diese Archivierten Daten sehr langsam sind und das ich hier keine Ladezeiten im Sekundenbereich erzielen werde, aber aktuell lauft es auf Laufzeitfehler wegen Zeitüberschreitung.

Habt ihr Ideen wie ich meinen Code Optimieren könnte?
Da ich keine laufenden Einkaufsbelegnummern wegen vorheriger WHERE Bedingungen habe, ist es auch nicht sinnvoll alle Daten von kleinster Einkaufsbelegnummer - bis größter Einkaufsbelegnummer zu laden oder?

Code: Alles auswählen.

  METHOD get_archiv.
    DATA it_arch TYPE STANDARD TABLE OF zarixmm2.
    DATA it_ekko TYPE STANDARD TABLE OF ekko.
    DATA it_ekpo TYPE STANDARD TABLE OF ekpo.
    DATA it_eket TYPE STANDARD TABLE OF eket.
    DATA it_ekkn TYPE STANDARD TABLE OF ekkn.
    DATA itab_arch TYPE STANDARD TABLE OF t_ausgabe.
    DATA wa_arch LIKE LINE OF itab_arch.

    SELECT ebeln FROM zarixmm2
      INTO CORRESPONDING FIELDS OF TABLE it_arch
          WHERE bsart IN pa_bsart
            AND lifnr IN pa_lnum
            AND matnr IN pa_mat
            AND aedat IN pa_time.

    IF it_arch IS NOT INITIAL.
      DELETE ADJACENT DUPLICATES FROM it_arch.
      LOOP AT it_arch INTO DATA(wa_itab).
        CALL FUNCTION '/PBS/SELECT_INTO_TABLE'
          EXPORTING
            archiv     = 'CMM'
            option     = 'A'
            tabname    = 'EKET'
            schl1_name = 'EBELN'
            schl1_von  = wa_itab-ebeln
            schl1_bis  = wa_itab-ebeln
          TABLES
            I_Tabelle  = it_eket
                         EXCEPTIONS
                         eof
                         OTHERS.

        CALL FUNCTION '/PBS/SELECT_INTO_TABLE'
          EXPORTING
            archiv     = 'CMM'
            option     = 'A'
            tabname    = 'EKPO'
            schl1_name = 'EBELN'
            schl1_von  = wa_itab-ebeln
            schl1_bis  = wa_itab-ebeln
          TABLES
            I_Tabelle  = it_ekpo
                         EXCEPTIONS
                         eof
                         OTHERS.

        CALL FUNCTION '/PBS/SELECT_INTO_TABLE'
          EXPORTING
            archiv     = 'CMM'
            option     = 'A'
            tabname    = 'EKKO'
            schl1_name = 'EBELN'
            schl1_von  = wa_itab-ebeln
            schl1_bis  = wa_itab-ebeln
          TABLES
            I_Tabelle  = it_ekko
                         EXCEPTIONS
                         eof
                         OTHERS.

        CALL FUNCTION '/PBS/SELECT_INTO_TABLE'
          EXPORTING
            archiv     = 'CMM'
            option     = 'A'
            tabname    = 'EKKN'
            schl1_name = 'EBELN'
            schl1_von  = wa_itab-ebeln
            schl1_bis  = wa_itab-ebeln
          TABLES
            I_Tabelle  = it_ekkn
                         EXCEPTIONS
                         eof
                         OTHERS.

        LOOP AT it_eket ASSIGNING FIELD-SYMBOL(<fs_eket>).
          wa_arch-ebeln = <fs_eket>-ebeln.
          wa_arch-ebelp = <fs_eket>-ebelp.
          wa_arch-etenr = <fs_eket>-etenr.
          wa_arch-eindt = <fs_eket>-eindt.


          LOOP AT it_ekpo ASSIGNING FIELD-SYMBOL(<fs_ekpo>) WHERE ebeln EQ <fs_eket>-ebeln AND ebelp EQ <fs_eket>-ebelp.
            wa_arch-labnr = <fs_ekpo>-labnr.
            wa_arch-kunnr = <fs_ekpo>-kunnr.
            wa_arch-matnr = <fs_ekpo>-matnr.
            wa_arch-txz01 = <fs_ekpo>-txz01.
            wa_arch-menge = <fs_ekpo>-menge.
            wa_arch-meins = <fs_ekpo>-meins.

            LOOP AT it_ekko ASSIGNING FIELD-SYMBOL(<fs_ekko>) WHERE ebeln EQ <fs_eket>-ebeln.
              wa_arch-aedat = <fs_ekko>-aedat.
              wa_arch-inco1 = <fs_ekko>-inco1.
              wa_arch-inco2 = <fs_ekko>-inco2.
              wa_arch-lifnr = <fs_ekko>-lifnr.
            ENDLOOP.

            LOOP AT it_ekkn ASSIGNING FIELD-SYMBOL(<fs_ekkn>) WHERE ebeln EQ <fs_eket>-ebeln AND ebelp EQ <fs_eket>-ebelp.
              wa_arch-vbeln = <fs_ekkn>-vbeln.
              wa_arch-vbelp = <fs_ekkn>-vbelp.
            ENDLOOP.
          ENDLOOP.
          APPEND wa_arch TO itab_out.
        ENDLOOP.
      ENDLOOP.
    ENDIF.
  ENDMETHOD.

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


Re: Laden Archivierter Daten - Performance Problem

Beitrag von msfox (Specialist / 366 / 56 / 76 ) »
Leider schreibst du nicht, wo die Laufzeit flöte geht. Schon beim SELECT oder erst beim Lesen über die Fuba /PBS/SELECT_INTO_TABLE.
Was macht denn der Fuba /PBS/SELECT_INTO_TABLE?
Was hängt denn für ein Archiv dahinter von wo du liest? ArchivLink?
Wenn es ein ArchivLink ist, dann kann es ja alles möglich sein - u.U. auch auf einem anderen Server oder im Filesystem.
--
Warum machst du eigentlich vor dem LOOP eine Abfrage auf IF it_arch?
Wenn die it_arch leer ist, wird doch LOOP sowieso nicht durchlaufen.
--
LOOP AT it_arch INTO DATA(wa_itab).
Hier würde ich ein ASSIGN FIELD-SYMBOL(<wa_itab>) verwenden.
--
Die 3 LOOP's im LOOP sehen auch nicht gerade glücklich aus...

Das LOOP "LOOP AT it_ekko ASSIGNING FIELD-SYMBOL(<fs_ekko>) WHERE ebeln EQ <fs_eket>-ebeln." ist ja gar nicht von dem davor "LOOP AT it_ekpo ASSIGNING FIELD-SYMBOL(<fs_ekpo>) WHERE ebeln EQ <fs_eket>-ebeln AND ebelp EQ <fs_eket>-ebelp." abhängig.

Gleiches gilt für das LOOP "LOOP AT it_ekkn ASSIGNING FIELD-SYMBOL(<fs_ekkn>) WHERE ebeln EQ <fs_eket>-ebeln AND ebelp EQ <fs_eket>-ebelp."


Also:

Code: Alles auswählen.

LOOP AT it_eket ASSIGNING FIELD-SYMBOL(<fs_eket>).
          wa_arch-ebeln = <fs_eket>-ebeln.
          wa_arch-ebelp = <fs_eket>-ebelp.
          wa_arch-etenr = <fs_eket>-etenr.
          wa_arch-eindt = <fs_eket>-eindt.


          LOOP AT it_ekpo ASSIGNING FIELD-SYMBOL(<fs_ekpo>) WHERE ebeln EQ <fs_eket>-ebeln AND ebelp EQ <fs_eket>-ebelp.
            wa_arch-labnr = <fs_ekpo>-labnr.
            wa_arch-kunnr = <fs_ekpo>-kunnr.
            wa_arch-matnr = <fs_ekpo>-matnr.
            wa_arch-txz01 = <fs_ekpo>-txz01.
            wa_arch-menge = <fs_ekpo>-menge.
            wa_arch-meins = <fs_ekpo>-meins.
           ENDLOOP.
            LOOP AT it_ekko ASSIGNING FIELD-SYMBOL(<fs_ekko>) WHERE ebeln EQ <fs_eket>-ebeln.
              wa_arch-aedat = <fs_ekko>-aedat.
              wa_arch-inco1 = <fs_ekko>-inco1.
              wa_arch-inco2 = <fs_ekko>-inco2.
              wa_arch-lifnr = <fs_ekko>-lifnr.
            ENDLOOP.

            LOOP AT it_ekkn ASSIGNING FIELD-SYMBOL(<fs_ekkn>) WHERE ebeln EQ <fs_eket>-ebeln AND ebelp EQ <fs_eket>-ebelp.
              wa_arch-vbeln = <fs_ekkn>-vbeln.
              wa_arch-vbelp = <fs_ekkn>-vbelp.
            ENDLOOP.
          
          APPEND wa_arch TO itab_out.
        ENDLOOP.
      ENDLOOP.
Dann füllst du innerhalb der 3 LOOPS immer nur eine Feld der WA_ARCH. D.h. wenn z.B. auf it_ekko 10.000 werte stehen, so landet auf wa_arch nur der Letzte. Trotzdem wurde das LOOP 10.000x durchlaufen.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1937
Views
ALV-Grid: Daten komplett laden
von ewx » 02.04.2017 11:27 • Verfasst in ABAP® Core
2
Antw.
1407
Views
Daten-View und Performance
von gabap » 02.11.2006 21:23 • Verfasst in ABAP® Core
14
Antw.
2928
Views
Performance Problem
von ChrissixD » 26.09.2017 09:13 • Verfasst in ABAP® für Anfänger
70
Antw.
18159
Views
Performance-Problem
von cuncon » 27.02.2018 07:41 • Verfasst in ABAP® für Anfänger
2
Antw.
1239
Views
Performance Problem
von ChrissixD » 21.11.2017 07:49 • 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

Regex in where
vor 9 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 23 Stunden von Bright4.5 3 / 1487

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

Regex in where
vor 9 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 23 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822