falsch gesetztes CLEAR !?

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

falsch gesetztes CLEAR !?

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,
Ich habe ein Problem mit meiner Ausgabe.
Und zwar möchte ich alle Einträge aus allen sieben Tabellen rausbekommen, jedoch erhalte ich nur die Einträge aus der zkat1020, aus der zkat1040 er wird nur ein Datensatz ausgegeben, und ab d. zkat1030er - loop geht er nicht mehr in die Schleifen rein... !??
- Kann es sein, dass meine clears falsch gesetzt sind?
Bzw. einige clears sogar fehlen?

Bitte um Hilfe!!
Danke!
lg

-> Mein bisheriger Code dazu sieht so aus -->
REPORT zka_kkmbelegstat LINE-SIZE 160.

*** I N C L U D E S ****************************************************
INCLUDE <icon>.

*** D A T E N D E K L A R A T I O N ************************************
DATA:
it_zkat1020 TYPE TABLE OF zkat1020,
wa_zkat1020 TYPE zkat1020,
it_zkat1040 TYPE TABLE OF zkat1040,
wa_zkat1040 TYPE zkat1040,
it_zkat1010 TYPE TABLE OF zkat1010,
* wa_zkat1010 TYPE zkat1010,
wa_zkat1010 LIKE LINE OF it_zkat1010,
it_zkat1030 TYPE TABLE OF zkat1030,
wa_zkat1030 TYPE zkat1030,
it_zkat1050 TYPE TABLE OF zkat1050,
wa_zkat1050 TYPE zkat1050,
it_zkat1070 TYPE TABLE OF zkat1070,
wa_zkat1070 TYPE zkat1070,
it_zkat1080 TYPE TABLE OF zkat1080,
wa_zkat1080 TYPE zkat1080,
* Struktur für die Ausgabe
it_data TYPE TABLE OF zgs_zkatkkm,
wa_data LIKE LINE OF it_data,

* Zaehler zum Hochzählen der gesamten Datensätze
g_zaehler TYPE i,
* Zaehler zum Hochzählen der neuen Belege
g_zneu TYPE i,
* Zaehler zum Hochzählen der fehlerhaften Datensätze
g_zfehler TYPE i,
* Zaehler zum Hochzählen der korrekten Datensätze
g_zok TYPE i.

*** S E L E K T I O N E N **********************************************
SELECTION-SCREEN BEGIN OF BLOCK selektion WITH FRAME TITLE text-001.
SELECT-OPTIONS:
so_sst FOR wa_zkat1010-sst,
so_kasnr FOR wa_zkat1010-kasnr,
so_kaabi FOR wa_zkat1010-kaab_id,
so_datum FOR wa_zkat1010-datum_von.
SELECTION-SCREEN END OF BLOCK selektion.

*Diese Überschrift wird immer an den Anfang der Liste geschrieben
TOP-OF-PAGE.

FORMAT COLOR 1.
* Überschrift
WRITE:/1 'Bewegungsdatenstatistik',
* Zeitpunkt d. Ausführens des Reports, Datum
40 'Datum: ', sy-datum,
* Zeitpunkt d. Ausführens des Reports, Zeit
60 'Zeit: ', sy-uzeit,
* Von welchem User wird der Report ausgeführt
130 'Benutzer: ', sy-uname.
WRITE: /.
FORMAT COLOR OFF.
ULINE.

WRITE: /1 'Status',
10 'Servicestellennummer',
35 'Kassennummer',
55 'Kassenabschluss-ID',
80 'Bereich',
95 'Anz. neue Belege',
115 'Anz. Fehlerhafte',
135 'Anz. Korrekte'.
WRITE: /.
SKIP.

END-OF-PAGE.

START-OF-SELECTION.


* KKM Kassenabschlüsse (STATUSU_V, Status verdichtet (Fakturen) (unverdichtet))
SELECT * FROM zkat1010 INTO TABLE it_zkat1010
WHERE sst IN so_sst
AND kasnr IN so_kasnr
AND kaab_id IN so_kaabi
AND datum_von IN so_datum.

* KKM Materialbelege - Kopfdaten (STATUSM, Status Materialbeleg)
SELECT * FROM zkat1040 INTO TABLE it_zkat1040
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

* KKM Belege zu Kassenabschluss - Kopfdaten (unverdichtet)
* (STATUSU_V, Status verdichtet (Fakturen) (unverdichtet),
* STATUSU_M, Status Materialbeleg (unverdichtet),
* STATUSU_L, Status Lieferscheinbeleg (unverdichtet),
* STATUSU_UIDB, Status UiDB Beleg (unverdichtet),
* STATUSU_NPO, Status NPO Beleg (unverdichtet))
SELECT * FROM zkat1020 INTO TABLE it_zkat1020
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

