Code: Alles auswählen.
cl_progress_indicator=>progress_indicate(
EXPORTING
i_text = | { lv_text } { lv_check } ( { sy-index } / { counter } ) |
i_processed = sy-index
i_total = counter
i_output_immediately = abap_true
).
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
JohnLocklay
Code: Alles auswählen.
READ TABLE lt_bla ASSIGNING <ls_bla> INDEX 1.
* SY-SUBRC wurde von READ TABLE gesetzt.
CALL METHOD lcl_class=>do_something.
* SY-SUBRC könnte, muss aber nicht, innerhalb der Methode verändert worden sein.
IF sy-subrc EQ 0. "Ich will jetzt wissen ob der READ TABLE gutgegangen ist.
* Das Ergebnis der IF-Abfrage ist nicht mehr eindeutig dem READ TABLE zuordenbar.
ENDIF.Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
JohnLocklay
Du hast recht. Mein Beispiel im Coding war nicht sprechend genug.DeathAndPain hat geschrieben:Diese Klasse benutzt unter der Haube ja den Funktionsbaustein SAPGUI_PROGRESS_INDICATOR. Und der zeigt nur eine Eieruhr an, wenn der Zähler nicht Null ist.
Eigentlich sollte man bei Deinem Beispiel annehmen, dass dies nicht der Fall ist. Aber da Du (wie leider so viele Fragesteller) nur ein Fragment Deines Codes gepostet hast, aus dem nicht hervorgeht, woher Deine Variablen ihre Werte beziehen, kann ich Dir da auch keinen Tipp geben.
Ich würde mal blind darauf tippen dass das SY-INDEX Schuld hat.
Da der Parameter "i_processed" als "per Referenz" definiert ist, führt jede Änderung von SY-INDEX in der Methode PROGRESS_INDICATE dazu, dass auch der Wert von "i_processed" mitgeändert wird.
Generell ist es nie gut, SY-Variablen im Coding "zu weit weg" vom Befehl der die Variablen setzt, zu verwenden.
Code: Alles auswählen.
lv_index = sy-indexMöglich, dass direkt beim CALL METHOD oder irgendwo in der Methode PROGRESS_INDICATE, die Systemvariable auf 0 gesetzt wird. Das müsstest du debuggen um sicher zu gehen (ich hab jetzt leider nicht die Zeit dafür).JohnLocklay hat geschrieben:kann mir nur leider nicht erklären wo das System da den Unterschied macht. Weil es ne Systemvariable ist?
Das würde natürlich auch funktionieren, weil ich aber nicht weiß, ob JohnLocklay schon die 7.40er Sytax hat, hab ich es vorerst nicht vorgeschlagen.DeathAndPain hat geschrieben:Ich kenne das Phänomen. Aber das Definieren einer lokalen Hilfsvariable nur für diesen Zweck liest sich natürlich hässlich. Was würde passieren, wenn man der Methode an dieser Stelle einfach CONV i( sy-index ) übergibt? Dadurch, dass es dann ein (trivialer) Rechenausdruck ist, kann er dann doch eigentlich keine Referenz mehr übergeben, oder?
Nein - und unter 7.01 geht das auch noch nicht. Ich glaube das kam erst mit 7.02DeathAndPain hat geschrieben:Was ist mit einem anderen Rechenausdruck? War es unter 7.00 (älter wird er hoffentlich nicht sein) schon erlaubt, Methoden Rechenausdrücke als Parameter zu übergeben? Dann könnte man auch ohne 7.40-Syntax einfach sy-index + 0 schreiben mit dem gleichen Effekt.
Das musst Du gerissen anstellen. Wann immer er irgendwas von Dir will, musst Du betonen, dass in eurem alten Release der Aufwand für eine Umsetzung sehr hoch ist, nach einem Upgrade aber alles viel einfacher umsetzbar und von der SAP besser unterstützt wäre.JohnLocklay hat geschrieben:wenn Du es schaffst das mein Chef die Syntaxversion bei uns mal hochschraubt geb ich Dir nen Bier aus oO