Code: Alles auswählen.
REPORT zbliga1.
DATA:
wa_bl_tab LIKE zbligatabstr,
it_bl_tab TYPE TABLE OF zbligatabstr,
wa_spiele LIKE zspiel,
it_spiele TYPE TABLE OF zspiel,
wa_vereine LIKE zbligaverein,
it_vereine TYPE TABLE OF zbligaverein,
verein TYPE zbligaverein-vereinskuerzel.
PARAMETERS:
pa_stag TYPE zspiel-spieltagnr.
START-OF-SELECTION.
SELECT * FROM zspiel
INTO TABLE it_spiele
WHERE spieltagnr <= pa_stag.
SELECT * FROM zbligaverein
INTO TABLE it_vereine.
LOOP AT it_vereine INTO wa_vereine.
verein = wa_vereine-vereinskuerzel.
IF verein = wa_spiele-heimteam OR
verein = wa_spiele-auswaertsteam.
LOOP AT it_spiele INTO wa_spiele.
IF wa_spiele-toreheimteam = wa_spiele-toreauswteam.
wa_bl_tab-verein = verein.
wa_bl_tab-punkte = 1.
ELSE.
IF wa_spiele-toreheimteam < wa_spiele-toreauswteam.
wa_bl_tab-verein = verein.
wa_bl_tab-punkte = 0.
ELSE.
wa_bl_tab-verein = wa_vereine-vereinskuerzel.
wa_bl_tab-punkte = 3.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.Code: Alles auswählen.
REPORT zbliga1.
*...
START-OF-SELECTION.
SELECT * FROM zspiel
INTO TABLE it_spiele
WHERE spieltagnr <= pa_stag.
LOOP AT it_spiele INTO wa_spiele.
clear wa_bl_tab.
wa_bl_tab-verein = wa_spiele-heimteam.
if wa_spiele-toreheimteam > wa_spiele-toreauswteam.
wa_bl_tab-punkte = 3.
* ADD 1 to SIEGE
elseif wa_spiele-toreheimteam = wa_spiele-toreauswteam.
wa_bl_tab-punkte = 1.
* ADD 1 to UNENTSCHIEDEN
else.
* ADD 1 to NIEDERLAGEN
endif.
* ADD heimtore zu TOREPLUS
* ADD Auswartstore zu TOREMINUS
collect wa_bl_tab.
* Das gleiche noch für Auswärtsmannschaften
ENDLOOP.Code: Alles auswählen.
LOOP AT it_vereine INTO wa_vereine.
verein = wa_vereine-vereinskuerzel.
LOOP AT it_spiele INTO wa_spiele
WHERE heimteam = verein.
IF wa_spiele-toreheimteam = wa_spiele-toreauswteam.
wa_bl_tab-verein = verein.
wa_bl_tab-punkte = 1.
ELSEIF wa_spiele-toreheimteam < wa_spiele-toreauswteam.
wa_bl_tab-verein = verein.
wa_bl_tab-punkte = 0.
ELSE.
wa_bl_tab-verein = wa_vereine-vereinskuerzel.
wa_bl_tab-punkte = 3.
ENDIF.
ENDLOOP.
ENDLOOP.Code: Alles auswählen.
REPORT zbliga1.
DATA:
wa_bl_tab LIKE zbligatabstr,
it_bl_tab TYPE TABLE OF zbligatabstr,
wa_spiele LIKE zspiel,
it_spiele TYPE TABLE OF zspiel,
wa_vereine LIKE zbligaverein,
it_vereine TYPE TABLE OF zbligaverein,
verein TYPE zbligaverein-vereinskuerzel.
PARAMETERS:
pa_stag TYPE zspiel-spieltagnr.
START-OF-SELECTION.
SELECT * FROM zspiel
INTO TABLE it_spiele
WHERE spieltagnr <= pa_stag.
SELECT * FROM zbligaverein
INTO TABLE it_vereine.
LOOP AT it_vereine INTO wa_vereine.
verein = wa_vereine-vereinskuerzel.
LOOP AT it_spiele INTO wa_spiele
WHERE heimteam = verein.
IF wa_spiele-toreheimteam = wa_spiele-toreauswteam.
wa_bl_tab-verein = verein.
wa_bl_tab-toregeschossen = wa_spiele-toreheimteam.
wa_bl_tab-torebekommen = wa_spiele-toreauswteam.
wa_bl_tab-punkte = 1.
ELSEIF wa_spiele-toreheimteam < wa_spiele-toreauswteam.
wa_bl_tab-verein = verein.
wa_bl_tab-toregeschossen = wa_spiele-toreheimteam.
wa_bl_tab-torebekommen = wa_spiele-toreauswteam.
wa_bl_tab-punkte = 0.
ELSE.
wa_bl_tab-verein = verein.
wa_bl_tab-toregeschossen = wa_spiele-toreheimteam.
wa_bl_tab-torebekommen = wa_spiele-toreauswteam.
wa_bl_tab-punkte = 3.
ENDIF.
ENDLOOP.
LOOP AT it_spiele INTO wa_spiele
WHERE auswaertsteam = verein.
IF wa_spiele-toreheimteam = wa_spiele-toreauswteam.
wa_bl_tab-verein = verein.
wa_bl_tab-toregeschossen = wa_spiele-toreauswteam.
wa_bl_tab-torebekommen = wa_spiele-toreheimteam.
wa_bl_tab-punkte = 1.
ELSEIF wa_spiele-toreheimteam < wa_spiele-toreauswteam.
wa_bl_tab-verein = verein.
wa_bl_tab-toregeschossen = wa_spiele-toreauswteam.
wa_bl_tab-torebekommen = wa_spiele-toreheimteam.
wa_bl_tab-punkte = 3.
ELSE.
wa_bl_tab-verein = verein.
wa_bl_tab-toregeschossen = wa_spiele-toreauswteam.
wa_bl_tab-torebekommen = wa_spiele-toreheimteam.
wa_bl_tab-punkte = 0.
ENDIF.
ENDLOOP.
COLLECT wa_bl_tab INTO it_bl_tab.
** loop at it_bl_tab into wa_bl_tab.
WRITE: / wa_bl_tab-verein,
wa_bl_tab-toregeschossen,
wa_bl_tab-torebekommen,
wa_bl_tab-punkte.
** endloop.
ENDLOOP.Das COLLECT gehört jeweils vor das ENDLOOP (AT SPIELE). Dann passt das schon. Und der loop über IT_BL_TAB gehört hinter den loop über IT_VEREINE.kami123 hat geschrieben:so ich habe nun das problem dass ich doppelte datensätze bekomme, weil ich eben 2x loope (heim & auswaetsteam)
wenn ich eine per write ausgebe dann werden die spiele überschreiben.Code: Alles auswählen.
REPORT zbliga1. DATA: wa_bl_tab LIKE zbligatabstr, it_bl_tab TYPE TABLE OF zbligatabstr, wa_spiele LIKE zspiel, it_spiele TYPE TABLE OF zspiel, wa_vereine LIKE zbligaverein, it_vereine TYPE TABLE OF zbligaverein, verein TYPE zbligaverein-vereinskuerzel. PARAMETERS: pa_stag TYPE zspiel-spieltagnr. START-OF-SELECTION. SELECT * FROM zspiel INTO TABLE it_spiele WHERE spieltagnr <= pa_stag. SELECT * FROM zbligaverein INTO TABLE it_vereine. LOOP AT it_vereine INTO wa_vereine. verein = wa_vereine-vereinskuerzel. LOOP AT it_spiele INTO wa_spiele WHERE heimteam = verein. IF wa_spiele-toreheimteam = wa_spiele-toreauswteam. wa_bl_tab-verein = verein. wa_bl_tab-toregeschossen = wa_spiele-toreheimteam. wa_bl_tab-torebekommen = wa_spiele-toreauswteam. wa_bl_tab-punkte = 1. ELSEIF wa_spiele-toreheimteam < wa_spiele-toreauswteam. wa_bl_tab-verein = verein. wa_bl_tab-toregeschossen = wa_spiele-toreheimteam. wa_bl_tab-torebekommen = wa_spiele-toreauswteam. wa_bl_tab-punkte = 0. ELSE. wa_bl_tab-verein = verein. wa_bl_tab-toregeschossen = wa_spiele-toreheimteam. wa_bl_tab-torebekommen = wa_spiele-toreauswteam. wa_bl_tab-punkte = 3. ENDIF. ENDLOOP. LOOP AT it_spiele INTO wa_spiele WHERE auswaertsteam = verein. IF wa_spiele-toreheimteam = wa_spiele-toreauswteam. wa_bl_tab-verein = verein. wa_bl_tab-toregeschossen = wa_spiele-toreauswteam. wa_bl_tab-torebekommen = wa_spiele-toreheimteam. wa_bl_tab-punkte = 1. ELSEIF wa_spiele-toreheimteam < wa_spiele-toreauswteam. wa_bl_tab-verein = verein. wa_bl_tab-toregeschossen = wa_spiele-toreauswteam. wa_bl_tab-torebekommen = wa_spiele-toreheimteam. wa_bl_tab-punkte = 3. ELSE. wa_bl_tab-verein = verein. wa_bl_tab-toregeschossen = wa_spiele-toreauswteam. wa_bl_tab-torebekommen = wa_spiele-toreheimteam. wa_bl_tab-punkte = 0. ENDIF. ENDLOOP. COLLECT wa_bl_tab INTO it_bl_tab. ** loop at it_bl_tab into wa_bl_tab. WRITE: / wa_bl_tab-verein, wa_bl_tab-toregeschossen, wa_bl_tab-torebekommen, wa_bl_tab-punkte. ** endloop. ENDLOOP.
ich müsste die tabelle dann nach punkten sortieren das geht mit dem sort befehl. ich kriegs aber nicht hin die internetabelle ohne die reduntaten daten auszugeben. in meine tabellenstruktur hab ich noch das attribut position , wo der tabellenrang ausgegeben wird ich denke mal da müsste ich einfach durch die sortierte tabelle aufzählend reinloopen.
gruß
kami