* KKM Belege verdichtet - Kopf/Posdaten (Faktura) (STATUSV, Status verdichtet (Fakturen))
SELECT * FROM zkat1030 INTO TABLE it_zkat1030
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

* KKM Lieferungen (Aufträge) - Kopfdaten (STATUSL, Status Lieferscheinbeleg)
SELECT * FROM zkat1050 INTO TABLE it_zkat1050
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

* KKM UiDB Belege Kopfdaten (STATUSUIDB, Status UiDB Beleg)
SELECT * FROM zkat1070 INTO TABLE it_zkat1070
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

* KKM NPO Belege (STATUSNPO, Status NPO Beleg)
SELECT * FROM zkat1080 INTO TABLE it_zkat1080
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.


* CLEAR: it_zkat1020.
* CLEAR: wa_data.

* KKM Belege zu Kassenabschluss - Kopfdaten (unverdichtet)
LOOP AT it_zkat1020 INTO wa_zkat1020.

wa_data-sst = wa_zkat1020-sst.
wa_data-kasnr = wa_zkat1020-kasnr.
wa_data-kaab_id = wa_zkat1020-kaab_id.
wa_data-bereich = 'MAT'.

* Neuer Beleg (000)
IF wa_zkat1020-statusu_m = '000'.
g_zneu = 1.
wa_data-g_zneu = g_zneu.
* Fehler (> 000 und < 900)
ELSEIF wa_zkat1020-statusu_m > '000' AND wa_zkat1020-statusu_m < '900'.
g_zfehler = 1.
wa_data-g_zfehler = g_zfehler.
* OK (900)
ELSEIF wa_zkat1020-statusu_m = '900'.
g_zok = 1.
wa_data-g_zok = g_zok.
* Nicht relevant (910)
ELSEIF wa_zkat1020-statusu_m = '910'.
ELSE.
ENDIF.

COLLECT wa_data INTO it_data.

ENDLOOP.


* CLEAR: it_zkat1020.

* CLEAR: it_zkat1040.

* KKM Materialbelege - Kopfdaten
LOOP AT it_zkat1040 INTO wa_zkat1040.

wa_data-sst = wa_zkat1040-sst.
wa_data-kasnr = wa_zkat1040-kasnr.
wa_data-kaab_id = wa_zkat1040-kaab_id.
wa_data-bereich = 'MAT'.

* Neuer Beleg (000)
IF wa_zkat1040-statusm = '000'.
g_zneu = 1.
wa_data-g_zneu = g_zneu.
* Fehler (> 000 und < 900)
ELSEIF wa_zkat1040-statusm > '000' AND wa_zkat1040-statusm < '900'.
g_zfehler = 1.
wa_data-g_zfehler = g_zfehler.
* OK (900)
ELSEIF wa_zkat1040-statusm = '900'.
g_zok = 1.
wa_data-g_zok = g_zok.
* Nicht relevant (910)
ELSEIF wa_zkat1040-statusm = '910'.
ELSE.
ENDIF.

COLLECT wa_data INTO it_data.

ENDLOOP.

* CLEAR: it_zkat1040.

* CLEAR: it_zkat1030.

* KKM Belege verdichtet - Kopf/Posdaten (Faktura)
LOOP AT it_zkat1030 INTO wa_zkat1030.

wa_data-sst = wa_zkat1030-sst.
wa_data-kasnr = wa_zkat1030-kasnr.
wa_data-kaab_id = wa_zkat1030-kaab_id.
wa_data-bereich = 'FAK'.

* Neuer Beleg (000)
IF wa_zkat1030-statusv = '000'.
g_zneu = 1.
wa_data-g_zneu = g_zneu.
* Fehler (> 000 und < 900)
ELSEIF wa_zkat1030-statusv > '000' AND wa_zkat1030-statusv < '900'.
g_zfehler = 1.
wa_data-g_zfehler = g_zfehler.
* OK (900)
ELSEIF wa_zkat1030-statusv = '900'.
g_zok = 1.
wa_data-g_zok = g_zok.
* Nicht relevant (910)
ELSEIF wa_zkat1030-statusv = '910'.
ELSE.
ENDIF.

COLLECT wa_data INTO it_data.

ENDLOOP.


* CLEAR: it_zkat1050.

* KKM Lieferungen (Aufträge) - Kopfdaten
LOOP AT it_zkat1050 INTO wa_zkat1050.

wa_data-sst = wa_zkat1050-sst.
wa_data-kasnr = wa_zkat1050-kasnr.
wa_data-kaab_id = wa_zkat1050-kaab_id.
wa_data-bereich = 'LIE'.

