‎2008 Aug 04 4:01 PM
Hi all,
I am having problem moving data into the final internal table.
The requirement is simple.
I am fetching data from PA0002 table.
And then I am fetching data from PA0006 table by using for all entries.
Now, I need to populate the final internal table with data from these 2 two internal table.
Have a look at my code.------
report YEMP_DATA no standard page heading line-size 355.
*********************************
TABLES USED *
*********************************
tables: PA0002,
PA0006.
*******************************************
DATA DECLARATION *
*******************************************
types: begin of TY_PA0002,
PERNR type PERSNO, "EMPLOYEE NUMBER
NACHN type NACHN, "LAST NAME
VORNA type VORNA, "FIRST NAME
MIDNM type PAD_MIDNM, "MIDDLE NAME
GBDAT type GBDAT , "DATE OF BIRTH
BEGDA type BEGDA, "DATE OF JOINING
PERID type PRDNI, "PERSONNEL ID
GESCH type GESCH, "GENDER KEY
end of TY_PA0002.
types: begin of TY_PA0006,
PERNR type PERSNO, "EMPLOYEE NUMBER
STRAS type STRAS, "STREET AND HOUSE NO.
PSTLZ type PSTLZ, "POSTAL CODE
end of TY_PA0006.
types: begin of TY_FINAL,
PERNR type PERSNO, "EMPLOYEE NUMBER
NACHN type NACHN, "LAST NAME
VORNA type VORNA, "FIRST NAME
MIDNM type PAD_MIDNM, "MIDDLE NAME
GBDAT type GBDAT , "DATE OF BIRTH
BEGDA type BEGDA, "DATE OF JOINING
PERID type PRDNI, "PERSONNEL ID
GESCH type GESCH, "GENDER KEY
STRAS type STRAS, "STREET AND HOUSE NO.
PSTLZ type PSTLZ, "POSTAL CODE
end of TY_FINAL.
******************************************
INTERNAL TABLE DECLARATION *
******************************************
data:IT_PA0002 type standard table of TY_PA0002 with header line,
IT_PA0006 type standard table of TY_PA0006 with header line,
IT_FINAL type standard table of TY_FINAL with header line.
**wa declaration**
*data:IT_PA0002 like line of IT_PA0002,
IT_PA0006 like line of IT_PA0006,
IT_FINAL like line of IT_FINAL.
******************************************
SELECTION SCREEN FOR INPUTS *
******************************************
*select-options : S_UNAME for p0002-UNAME.
******************************************
START-OF-SELECTION *
******************************************
select PERNR
NACHN
VORNA
MIDNM
GBDAT
BEGDA
PERID
GESCH
from PA0002
into table IT_PA0002
where UNAME = 'REDDYT'.
if not IT_PA0002[] is initial.
sort IT_PA0002 by PERNR.
endif.
loop at IT_PA0002.
IT_FINAL-PERNR = IT_PA0002-PERNR.
IT_FINAL-NACHN = IT_PA0002-NACHN.
IT_FINAL-VORNA = IT_PA0002-VORNA.
IT_FINAL-MIDNM = IT_PA0002-MIDNM.
IT_FINAL-GBDAT = IT_PA0002-GBDAT.
IT_FINAL-BEGDA = IT_PA0002-BEGDA.
IT_FINAL-PERID = IT_PA0002-PERID.
IT_FINAL-GESCH = IT_PA0002-GESCH.
append IT_FINAL.
endloop.
select PERNR
STRAS
PSTLZ
from PA0006
into table IT_PA0006
for all entries in IT_PA0002
where PERNR eq IT_PA0002-PERNR
and SUBTY = '1'.
sort IT_PA0006 by PERNR.
loop at IT_PA0006.
read table IT_PA0006 with key PERNR = IT_PA0002-PERNR binary search.
if SY-SUBRC ne 0.
clear IT_PA0006.
endif.
move IT_PA0006-STRAS to IT_FINAL-STRAS.
move IT_PA0006-PSTLZ to IT_FINAL-PSTLZ.
modify IT_FINAL.
endloop.
if not IT_FINAL[] is initial.
loop at IT_FINAL into IT_FINAL.
write:/10 IT_FINAL-PERNR,
20 IT_FINAL-NACHN,
30 IT_FINAL-VORNA,
40 IT_FINAL-MIDNM,
55 IT_FINAL-GBDAT,
70 IT_FINAL-BEGDA,
85 IT_FINAL-PERID,
100 IT_FINAL-GESCH,
115 IT_FINAL-STRAS,
130 IT_FINAL-PSTLZ.
endloop.
endif.
*************************************************************
Warm regards,
hari
‎2008 Aug 04 4:09 PM
‎2008 Aug 04 4:09 PM
‎2008 Aug 04 4:14 PM
It would be better to do something like this:
1. Select into internal table it_pa0002 (like you did, but forget the append to IT_FINAL).
2. Select into internal table it_pa0002.
3. Loop at you IT_PA0002 and do a read on IT_PA0006.
4. Move all corresponding fields to IT_FINAL and do the append.
Good luck.
‎2008 Aug 04 4:15 PM
not able to understand. wirite only that part of code where u have doubt..
‎2008 Aug 04 4:17 PM
‎2008 Aug 04 4:19 PM
Hi Poonam,
The internal table it_pa0002 has been populated.
The internal table it_pa0006 has also been populated.
Now need to populate the final internal table.
I will try out what Micky has said and get back.
Warm regards,
Hari
‎2008 Aug 04 4:42 PM
Micky,
It's working....
here's the code now----
report YEMP_DATA no standard page heading line-size 400.
*********************************
TABLES USED *
*********************************
tables: PA0002,
PA0006.
*******************************************
DATA DECLARATION *
*******************************************
types: begin of TY_PA0002,
PERNR type PERSNO, "EMPLOYEE NUMBER
NACHN type NACHN, "LAST NAME
VORNA type VORNA, "FIRST NAME
MIDNM type PAD_MIDNM, "MIDDLE NAME
GBDAT type GBDAT , "DATE OF BIRTH
BEGDA type BEGDA, "DATE OF JOINING
PERID type PRDNI, "PERSONNEL ID GESCH type GESCH, "GENDER KEY
end of TY_PA0002.
types: begin of TY_PA0006,
PERNR type PERSNO, "EMPLOYEE NUMBER
STRAS type STRAS, "STREET AND HOUSE NO.
PSTLZ type PSTLZ, "POSTAL CODE
end of TY_PA0006.
types: begin of TY_FINAL,
PERNR type PERSNO, "EMPLOYEE NUMBER
NACHN type NACHN, "LAST NAME
VORNA type VORNA, "FIRST NAME
MIDNM type PAD_MIDNM, "MIDDLE NAME
GBDAT type GBDAT , "DATE OF BIRTH
BEGDA type BEGDA, "DATE OF JOINING
PERID type PRDNI, "PERSONNEL ID
GESCH type GESCH, "GENDER KEY
STRAS type STRAS, "STREET AND HOUSE NO.
PSTLZ type PSTLZ, "POSTAL CODE
end of TY_FINAL.
******************************************
INTERNAL TABLE DECLARATION *
******************************************
data:IT_PA0002 type standard table of TY_PA0002 with header line,
IT_PA0006 type standard table of TY_PA0006 with header line,
IT_FINAL type standard table of TY_FINAL with header line.
******************************************
START-OF-SELECTION *
******************************************
select PERNR
NACHN
VORNA
MIDNM
GBDAT
BEGDA
PERID
GESCH
from PA0002
into table IT_PA0002
where UNAME = 'REDDYT'.
if not IT_PA0002[] is initial.
sort IT_PA0002 by PERNR.
endif.
select PERNR
STRAS
PSTLZ
from PA0006
into table IT_PA0006
for all entries in IT_PA0002
where PERNR eq IT_PA0002-PERNR
and SUBTY = '1'.
loop at IT_PA0002.
read table IT_PA0006 with key PERNR = IT_PA0002-PERNR binary search.
if SY-SUBRC = 0.
move-corresponding IT_PA0002 to IT_FINAL.
move-corresponding IT_PA0006 to IT_FINAL.
append IT_FINAL.
endif.
endloop.
if not IT_FINAL[] is initial.
loop at IT_FINAL into IT_FINAL.
write:/10 IT_FINAL-PERNR,
20 IT_FINAL-NACHN,
30 IT_FINAL-VORNA,
40 IT_FINAL-MIDNM,
55 IT_FINAL-GBDAT,
70 IT_FINAL-BEGDA,
85 IT_FINAL-PERID,
115 IT_FINAL-GESCH,
130 IT_FINAL-STRAS,
155 IT_FINAL-PSTLZ.
endloop.
endif.
Warm regards,
Hari Kiran
‎2008 Aug 04 4:19 PM
hi,
you can do this:
select * from PA0002
into table it_PA0002.
select * from PA0006
into table it_PA0006
for all entries in it_PA0002
where condition.
so now u have data in it_PA0006.
‎2008 Aug 04 4:28 PM
Poonam ,
Need to move the data to the final internal table called
IT_FINAL.
It has fields from both the table.
Have a look at it's structure in my code.
Regards,
Hari
‎2008 Aug 04 4:38 PM
Hari,
refer this code:
it_final is my final table.
*&---------------------------------------------------------------------*
*& Report ZPAYROLL
*&
*&---------------------------------------------------------------------*
*& Module: ABAP HR
*& Writer: Amit Gujargoud
*& User: Payroll HR Team
*& Purpose: Update the Zpayroll table from extracting the data with sevral Infotypes
*& Creation Date: 04/10/2008
*& Revision:
*&---------------------------------------------------------------------*
REPORT zpayroll.
TYPE-POOLS : slis.
TABLES: pernr, t001p.",hrpy_rgdir , hrpy_wpbp .
INFOTYPES: 0000,
0001,
0002,
0006,
0007,
0008,
0032,
0065,
0077,
0041,
0069.
*************************************************************************
** S E L E C T O P T I O N S
*************************************************************************
*************************************************************************
** P A R A M E T E R S
*************************************************************************
SELECTION-SCREEN : BEGIN OF BLOCK bloc1 WITH FRAME TITLE text-000.
PARAMETERS : r_test RADIOBUTTON GROUP g1 DEFAULT 'X'.
PARAMETERS : r_update RADIOBUTTON GROUP g1." DEFAULT 'X'.
PARAMETERS: dataset(132) LOWER CASE DEFAULT
'/saplocal/sapedi/out/payroll' NO-DISPLAY.
*SELECT-OPTIONS : s_aedtm FOR p0000-aedtm OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK bloc1.
************************************************************************
* D A T A
************************************************************************
** Internal Tables **
***** *******************************************************************
* Internal Table for Output
TYPES: BEGIN OF ty_output,
pernr TYPE pernr-pernr, "Employee no
vorna TYPE pa0002-vorna, "First Name
nachn TYPE pa0002-nachn, "Sur name(Last name)
name1 TYPE t500p-name1, "Personnel Area text
btext TYPE t001p-btext, "Personnel SubArea Text
ptext TYPE t501t-ptext, "Employee Group text
ptext_s TYPE t503t-ptext, "Employee SubGroup text
plans_stext TYPE p1000-stext, "Position Text
ktext TYPE cskt-ktext, "Cost Center Name
gbdat TYPE pa0002-gbdat, "Birth Date
age(20) TYPE c,
hiredt TYPE p0000-begda, "Hire Date
abb_exp(20) TYPE c, "ABB Experience
mgrno TYPE pernr-pernr, "Manager emp.no
END OF ty_output.
DATA: it_output TYPE STANDARD TABLE OF ty_output WITH HEADER LINE,
wa_output LIKE LINE OF it_output.
DATA : BEGIN OF itab OCCURS 0,
date LIKE sy-datum,
END OF itab.
DATA: g_ostext TYPE p1000-stext,
g_sstext TYPE p1000-stext,
g_hiredt TYPE d,
g_flag TYPE c,
g_flag1 TYPE c.
DATA: l_days TYPE num2,
l_months TYPE num2,
l_years TYPE num2,
l_birth_dt TYPE p0002-gbdat,
l_exp_dt TYPE p0002-gbdat,
msg_handler TYPE REF TO if_hrpa_message_handler,
l_text(60) TYPE c.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
g_repid TYPE sy-repid.
DATA: it_final TYPE zpayroll OCCURS 0 WITH HEADER LINE,
t_ppbwla TYPE STANDARD TABLE OF pbwla WITH HEADER LINE .
DATA: f_ansal TYPE p0008-ansal.
DATA: BEGIN OF it_itab OCCURS 0,
pernr TYPE char10,
updte TYPE char1,
chgdt TYPE char8,
beg000 TYPE char8,
stat1 TYPE char1,
stat2 TYPE char1,
stat3 TYPE char1,
massn TYPE char2,
massg TYPE char2,
werks TYPE char4,
btrtl TYPE char4,
persg TYPE c,
persk TYPE char2,
kostl TYPE char10,
beg001 TYPE char8,
abkrs TYPE char2,
ansvh TYPE char2,
orgeh TYPE char8,
orgutexts TYPE char25,
plans TYPE char8,
orgptexts TYPE char25,
stell TYPE char8,
orgdesc TYPE char25,
beg002 TYPE char8,
inits TYPE char10,
nachn TYPE char40,
vorna TYPE char40,
gesch TYPE c,
gbdat TYPE char8,
perid TYPE char20,
famst TYPE c,
anred TYPE c,
titel TYPE char15,
gbort TYPE char40,
name2 TYPE char40,
natio TYPE char3,
gblnd TYPE char3,
beg006 TYPE char8,
anssa TYPE char4,
stras(60),
locat(60),
ort01 TYPE char40,
state TYPE char3,
pstlz TYPE char10,
land1 TYPE char3,
telnr TYPE char14,
entkm TYPE char3,
busrt TYPE char3,
railw TYPE c,
schkz TYPE char5,
z_transport_mode TYPE char10,
empct TYPE char5,
mostd TYPE char5,
wostd TYPE char5,
arbst TYPE char4,
jrstd TYPE char7,
beg008 TYPE char8,
trfar TYPE char2,
trfgb TYPE char2,
trfgr TYPE char8,
trfst TYPE char2,
ansal TYPE char15,
lga01 TYPE char4,
bet01 TYPE char13,
lga02 TYPE char4,
bet02 TYPE char13,
lga03 TYPE char4,
bet03 TYPE char13,
lga04 TYPE char4,
bet04 TYPE char13,
pnalt TYPE char13,
beg065 TYPE char8,
txnum TYPE char5,
txlet TYPE char2,
txstk TYPE c,
txbas TYPE c,
txrfs TYPE c,
p45py TYPE char9,
p45tx TYPE char9,
txnmb TYPE char6,
racky TYPE char2,
dar01 TYPE char2,
dat01 TYPE char10,
dar02 TYPE char2,
dat02 TYPE char10,
dar03 TYPE char2,
dat03 TYPE char10,
dar04 TYPE char2,
dat04 TYPE char10,
dar05 TYPE char2,
dat05 TYPE char10,
dar06 TYPE char2,
dat06 TYPE char10,
dar07 TYPE char2,
dat07 TYPE char10,
dar08 TYPE char2,
dat08 TYPE char10,
nicat TYPE char2,
END OF it_itab.
DATA: wa_itab LIKE LINE OF it_itab.
*&---------------------------------------------------------------------
*
*& Initialization *
*& *
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
* IF p_exp IS INITIAL AND p_age IS INITIAL.
* SET CURSOR FIELD 'P_AGE'.
* MESSAGE text-017 TYPE 'E'.
* ENDIF.
*&---------------------------------------------------------------------*
*& Start-of Selection *
*& *
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* CHECK sy-batch = ''.
* MESSAGE 'Report can only be run in background press F9' TYPE 'I'.
* LEAVE LIST-PROCESSING.
GET pernr.
CLEAR it_output.
CLEAR it_final.
* Read Infotype 0
rp-provide-from-last p0000 space pn-begda pn-endda.
* Get Hire date of Employee
CALL FUNCTION 'RP_GET_HIRE_DATE'
EXPORTING
persnr = pernr-pernr
check_infotypes = '0000'
IMPORTING
hiredate = g_hiredt.
* Read Infotype 1
rp-provide-from-last p0001 space pn-begda pn-endda.
PERFORM get_orgtext.
* Read Infotype 2
rp-provide-from-last p0002 space pn-begda pn-endda.
* Read Infotype 6
rp-provide-from-last p0006 space pn-begda pn-endda.
* Read Infotype 7
rp-provide-from-last p0007 space pn-begda pn-endda.
* Read Infotype 8
rp-provide-from-last p0008 space pn-begda pn-endda.
CLEAR:t_ppbwla-betrg,
f_ansal.
IF p0008-bet01 IS INITIAL.
PERFORM wege_type.
it_final-bet01 = t_ppbwla-betrg.
ELSE.
it_final-bet01 = p0008-bet01.
ENDIF.
IF p0008-ansal IS INITIAL.
PERFORM get_ansal.
it_final-ansal = f_ansal.
ELSE.
it_final-ansal = p0008-ansal.
ENDIF.
* Read Infotype 32
rp-provide-from-last p0032 space pn-begda pn-endda.
* Read Infotype 65
rp-provide-from-last p0065 space pn-begda pn-endda.
* Read Infotype 77
rp-provide-from-last p0077 space pn-begda pn-endda.
* Read Infotype 41
rp-provide-from-last p0041 space pn-begda pn-endda.
* Read Infotype 69
rp-provide-from-last p0069 space pn-begda pn-endda.
*****start of calculation of latest change date
REFRESH itab[].
itab-date = p0000-aedtm.
APPEND itab.
CLEAR itab.
itab-date = p0001-aedtm.
APPEND itab.
CLEAR itab.
itab-date = p0006-aedtm.
APPEND itab.
CLEAR itab.
itab-date = p0007-aedtm.
APPEND itab.
CLEAR itab.
itab-date = p0008-aedtm.
APPEND itab.
CLEAR itab.
SORT itab BY date DESCENDING.
READ TABLE itab INDEX 1.
*write : itab-date.
*****end calculation of latest date
* IF NOT p_age IS INITIAL.
* PERFORM calculate_age.
* ELSE.
* g_flag = '1'.
* ENDIF.
* IF NOT p_exp IS INITIAL.
* PERFORM calculate_exp.
* ELSE.
* g_flag1 = '1'.
* ENDIF.
* Only consider employees which satisfies selection criteria
* IF g_flag EQ '1' AND g_flag1 EQ '1'.
* Gather all the required information related to the emp
* PERFORM get_details.
* MOVE: pernr-pernr TO it_output-pernr,
* p0002-vorna TO it_output-vorna,
* p0002-nachn TO it_output-nachn,
* p0002-gbdat TO it_output-gbdat,
* g_sstext TO it_output-plans_stext,
* g_hiredt TO it_output-hiredt.
* APPEND it_output.
*data from p0000.
it_final-pernr = p0000-pernr.
it_final-updte = 'N'.
it_final-stat1 = p0000-stat1.
it_final-stat2 = p0000-stat2.
it_final-stat3 = p0000-stat3.
it_final-massn = p0000-massn.
it_final-massg = p0000-massg.
it_final-beg000 = p0000-begda.
*data from p0001
it_final-werks = p0001-werks.
it_final-btrtl = p0001-btrtl.
it_final-persg = p0001-persg.
it_final-persk = p0001-persk.
it_final-kostl = p0001-kostl.
it_final-abkrs = p0001-abkrs.
it_final-ansvh = p0001-ansvh.
it_final-orgeh = p0001-orgeh.
it_final-plans = p0001-plans.
it_final-stell = p0001-stell.
it_final-abkrs = p0001-abkrs.
it_final-beg001 = p0001-begda.
* it_final-vorna = p0001-ename.
*data from p0002
it_final-inits = p0002-inits.
it_final-nachn = p0002-nachn.
it_final-vorna = p0002-vorna.
it_final-gesch = p0002-gesch.
it_final-gbdat = p0002-gbdat.
it_final-perid = p0002-perid.
it_final-famst = p0002-famst.
it_final-anred = p0002-anred.
it_final-titel = p0002-titel.
it_final-gbort = p0002-gbort.
it_final-name2 = p0002-name2.
it_final-natio = p0002-natio.
it_final-gblnd = p0002-gblnd.
it_final-beg002 = p0002-begda.
*data from p0006
it_final-anssa = p0006-anssa.
it_final-stras = p0006-stras.
it_final-locat = p0006-locat.
it_final-ort01 = p0006-ort01.
it_final-state = p0006-state.
it_final-pstlz = p0006-pstlz.
it_final-land1 = p0006-land1.
it_final-telnr = p0006-telnr.
it_final-entkm = p0006-entkm.
it_final-busrt = p0006-busrt.
it_final-railw = p0006-railw.
it_final-z_transport_mode = p0006-z_transp_mode.
it_final-beg006 = p0006-begda.
*data from p0007
it_final-schkz = p0007-schkz.
it_final-empct = p0007-empct.
it_final-mostd = p0007-mostd.
it_final-wostd = p0007-wostd.
it_final-arbst = p0007-arbst.
it_final-jrstd = p0007-jrstd.
* it_final-beg007 = p0007-begda.
*data from p0008
it_final-trfar = p0008-trfar.
it_final-trfgb = p0008-trfgb.
it_final-trfgr = p0008-trfgr.
it_final-trfst = p0008-trfst.
* it_final-ansal = p0008-ansal."comes from function module
it_final-lga01 = p0008-lga01.
* it_final-bet01 = p0008-bet01.
* it_final-bet01 = t_ppbwla-betrg.
it_final-lga02 = p0008-lga02.
it_final-bet02 = p0008-bet02.
it_final-lga03 = p0008-lga03.
it_final-bet03 = p0008-bet03.
it_final-lga04 = p0008-lga04.
it_final-bet04 = p0008-bet04.
it_final-beg008 = p0008-begda.
*data from p0032
it_final-pnalt = p0032-pnalt.
* it_final-beg032 = p0032-begda.
*data from p0065
it_final-txnum = p0065-txnum.
it_final-txlet = p0065-txlet.
it_final-txstk = p0065-txstk.
it_final-txbas = p0065-txbas.
it_final-txrfs = p0065-txrfs.
it_final-p45py = p0065-p45py.
it_final-p45tx = p0065-p45tx.
* it_final-TXRFVTRFAR = p0065-TXRFVTRFAR.
it_final-txnmb = p0065-txnmb.
it_final-beg065 = p0065-begda.
*data from p0077
it_final-racky = p0077-racky.
* it_final-beg077 = p0077-begda.
*data from p0041
it_final-dar01 = p0041-dar01.
it_final-dat01 = p0041-dat01.
it_final-dar02 = p0041-dar02.
it_final-dat02 = p0041-dat02.
it_final-dar03 = p0041-dar03.
it_final-dat03 = p0041-dat03.
it_final-dar04 = p0041-dar04.
it_final-dat04 = p0041-dat04.
it_final-dar05 = p0041-dar05.
it_final-dat05 = p0041-dat05.
it_final-dar06 = p0041-dar06.
it_final-dat06 = p0041-dat06.
it_final-dar07 = p0041-dar07.
it_final-dat07 = p0041-dat07.
it_final-dar08 = p0041-dar08.
it_final-dat08 = p0041-dat08.
* it_final-beg041 = p0041-begda.
*data from p0069
it_final-nicat = p0069-nicat.
* it_final-beg069 = p0069-begda.
IF itab-date BETWEEN pn-begda AND pn-endda."check whether the record exsist between begin and end date.
APPEND it_final.
IF p0000-aedtm GT p0000-begda OR p0001-aedtm GT p0001-begda OR p0006-aedtm GT p0006-begda
OR p0007-aedtm GT p0007-begda OR p0008-aedtm GT p0008-begda.
it_final-updte = 'U'.
it_final-chgdt = itab-date.
MODIFY it_final INDEX sy-tabix.
ENDIF.
IF r_update = 'X'.
INSERT zpayroll FROM it_final.
* modify zpayroll FROM it_final.
IF sy-subrc = 0.
COMMIT WORK.
ELSE.
UPDATE zpayroll FROM it_final.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
CLEAR it_final.
* ENDIF.
CLEAR: it_output, g_ostext, g_sstext, g_hiredt,g_flag,g_flag1.
*&---------------------------------------------------------------------*
*& End-of Selection *
*& *
*&---------------------------------------------------------------------*
END-OF-SELECTION.
IF r_update = 'X'.
PERFORM file_write.
ENDIF.
PERFORM f_generate_alv.
*&---------------------------------------------------------------------*
*& Forms *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form f_get_approver_from_HRP1001
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*FORM f_get_approver_from_hrp1001 .
*
* DATA: l_sobid1 TYPE sobid,
* l_sobid2 TYPE sobid,
* l_sobid3 TYPE sobid.
*
**Get the position of the Employee
* SELECT SINGLE sobid FROM hrp1001 INTO l_sobid1
* WHERE otype = 'P'
* AND plvar = '01'
* AND objid = pernr-pernr
* AND endda >= sy-datum
* AND begda <= sy-datum
* AND rsign = 'B'
* AND relat = '008'.
*
* IF sy-subrc EQ 0.
*
**Get the position of his superior
* SELECT SINGLE sobid FROM hrp1001 INTO l_sobid2
* WHERE otype = 'S'
* AND plvar = '01'
* AND objid = l_sobid1
* AND endda >= sy-datum
* AND begda <= sy-datum
* AND rsign = 'A'
* AND relat = '002'.
*
* IF sy-subrc EQ 0.
**Get the pernr of superior
* SELECT SINGLE sobid FROM hrp1001 INTO l_sobid3
* WHERE otype = 'S'
* AND plvar = '01'
* AND objid = l_sobid2
* AND endda >= sy-datum
* AND begda <= sy-datum
* AND rsign = 'A'
* AND relat = '008'.
*
* IF sy-subrc EQ 0.
**move ls_sobid3 to empid.
* it_output-mgrno = l_sobid3.
* ENDIF.
* ENDIF.
* ENDIF.
*ENDFORM. " f_get_approver_from_HRP1001
*&---------------------------------------------------------------------*
*& Form F_GENERATE_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_generate_alv .
g_repid = sy-repid.
PERFORM f_populate_fieldcat.
* PERFORM fill_zpayroll.
PERFORM f_call_alv.
ENDFORM. " F_GENERATE_ALV
*&---------------------------------------------------------------------*
*& Form f_populate_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_populate_fieldcat .
"Employee Number
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'PERNR'.
wa_fieldcat-seltext_l = text-001.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Update indicator
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'UPDTE'.
wa_fieldcat-seltext_l = 'Update indicator'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Date of last update
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'CHGDT'.
wa_fieldcat-seltext_l = 'Date of last update '.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"First Name
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'STAT1'.
wa_fieldcat-seltext_l = 'Company specific Status'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Last Name
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'NACHN'.
wa_fieldcat-seltext_l = text-003.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Personnel Area
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'STAT2'.
wa_fieldcat-seltext_l = 'Employment Status'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Personnel Sub Area Text
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'STAT3'.
wa_fieldcat-seltext_l = 'Special payment Status'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Employee Group
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'MASSN'.
wa_fieldcat-seltext_l = 'Personnel Action Type'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Emp SubGroup
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'MASSG'.
wa_fieldcat-seltext_l = 'Reason for Actions'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Position text
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-seltext_l = 'Personnel Area'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Birth Date
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'BTRTL'.
wa_fieldcat-seltext_l = 'Personnel Sub-area'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
* CONCATENATE text-011 '(' s_aedtm-low+6(2) '-' s_aedtm-low+4(2)
* '-' s_aedtm-low+0(4) ')' INTO l_text.
"Employee Age
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'PERSG'.
wa_fieldcat-seltext_l = 'Employee Group'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR l_text.
"Hire Date
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'PERSK'.
wa_fieldcat-seltext_l = 'Employee Group'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR l_text.
* CONCATENATE text-009 '(' s_aedtm-low+6(2) '-' s_aedtm-low+4(2)
* '-' s_aedtm-low+0(4) ')' INTO l_text.
"ABB Exp (Years)
** CLEAR wa_fieldcat.
* wa_fieldcat-tabname = it_output.
* wa_fieldcat-fieldname = 'ABB_EXP'.
* wa_fieldcat-seltext_l = l_text.
* wa_fieldcat-outputlen = 15.
* APPEND wa_fieldcat TO it_fieldcat.
* CLEAR l_text.
"Manager
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'KOSTL'.
wa_fieldcat-seltext_l = 'Cost Center'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
"Cost Center
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ABKRS'.
wa_fieldcat-seltext_l = 'Payroll Area'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ANSVH'.
wa_fieldcat-seltext_l = 'Work Contract'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ORGEH'.
wa_fieldcat-seltext_l = 'Organizational Unit'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ORGUTEXTS'.
wa_fieldcat-seltext_l = 'Org. Unit Text'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'PLANS'.
wa_fieldcat-seltext_l = 'Position'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ORGPTEXTS'.
wa_fieldcat-seltext_l = 'Position Text'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'STELL'.
wa_fieldcat-seltext_l = 'Job'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ORGDESC'.
wa_fieldcat-seltext_l = 'Description'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ABKRS'.
wa_fieldcat-seltext_l = 'Payroll frequency'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'INITS'.
wa_fieldcat-seltext_l = 'Initials'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
* CLEAR wa_fieldcat.
* wa_fieldcat-tabname = it_final.
* wa_fieldcat-fieldname = 'NACHN'.
* wa_fieldcat-seltext_l = 'Last name'.
* wa_fieldcat-outputlen = 15.
* APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'VORNA'.
wa_fieldcat-seltext_l = 'First Name'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'GESCH'.
wa_fieldcat-seltext_l = 'Gender'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'GBDAT'.
wa_fieldcat-seltext_l = 'date of Birth'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'PERID'.
wa_fieldcat-seltext_l = 'Soc/SIN/ID number'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'FAMST'.
wa_fieldcat-seltext_l = 'Marital Status'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ANRED'.
wa_fieldcat-seltext_l = 'Form of Address'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TITEL'.
wa_fieldcat-seltext_l = 'TITEL'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'GBORT'.
wa_fieldcat-seltext_l = 'Birth Place'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'NAME2'.
wa_fieldcat-seltext_l = 'Birth Name'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'NATIO'.
wa_fieldcat-seltext_l = 'Nationality'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'GBLND'.
wa_fieldcat-seltext_l = 'Country of Birth'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ANSSA'.
wa_fieldcat-seltext_l = 'Address record type'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'STRAS'.
wa_fieldcat-seltext_l = 'Address Line 1'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'LOCAT'.
wa_fieldcat-seltext_l = 'Address Line 2'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ORT01'.
wa_fieldcat-seltext_l = 'City'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'STATE'.
wa_fieldcat-seltext_l = 'State/Province'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'PSTLZ'.
wa_fieldcat-seltext_l = 'Postal Code/Zip'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'LAND1'.
wa_fieldcat-seltext_l = 'Country'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TELNR'.
wa_fieldcat-seltext_l = 'Telephone'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ENTKM'.
wa_fieldcat-seltext_l = 'Distance in km'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'BUSRT'.
wa_fieldcat-seltext_l = 'Bus Route'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'RAILW'.
wa_fieldcat-seltext_l = 'Social subscription railway'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'Z_TRANSPORT_MODE'.
wa_fieldcat-seltext_l = 'Mode of Transport'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'SCHKZ'.
wa_fieldcat-seltext_l = 'Work Schedule Rule'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'EMPCT'.
wa_fieldcat-seltext_l = 'Employment %'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'MOSTD'.
wa_fieldcat-seltext_l = 'Monthly Hours'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'WOSTD'.
wa_fieldcat-seltext_l = 'Weekly Hours'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ARBST'.
wa_fieldcat-seltext_l = 'Daily Working hrs'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'JRSTD'.
wa_fieldcat-seltext_l = 'Annual Working hrs'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TRFAR'.
wa_fieldcat-seltext_l = 'Pay scale type'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TRFGB'.
wa_fieldcat-seltext_l = 'Pay Scale Area'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TRFGR'.
wa_fieldcat-seltext_l = 'Pay Scale Group'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TRFST'.
wa_fieldcat-seltext_l = 'Pay Scale Level'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'ANSAL'.
wa_fieldcat-seltext_l = 'Annual Salary'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'LGA01'.
wa_fieldcat-seltext_l = 'LGA01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'BET01'.
wa_fieldcat-seltext_l = 'Wage Type Amount for Payments'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'LGA02 '.
wa_fieldcat-seltext_l = 'Wage Type'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'BET02'.
wa_fieldcat-seltext_l = 'Wage Type Amount for Payments'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'LGA03'.
wa_fieldcat-seltext_l = 'Wage Type'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'BET03'.
wa_fieldcat-seltext_l = 'Wage Type Amount for Payments'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'LGA04'.
wa_fieldcat-seltext_l = 'Wage Type'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'BET04'.
wa_fieldcat-seltext_l = 'Wage Type Amount for Payments'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'PNALT'.
wa_fieldcat-seltext_l = 'Previous Employment Number'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TXNUM'.
wa_fieldcat-seltext_l = 'Text number'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TXLET'.
wa_fieldcat-seltext_l = 'Tax indicator'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TXSTK'.
wa_fieldcat-seltext_l = 'On strike indicator'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TXBAS'.
wa_fieldcat-seltext_l = 'Tax basis'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TXRFS'.
wa_fieldcat-seltext_l = 'Tax refund indicator'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'P45PY'.
wa_fieldcat-seltext_l = 'P45 taxable pay'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'P45TX'.
wa_fieldcat-seltext_l = 'P45 tax paid'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'TXNMB'.
wa_fieldcat-seltext_l = 'Tax Number'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'RACKY'.
wa_fieldcat-seltext_l = 'Ethnic origin'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAR01'.
wa_fieldcat-seltext_l = 'Date Type 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAT01'.
wa_fieldcat-seltext_l = 'Date 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAR02'.
wa_fieldcat-seltext_l = 'Date Type 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAT02'.
wa_fieldcat-seltext_l = 'Date 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAR03'.
wa_fieldcat-seltext_l = 'Date Type 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAT03'.
wa_fieldcat-seltext_l = 'Date 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAR04'.
wa_fieldcat-seltext_l = 'Date Type 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAT04'.
wa_fieldcat-seltext_l = 'Date 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAR05'.
wa_fieldcat-seltext_l = 'Date Type 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAT05'.
wa_fieldcat-seltext_l = 'Date 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAR06'.
wa_fieldcat-seltext_l = 'Date Type 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAT06'.
wa_fieldcat-seltext_l = 'Date 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAR07'.
wa_fieldcat-seltext_l = 'Date Type 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAT07'.
wa_fieldcat-seltext_l = 'Date 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAR08'.
wa_fieldcat-seltext_l = 'Date Type 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = it_final.
wa_fieldcat-fieldname = 'DAT08'.
wa_fieldcat-seltext_l = 'Date 01'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
ENDFORM. " f_populate_fieldcat
*&---------------------------------------------------------------------*
*& Form F_CALL_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_call_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_top_of_page = 'TOP-OF-PAGE'
is_layout = wa_layout
it_fieldcat = it_fieldcat[]
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDFORM. " F_CALL_ALV
*&---------------------------------------------------------------------*
*& Form CALCULATE_AGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*FORM calculate_age .
*
* l_years = p_age.
**Calculate Age of the Employee ( on a given high date)
* CALL FUNCTION 'HR_ECM_ADD_PERIOD_TO_DATE'
* EXPORTING
* orig_date = p0002-gbdat
* num_days = l_days
* num_months = l_months
* num_years = l_years
* signum = '+'
* message_handler = msg_handler
* IMPORTING
* result_date = l_birth_dt.
*
* IF l_birth_dt BETWEEN s_aedtm-low AND s_aedtm-high.
** SELECT THIS PERNR FOR THE OUTPUT
* g_flag = '1'.
* ELSE.
* CLEAR g_flag.
* ENDIF.
* CLEAR: l_years,l_months,l_days.
* CLEAR l_birth_dt.
*ENDFORM. " CALCULATE_AGE
*
**&---------------------------------------------------------------------*
**& Form calculate_exp
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
** --> p1 text
** <-- p2 text
**----------------------------------------------------------------------*
*FORM calculate_exp .
*
* l_years = p_exp.
** Calculate exp of the Employee
* CALL FUNCTION 'HR_ECM_ADD_PERIOD_TO_DATE'
* EXPORTING
* orig_date = g_hiredt
* num_days = l_days
* num_months = l_months
* num_years = l_years
* signum = '+'
* message_handler = msg_handler
* IMPORTING
* result_date = l_exp_dt.
*
* IF l_exp_dt BETWEEN s_aedtm-low AND s_aedtm-high.
** SELECT THIS PERNR FOR THE OUTPUT
* g_flag1 = '1'.
* ENDIF.
*
* CLEAR: l_years,l_months,l_days.
*
*ENDFORM. " calculate_exp
*&---------------------------------------------------------------------*
*& Form GET_DETAILS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*FORM get_details .
* Calucalte Experience from start of selection period
* CALL FUNCTION 'HRCM_TIME_PERIOD_CALCULATE'
* EXPORTING
* begda = g_hiredt
* endda = s_aedtm-low
* IMPORTING
* noyrs = l_years
* nomns = l_months
* nodys = l_days
* EXCEPTIONS
* invalid_dates = 1
* overflow = 2
* OTHERS = 3.
*
* CONCATENATE l_years text-014 l_months text-015 INTO
* it_output-abb_exp SEPARATED BY space.
*
* CLEAR: l_months,l_years,l_days.
** Calucalte Age from start of selection period
* CALL FUNCTION 'HRCM_TIME_PERIOD_CALCULATE'
* EXPORTING
* begda = p0002-gbdat
* endda = s_aedtm-low
* IMPORTING
* noyrs = l_years
* nomns = l_months
* nodys = l_days
* EXCEPTIONS
* invalid_dates = 1
* overflow = 2
* OTHERS = 3.
* CONCATENATE l_years text-014 l_months text-015 INTO
* it_output-age SEPARATED BY space.
* CLEAR: l_months,l_years,l_days.
*
**Read Personnel Area Text
* SELECT SINGLE name1 FROM t500p INTO it_output-name1
* WHERE persa EQ p0001-werks.
*
**Read Personnel Subarea text
* rp-read-t001p p0001-werks p0001-btrtl space.
* MOVE : t001p-btext TO it_output-btext.
*
**Read Employee Group Text
* SELECT SINGLE ptext FROM t501t INTO it_output-ptext
* WHERE sprsl EQ sy-langu
* AND persg EQ p0001-persg.
*
**Read Employee SubGroup Text
* SELECT SINGLE ptext FROM t503t INTO it_output-ptext_s
* WHERE sprsl EQ sy-langu
* AND persk EQ p0001-persk.
*
**Read Cost Center Text
* SELECT SINGLE ktext FROM cskt INTO it_output-ktext
* WHERE kostl EQ p0001-kostl.
*
** Read Org Unit Text.
* CALL FUNCTION 'HR_READ_FOREIGN_OBJECT_TEXT'
* EXPORTING
* otype = 'O'
* objid = p0001-orgeh
* begda = p0001-begda
* endda = p0001-endda
* reference_date = p0001-begda
* IMPORTING
* object_text = g_ostext
* EXCEPTIONS
* nothing_found = 1
* wrong_objecttype = 2
* missing_costcenter_data = 3
* missing_object_id = 4
* OTHERS = 5.
* IF sy-subrc <> 0.
* CLEAR g_ostext.
* ENDIF.
*
** Read Position Text.
* CALL FUNCTION 'HR_READ_FOREIGN_OBJECT_TEXT'
* EXPORTING
* otype = 'S'
* objid = p0001-plans
* begda = p0001-begda
* endda = p0001-endda
* reference_date = p0001-begda
* IMPORTING
* object_text = g_sstext
* EXCEPTIONS
* nothing_found = 1
* wrong_objecttype = 2
* missing_costcenter_data = 3
* missing_object_id = 4
* OTHERS = 5.
* IF sy-subrc <> 0.
* CLEAR g_sstext.
* ENDIF.
*Get Manager Employee no
* PERFORM f_get_approver_from_hrp1001.
*
*ENDFORM. " GET_DETAILS
*-------------------------------------------------------------------*
* Form TOP-OF-PAGE *
*-------------------------------------------------------------------*
* ALV Report Header *
*-------------------------------------------------------------------*
FORM top-of-page.
*ALV Header declarations
DATA: ty_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
ty_line LIKE wa_header-info,
ld_lines TYPE i,
ld_objects(10) TYPE c.
* Title
wa_header-typ = 'H'.
wa_header-info = text-016.
APPEND wa_header TO ty_header.
CLEAR wa_header.
* Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
APPEND wa_header TO ty_header.
CLEAR: wa_header.
*Time
wa_header-typ = 'S'.
wa_header-key = 'Time: '.
wa_header-info = sy-uzeit.
CONCATENATE sy-uzeit(2) ':'
sy-uzeit+2(2) ':'
sy-uzeit+4(2) INTO wa_header-info. "Time
APPEND wa_header TO ty_header.
CLEAR: wa_header.
* User
wa_header-typ = 'S'.
wa_header-key = 'User: '.
wa_header-info = sy-uname.
APPEND wa_header TO ty_header.
CLEAR: wa_header.
* Total No. of Records Selected
DESCRIBE TABLE it_final LINES ld_lines.
ld_objects = ld_lines.
CONCATENATE 'Total No. of Records Selected: ' ld_objects
INTO ty_line SEPARATED BY space.
wa_header-typ = 'A'.
wa_header-info = ty_line.
APPEND wa_header TO ty_header.
CLEAR: wa_header, ty_line.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = ty_header.
ENDFORM. "top-of-page
*&---------------------------------------------------------------------*
*& Form fill_zpayroll
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*FORM fill_zpayroll .
* LOOP AT it_final.
* INSERT zpayroll FROM it_final.
* IF sy-subrc = 0.
* COMMIT WORK.
* ENDIF.
* ENDLOOP.
*ENDFORM. " fill_zpayroll
*&---------------------------------------------------------------------*
*& Form get_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_orgtext .
DATA: pruorgdata TYPE pruorgdata ,
pruorgtext TYPE pruorgtext.
pruorgdata-pernr = p0001-pernr.
pruorgdata-ondat = pn-endda.
pruorgdata-orgeh = p0001-orgeh.
pruorgdata-persk = p0001-persk.
pruorgdata-plans = p0001-plans.
pruorgdata-otype = p0001-otype.
pruorgdata-stell = p0001-stell.
pruorgdata-bukrs = p0001-bukrs.
pruorgdata-werks = p0001-werks.
pruorgdata-btrtl = p0001-btrtl.
pruorgdata-persg = p0001-persg.
CALL FUNCTION 'HR_RU_GET_ORGTEXTS'
EXPORTING
pruorgdata = pruorgdata
sprsl = 'E'
IMPORTING
pruorgtext = pruorgtext.
IF sy-subrc = 0.
it_final-orgutexts = pruorgtext-orgtx_short.
it_final-orgptexts = pruorgtext-plstx_short.
it_final-orgdesc = pruorgtext-stltx_short.
ENDIF.
ENDFORM. " get_text
*&---------------------------------------------------------------------*
*& Form get_ansal
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_ansal .
CALL FUNCTION 'RP_ANSAL_FROM_PERNR'
EXPORTING
f_date = pn-endda
f_tclas = 'A'
f_pernr = p0008-pernr
IMPORTING
f_ansal = f_ansal
EXCEPTIONS
internal_error = 1
error_read_0001 = 2
error_read_0008 = 3
error_at_indirect_evaluation = 4
currency_conversion_error = 5
OTHERS = 6.
IF sy-subrc = 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* else.
* it_final-ansal = f_ansal.
ENDIF.
ENDFORM. " get_ansal
*&---------------------------------------------------------------------*
*& Form wege_type
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM wege_type .
CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE'
EXPORTING
* APPLI = 'E'
begda = p0008-begda
endda = p0008-endda
infty = '0008'
* OBJPS = ' '
* TCLAS = 'A'
pernr = p0008-pernr
* SEQNR = ' '
* SUBTY = '0 '
* DLSPL = 'X'
* MSGFLG = ''
* NORDCT = ''
* CONV_CURR = 'X'
* FLAG_NO_DB_READ =
TABLES
ppbwla = t_ppbwla
* PP0001 =
* PP0007 =
* PP0008 =
* PP0014 =
* PP0015 =
* PP0052 =
* PP0230 =
* PP0267 =
* PPNNNN_TAB =
EXCEPTIONS
error_at_indirect_evaluation = 1
OTHERS = 2
.
IF sy-subrc = 0.
SORT t_ppbwla DESCENDING BY lgart endda.
ENDIF.
ENDFORM. " wege_type
*&---------------------------------------------------------------------*
*& Form file_write
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text<-- p2 text
----
FORM file_write .
LOOP AT it_final.
MOVE-CORRESPONDING it_final TO it_itab.
APPEND it_itab.
CLEAR it_itab.
ENDLOOP.
OPEN DATASET dataset FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
LOOP AT it_itab INTO wa_itab.
TRANSFER wa_itab TO dataset.
ENDLOOP.
CLOSE DATASET dataset.
ENDFORM. " file_write