‎2008 Jun 10 2:40 PM
Hi Guru's,
I'm new to HR-ABAP could you please provide code for the following requirement?
I. Develop report to display personnel information of employee from master data. Display simple output list.
Selection screen:
Payroll Area
Current Period
Personnel Number
Output List:
Personnel number
Name
Address
Job and Job Title
Guidelines:
Use of LDB is not required, instead use rp-read-infotype
Infotypes:
0001
0002
0006
Enhancements:
Provide a radio button on selection screen for:
1. Sort by personnel number
2. Sort By name
‎2008 Jun 13 6:23 AM
Hi,
Please find the below program.
REPORT zdemo_hr.
tables pa0001.
infotypes : 0001,
0002,
0006.
data : begin of it_pernr occurs 0,
pernr type pa0001-pernr,
end of it_pernr.
data : begin of it_final occurs 0,
pernr type pa0001-pernr,
vorna type pa0002-vorna,
nachn type pa0002-nachn,
stell type pa0001-stell,
stext type hrp1000-stext,
anssa type pa0006-anssa,
stras type pa0006-stras,
ort01 type pa0006-ort01,
end of it_final.
selection-screen begin of block b1 with frame.
parameters : p_date type sy-datum.
select-options : s_pernr for pa0001-pernr no intervals,
s_abkrs for pa0001-abkrs no intervals.
selection-screen end of block b1 .
start-of-selection.
perform get_pernrs.
perform fill_finaldata.
end-of-selection.
perform disp_list.
&----
*& Form get_pernrs
&----
text
----
form get_pernrs .
select pernr
from pa0001
into table it_pernr
where pernr in s_pernr
and endda ge p_date
and begda le p_date.
endform. " get_pernrs
&----
*& Form fill_finaldata
&----
text
----
form fill_finaldata .
data : l_title type hrp1000-stext.
loop at it_pernr.
rp-read-infotype it_pernr-pernr 0001 p0001 p_date p_date.
rp-read-infotype it_pernr-pernr 0002 p0002 p_date p_date.
rp-read-infotype it_pernr-pernr 0006 p0006 p_date p_date.
clear: p0001, p0002,p0006, it_pernr.
provide * from p0001
from p0002
from p0006 between p_date and p_date
where p0001-abkrs in s_abkrs
and p0006-subty = '1'.
if not p0001-stell is initial.
perform get_title using p0001-stell
changing l_title.
endif.
it_final-pernr = p0001-pernr.
it_final-vorna = p0002-vorna.
it_final-nachn = p0002-nachn.
it_final-stell = p0001-stell.
it_final-stext = l_title.
it_final-anssa = p0006-anssa.
it_final-stras = p0006-stras.
it_final-ort01 = p0006-ort01.
append it_final.
clear it_final.
endprovide.
endloop.
endform. " fill_finaldata
&----
*& Form disp_list
&----
text
----
form disp_list .
loop at it_final.
write:/ it_final-pernr,
it_final-stell,
it_final-stext.
endloop.
endform. " disp_list
&----
*& Form get_title
&----
text
----
form get_title using p_stell
changing p_title.
select single stext
from hrp1000
into p_title
where plvar = '01'
and otype = 'C'
and objid = p_stell
and istat = '1'
and begda le p_date
and endda ge p_date
and langu = sy-langu.
endform. " get_title
‎2008 Jun 13 6:26 AM
Hi there,
I did a report similar to this, so hope this code of mine helps you out.
NODES: PERAS.
Tables: pernr, pa0002, pa0006, pa0105, pa0071, pa0007,
pa0016, pa0000 ,pa0001.
INFOTYPES: 0002, 0006, 0105, 0071, 0007, 0016, 0000, 0001.
TYPES: BEGIN OF ITAB ,
ANRED TYPE PA0002-ANRED,
VORNA TYPE PA0002-VORNA,
MIDNM TYPE PA0002-MIDNM,
NACHN TYPE PA0002-NACHN,
PERNR TYPE PA0002-PERNR,
PERID TYPE PA0002-PERID,
GBDAT TYPE PA0002-GBDAT,
STRAS TYPE PA0006-STRAS,
LOCAT TYPE PA0006-LOCAT,
ORT01 TYPE PA0006-ORT01,
ORT02 TYPE PA0006-ORT02,
STATE TYPE PA0006-STATE,
PSTLZ TYPE PA0006-PSTLZ,
LAND1 TYPE PA0006-LAND1,
TELNR TYPE PA0006-TELNR,
COM01 TYPE PA0006-COM01,
USRID TYPE PA0105-USRID,
SCREF TYPE PA0071-SCREF,
CTTYP TYPE PA0016-CTTYP,
ORGEH TYPE PA0001-ORGEH,
STELL TYPE PA0001-STELL,
KOSTL TYPE PA0001-KOSTL,
BEGDA TYPE PA0000-BEGDA,
ENDDA TYPE PA0000-ENDDA,
MASSG TYPE PA0000-MASSG,
MASSN TYPE PA0000-MASSN,
ADDRESS TYPE STRING,
END OF ITAB.
TYPES: BEGIN OF T_ITAB ,
ANRED TYPE STRING,
VORNA TYPE STRING,
MIDNM TYPE STRING,
NACHN TYPE STRING,
PERNR TYPE STRING,
PERID TYPE STRING,
GBDAT TYPE STRING,
TELNR TYPE STRING,
COM01 TYPE STRING,
USRID TYPE STRING,
SCREF TYPE STRING,
CTTYP TYPE STRING,
ORGEH TYPE STRING,
STELL TYPE STRING,
KOSTL TYPE STRING,
BEGDA TYPE STRING,
ENDDA TYPE STRING,
MASSG TYPE STRING,
MASSN TYPE STRING,
ADDRESS TYPE STRING,
END OF T_ITAB.
DATA: I_TAB TYPE STANDARD TABLE OF ITAB WITH HEADER LINE .
DATA: I_TAB2(4096) TYPE C OCCURS 0,
I_TAB3 TYPE STANDARD TABLE OF T_ITAB.
DATA: WA LIKE LINE OF I_TAB,
WA2 LIKE LINE OF I_TAB3,
WA3 LIKE LINE OF I_TAB2.
DATA: PAPPLI(15) TYPE C,
PPRESENT TYPE DYNPREAD-FIELDNAME ,
TESTFILNAM TYPE IBIPPARMS-PATH,
TESTFILNA TYPE STRING.
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER : APPLI RADIOBUTTON GROUP RAD USER-COMMAND RADIO DEFAULT 'X',
PRESENT RADIOBUTTON GROUP RAD.
SELECT-OPTIONS : APPLI2 FOR PAPPLI MODIF ID SP1 NO INTERVALS NO-EXTENSION.
PARAMETERS: PRESENT2 TYPE DYNPREAD-FIELDNAME MODIF ID SP2.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR PRESENT2.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = '1'
FIELD_NAME = 'PPRESENT'
IMPORTING
FILE_NAME = TESTFILNAM.
PRESENT2 = TESTFILNAM.
TESTFILNA = TESTFILNAM.
START-OF-SELECTION.
WA2-ANRED = 'Title'.
WA2-VORNA = 'Forenames'.
WA2-MIDNM = 'Middle Name'.
WA2-NACHN = 'Surname'.
WA2-PERNR = 'Employee number'.
WA2-PERID = 'NI number'.
WA2-GBDAT = 'Date of birth'.
WA2-TELNR = 'Tel no (work)'.
WA2-COM01 = 'Tel no (home)'.
WA2-USRID = 'Pension scheme no'.
WA2-SCREF = 'Pension scheme indicator'.
WA2-CTTYP = 'Contract Status'.
WA2-ORGEH = 'Org Unit (name & no)'.
WA2-STELL = 'Job code'.
WA2-KOSTL = 'Cost centre'.
WA2-BEGDA = 'Start date'.
WA2-ENDDA = 'End Date'.
WA2-MASSG = 'Reason for leaving'.
WA2-MASSN = 'Maternity/adoptive leave flag'.
WA2-ADDRESS = 'Address'.
APPEND WA2 TO I_TAB3.
GET PERAS.
RP_PROVIDE_FROM_LAST P0002 SPACE PN-BEGDA PN-ENDDA.
MOVE: P0002-PERNR TO WA-PERNR,
P0002-ANRED TO WA-ANRED,
P0002-GBDAT TO WA-GBDAT,
P0002-PERID TO WA-PERID,
P0002-VORNA TO WA-VORNA,
P0002-NACHN TO WA-NACHN.
RP_PROVIDE_FROM_LAST P0006 SPACE PN-BEGDA PN-ENDDA.
IF P0006-PERNR = P0002-PERNR.
CONCATENATE P0006-STRAS P0006-LOCAT P0006-ORT01 P0006-ORT02 P0006-STATE P0006-PSTLZ P0006-LAND1
INTO WA-ADDRESS SEPARATED BY SPACE.
ENDIF.
RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.
IF P0001-PERNR = P0002-PERNR.
MOVE: P0001-ORGEH TO WA-ORGEH,
P0001-STELL TO WA-STELL,
P0001-KOSTL TO WA-KOSTL.
ENDIF.
RP_PROVIDE_FROM_LAST P0000 SPACE PN-BEGDA PN-ENDDA.
IF P0000-PERNR = P0002-PERNR.
MOVE: P0000-MASSG TO WA-MASSG,
P0000-MASSN TO WA-MASSN.
ENDIF.
RP_PROVIDE_FROM_LAST P0071 SPACE PN-BEGDA PN-ENDDA.
IF P0071-PERNR = P0002-PERNR.
MOVE: P0071-SCREF TO WA-SCREF.
ENDIF.
IF WA-ADDRESS CP ','.
CONCATENATE '"' WA-ADDRESS '"' INTO WA-ADDRESS.
ENDIF.
APPEND WA TO I_TAB.
LOOP AT I_TAB INTO WA.
MOVE-CORRESPONDING WA TO WA2.
ENDLOOP.
APPEND WA2 TO I_TAB3.
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
I_FIELD_SEPERATOR = ','
I_LINE_HEADER =
I_FILENAME =
I_APPL_KEEP = ' '
TABLES
I_TAB_SAP_DATA = I_TAB3
CHANGING
I_TAB_CONVERTED_DATA = I_TAB2
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF APPLI = 'X'.
PERFORM APPLIFETCH.
ENDIF.
IF APPLI = ' '.
PERFORM PRESENFETCH.
ENDIF.
END-OF-SELECTION.
.
&----
*& Form PRESENFETCH
&----
text
----
FORM PRESENFETCH.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
FILENAME = TESTFILNA
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = 'x'
HEADER = '123'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = I_TAB2
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "PRESENFETCH
&----
*& Form APPLIFETCH
&----
text
----
FORM APPLIFETCH.
DATA: ALL TYPE STRING.
LOOP AT I_TAB2 INTO WA3.
MOVE WA3 TO ALL.
ENDLOOP.
DATA: DSET TYPE STRING VALUE 'c:\lpc2.txt'.
OPEN DATASET DSET FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
TRANSFER ALL TO DSET.
CLOSE DATASET DSET.
ENDFORM. "APPLIFETCH
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF APPLI = 'X'.
IF SCREEN-GROUP1 = 'SP2'.
SCREEN-INPUT = '0'.
SCREEN-INVISIBLE = '0'.
SCREEN-REQUIRED = '0'.
MODIFY SCREEN.
ENDIF.
ELSEIF PRESENT = 'X'.
IF SCREEN-GROUP1 = 'SP1'.
SCREEN-INPUT = '0'.
SCREEN-INVISIBLE = '0'.
SCREEN-REQUIRED = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
*BACKGROUND JOB SCHEDULE
*data: JobNumber type i.
*
*CALL FUNCTION 'JOB_OPEN'
EXPORTING
DELANFREP = ' '
JOBGROUP = ' '
JOBNAME = 'ZJOB11'
SDLSTRTDT = NO_DATE
SDLSTRTTM = NO_TIME
JOBCLASS =
IMPORTING
JOBCOUNT = 'JobNumber'
CHANGING
RET =
EXCEPTIONS
CANT_CREATE_JOB = 1
INVALID_JOB_DATA = 2
JOBNAME_MISSING = 3
OTHERS = 4
.
*IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
*
*
*
*CALL FUNCTION 'BP_START_DATE_EDITOR'
EXPORTING
STDT_DIALOG = 'Yes'
STDT_INPUT = default
STDT_OPCODE = 0
IMPORTING
STDT_MODIFY_TYPE =
STDT_OUTPUT =
EXCEPTIONS
FCAL_ID_NOT_DEFINED = 1
INCOMPLETE_LAST_STARTDATE = 2
INCOMPLETE_STARTDATE = 3
INVALID_DIALOG_TYPE = 4
INVALID_EVENTID = 5
INVALID_OPCODE = 6
INVALID_OPMODE_NAME = 7
INVALID_PERIODBEHAVIOUR = 8
INVALID_PREDECESSOR_JOBNAME = 9
LAST_STARTDATE_IN_THE_PAST = 10
NO_PERIOD_DATA_GIVEN = 11
NO_STARTDATE_GIVEN = 12
PERIOD_AND_PREDJOB_NO_WAY = 13
PERIOD_TOO_SMALL_FOR_LIMIT = 14
PREDECESSOR_JOBNAME_NOT_UNIQUE = 15
STARTDATE_INTERVAL_TOO_LARGE = 16
STARTDATE_IN_THE_PAST = 17
STARTDATE_IS_A_HOLIDAY = 18
STARTDATE_OUT_OF_FCAL_RANGE = 19
STDT_BEFORE_HOLIDAY_IN_PAST = 20
UNKNOWN_FCAL_ERROR_OCCURED = 21
NO_WORKDAY_NR_GIVEN = 22
INVALID_WORKDAY_COUNTDIR = 23
INVALID_WORKDAY_NR = 24
NOTBEFORE_STDT_MISSING = 25
WORKDAY_STARTTIME_MISSING = 26
NO_EVENTID_GIVEN = 27
OTHERS = 28
.
*IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
*
*
*
*
*CALL FUNCTION 'JOB_SUBMIT'
EXPORTING
ARCPARAMS =
AUTHCKNAM = 'DEVHYD'
COMMANDNAME = ' '
OPERATINGSYSTEM = ' '
EXTPGM_NAME = ' '
EXTPGM_PARAM = ' '
EXTPGM_SET_TRACE_ON = ' '
EXTPGM_STDERR_IN_JOBLOG = 'X'
EXTPGM_STDOUT_IN_JOBLOG = 'X'
EXTPGM_SYSTEM = ' '
EXTPGM_RFCDEST = ' '
EXTPGM_WAIT_FOR_TERMINATION = 'X'
JOBCOUNT = 'JobNumber'
JOBNAME = 'ZJOB11'
LANGUAGE = SY-LANGU
PRIPARAMS = ' '
REPORT = ' '
VARIANT = ' '
IMPORTING
STEP_NUMBER =
EXCEPTIONS
BAD_PRIPARAMS = 1
BAD_XPGFLAGS = 2
INVALID_JOBDATA = 3
JOBNAME_MISSING = 4
JOB_NOTEX = 5
JOB_SUBMIT_FAILED = 6
LOCK_FAILED = 7
PROGRAM_MISSING = 8
PROG_ABAP_AND_EXTPG_SET = 9
OTHERS = 10
.
*IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
*
*
*CALL FUNCTION 'JOB_CLOSE'
EXPORTING
AT_OPMODE = ' '
AT_OPMODE_PERIODIC = ' '
CALENDAR_ID = ' '
EVENT_ID = ' '
EVENT_PARAM = ' '
EVENT_PERIODIC = ' '
JOBCOUNT = 'JobNumber'
JOBNAME = 'ZJOB11'
LASTSTRTDT = NO_DATE
LASTSTRTTM = NO_TIME
PRDDAYS = 0
PRDHOURS = 0
PRDMINS = 0
PRDMONTHS = 0
PRDWEEKS = 0
PREDJOB_CHECKSTAT = ' '
PRED_JOBCOUNT = ' '
PRED_JOBNAME = ' '
SDLSTRTDT = NO_DATE
SDLSTRTTM = NO_TIME
STARTDATE_RESTRICTION = BTC_PROCESS_ALWAYS
STRTIMMED = ' '
TARGETSYSTEM = ' '
START_ON_WORKDAY_NOT_BEFORE = SY-DATUM
START_ON_WORKDAY_NR = 0
WORKDAY_COUNT_DIRECTION = 0
RECIPIENT_OBJ =
TARGETSERVER = ' '
DONT_RELEASE = ' '
TARGETGROUP = ' '
DIRECT_START =
IMPORTING
JOB_WAS_RELEASED =
CHANGING
RET =
EXCEPTIONS
CANT_START_IMMEDIATE = 1
INVALID_STARTDATE = 2
JOBNAME_MISSING = 3
JOB_CLOSE_FAILED = 4
JOB_NOSTEPS = 5
JOB_NOTEX = 6
LOCK_FAILED = 7
INVALID_TARGET = 8
OTHERS = 9
.
*IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
rewards would be appreciated.
Thanks
Puneet