* Neuer Beleg (000)
IF wa_zkat1050-statusl = '000'.
g_zneu = 1.
wa_data-g_zneu = g_zneu.
* Fehler (> 000 und < 900)
ELSEIF wa_zkat1050-statusl > '000' AND wa_zkat1050-statusl < '900'.
g_zfehler = 1.
wa_data-g_zfehler = g_zfehler.
* OK (900)
ELSEIF wa_zkat1050-statusl = '900'.
g_zok = 1.
wa_data-g_zok = g_zok.
* Nicht relevant (910)
ELSEIF wa_zkat1050-statusl = '910'.
ELSE.
ENDIF.

COLLECT wa_data INTO it_data.

ENDLOOP.


* CLEAR: it_zkat1070.

* KKM UiDB Belege Kopfdaten
LOOP AT it_zkat1070 INTO wa_zkat1070.

wa_data-sst = wa_zkat1070-sst.
wa_data-kasnr = wa_zkat1070-kasnr.
wa_data-kaab_id = wa_zkat1070-kaab_id.
wa_data-bereich = 'UID'.

* Neuer Beleg (000)
IF wa_zkat1070-statusuidb = '000'.
g_zneu = 1.
wa_data-g_zneu = g_zneu.
* Fehler (> 000 und < 900)
ELSEIF wa_zkat1070-statusuidb > '000' AND wa_zkat1070-statusuidb < '900'.
g_zfehler = 1.
wa_data-g_zfehler = g_zfehler.
* OK (900)
ELSEIF wa_zkat1070-statusuidb = '900'.
g_zok = 1.
wa_data-g_zok = g_zok.
* Nicht relevant (910)
ELSEIF wa_zkat1070-statusuidb = '910'.
ELSE.
ENDIF.

COLLECT wa_data INTO it_data.

ENDLOOP.


* CLEAR: it_zkat1080.

* KKM NPO Belege
LOOP AT it_zkat1080 INTO wa_zkat1080.

wa_data-sst = wa_zkat1080-sst.
wa_data-kasnr = wa_zkat1080-kasnr.
wa_data-kaab_id = wa_zkat1080-kaab_id.
wa_data-bereich = 'NPO'.

* Neuer Beleg (000)
IF wa_zkat1080-statusnpo = '000'.
g_zneu = 1.
wa_data-g_zneu = g_zneu.
* Fehler (> 000 und < 900)
ELSEIF wa_zkat1080-statusnpo > '000' AND wa_zkat1080-statusnpo < '900'.
g_zfehler = 1.
wa_data-g_zfehler = g_zfehler.
* OK (900)
ELSEIF wa_zkat1080-statusnpo = '900'.
g_zok = 1.
wa_data-g_zok = g_zok.
* Nicht relevant (910)
ELSEIF wa_zkat1080-statusnpo = '910'.
ELSE.
ENDIF.

COLLECT wa_data INTO it_data.

ENDLOOP.


* Loop über die interne Tabelle für die Ausgabe
LOOP AT it_data INTO wa_data.

* Ausgabe der Kassenabschlussdaten
WRITE: /10 wa_data-sst,
35 wa_data-kasnr,
55 wa_data-kaab_id,
80 wa_data-bereich.

* Ausgabe der Anzahl der neuen Belege
WRITE: 100 wa_data-g_zneu.
* Ausgabe der Anzahl der fehlerhaften Belege
WRITE: 120 wa_data-g_zfehler.
* Ausgabe der Anzahl der korrekten Belege
WRITE: 140 wa_data-g_zok.

* Ausgabe des Status (Ampel)
* Wenn Anzahl neuer Beleg = 0 und Anzahl Fehler = 0
IF g_zneu = '0' AND g_zfehler = '0'.
WRITE 1 icon_green_light AS ICON.
* Wenn Anzahl Fehler = 0 und Anzahl neuer Beleg <> 0
ELSEIF g_zfehler = '0' AND g_zneu <> '0'.
WRITE 1 icon_yellow_light AS ICON.
ELSE.
* Alles Restliche wird mit einer roten Ampel ausgegeben
WRITE 1 icon_red_light AS ICON.
ENDIF.

* Hochzählen der gesamten Datensätze
g_zaehler = g_zaehler + 1.

ENDLOOP.


WRITE: /.
WRITE:/1 'Datensätze: ', g_zaehler,
130 'Seite: ', sy-pagno.
WRITE: /.

END-OF-SELECTION.

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


Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
So auf den ersten Blick scheint alles IO zu sein.

Steht auch in allen Tabellen nach den Select was drin ? Hast du schon mal mit den Debugger geschaut ob zur Laufzeit die Inhalte / Statis OK sind ?

