GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Getting started ... Alles für einen gelungenen Start.
21 Beiträge • Seite 1 von 2 (current) Nächste
21 Beiträge Seite 1 von 2 (current) Nächste

GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von Gokar (ForumUser / 23 / 19 / 3 ) »
Hallo zusammen,

Was möchte ich machen:
Mit Hilfe von "GET PERNR" werden Stammdaten auslesen.
Der Funktionsbaustein 'SAPGUI_PROGRESS_INDICATOR' soll dem Anwender den Fortschritt anzeigen.


Mein Problem:
Um den Fortschritt in Prozent anzuzeigen brauche ich das Maximum / die 100% des Vorgangs. Kurz: die Anzahl der von GET PERNR ermittelten Personalnummern. Wie kann ich an diese gelangen?


Vielen Dank und ein schönes Wochenende,
Gokar

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


Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin,
Du könnntest :
A)
die Anzahl der Einträge der Tabelle PA0001 ermitteln.

Code: Alles auswählen.

select count(*) from Pa0001.

Das Ergebnis steht in sy-dbcnt.
B)
mit
i = lines( itab)
die Anzahl der Tabellenzeilen deines Ergenisses ermitteln.

gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von Gokar (ForumUser / 23 / 19 / 3 ) »
Hallo,

Danke für die Antwort.

A)
Steht im Sy-dbcnt dann nicht die Anzahl aller Mitarbeiter? Also ungeachtet der PNP-Selektionskriterien auf dem Startbildschirm, meine ich.

B)
Ich weiß leider nicht, in welcher iTab die Einträge stehen.

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin,
hier ein Beispiel mit SFLIGHT.

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.
die 'Select-options' kannst Du mit der F1 Hilfe ermitteln.

gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von ChrisB (Specialist / 406 / 8 / 20 ) »
Hallo Gokar,

das wird nicht so ganz einfach funktionieren. Die logische Datenbank PNP ist ja gerade deshalb im Personal so häufig eingesetzt, da sie eine Vielzahl von verschiedenen Themen kombiniert... u. a. die Ermittlung der Personen, die die Selektionskriterien erfüllen... aber eben auch unter Berücksichtigung der jeweiligen Berechtigungen!

Wenn Du so ein Anzeige wirklich unbedingt benötigst, dann sehe ich da im Moment fast nur den Ansatzpunkt, dass Du im Bereich GET PERNR nur eine interne Tabelle füllst mit den ermittelten Personen und dann den Rest des Codings im Bereich END-OF-SELECTION unterbringst. Zu dem Zeitpunkt kannst Du dann die Anzahl der Zeilen in Deiner internen Tabelle (vom Zeipunkt GET PERNR) ermitteln. Empfehlen kann ich das aber eigentlich nicht! Oder ist das Programm so ein Langläufer, dass der Anwender unbedingt darüber informiert sein muss, wie lange er noch zu warten hat? Die SAP macht das bspw. beim Lohnarten-Reporter auch nicht - und der kann auch ziemlich viel Zeit in Anspruch nehmen.

Ganz grundsätzlich könntest Du zwar auch den Funktionsbaustein HR_SELECT_PERSONS verwenden... aber a) macht der nicht 100%ig exakt das gleiche wie die PNP und b) müsstest Du zuerst alle Selektion-Optionen an die Schnittstelle des Funktionsbausteins anpassen...

Grüße
Chris

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von miru77 (ForumUser / 68 / 10 / 7 ) »
Hallo Gokar,

so eine Funktion wünsche ich mir auch schon lange, habe aber noch keine sinnvolle Möglichkeit gefunden. Daher belasse ich es immer bei Anzeige der Personalnummer. Daran kann man ja ungefähr abschätzen wie lange es noch dauert.

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
Gruß
Michael

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
In dem DB-Programm SAPDBPCH zur Log. DB PCH gibt es eine Routine "CALC_PROGRESS".
Wenn man sich den Verwendungsnachweise anschaut, sieht man wo "irgendwie" die Anzahl der Personalnummern ermittelt werden.
Vielleicht hilft es ja?

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
ChrisB


Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von ChrisB (Specialist / 406 / 8 / 20 ) »
Die Idee mit der Routine "CALC_PROGRESS" ist ja ganz nett... ich vermute aber mal, dass es bei GET PERNR um die logische Datenbank PNP geht.

