Retrieve multiple contracts for HR personnel
The following SAP ABAP code demonstrates how to retrieve multiple contracts of a personnel number entered onto
a selection screen of a HR report.
**********
*DATA declarations for multiple contracts
SELECT-OPTIONS r_ppernr for pernr-pernr no-display.
TYPES: BEGIN OF t_pa0121.
INCLUDE STRUCTURE pa0121.
TYPES: END OF t_pa0121.
DATA: it_pa0121 TYPE STANDARD TABLE OF t_pa0121 INITIAL SIZE 0,
wa_pa0121 TYPE t_pa0121.
**********
************************************************************************
*AT SELECTION-SCREEN ON PNPPERN
AT SELECTION-SCREEN ON pnppernr.
r_ppernr[] = pnppernr[].
r_objid[] = pnpobjid[].
READ TABLE pnppernr INDEX 1.
IF NOT pnppernr IS INITIAL.
READ TABLE pnpobjid INDEX 1.
IF sy-subrc EQ 0 AND NOT pnpobjid-low IS INITIAL.
REFRESH pnpobjid.
MESSAGE i999(za) WITH 'Org unit refreshed'.
ENDIF.
* Retrieve all personnel with multiple contracts
SELECT * FROM pa0121
INTO TABLE it_pa0121.
CLEAR: pnppernr.
REFRESH: pnppernr.
* Re-build personnel number select option to include all contracts
* relating to original user selection
LOOP AT it_pa0121 INTO wa_pa0121 WHERE pernr IN r_ppernr.
pnppernr-low = wa_pa0121-pernr.
pnppernr-sign = 'I'.
pnppernr-option = 'EQ'.
APPEND pnppernr.
pnppernr-low = wa_pa0121-hpern.
pnppernr-sign = 'I'.
pnppernr-option = 'EQ'.
APPEND pnppernr.
ENDLOOP.
* Re-build personell number select option to include all contracts
LOOP AT it_pa0121 INTO wa_pa0121 WHERE hpern IN pnppernr.
pnppernr-low = wa_pa0121-pernr.
pnppernr-sign = 'I'.
pnppernr-option = 'EQ'.
APPEND pnppernr.
ENDLOOP.
SORT pnppernr.
DELETE ADJACENT DUPLICATES FROM pnppernr COMPARING low.
endif.
|