ERLEDIGT - Optimierung eines Reports - ??

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

ERLEDIGT - Optimierung eines Reports - ??

Beitrag von sp89 (ForumUser / 37 / 0 / 0 ) »
Hallo zusammen,

ich hab da einen Report, der bis zu einer bestimmten Stelle auch ganz flott (performance) durchläuft.
ABER: an einem Perform dauert es ewig bzw im Debugger - bekomme ich einen TimeOut!

Was mir klar ist, dass das Teil nicht in "2sekunden" durch rennt..

in der Tabelle pi_batches sind immer ca. 170.000 Einträge.

hier der Code, vll fällt euch ein/auf wie man hier ein bischen was Optimieren kann:

pi_batches =

Code: Alles auswählen.

TYPES: BEGIN OF type_batches,
         matnr TYPE matnr,
         werks TYPE werks_d,
         charg TYPE charg_d,
         lvorm TYPE lvoca,
         ersda TYPE ersda,
         lwedt TYPE lwedt,
         clabs LIKE mchb-clabs,
       END   OF type_batches.

Code: Alles auswählen.

FORM check_batch_stock TABLES pi_batches TYPE table_batches.
DATA: lt_batches TYPE LINE OF table_batches.
  DATA: BEGIN OF fl_mchb,
          clabs TYPE labst,
          cumlm TYPE umlmd,
          cinsm TYPE insme,
          ceinm TYPE einme,
          cspem TYPE speme,
          cretm TYPE retme,
        END   OF fl_mchb.

  DATA: BEGIN OF fl_mkol,
          slabs TYPE klabs,
          sinsm TYPE kinsm,
          seinm TYPE keinm,
          sspem TYPE kspem,
        END   OF fl_mkol.

  DATA: BEGIN OF fl_msca,
          calab TYPE labst,
          cains TYPE insme,
          caspe TYPE speme,
        END   OF fl_msca.

  DATA: BEGIN OF fl_mska,
          kalab TYPE labst,
          kains TYPE insme,
          kaspe TYPE speme,
        END   OF fl_mska.

  DATA: BEGIN OF fl_msku,
          kulab TYPE labst,
          kuins TYPE insme,
        END   OF fl_msku.

  DATA: BEGIN OF fl_mslb,
          lblab TYPE labst,
          lbins TYPE insme,
        END   OF fl_mslb.

  DATA: BEGIN OF fl_mspr,
          prlab TYPE labst,
          prins TYPE insme,
          prspe TYPE speme,
        END   OF fl_mspr.

  DATA: BEGIN OF fl_mseg,
         mblnr TYPE mblnr,
        END OF fl_mseg.

  DATA: l_sum_labst TYPE labst.

  LOOP AT pi_batches INTO lt_batches.


    CLEAR l_sum_labst.

* Summing batch stocks
    SELECT SUM( clabs ) SUM( cumlm ) SUM( cinsm ) SUM( ceinm )
           SUM( cspem ) SUM( cretm ) INTO fl_mchb
           FROM mchb WHERE matnr = lt_batches-matnr
                     AND   charg = lt_batches-charg.
    IF sy-subrc = 0.
      DO.
        ASSIGN COMPONENT sy-index OF STRUCTURE fl_mchb TO <f1>.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
          ADD <f1> TO l_sum_labst.
        ENDIF.
      ENDDO.
      IF NOT l_sum_labst IS INITIAL.
        DELETE pi_batches WHERE matnr = lt_batches-matnr
                          AND   charg = lt_batches-charg.
      ENDIF.
      CHECK l_sum_labst IS INITIAL.
    ENDIF.

* Summing special stocks from vendor
    SELECT SUM( slabs ) SUM( sinsm ) SUM( seinm ) SUM( sspem )
           INTO fl_mkol FROM mkol WHERE matnr = lt_batches-matnr
                                  AND   charg = lt_batches-charg.
    IF sy-subrc = 0.
      DO.
        ASSIGN COMPONENT sy-index OF STRUCTURE fl_mkol TO <f1>.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
          ADD <f1> TO l_sum_labst.
        ENDIF.
      ENDDO.
      IF NOT l_sum_labst IS INITIAL.
        DELETE pi_batches WHERE matnr = lt_batches-matnr
                          AND   charg = lt_batches-charg.
      ENDIF.
      CHECK l_sum_labst IS INITIAL.
    ENDIF.

* Summing sales orders on hand with vendor
    SELECT SUM( calab ) SUM( cains ) SUM( caspe ) INTO fl_msca FROM msca
                                       WHERE matnr = lt_batches-matnr
                                       AND   charg = lt_batches-charg.
    IF sy-subrc = 0.
      DO.
        ASSIGN COMPONENT sy-index OF STRUCTURE fl_msca TO <f1>.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
          ADD <f1> TO l_sum_labst.
        ENDIF.
      ENDDO.
      IF NOT l_sum_labst IS INITIAL.
        DELETE pi_batches WHERE matnr = lt_batches-matnr
                          AND   charg = lt_batches-charg.
      ENDIF.
      CHECK l_sum_labst IS INITIAL.
    ENDIF.

