Listausgabe auf x- Treffer begrenzen

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

Listausgabe auf x- Treffer begrenzen

Beitrag von thiemf (ForumUser / 5 / 0 / 0 ) »
Hallo Kollegen,
ich habe folgendes Problem und Code:
Ich habe einen Report der eigentlich nur eine Aneinanderreihung von Standartreports (Subreports) ist. Die Ausgabe erfolgt nicht im ALV sondern 'unstrukturiert' am Bildschirm.
Werden im Produktivsystem nun Massendatenänderungen vorgenommen kann es sein, daß die Ausgabe 2500 Seiten lang ist.

Gibt es eine Möglichkeit die Listenausgabe der 'Subreports' so zu begrenzen, daß pro, in interner Tab. vorhandenem user, eine wählbare maximale Anzahl Zeilen ausgegeben werden?
In der internen Tab. sind mal nur ein, mal 100 user vorhanden.
Es sollten dann aber auch nicht leere Zeilen ausgegeben werden sollte ein user garkeine Änderung vorgenommen haben.
An welcher Stelle müsste dies dann eingefügt werden?

Danke schonmal für Eure Hilfe! Flo

Soweit bin ich schon mal gekommen - anbei ein code-ausschnitt:

i_str_usr = interne Tabelle mit usernamen aus select-options.

Code: Alles auswählen.

PARAMETERS: p_ausg TYPE tbmaxsel DEFAULT 100.
...

WRITE: /  '|******************************************Beginn**********************************************|',
           /  '|*                                          CA1                                               *|',
           /  '|*              Es werden alle Änderung an Kreditoren-, Debitoren-Stammdaten                  *|',
           /  '|*                               und Konditionen angezeigt.                                   *|',
           /  '|**********************************************************************************************|'.
    SKIP.

    SKIP 1.

    LOOP AT i_str_usr INTO wa_str_usr.
      SELECT * FROM cdhdr
               INTO TABLE gt_cdhdr
               WHERE username EQ wa_str_usr
               AND udate GE p_von
               AND udate LE p_bis.
    ENDLOOP.

    LOOP AT gt_cdhdr INTO gs_cdhdr.

AT FIRST.
        WRITE: /
                 'Mdt',      "Mandant
               5 'Objkl',    "Objektklasse
              21 'Objektid', "Objektwert
             112 'Changenr', "Änderungsnummer des Belegs
             ...

ENDAT.
IF sy-tabix > p_ausg.
       WRITE: / 'Durch die Ausgabebegrenzung werden nur n-Zeilen angezeigt. Im System sind tatsächlich mehr Einträge vorhanden!'.
      EXIT.
      ENDIF.

        WRITE: /
               gs_cdhdr-mandant,
            5  gs_cdhdr-objectclas,
           21  gs_cdhdr-objectid,
          112  gs_cdhdr-changenr,
          ...

    ENDLOOP.

    IF sy-subrc NE 0.
      WRITE: / '-> No changes found!'..
    ELSE.
*  WRITE: / '-> End of list!'..
    ENDIF.
    FORMAT RESET.
    PERFORM block_ende.
  ENDIF.

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


Re: Listausgabe auf x- Treffer begrenzen

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
thiemf hat geschrieben: An welcher Stelle müsste dies dann eingefügt werden?
Es wäre Sinnvoll die Daten erst garnicht zu lesen, wenn sie nicht ausgegeben werden sollen. Dies geht mit dem Zusatz UP TO n ROWs.

Habe das Coding dhin gehend angepasst.

Code: Alles auswählen.

PARAMETERS: p_ausg TYPE tbmaxsel DEFAULT 100.

* Zuerst Überschirft ausgeben:
        WRITE: /
                 'Mdt',      "Mandant
               5 'Objkl',    "Objektklasse
              21 'Objektid', "Objektwert
             112 'Changenr', "Änderungsnummer des Belegs
             ...

*  Je User max. p_ausg Einträge lesen
* ENDLOOP bis ganz anz Ende verschoben, da sonst gt_cdhdr überschrieben würde
    LOOP AT i_str_usr INTO wa_str_usr.
      SELECT * FROM cdhdr
               INTO TABLE gt_cdhdr
               WHERE username EQ wa_str_usr
               AND udate GE p_von
               AND udate LE p_bis
               UP TO p_ausg.   

    LOOP AT gt_cdhdr INTO gs_cdhdr.
*      gelesene Daten ausgeben
        WRITE: /
               gs_cdhdr-mandant,
            5  gs_cdhdr-objectclas,
           21  gs_cdhdr-objectid,
          112  gs_cdhdr-changenr,
          ...
    ENDLOOP. "gt_cdhdr INTO gs_cdhdr.

*  Wenn keine daten gelesen wurden
    IF sy-subrc NE 0.
      WRITE: / '-> No changes found! For user:'  wa_str_usr.
    ENDIF.


    ENDLOOP. " i_str_usr INTO wa_str_usr.
Gruß Hendrik

Beitrag von thiemf (ForumUser / 5 / 0 / 0 ) »
Hendrik, vielen Dank! Genau das war es was ich wollte :D

Das select-statement musste ich noch abändern (UP TO ... vorgezogen), dann lief es wie gewünscht.

Code: Alles auswählen.

SELECT * FROM cdhdr UP TO p_ausg ROWS
               INTO TABLE gt_cdhdr
               WHERE username = wa_str_usr
               AND udate > p_von
               AND udate < p_bis.
Cheers,
Florian

Seite 1 von 1

Vergleichbare Themen

4
Antw.
1971
Views
Listausgabe begrenzen
von thiemf » 30.10.2007 15:51 • Verfasst in ABAP® für Anfänger
2
Antw.
4302
Views
select begrenzen
von tech » 27.03.2008 19:42 • Verfasst in ABAP® für Anfänger
2
Antw.
1546
Views
Anzeige der Treffer Im Objektmanager
von globetrotter » 08.01.2008 09:59 • Verfasst in Human Resources
9
Antw.
3910
Views
Anzahl Treffer select-anweisung
von SLUK » 19.02.2018 19:17 • Verfasst in ABAP® für Anfänger
1
Antw.
988
Views
Keine Treffer mir Remote Start von FB
von SAP-Fun » 26.01.2006 20:07 • Verfasst in ABAP® Core

Über diesen Beitrag


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

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 15 Stunden von Bright4.5 1 / 321
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1962
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8562