Aber die Idee war nicht schlecht... ich hab mir die logische Datenbank PNP mal etwas angeschaut und dort in der FORM "pybuild_result_tabs" sogar im Standard einen Aufruf vom Fuba "SAPGUI_PROGRESS_INDICATOR" gefunden. Nach einiger Suche bin ich momentan an dem Punkt, dass es sich lohnen könnte mal etwas mit einem Dirty Assign auf die interne Tabelle "(SAPDBPNP)pernr_tab[]" zu experimentieren.

Soweit ich das bei meinem ersten Grobtest festgestellt habe, ist diese Tabelle beim ersten Aufruf von GET PERNR zumindest schon mal gefüllt... allerdings sieht es so aus, als ob die Tabelle immer nur Paketweise in 100er Schritten gefüllt wird. Man hat also auch nur einen groben Anhaltspunkt über die Anzahl der Personen...

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von miru77 (ForumUser / 68 / 10 / 7 ) »
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. :)

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.
Bild

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
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. :)
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.

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von miru77 (ForumUser / 68 / 10 / 7 ) »
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.
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).

Edit: Ach ja, und die Berechtigungsprüfung fehlt natürlich... es dürfen ja nur die Mitarbeiter gezählt werden, für die der Sachbearbeiter auch die Berechtigung hat, da auch nur diese vom GET PERNR selektiert werden.
Zuletzt geändert von miru77 am 05.11.2012 10:47, insgesamt 1-mal geändert.

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
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.

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von miru77 (ForumUser / 68 / 10 / 7 ) »
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.
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.

Zudem frage ich mich, wie man eine "grobe" Anzeige hinbekommen soll? Lasse ich z.B. den Beschäftigungsstatus aus der PA0000 weg und suche nur in der PA0001 nach den Mitarbeitern, habe ich auch alle Austritte der letzten Jahre mitgezählt. Und das sind bei uns ungefähr 3-4 mal soviele wie es überhaupt aktive Mitarbeiter gibt. Der Report wäre also fertig, wenn der Status noch um die 25% hat - dann kann man es auch gleich lassen.

Gruß
Michael

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Und dann sitzt Ihr 30 Minuten vor dem Bildschirm und schaut Euch die Prozente an?

Glaubst Du nicht, dass es in anderen Modulen, ausser HR, nicht auch Programme gibt die lange laufen?

Wenn ich weiss, dass ein Report lange laeuft, dann lasse ich den im Hintergrund laufen.

Und in diesem Fall wuerde ich keine Prozente anzeigen, sondern wie auch bereits erwaehnt, die jeweilige aktuelle Personalnummer.

Dann kann man auch grob Ueberschlagen, wo das Program ungefaehr ist und wie lange es evtl. noch dauert.

Was bringt einem die Anzeige 30% in der Statuszeile? oder eine Minute spaeter 32%? Haben die Leute nichts anderes zu tun?

Ausserdem verlangsamt die Anzeige das Program, gerade bei Langelaeufer erheblich. Geschaetzte 30% oder mehr...

Re: GET pernr - Anzahl d. Mitarbeiter / Personalnummern

Beitrag von miru77 (ForumUser / 68 / 10 / 7 ) »
Unit605 hat geschrieben:Und dann sitzt Ihr 30 Minuten vor dem Bildschirm und schaut Euch die Prozente an?
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.
Was bringt einem die Anzeige 30% in der Statuszeile? oder eine Minute spaeter 32%?
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.

Klar ist das alles "Spielerei", aber schön wäre es schon. ;)

Vergleichbare Themen

2
Antw.
3076
Views
Personalnummern sperren
von Florian9999 » 16.06.2020 16:33 • Verfasst in Human Resources
5
Antw.
6091
Views
Untergerordnete Personalnummern zu einer Personalnummer
von Lazi » 23.04.2007 11:02 • Verfasst in Human Resources
0
Antw.
1184
Views
PRRQ: Reiseantrag anlegen für andere Personalnummern
von winter06 » 21.09.2007 12:55 • Verfasst in Financials
2
Antw.
1525
Views
8
Antw.
9193
Views
GET PERNR
von datatom » 02.06.2010 10:51 • Verfasst in Human Resources

Aktuelle Forenbeiträge

Zeilenumbrüche ersetzen
vor 43 Minuten von rob_abc 2 / 10
Dialog-Container mit Toolbar/Status
vor 19 Stunden von tar gelöst 19 / 2084
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1444

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

Zeilenumbrüche ersetzen
vor 43 Minuten von rob_abc 2 / 10
Dialog-Container mit Toolbar/Status
vor 19 Stunden von tar gelöst 19 / 2084
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1444

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 504
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2143
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8738