* Summing sales order stock
    SELECT SUM( kalab ) SUM( kains ) SUM( kaspe ) INTO fl_mska FROM mska
                                       WHERE matnr = lt_batches-matnr
                                       AND   charg = lt_batches-charg.
    IF sy-subrc = 0.
      DO.
        ASSIGN COMPONENT sy-index OF STRUCTURE fl_mska TO <f1>.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
          ADD <f1> TO l_sum_labst.
        ENDIF.
      ENDDO.
      IF NOT l_sum_labst IS INITIAL.
        DELETE pi_batches WHERE matnr = lt_batches-matnr
                          AND   charg = lt_batches-charg.
      ENDIF.
      CHECK l_sum_labst IS INITIAL.
    ENDIF.

* Summing special stock with customer
    SELECT SUM( kulab ) SUM( kuins ) INTO fl_msku FROM msku
           WHERE matnr = lt_batches-matnr
           AND   charg = lt_batches-charg.
    IF sy-subrc = 0.
      DO.
        ASSIGN COMPONENT sy-index OF STRUCTURE fl_msku TO <f1>.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
          ADD <f1> TO l_sum_labst.
        ENDIF.
      ENDDO.
      IF NOT l_sum_labst IS INITIAL.
        DELETE pi_batches WHERE matnr = lt_batches-matnr
                          AND   charg = lt_batches-charg.
      ENDIF.
      CHECK l_sum_labst IS INITIAL.
    ENDIF.

* Summing special stock with vendor
    SELECT SUM( lblab ) SUM( lbins ) INTO fl_mslb FROM mslb
           WHERE matnr = lt_batches-matnr
           AND   charg = lt_batches-charg.
    IF sy-subrc = 0.
      DO.
        ASSIGN COMPONENT sy-index OF STRUCTURE fl_mslb TO <f1>.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
          ADD <f1> TO l_sum_labst.
        ENDIF.
      ENDDO.
      IF NOT l_sum_labst IS INITIAL.
        DELETE pi_batches WHERE matnr = lt_batches-matnr
                          AND   charg = lt_batches-charg.
      ENDIF.
      CHECK l_sum_labst IS INITIAL.
    ENDIF.

* Summing project stock
    SELECT SUM( prlab ) SUM( prins ) SUM( prspe ) INTO fl_mspr FROM mspr
                                       WHERE matnr = lt_batches-matnr
                                       AND   charg = lt_batches-charg.
    IF sy-subrc = 0.
      DO.
        ASSIGN COMPONENT sy-index OF STRUCTURE fl_mspr TO <f1>.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
          ADD <f1> TO l_sum_labst.
        ENDIF.
      ENDDO.
      IF NOT l_sum_labst IS INITIAL.
        DELETE pi_batches WHERE matnr = lt_batches-matnr
                          AND   charg = lt_batches-charg.
      ENDIF.
      CHECK l_sum_labst IS INITIAL.
    ENDIF.

* check if material document is existing
    SELECT mblnr INTO fl_mseg FROM mseg
           WHERE matnr = lt_batches-matnr
                   AND   charg = lt_batches-charg.
      IF sy-subrc = 0.
        DELETE pi_batches WHERE matnr = lt_batches-matnr
                              AND   charg = lt_batches-charg.

      ENDIF.
      CHECK fl_mseg IS INITIAL.
    ENDSELECT.
  ENDLOOP.

ENDFORM.                    " check_batch_stock
Zuletzt geändert von sp89 am 04.10.2010 10:46, insgesamt 2-mal geändert.

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


Re: Optimierung eines Reports - ??

Beitrag von sp89 (ForumUser / 37 / 0 / 0 ) »
Thread hat sich erledigt...!!

Hab selbst eine Lösung gefunden...

- Optimierung der einzelnen Do-Schleifen (Struktur)
- Delete Anweisung wurde verbessert
usw

Seite 1 von 1

Vergleichbare Themen

5
Antw.
3858
Views
Code Optimierung
von Mischi83 » 23.03.2017 14:08 • Verfasst in ABAP® für Anfänger
6
Antw.
4633
Views
Code optimierung
von swonny » 29.06.2007 08:59 • Verfasst in ABAP® für Anfänger
13
Antw.
6784
Views
Report Optimierung
von Alexandra » 06.12.2007 12:13 • Verfasst in ABAP® für Anfänger
2
Antw.
4058
Views
Performance Optimierung
von honeyjam » 21.03.2011 09:17 • Verfasst in ABAP® für Anfänger
11
Antw.
5234
Views
Optimierung eines LOOPS
von Foxbat » 17.11.2011 12:01 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag

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

Aktuelle Forenbeiträge

BAPI zur ABSO?
vor einer Woche von DeathAndPain 2 / 1140
Materialstammerweiterung: Neuer Reiter
vor 3 Wochen von DeathAndPain gelöst 4 / 1862
Ermittlung der Arbeitstage (Mosid)
vor 3 Wochen von Radinator 11 / 47523
LSMW-Problem
vor 4 Wochen von DeathAndPain gelöst 6 / 5411

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

BAPI zur ABSO?
vor einer Woche von DeathAndPain 2 / 1140
Materialstammerweiterung: Neuer Reiter
vor 3 Wochen von DeathAndPain gelöst 4 / 1862
Ermittlung der Arbeitstage (Mosid)
vor 3 Wochen von Radinator 11 / 47523
LSMW-Problem
vor 4 Wochen von DeathAndPain gelöst 6 / 5411