Logical DB (GET)

Build with transaction SLDB.

Alternatively see also Context (SUPPLY / DEMAND, SE33)

In HCM there are only two: PNP, PNPCE (+? PCH, PAP).

Berechtigungsprüfung PNPCE#

Normalerweise wird die Berechtigung des Ausführenden nur zum aktuellen Datum geprüft. Wenn man aber für alte Datensätze noch die Berechtigung hatte, kann man eine "zeitraumgenaue" Überprüfung in der INITIALIZATION anschalten.
    pnp_sw_skip_pernr = 'N'.

Ablaufsteuerung / Performance#

V_T599R_BAblaufsteuerung für log. DB vorgeben, siehe Doku

Selektionsbild (PA-PAD)#

Da die benötigten Selektionskriterien von dem jeweiligen Report abhängig sind, muß der Entwickler den Umfang des Selektionsbildes festlegen. Dies wird durch die Zuordnung des Reports zu einer Reportklasse erreicht. In der Reportklasse werden die erwünschten Selektionskriterien definiert und festgelegt, welche Funktionstasten (Matchcode, Sortieren, ...) verfügbar sein sollen. Die Zuordnung eines Reports zu einer Reportklasse erfolgt in der Tabelle T599B oder T599W. Die Einträge der Tabelle T599B werden vom Kunden gepflegt, während die Tabelle T599W die SAP-eigenen Zuordnungen enthält. Ist ein Report keiner Reportklasse zugeordnet, so gelten die Einstellungen der Kundendefaultklasse (Tabelle T599C) oder der SAP-Default-Reportklasse (Tabelle T599F). Alle SAP-eigenen Reports des HR werden in Zukunft bereits von der SAP definierten Reportklassen zugeordnet sein. Für die Benennnung der SAP-eigenen Reportklassen gelten Namenskonventionen.

Skipped Pernr#

If you get a message in the list viewer like
Personalnummern wurden vom Datenbanktreiber ueberlesen.
Grund1: mangelnde Berechtigung;
Anzahl geskippte Personalnummern: x
then it is generated from the logical database PNP (only).
With PNPCE nothing is written.

So, how to get to know which ones where skipped?
If you can modify your report or the one from SAP you can call the macro PNP_GET_AUTH_SKIPPED_PERNRS at END-OF-SELECTION.

I still have not found out, where this one is defined, but you can look into the logical database's report with x.SE36 > Databaseprogram.

i.DBPNPF01FORM mac_get_auth_skipped_pernrs you can see that itab G_AUTH_SKIPPED_PERNRS is used to collect those.
i.DBPNPI01FORM end-processing (row 307) you can see the message handling.
i.DBPNPCECOMMain macros fro PNP and PNP
i.DBPNPMACAdditional macros for PNP
r.SAPDBPNPCEsee docu for additional infos!

So you can set a breakpoint here and look by your own in G_AUTH_SKIPPED_PERNRS for the skipped pernr when you run the report of choice in dialog mode.

"Internal table to hold skipped pernrs into internal table
DATA: lt_skipped_pernrs TYPE hrahq_pernr_table,
      ls_skipped_pernrs LIKE LINE OF lt_skipped_pernrs.

START-OF-SELECTION.
GET pernr.
   gv_pernr = pernr-pernr.
(or
 GET peras.
   gv_pernr = peras-pernr.
)
END-OF-SELECTION.
  "Macro PNP_GET_AUTH_SKIPPED_PERNRS (for PNP+PNPCE)
  pnp_get_auth_skipped_pernrs lt_skipped_pernrs.
  
  " or one of these:
  "  PNPCE: perform mac_get_auth_skipped_pernrs in program sapdbpnpce changing lt_skipped_pernrs.
  "  PNP:   perform mac_get_auth_skipped_pernrs in program sapdbpnp changing lt_skipped_pernrs.

  IF lt_skipped_pernrs IS NOT INITIAL.
    WRITE:/ 'List of skipped personnel no:'.
    LOOP AT lt_skipped_pernrs INTO ls_skipped_pernrs.
      WRITE:/3 ls_skipped_pernrs-pernr.
    ENDLOOP.
  ENDIF.

Avoiding authorization messages in list viewer#

With following two ways you can set variable SW_SUPPRESS_WRITE in the PNP main report:
1. perform pnp_skipped_pernr(sapdbpnp) ...
2. f.HR_GET_ERRORTAB_FROM_PNP_INFO  (<= this sets it automatically)

Time Selection#

With PNPCE you can choose various time periods (see domain PCCE_PERIOD for values).
The type is saved in the PNPCE variable PNPTIMED. You should check this one if necessary and NOT rely on the PNPTIMR1-6 fields.
To get the resulting BEGDA and ENDDA you should use the structure PN, e.g.

PN-BEGPS and PN-ENDPSPerson period (phase 1, e.g. all person matching the criterias in this period)
PN-BEGDA and PN-ENDDAData period (phase 2, all data within that period for all persons from phase 1)
Note1: BEGPS/ENDPS = BEGDA/ENDDA if not split in selection (then there is one "time period")
Note2: there are other fields called PNPBEGDA and PNPENDDA which are NOT filled if you choose "Today"!