AbapGit
A source-verified project description is not available yet. Open the detail page or wait for a manual refresh.
Source facts need a manual refresh
SAP HR Data Model Explorer: Collects a list of data relevant to the selected object type: infotypes, payroll clusters, tables. It can be considered as an alternative to PA20, PC00_M02_LINF0 and PC_PAYRESULT transactions.
SAP HR Data Model Explorer: Collects a list of data relevant to the selected object type: infotypes, payroll clusters, tables. It can be considered as an alternative to PA20, PC00_M02_LINF0 and PC_PAYRESULT transactions.
One transaction that shows every piece of HR data attached to a person or an org object. Infotypes, payroll clusters, quota deductions and the check tables behind them appear in a single tree; double-clicking any field jumps to the object it points at. One ABAP report, no database objects of its own, no customizing.
It replaces a chain of PA20 / PA30 / PP01 / PC_PAYRESULT / SE16 round-trips with one screen. Built on the engine of Simple Data Explorer; this repository adds the HR-specific collectors and the navigation plugins.
Version: beta 0.1.10.10 · RU write-up on the author's blog
Given an object type and an object ID, the report scans the infotype directory (T777D) and reads
every infotype table that actually has records for that object in the selected validity period. The
result is a tree of "what data exists for this person/object", with record counts, instead of a
guess-and-check tour of transactions.
| Reads | PA infotypes (PA*), PD infotypes (HRP*), payroll directory and WPBP, quota deductions, assignment tables |
| Shows | SALV tree of populated tables → ALV viewer per table → RTTI tree for cluster structures |
| Navigates | Foreign keys, data-element plugins, infotype subtype tables, related PD objects, payroll results |
| Writes | Nothing. The report is read-only |
VALUE/NEW/COND,
string templates and inline @DATA in Open SQL.CL_GUI_* controls in dialog-box containers with
drag & drop; it will not run in Web GUI or as a Fiori tile.CL_HRPIQ00CONST is used for the active plan variant default, and
payroll cluster display needs PYXX_READ_PAYROLL_RESULT plus the country-specific
PAY<ISO>_RESULT structure.https://github.com/ysichov/HR_DME into a Z package.ZHR_DME — no DDIC
objects, no table entries, nothing to customize.ZHR_DME.| Field | Meaning |
|---|---|
P_PLVAR | Plan variant. Defaults to the active one (CL_HRPIQ00CONST=>C_PLVAR_ACTIVE) |
P_OTYPE | Object type — P for person, O/S/C/… for PD objects. F4 from H_T778O, SPA/GPA POT |
P_OBJID | Object ID. F4 calls RH_OBJID_REQUEST for the object type entered above, SPA/GPA PON |
P_BEGDA / P_ENDDA | Validity interval. Defaults to 1800.01.01 – 9999.12.31, i.e. everything |
Press Enter, not F8. ONLI is excluded from the selection-screen status on purpose: the tree
opens from AT SELECTION-SCREEN, so the selection screen stays behind it and you can go straight to
the next object without leaving the report.
The window caption is built from PA0002 — first name, last name, middle name, and the
OTYPE/OBJID you entered. Each leaf is labelled (infotype) infotype text (record count), with
texts taken from T582S for persons and T777T for PD objects.
For object type P the tree has three folders:
| Folder | Contents |
|---|---|
| Infotypes | Every PA* table from T777D with records for this PERNR in the period |
| Salary data | HRPY_RGDIR (payroll directory), HRPY_WPBP |
| Others | PTQUODED (quota deduction), ASSHR, ASSOB, ASSOB_HR |
For any other object type the tree has one folder, Infotypes, holding every HRP* table from
T777D with records for PLVAR/OTYPE/OBJID in the period.
Double-clicking a node opens the table in a viewer window with PERNR (or OBJID) already applied
as a filter.
Every table opens in its own resizable dialog box titled TABNAME - DDIC description. The ALV has a
compact toolbar of its own:
| Button | Effect |
|---|---|
| ◄ Select-Options | Opens the filter panel: one row per field, sign/option icons, F4 help, context menu, multiple ranges |
| Tech names | Switches column headers between DDIC texts and technical field names |
| Language buttons | Re-reads the column headers in another installed language (first 10 languages of the system) |
| Show empty columns | Hides columns that are initial in every selected row, or brings them all back |
| ►/◄ Toolbar | Appends the standard ALV toolbar (layouts, export, sums, print) to the compact one |
Text tables are joined automatically where DDIC declares one, so key fields show their description next to the code.
Double-clicking a cell is the main navigation gesture. The plugin layer resolves the click in
this order: field-to-field links → field-to-plugin links → data-element links → HRP1001-ADATANR →
DDIC foreign key. The first rule that matches wins.
Data-element links (LCL_PLUGINS=>MT_EL_LINKS):
| Data element | Action |
|---|---|
PERSNO | Calls PA20 in display mode, positioned on the infotype/subtype/validity of the clicked row |
HROBJID | Calls PP02 via BDC, positioned on the infotype of the clicked row |
LGART | Opens T512W (wage type valuation) filtered to that wage type |
SUBTY | Opens the subtype text table for this infotype (T777D-STYPT/NAMST) |
ITXEX | Reserved for the long-text viewer — currently a stub, see limitations |
Field-to-field links (LCL_PLUGINS=>MT_FIELD_LINKS):
| From | To |
|---|---|
PA0001-PLANS | HRP1000 for object type S (position) |
PA0001-ORGEH | HRP1000 for object type O (org unit) |
PA0001-STELL | HRP1000 for object type C (job) |
HRP1001-SCLAS / SOBID | The related object — re-filters the current window to the target OTYPE/OBJID |
HRP1002 / HRP1035 / HRP1222 TABNR | The matching HRT1002 / HRT1035 / HRT1222 table part |
PA2006-QUONR ↔ PTQUODED-QUONR | Absence quota ↔ its deduction records |
PTQUODED-DOCNR | PA2001 (the absence that consumed the quota) |
HRPY_RGDIR-SEQNR | The payroll result for that sequence number — see below |
Anything not covered by a rule falls back to the DDIC foreign key: DD_FORKEY_GET supplies the
check table and the key field mapping, and the check table opens pre-filtered. Language and country
grouping are carried over from SY-LANGU and SPA/GPA MOL where the target table has SPRSL /
MOLGA.
Double-clicking SEQNR in HRPY_RGDIR resolves the employee's country grouping with
RH_PM_GET_MOLGA_FROM_PERNR, translates it to the ISO country code via T500L, builds the
PAY<ISO>_RESULT structure dynamically by RTTI, and reads the cluster through
PYXX_READ_PAYROLL_RESULT. The result is displayed as an RTTI tree — every nested structure and
internal table of the cluster (RT, CRT, WPBP, BT, …) can be expanded and drilled into.
Several clusters can be open side by side, so results from different periods are directly comparable.
Drag a column from one table viewer and drop it on the select-options panel of another. That creates a live link: the dragged column turns into a button, and from then on selecting a row in the source window pushes the value into the target's filter and re-reads it.
Dragging a filter row from one select-options panel onto another copies the range and keeps the two linked — later changes on the source side propagate to the target, which is flagged with an "inherited" icon. This is how you build a small ad-hoc "report" out of several tables without writing any code.
SELECTs, so P_ORGIN,
P_PERNR and friends are not evaluated. Restrict access to the report itself (S_PROGRAM,
a dedicated transaction, authorization group) before letting it out of a sandbox. Payroll clusters
are the exception: PYXX_READ_PAYROLL_RESULT performs its own read check.ITXEX long-text display is a stub — RUN_TEXT is empty, so clicking a long-text flag does
nothing yet.HRP1001-ADATANR navigation to the adjacent-data table (T77AR → T77AD) is written but
commented out.PTQUODED are collected so far.OTYPE ≠ P) collects HRP* infotypes only; it has no Salary data or Others
folders.Related projects by the same author:
External code used:
Author: Yurii Sychov — blog · LinkedIn · ysichov@gmail.com
Licensed under the MIT License.