Code: Alles auswählen.
select count(*) from Pa0001.
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report ZTEST1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST1.
*Der folgende Report ist mit der logischen Datenbank F1S verknüpft
*http://help.sap.com/saphelp_46c/helpdata/de/9f/db9aa335c111d1829f0000e829fbfe/content.htm
data i type i.
NODES: sflight.
START-OF-SELECTION.
select count(*) from sflight into i where carrid in carrid.
WRITE: 'Test Program for GET',i.
GET sflight.
SKIP.
WRITE: / 'Carrid:', sflight-carrid,
'Connid:', sflight-connid.
ULINE.
Code: Alles auswählen.
GET PERNR.
PERFORM INDI USING 'z.Zt. wird die PNr.$ bearbeitet.' PERNR-PERNR.
form indi using $ausgabe $per.
data: ausg(256).
if indik eq 'X'.
ausg = $ausgabe.
replace '$' with $per into ausg.
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
text = ausg.
endif.
endform. "indi
Code: Alles auswählen.
REPORT ZP_TEST.
TABLES: PERNR.
DATA: BEGIN OF ANZAHL OCCURS 9999,
NUM(5),
PERNR LIKE P0001-PERNR,
PROZENT(3).
DATA: END OF ANZAHL.
DATA: NUM(5).
START-OF-SELECTION.
GET PERNR.
NUM = NUM + 1.
ANZAHL-PERNR = PERNR-PERNR.
ANZAHL-NUM = NUM.
APPEND ANZAHL.
END-OF-SELECTION.
LOOP AT ANZAHL.
ANZAHL-PROZENT = ANZAHL-NUM / NUM * 100.
MODIFY ANZAHL.
ENDLOOP.
EXPORT ANZAHL TO MEMORY ID 'ANZAHL'.
SUBMIT ZP_TEST2
WITH PNPABKRS IN PNPABKRS
WITH PNPANSVH IN PNPANSVH
WITH PNPBTRTL IN PNPBTRTL
WITH PNPBUKRS IN PNPBUKRS
WITH PNPGSBER IN PNPGSBER
WITH PNPJUPER IN PNPJUPER
WITH PNPKOKRS IN PNPKOKRS
WITH PNPKOKTL IN PNPKOKTL
WITH PNPKOSTL IN PNPKOSTL
WITH PNPMASNG IN PNPMASNG
WITH PNPMASSG IN PNPMASSG
WITH PNPMASSN IN PNPMASSN
WITH PNPMSTBR IN PNPMSTBR
WITH PNPORGEH IN PNPORGEH
WITH PNPOTYPE IN PNPOTYPE
WITH PNPPERNR IN PNPPERNR
WITH PNPPERSG IN PNPPERSG
WITH PNPPERSK IN PNPPERSK
WITH PNPPLANS IN PNPPLANS
WITH PNPSACHA IN PNPSACHA
WITH PNPSACHP IN PNPSACHP
WITH PNPSACHZ IN PNPSACHZ
WITH PNPSASBA IN PNPSASBA
WITH PNPSASBP IN PNPSASBP
WITH PNPSASBZ IN PNPSASBZ
WITH PNPSBMOD IN PNPSBMOD
WITH PNPSTAT1 IN PNPSTAT1
WITH PNPSTAT2 IN PNPSTAT2
WITH PNPSTAT3 IN PNPSTAT3
WITH PNPSTATU IN PNPSTATU
WITH PNPSTELL IN PNPSTELL
WITH PNPVDSK1 IN PNPVDSK1
WITH PNPWERKS IN PNPWERKS
WITH PNPXBWBK IN PNPXBWBK
WITH PNPXPGPK IN PNPXPGPK
WITH PNPTIMR1 INCL PNPTIMR1
WITH PNPBEGDA INCL PN-BEGDA
WITH PNPENDDA INCL PN-ENDDA
WITH PNPBEGPS INCL PN-BEGPS
WITH PNPENDPS INCL PN-ENDPS.
Code: Alles auswählen.
REPORT ZP_TEST2.
TABLES: PERNR.
DATA: BEGIN OF ANZAHL OCCURS 9999,
NUM(5),
PERNR LIKE P0001-PERNR,
PROZENT(3).
DATA: END OF ANZAHL.
DATA: BEGIN OF LISTE OCCURS 9999,
PERNR LIKE P0001-PERNR,
ENAME LIKE P0001-ENAME.
DATA: END OF LISTE.
DATA: STATUS(50).
INITIALIZATION.
IMPORT ANZAHL FROM MEMORY ID 'ANZAHL'.
START-OF-SELECTION.
GET PERNR.
LISTE-PERNR = PERNR-PERNR.
LISTE-ENAME = PERNR-ENAME.
APPEND LISTE.
LOOP AT ANZAHL WHERE PERNR EQ PERNR-PERNR.
STATUS = 'Bearbeitungsstatus:'.
STATUS+20 = ANZAHL-PROZENT.
STATUS+23 = '%'.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT = STATUS.
ENDLOOP.
END-OF-SELECTION.
LOOP AT LISTE.
WRITE:/ LISTE-PERNR, LISTE-ENAME.
ENDLOOP.
Den ganzen Aufwand mit "Vorreport" ist doch mit:miru77 hat geschrieben:Da es noch nicht genannt wurde... es gäbe natürlich die Möglichkeit einen "Vorreport" zu schreiben, der die Mitarbeiterliste in eine interne Tabelle stellt und dann den eigentlichen Report per Submit aufruft. Die Liste der Mitarbeiter könnte man dann per Memory ID an den zweiten Report weitergeben und dort den Prozentsatz ausgeben. Hab das gerade mal getestet und es klappt.
Ich glaub ganz so einfach geht das nicht, zumindest reicht die PA0001 nicht alleine aus. Vor allem das wichtigste - der Beschäftigungsstatus - steht nicht drin (der kommt aus der PA0000).Unit605 hat geschrieben:Den ganzen Aufwand mit "Vorreport" ist doch mit:
Select count(*) from PA0001 where "Select-option" (wie von Tron bereits vorgeschlagen)
erledigt.
Ohne Submit... Memory... etc.
Also sinnvoll finde ich das schon ungefähr abschätzen zu können wie lange es noch dauert, dann kann man z.B. in der Zwischenzeit andere Dinge erledigen. Gerade im Personalbereich haben wir hier Reporte, die teilweise 30 Minuten lang laufen.Unit605 hat geschrieben:Mir entgeht noch der ganze Sinn fuer das Anzeigen des Fortschrittes in der Statusleiste.
Und der muss auch nicht 100% korrekt sein. Eine grobe Anzeige ist voellig ausreichend.
Das nicht, aber man muss nicht mehr alle paar Minuten auf das Fenster mit dem Report klicken um zu sehen ob es schon fertig ist, wenn man sieht das er noch bei 20% hängt und es nicht wirklich voran geht.Unit605 hat geschrieben:Und dann sitzt Ihr 30 Minuten vor dem Bildschirm und schaut Euch die Prozente an?
Man könnte ja auch noch eine Zeitangabe einbauen, also die bisher verbrauchte Zeit pro Personalnummer auf die noch verbleibenen hochrechnen und jeweils die aktuelle Restzeit anzeigen.Was bringt einem die Anzeige 30% in der Statuszeile? oder eine Minute spaeter 32%?