Thomas

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,

Danke für deine rasche Antwort, ..

Nein - du hast recht - ->
In der it_zkat1040 steht lt. debugger nur ein Datensatz drinnen (obwohl da zwei drinnenstehen sollten) ,
* KKM Materialbelege - Kopfdaten (STATUSM, Status Materialbeleg)
SELECT * FROM zkat1040 INTO TABLE it_zkat1040
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

-> in der it_zkat1020 stehen ordnungsgemäss alle 4 Datensätze drinnen,
* KKM Belege zu Kassenabschluss - Kopfdaten (unverdichtet)
* (STATUSU_V, Status verdichtet (Fakturen) (unverdichtet),
* STATUSU_M, Status Materialbeleg (unverdichtet),
* STATUSU_L, Status Lieferscheinbeleg (unverdichtet),
* STATUSU_UIDB, Status UiDB Beleg (unverdichtet),
* STATUSU_NPO, Status NPO Beleg (unverdichtet))
SELECT * FROM zkat1020 INTO TABLE it_zkat1020
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

-> und in der zkat1030, zkat1050, zkat1070 und zkat1080
* KKM Belege verdichtet - Kopf/Posdaten (Faktura) (STATUSV, Status verdichtet (Fakturen))
SELECT * FROM zkat1030 INTO TABLE it_zkat1030
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

* KKM Lieferungen (Aufträge) - Kopfdaten (STATUSL, Status Lieferscheinbeleg)
SELECT * FROM zkat1050 INTO TABLE it_zkat1050
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

* KKM UiDB Belege Kopfdaten (STATUSUIDB, Status UiDB Beleg)
SELECT * FROM zkat1070 INTO TABLE it_zkat1070
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

* KKM NPO Belege (STATUSNPO, Status NPO Beleg)
SELECT * FROM zkat1080 INTO TABLE it_zkat1080
FOR ALL ENTRIES IN it_zkat1010
WHERE sst = it_zkat1010-sst
AND kasnr = it_zkat1010-kasnr
AND kaab_id = it_zkat1010-kaab_id.

stehen gar keine Datensätze drinnen!! :-(
:shock:
Wieso ist das so?
Woran kann das liegen?
Das select ist doch richtig, oder? Bzw. die it's werden doch richtig befüllt , oder?

thx,
lg

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Du liest alle Tabellen mit den selben Key. Ist das wirklich richtig?

Kann es sein das du die Positionen anders lesen musst als die Kopfdaten. Sind die Selektionsfelder aus der Where-Klausel wirklich in allen Tabellen gefüllt und haben den richtigen Eintrag?
Sind für seine Parameter immer ( zu jeder Tabelle ) auch Daten vorhanden (SE16)?

Thomas

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo,

:? das sind berechtigte Fragen ... o.k., thx,
werd' der ganzen Sache mal auf den Grund gehen..

thx,
lg

Beitrag von edwin (Specialist / 306 / 10 / 68 ) »
Hallo,

auch noch auf "FOR ALL ENTRIES" achten, Du solltest die
Ausgangstabelle überprüfen, ob sie überhaupt Einträge enthält,
im schlimmsten Fall erhälst Du beim Select als Ergebnis die komplette Tabelle
geliefert.

Gruss Edwin

Beitrag von BabsiCSC (ForumUser / 86 / 0 / 0 ) »
Hallo Thomas,
Hallo Edwin,

Ja, ihr hattet recht - danke für eure Hilfe, bzw. "Denkanstoß" ... :?
-> der report selber hat schon so gepasst,
nur gab' es zu meinen Selektionskriterien nicht zu jede d. sieben Tabellen die richtigen Datensätze, nicht den richtigen Eintrag.
Bzw. waren für meine Einschränkungen keine Daten vorhanden.

thx,
lg

Seite 1 von 1

Vergleichbare Themen

7
Antw.
2277
Views
falsch gesetztes loop!?
von BabsiCSC » 23.06.2008 10:54 • Verfasst in ABAP® Core
1
Antw.
1114
Views
CLEAR
von ABAPNEULING1 » 08.12.2004 10:42 • Verfasst in ABAP® für Anfänger
23
Antw.
4726
Views
Clear FUBA
von Abapsocke » 25.05.2018 10:35 • Verfasst in ABAP® für Anfänger
3
Antw.
803
Views
Wann macht der Clear-Befehl Sinn?
von Bright4.5 » 03.01.2024 12:01 • Verfasst in ABAP® für Anfänger
11
Antw.
3564
Views
Ausgabe falsch
von PseudoReal » 10.06.2005 16:08 • 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 5 Stunden von tar 8 / 184
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

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 5 Stunden von tar 8 / 184
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

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