LiLSista1988 Geschrieben 4. Dezember 2007 Geschrieben 4. Dezember 2007 Hallo, ich habe ein Problem. Ich soll in der Statusleiste während das Programm läuft ausgeben wieviele Sätze verarbeitet wurden (aber nur alle 1000) damit ich nicht in einen Laufzeitfehler rassele da es sich hier um eine unglaubliche Datenmasse handelt. Hat da jemand eine schnelle Idee oder gibt es dafür einen Baustein? Zitieren
CroQuet Geschrieben 4. Dezember 2007 Geschrieben 4. Dezember 2007 DATA: v_string TYPE string. DO 100 TIMES. v_string = sy-index. CONCATENATE v_string ' records selected ' INTO v_string SEPARATED BY space. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = sy-index text = v_string. ENDDO. 'SAPGUI_PROGRESS_INDICATOR' malt dir unten ne uhr hin, die dann auch anzeigt wie weit er ist wenn du also weißt wie viele datensätze du hast (z.b. per describe TABLE lines VARIABLE_LINES) dann kannst du den genauen status anzeigen lassen... oder aber du machst: if zähler = zähler2. MESSAGE 'text' TYPE 'S'. add 1000 to zähler2. endif. der zähler ist in dem fall deiner counter der tabelle... in nem loop sy-index z.b. Zitieren
LiLSista1988 Geschrieben 4. Dezember 2007 Autor Geschrieben 4. Dezember 2007 An welche Stelle im Coding muss ich das denn einbauen? Vor allem kommt bei mir in der Verarbeitung gar keine Uhr?! Zitieren
CroQuet Geschrieben 4. Dezember 2007 Geschrieben 4. Dezember 2007 An welche Stelle im Coding muss ich das denn einbauen? am besten da wo es sinn macht, also nicht NACH einem loop sondern darin Vor allem kommt bei mir in der Verarbeitung gar keine Uhr?! Haste die Änderungen denn schon eingebaut? Zitieren
LiLSista1988 Geschrieben 4. Dezember 2007 Autor Geschrieben 4. Dezember 2007 So ist jetzt drin nur das 100 Time Iritiert mich. So wie cih das verstanden habe macht er das 100 mal. Was ist aber wenn ich mehr oder weniger Datensätze habe. Ja er tut es, jetzt ist auch alles eingebaut. Hat auf jedenfall schonmal den gewünschten effekt. Nur halt soll da genau ausgegeben werden wieviele Datensätze das jetzt sind und am besten nur jeder 100 oder tausendste also 100 ds 200 ds 300 ds usw hochzählt bis zur tatsächlichen ds anzahl Zitieren
CroQuet Geschrieben 4. Dezember 2007 Geschrieben 4. Dezember 2007 du brauchst dieses DO nicht drumherum, das ist doch nur ein beispiel bau dir selber eine zählervariable ein, die machst du am anfang auf 1000 und wenn dein sy-index bei 1000 ist schreibst du ne meldung und setzt deine zählervariable dann +1000 (also beim 2. mal 2000, beim 3. mal sinds dann schon 300,...) Zitieren
LiLSista1988 Geschrieben 5. Dezember 2007 Autor Geschrieben 5. Dezember 2007 Ich bin dafür heute irgendwie eindeutig zu doof. Also Hier mein Coding DO 100 TIMES. H_count = sy-index. CONCATENATE h_count ' Datensätze selektiert ' INTO h_count SEPARATED BY space. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = sy-index text = h_count. ENDDO. Ich weiß ganz toll hier raus kopiert. So in der Statusleiste zählt er jetzt hoch nur ich kapier das nicht wie ich das hinkriege das er nur alle 1000 angibt. Vor allem darf diese Anzeige nicht die Programmverarbeitung beeinträchtigen. Also : Im Hg arbeite er dann an dem Programm 1000 Ds verarbeitet 2000 DS Verar 3000 DS Verar 4000 DS verar dann kommen die Selektiereten Daten auch wenn es 4256 DS sind. Haste da nicht nen paar Goldkörnchen die auch ich verstehe? Zitieren
CroQuet Geschrieben 5. Dezember 2007 Geschrieben 5. Dezember 2007 wie verarbeitest du denn DEINE Daten? In einem Loop oder Do oder Select - oder gar nichts von dem? wenn doch... mach folgendes: - erstell eine neue variable, die zum anfang auf 1000 steht. - schreib folgendes ins coding: if sy-index = DEINE_NEUE_VARIABLE. data: lv_string type string. lv_string = sy-index. MESSAGE lv_string TYPE 'S'. add 1000 to DEINE_NEUE_VARIABLE. "er soll es erst beim nächsten tausender nochmal machen endif.[/PHP] und dann sollte das gehen... Zitieren
LiLSista1988 Geschrieben 5. Dezember 2007 Autor Geschrieben 5. Dezember 2007 Die Daten werden in einem Start-Of--selection sprich in einem Loop verarbeitet. Sie werden durch verschiedenen Tabellen udn Hilfsfelder hin und her geschoben bis alles passt und dann ausgegeben. Falls nötig schicke ich dir das verarbeitungs coding gerne per pn. Weil irgendwie komme ich auf diese art wie die hier proggen gar nciht klar. Ich habe das Programm auch nicht geschrieben, ich soll es nur um die Statusleisten ausgabe erweitern. Die status ausgabe habe ich direkt an den Anfang geschrieben. Zitieren
CroQuet Geschrieben 5. Dezember 2007 Geschrieben 5. Dezember 2007 Die status ausgabe habe ich direkt an den Anfang geschrieben. Anfang vom Loop ist doch ok, es muss nur irgendwo IM Loop stehen Zitieren
LiLSista1988 Geschrieben 5. Dezember 2007 Autor Geschrieben 5. Dezember 2007 Hast ne PN ausnahmsweise mal Zitieren
LiLSista1988 Geschrieben 7. Dezember 2007 Autor Geschrieben 7. Dezember 2007 So hab eine Lösung. Gebe das nun allerdings in Prozent aus. Trotzdem danke für deine Hilfe. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.