Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

About HR Module

Former Member
0 Kudos
98

Hi Gurus,

I have an object in SAP-HR module. so i want to know about HR module. what is the flow? what are the T-Codes? what are the Tables used?

1 ACCEPTED SOLUTION

sharadendu_agrawal
Active Participant
0 Kudos
51

refer to the wesite www.erpgenie.com.

Cheers,

Sharadendu

4 REPLIES 4

sharadendu_agrawal
Active Participant
0 Kudos
52

refer to the wesite www.erpgenie.com.

Cheers,

Sharadendu

Former Member
0 Kudos
51

Hi Gopi,

In HR all PA* tables are usedd. All HRP* tables and all PA* transactions used.

Regards,

Atish

Former Member
0 Kudos
51

Hi

HR:

HR deals with the INFOTYPES which are similar to Tables in General ABAP.

There are different ways of fetching data from these infotypes.

There are different areas in HR LIKE Personal Admn, Orgn Management, Benefits, Time amangement, Event Management, Payroll etc

Infotypes for these areas are different from one another area.

storing of records data in each type of area is different

LDBS like PNP are used in HR programing.

Instead of Select.. we use some ROUTINES and PROVIDE..ENDPROVIDE.. etc

and in the case of Pay roll we use Clusters and we Import and Export them for data fetching.

On the whole Normal ABAP is different from HR abap.

For Personal Admn the Infotypes start with PA0000 to PA1999

Time Related Infotypes start with PA2000 to PA2999.

Orgn related Infotypes start with HRP1000 to HRP1999.

All custom developed infotypes stsrat with PA9000 onwards.

In payroll processing we use Clusters like PCL1,2,3 and 4.

Instead of Select query we use PROVIDE and ENDPROVIDE..

You have to assign a Logical Database in the attributes PNP.

Go through the SAp doc for HR programming and start doing.

http://www.sapdevelopment.co.uk/hr/hrhome.htm

See:

http://help.sap.com/saphelp_46c/helpdata/en/4f/d5268a575e11d189270000e8322f96/content.htm

see the sample HR report:

report zporgr0030

line-size 193

line-count 60(1)

no standard page heading

message-id zndc.

***********************************************************************

  • Database Tables

***********************************************************************

tables: pernr, " Logical PNP

t001p, " Personnel Subarea

t005t, " Country Descriptions

t500p, " Personnel Area

t501, " Employee Group

t503k, " Employee Subgroup

csks, " Cost Centers

cskt, " Cost Center Texts

t513c, " Job (Previous) Texts

t513s, " Job Titles

t517t, " Edn Est.Text

t518b, " Discipline Text

t519t, " Certificate Text

t528t, " Positions Texts

t538t, " Unit Text

pa0003. " Payroll Status

infotypes:

0000, " Actions

0001, " Organizational Assignment

0002, " Personal Data

0007, " Planned working time

0008, " Payroll Data

0022, " Education Data

0023, " Previous Employer data

0025, " Performance Appraisal Data

0041, " Date Spcifications

2001. " Absences

***********************************************************************

  • Declaration of Internal Tables

***********************************************************************

  • Internal Table for Personal Data

data: begin of pers_tab occurs 0,

pernr like pa0001-pernr, " Personal Number

ename like pa0001-ename, " Employee Name

trfgr like pa0008-trfgr, " Grade

natio like pa0002-natio, " Nationality

hdate like pa0041-dat01, " Hire Date

gbdat like pa0002-gbdat, " Birth Date

plans like pa0001-plans, " Position

werks like pa0001-werks, " Pers.Area

kostl like pa0001-kostl, " Cost Center

ctext(40), " Cost Center Text

ptext(25), " Position Text

ntext(15), " Nation Text

name1(23), " Location

end of pers_tab.

  • Internal Table for Payroll Data

data: begin of pay_tab occurs 0,

pernr like pa0008-pernr, " Personal Number

waers like pbwla-waers, " Grade

basic like pa0008-bet01, " Basic Pay

hra_allow like pa0008-bet01, " Housing Allowance

sup_allow like pa0008-bet01, " Supp. Allowance

soc_allow like pa0008-bet01, " Social Allowance

chl_allow like pa0008-bet01, " Child Allowance

fix_allow like pa0008-bet01, " Fixed Overtime

ra_allow like pa0008-bet01, " RA Allowance

per_allow like pa0008-bet01, " Perform. Allowance

pen_allow like pa0008-bet01, " Pension Allowance

oth_allow like pa0008-bet01, " Other Allowances

tot_allow like pa0008-bet01, " Total Allowances

end of pay_tab.

  • Internal Table for Educational Data

data: begin of edn_tab occurs 0,

pernr like pa0022-pernr, " Personal Number

ausbi like pa0022-ausbi, " Discipline Name

slart like pa0022-slart, " Edn Establishment

insti like pa0022-insti, " Institute

sland like pa0022-sland, " Country

slabs like pa0022-slabs, " Certificate

anzkl like pa0022-anzkl, " Duration

anzeh like pa0022-anzeh, " Unit for Duration

atext like t518b-atext, " Discipline Text

stext like t517t-stext, " Edn Est.Text

landx like t005t-landx, " Country Text

ctext like t519t-stext, " Certificate Text

etext like t538t-etext, " Unit Text

end of edn_tab.

  • Internal Table for Previous Employment Data

data: begin of pemp_tab occurs 0,

pernr like pa0023-pernr, " Personal Number

arbgb like pa0023-arbgb, " Previous Employer

begda like pa0023-begda, " Start Date

endda like pa0023-endda, " End Date

taete like pa0023-taete, " Last Position

land1 like pa0023-land1, " Country

stltx like t513s-stltx, " Position Text

landx like t005t-landx, " Country Text

end of pemp_tab.

  • Internal Table for Job History Data

data: begin of job_tab occurs 0,

pernr like pa0001-pernr, " Personal Number

begda like pa0001-begda, " Promotion Date

plans like pa0001-plans, " Position

stell like pa0001-stell, " Job Key

stltx like t513s-stltx, " Job Text

ptext like t528t-plstx, " Position Text

end of job_tab.

  • Internal Table for Performance Appraisal Data

data: begin of app_tab occurs 0,

pernr like pa0001-pernr, " Personal Number

year(4) type c, " Current Year

appr(35) type c, " C Y Appraisal

  • year1(4) type c, " Last Year

  • appr1(35) type c, " Last Year Appraisal

  • year2(4) type c,

  • appr2(35) type c,

  • year3(4) type c,

  • appr3(35) type c,

  • year4(4) type c,

  • appr4(35) type c,

end of app_tab.

  • Internal Table for Performance Appraisal Data

data: begin of app1_tab occurs 0,

year(4) type c, " Year

appr(35) type c, " Appraisal

end of app1_tab.

  • Internal Table to get the Payroll Amounts

data wage_tab like pbwla occurs 0 with header line.

  • Internal table for retreiving Employee Appraisals

data app_in_tab like hrsobid occurs 0 with header line .

data app_out_tab like hrpe_profa occurs 0 with header line .

***********************************************************************

  • Declaration of Variables

***********************************************************************

data : v_year(4) type c,

v_ayear(4) type c,

v_cyear(4) type c,

v_year1(4) type c,

v_year2(4) type c,

v_year3(4) type c,

v_year4(4) type c,

v_year5(4) type c,

v_year6(4) type c,

v_mon(2) type c,

v_date2 like sy-datum,

v_date3 like sy-datum,

v_date like sy-datum,

v_date1 like sy-datum.

***********************************************************************

  • Declaration of Constants

***********************************************************************

constants : c_x type c value 'X', " Sign

c_pernr(8) type n value '00000000', " Pernr

c_p like hrp1007-otype value 'P', " Object Type

c_01 like hrp1001-plvar value '01', " Version

c_val1(2) type c value '31', " Date Type

c_val2(2) type c value '12', " Date Type

c_val like p0041-dar01 value '01', " Date Type

c_1 like pernr-persg value '1', " Emp Group

c_type like hrp1001-otype value 'S', " Object Type

c_date1 like sy-datum value '18000101', " Date

c_date2 like sy-datum value '99991231', " Date

c_lga01 like pa0008-lga01 value '0101', " Wage Type

c_lga02 like pa0008-lga01 value '0102', " Wage Type

c_lga03 like pa0008-lga01 value '0103', " Wage Type

c_lga04 like pa0008-lga01 value '0105', " Wage Type

c_lga05 like pa0008-lga01 value '0109', " Wage Type

c_lga06 like pa0008-lga01 value '0110', " Wage Type

c_lga07 like pa0008-lga01 value '0114', " Wage Type

c_lga08 like pa0008-lga01 value '0116', " Wage Type

c_lga09 like pa0008-lga01 value '0267', " Wage Type

c_kokrs like cskt-kokrs value '1000'. " Controlling Area

***********************************************************************

  • Selection Screen

***********************************************************************

selection-screen begin of block b1 with frame title text-003.

selection-screen begin of line.

selection-screen comment 1(33) text-060.

parameters: r_all radiobutton group rb1.

selection-screen end of line.

selection-screen begin of line.

selection-screen comment 1(33) text-020.

parameters: r_per radiobutton group rb1.

selection-screen end of line.

selection-screen begin of line.

selection-screen comment 1(33) text-021.

parameters: r_pay radiobutton group rb1.

selection-screen end of line.

selection-screen begin of line.

selection-screen comment 1(33) text-022.

parameters: r_edn radiobutton group rb1.

selection-screen end of line.

selection-screen begin of line.

selection-screen comment 1(33) text-023.

parameters: r_pemp radiobutton group rb1.

selection-screen end of line.

selection-screen begin of line.

selection-screen comment 1(33) text-024.

parameters: r_job radiobutton group rb1.

selection-screen end of line.

selection-screen begin of line.

selection-screen comment 1(33) text-025.

parameters: r_app radiobutton group rb1.

selection-screen end of line.

selection-screen end of block b1.

***********************************************************************

  • At selection-screen

***********************************************************************

at selection-screen.

  • Validate the Selection Screen fields

perform validate_screen.

***********************************************************************

  • Start-of-Selection

***********************************************************************

start-of-selection.

  • Selection of Period

perform get_period.

  • Get PERNR from LDB

get pernr.

if pernr-persg eq c_1 or pernr-pernr ne c_pernr.

if r_all eq c_x.

  • Get the Personal data from PA0001,PA0002, PA0008, PA0041

perform get_pers_data.

  • Get the Payroll data from PA0008

perform get_pay_data.

  • Get the Education data from PA0022

perform get_edn_data.

  • Get the Previous Employment data from PA0023

perform get_pemp_data.

  • Get the Job History data

perform get_job_data.

  • Get the Performance Appraisal data

perform get_app_data.

elseif r_per eq c_x.

  • Get the Personal data from PA0001,PA0002, PA0008, PA0041

perform get_pers_data.

elseif r_pay eq c_x.

  • Get the Payroll data from PA0008

perform get_pay_data.

elseif r_edn eq c_x.

  • Get the Education data from PA0022

perform get_edn_data.

elseif r_pemp eq c_x.

  • Get the Previous Employment data from PA0023

perform get_pemp_data.

elseif r_job eq c_x.

  • Get the Job History data

perform get_job_data.

elseif r_app eq c_x.

  • Get the Performance Appraisal data

perform get_app_data.

endif.

endif.

***********************************************************************

  • Top-of-page

***********************************************************************

top-of-page.

  • Write the Report and Column Headings

perform top_of_page.

***********************************************************************

  • End-of-Page

***********************************************************************

end-of-page.

perform end_of_page.

***********************************************************************

  • End-of-Selection

***********************************************************************

end-of-selection.

  • Display the Output Report.

perform display_report.

***********************************************************************

  • Form-Routines

***********************************************************************

&----


*& Form validate_screen

&----


  • Validation of selection Screen fields

----


form validate_screen.

  • Validation of Personnel Number

clear pa0003.

if not pnppernr[] is initial.

select pernr

from pa0003 up to 1 rows

into pa0003-pernr

where pernr in pnppernr.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Personnel Number Entered'(001).

endif.

endif.

  • Validation of Cost Center

clear csks.

if not pnpkostl[] is initial.

select single kostl

into csks-kostl

from csks

where kostl in pnpkostl.

if sy-subrc <> 0.

message e999 with 'Invalid Cost Center'(002).

endif.

endif.

  • Validation of Personnel Area

clear t500p.

if not pnpwerks[] is initial.

select persa

from t500p up to 1 rows

into t500p-persa

where persa in pnpwerks.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Personnel Area Entered'(004).

endif.

endif.

  • Validation of Personnel Sub Area

clear t001p.

if not pnpbtrtl[] is initial.

select btrtl

from t001p up to 1 rows

into t001p-btrtl

where btrtl in pnpbtrtl.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Personnel Sub Area Entered'(005).

endif.

endif.

  • Validation of Employee Group

clear t501.

if not pnppersg[] is initial.

select persg

from t501 up to 1 rows

into t501-persg

where persg in pnppersg.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Employee Group Entered'(006).

endif.

endif.

  • Validation of Employee Sub Group

clear t503k.

if not pnppersk[] is initial.

select persk

from t503k up to 1 rows

into t503k-persk

where persk in pnppersk.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Employee Sub Group Entered'(007).

endif.

endif.

endform. "validate_screen

&----


*& Form get_period

&----


  • Get the Correct Period based on Selection screen selection

----


form get_period.

clear: v_year,v_mon, v_date, v_date1.

v_year = sy-datum+0(4).

v_mon = sy-datum+4(2).

if pnptimr1 = c_x. " Current Date

pnpbegda = sy-datum.

pnpendda = sy-datum.

elseif pnptimr2 = c_x. " Current Month

concatenate v_year v_mon c_val into v_date.

concatenate v_year v_mon c_val1 into v_date1.

pnpbegda = v_date.

pnpendda = v_date1.

elseif pnptimr3 = c_x. " Current Year

concatenate v_year c_val c_val into v_date.

concatenate v_year c_val2 c_val1 into v_date1.

pnpbegda = v_date.

pnpendda = v_date1.

elseif pnptimr4 = c_x. " Upto Today

pnpbegda = c_date1.

pnpendda = sy-datum.

elseif pnptimr5 = c_x. " From Today

pnpbegda = sy-datum.

pnpendda = c_date2.

else.

if ( pnpbegda is initial and pnpendda is initial ).

pnpbegda = c_date1.

pnpendda = c_date2.

elseif pnpbegda is initial and not pnpendda is initial.

pnpbegda = c_date1.

pnpendda = pnpendda.

elseif not ( pnpbegda is initial and pnpendda is initial ).

pnpbegda = pnpbegda.

pnpendda = pnpendda.

endif.

endif.

endform. "get_period

&----


*& Form get_pers_data

&----


  • Get the Personal Data from PA0001,PA0002,PA0008, PA0041

----


form get_pers_data.

  • Get data from Respective Infotypes

rp_provide_from_last p0001 space pnpbegda pnpendda.

rp_provide_from_last p0002 space pnpbegda pnpendda.

rp_provide_from_last p0008 space pnpbegda pnpendda.

rp_provide_from_last p0041 space pnpbegda pnpendda.

pers_tab-pernr = p0001-pernr.

pers_tab-ename = p0001-ename.

pers_tab-werks = p0001-werks.

pers_tab-plans = p0001-plans.

pers_tab-kostl = p0001-kostl.

pers_tab-gbdat = p0002-gbdat.

pers_tab-trfgr = p0008-trfgr.

  • Get the Engaged Date

read table p0041 with key dar01 = c_val.

if sy-subrc = 0.

pers_tab-hdate = p0041-dat01.

endif.

  • Get the Cost Center Text

clear cskt-ltext.

select single ltext into cskt-ltext from cskt

where spras = sy-langu and

kokrs = c_kokrs and

kostl = p0001-kostl.

if sy-subrc = 0.

pers_tab-ctext = cskt-ltext.

endif.

  • Get the Position Text

clear t528t-plstx.

select single plstx into t528t-plstx from t528t

where plans = p0001-plans and

otype = c_type and

sprsl = sy-langu.

if sy-subrc = 0.

pers_tab-ptext = t528t-plstx.

endif.

  • Get the Nationality

clear t005t-natio.

select single natio into t005t-natio from t005t

where spras = sy-langu and

land1 = p0002-natio.

if sy-subrc = 0.

pers_tab-ntext = t005t-natio.

endif.

  • Get the Location (Personal Area) Text

clear t500p-name1.

select single name1 into t500p-name1 from t500p

where persa = p0001-werks.

if sy-subrc = 0.

pers_tab-name1 = t500p-name1.

endif.

append pers_tab.

clear pers_tab.

sort pers_tab by pernr.

endform. "get_pers_data

&----


*& Form get_pay_data

&----


  • Get the Payroll Data from Infotype 0008

----


form get_pay_data.

  • Get the Payroll data from Respective Infotypes

rp_provide_from_last p0008 space pnpbegda pnpendda.

pay_tab-pernr = pernr-pernr.

call function 'RP_FILL_WAGE_TYPE_TABLE_EXT'

exporting

appli = 'E'

begda = p0008-begda

endda = p0008-endda

infty = '0008'

objps = ' '

tclas = 'A'

pernr = pernr-pernr

seqnr = ' '

subty = '0 '

dlspl = 'X'

msgflg = ''

nordct = ''

tables

pp0001 = p0001

pp0007 = p0007

pp0008 = p0008

ppbwla = wage_tab

  • PP0230 =

  • PP0014 =

  • PP0015 =

  • PP0052 =

  • EXCEPTIONS

  • ERROR_AT_INDIRECT_EVALUATION = 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.

loop at wage_tab.

pay_tab-waers = wage_tab-waers.

case wage_tab-lgart.

when c_lga01.

pay_tab-basic = wage_tab-betrg.

when c_lga02.

pay_tab-sup_allow = wage_tab-betrg.

when c_lga03.

pay_tab-hra_allow = wage_tab-betrg.

when c_lga04.

pay_tab-chl_allow = wage_tab-betrg.

when c_lga05.

pay_tab-soc_allow = wage_tab-betrg.

when c_lga06.

pay_tab-fix_allow = wage_tab-betrg.

when c_lga07.

pay_tab-ra_allow = wage_tab-betrg.

when c_lga08.

pay_tab-per_allow = wage_tab-betrg.

when c_lga09.

pay_tab-pen_allow = wage_tab-betrg.

when others.

pay_tab-oth_allow = pay_tab-oth_allow + wage_tab-betrg.

endcase.

pay_tab-tot_allow = pay_tab-basic + pay_tab-sup_allow +

pay_tab-hra_allow + pay_tab-chl_allow +

pay_tab-soc_allow + pay_tab-fix_allow +

pay_tab-ra_allow + pay_tab-per_allow +

pay_tab-oth_allow - pay_tab-pen_allow.

endloop.

append pay_tab.

clear pay_tab.

endform. "get_pay_data

&----


*& Form get_edn_data

&----


  • Get the Education Data from Infotype 0022

----


form get_edn_data.

  • Get the Education data from Respective Infotypes

loop at p0022 where pernr = pernr-pernr.

edn_tab-pernr = pernr-pernr.

edn_tab-ausbi = p0022-ausbi.

edn_tab-slart = p0022-slart.

edn_tab-insti = p0022-insti.

edn_tab-sland = p0022-sland.

edn_tab-slabs = p0022-slabs.

edn_tab-anzkl = p0022-anzkl.

edn_tab-anzeh = p0022-anzeh.

  • Get the Discipline Text

clear t518b-atext.

select single atext into t518b-atext from t518b

where langu = sy-langu and

ausbi = p0022-ausbi.

if sy-subrc = 0.

edn_tab-atext = t518b-atext.

endif.

  • Get the Edn Establishment Text

clear t517t-stext.

select single stext into t517t-stext from t517t

where slart = p0022-slart and

sprsl = sy-langu.

if sy-subrc = 0.

edn_tab-stext = t517t-stext.

endif.

  • Get the Certificate Text

clear t519t-stext.

select single stext into t519t-stext from t519t

where slabs = p0022-slabs and

sprsl = sy-langu.

if sy-subrc = 0.

edn_tab-ctext = t519t-stext.

endif.

  • Get the Unit Text

clear t538t-etext.

select single etext into t538t-etext from t538t

where zeinh = p0022-anzeh and

sprsl = sy-langu.

if sy-subrc = 0.

edn_tab-etext = t538t-etext.

endif.

  • Get the Country Description

clear t005t-landx.

select single landx into t005t-landx from t005t

where spras = sy-langu and

land1 = p0022-sland.

if sy-subrc = 0.

edn_tab-landx = t005t-landx.

endif.

append edn_tab.

clear edn_tab.

endloop.

endform. "edn_data

&----


*& Form get_pemp_data

&----


  • Get the Previous Employment Data from Infotype 0023

----


form get_pemp_data.

  • Get the Previous Employment data from Respective Infotypes

loop at p0023 where pernr = pernr-pernr.

pemp_tab-pernr = pernr-pernr.

pemp_tab-arbgb = p0023-arbgb.

pemp_tab-begda = p0023-begda.

pemp_tab-endda = p0023-endda.

pemp_tab-taete = p0023-taete.

pemp_tab-land1 = p0023-land1.

  • Get the Last Job Text

clear t513c-ltext.

select single ltext into t513c-ltext from t513c

where taete = pemp_tab-taete and

spras = sy-langu.

if sy-subrc = 0.

pemp_tab-stltx = t513c-ltext.

endif.

  • Get the Country Description

clear t005t-landx.

select single landx into t005t-landx from t005t

where spras = sy-langu and

land1 = pemp_tab-land1.

if sy-subrc = 0.

pemp_tab-landx = t005t-landx.

endif.

append pemp_tab.

clear pemp_tab.

endloop.

sort pemp_tab by pernr.

endform. "pemp_data

&----


*& Form get_job_data

&----


  • Get the Job History Data from Infotype

----


form get_job_data.

  • Get the Job History data from Respective Infotypes

loop at p0001 where pernr = pernr-pernr.

job_tab-pernr = pernr-pernr.

job_tab-begda = p0001-begda.

job_tab-plans = p0001-plans.

job_tab-stell = p0001-stell.

  • Get the Last Job Text

clear t513s-stltx.

select single stltx into t513s-stltx from t513s

where stell = job_tab-stell and

sprsl = sy-langu.

if sy-subrc = 0.

job_tab-stltx = t513s-stltx.

endif.

  • Get the Position Text

clear t528t-plstx.

select single plstx into t528t-plstx from t528t

where plans = job_tab-plans and

otype = c_type and

sprsl = sy-langu.

if sy-subrc = 0.

job_tab-ptext = t528t-plstx.

endif.

append job_tab.

clear job_tab.

endloop.

sort job_tab by pernr.

endform. "get_job_data

&----


*& Form get_app_data

&----


  • Get the Performance Appraisal Data from Infotype

----


form get_app_data.

clear: v_cyear, v_year1, v_year2, v_year3, v_year4,

v_year5, v_year6, v_ayear, v_date2, v_date3.

v_cyear = sy-datum+0(4) - 1.

v_year1 = v_cyear - 1.

v_year2 = v_cyear - 2.

v_year3 = v_cyear - 3.

v_year4 = v_cyear - 4.

v_year5 = v_cyear - 5.

v_year6 = v_cyear - 6.

concatenate v_cyear c_date2+4(4) into v_date2.

concatenate v_year6 c_date1+4(4) into v_date3.

clear: app_in_tab, app_out_tab.

refresh: app_in_tab, app_out_tab.

app_in_tab-plvar = c_01.

app_in_tab-otype = c_p.

app_in_tab-sobid = pernr-pernr.

append app_in_tab.

  • Get Appraisals data from Respective Infotypes

call function 'RHPA_APPRAISEES_APP_READ'

exporting

begda = v_date3

endda = v_date2

  • WITH_STEXT = 'X'

  • WITH_ADD_INFO = 'X'

tables

appraisees = app_in_tab

appraisals = app_out_tab

exceptions

no_authority = 1

undefined = 2

others = 3

.

if sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

sort app_out_tab by sobid vbegd vendd appraisal_adate descending .

delete adjacent duplicates from app_out_tab

comparing sobid vbegd vendd.

loop at app_out_tab where appraisal_histo = 'X' .

condense app_out_tab-appraisal_result.

app1_tab-year = app_out_tab-vendd+0(4).

app1_tab-appr = app_out_tab-appraisal_result_text.

append app1_tab.

clear app1_tab.

endloop.

sort app1_tab by year descending.

loop at app1_tab.

app_tab-pernr = pernr-pernr.

move-corresponding app1_tab to app_tab.

append app_tab.

clear: app1_tab, app_tab.

endloop.

refresh app1_tab.

sort app_tab by pernr.

delete app_tab where year = ' ' and appr = ' ' .

endform. "get_app_data

&----


*& Form top_of_page

&----


  • Write the Report and Column Headings

----


form top_of_page.

skip.

format color col_heading on.

if r_all eq c_x.

write: /1(193) 'NATIONAL DRILLING COMPANY'(009) centered,

/1(193) 'Employee Details Report'(066) centered.

elseif r_per eq c_x.

write: /1(193) 'NATIONAL DRILLING COMPANY'(009) centered,

/1(193) 'Employee Details - Personal Data'(010)

centered.

elseif r_pay eq c_x.

write: /1(172) 'NATIONAL DRILLING COMPANY'(009) centered,

/1(172) 'Employee Details - Payroll Data'(027)

centered.

elseif r_edn eq c_x.

write: /1(172) 'NATIONAL DRILLING COMPANY'(009) centered,

/1(172) 'Employee Details - Education Data'(028)

centered.

elseif r_pemp eq c_x.

write: /1(97) 'NATIONAL DRILLING COMPANY'(009) centered,

/1(97) 'Employee Details - Previous Employment Data'(029)

centered.

elseif r_job eq c_x.

write: /1(75) 'NATIONAL DRILLING COMPANY'(009) centered,

/1(75) 'Employee Details - Job History Data'(030)

centered.

elseif r_app eq c_x.

write: /1(192) 'NATIONAL DRILLING COMPANY'(009) centered,

/1(192) 'Employee Details - Performance Appraisal Data'(031)

centered.

endif.

format color off.

if pnptimr1 = c_x. " Current Date

write: /2 'Period From :'(008), sy-datum,

'To:'(019), sy-datum.

elseif pnptimr2 = c_x. " Current Month

write: /2 'Period From :'(008), v_date, 'To:'(019), v_date1.

elseif pnptimr3 = c_x. " Current Year

write: /2 'Period From :'(008), v_date, 'To:'(019), v_date1.

elseif pnptimr4 = c_x. " Upto Today

write: /2 'Period From :'(008), c_date1, 'To:'(019), sy-datum.

elseif pnptimr5 = c_x. " From Today

write: /2 'Period From :'(008), sy-datum, 'To:'(019), c_date2.

else.

if ( pnpbegda is initial and pnpendda is initial ).

write: /2 'Period From :'(008), c_date1, 'To:'(019), c_date2.

elseif pnpbegda is initial and not pnpendda is initial.

write: /2 'Period From :'(008), c_date1, 'To:'(019), pnpendda.

elseif not ( pnpbegda is initial and pnpendda is initial ).

write: /2 'Period From :'(008), pnpbegda,

'To:'(019), pnpendda.

endif.

endif.

if not ( r_pemp eq c_x or r_job eq c_x ).

write: 140 'Report Run Date:'(073), sy-datum.

if not pnpkostl[] is initial.

if pnpkostl-high is initial.

write: /2 'Cost Center :'(074), pnpkostl-low,

125 'Time :'(075), sy-uzeit.

else.

write: /2 'Cost Center From:'(076), pnpkostl-low+7(3),

'To:'(019), pnpkostl-high,

140 'Time :'(075), sy-uzeit.

endif.

else.

write: /140 'Time :'(075), sy-uzeit.

endif.

if not pnppernr[] is initial.

if pnppernr-high is initial.

write: /2 'Personal Number :'(077), pnppernr-low,

140 'User :'(078), sy-uname.

else.

write: /2 'Personal No.From:'(079), pnppernr-low,

'To:'(019), pnppernr-high,

140 'User :'(078), sy-uname.

endif.

else.

write: /140 'User :'(078), sy-uname.

endif.

write: /140 'Page No :'(080), sy-pagno.

else.

write: 48 'Report Run Date:'(073), sy-datum.

if not pnpkostl[] is initial.

if pnpkostl-high is initial.

write: /2 'Cost Center :'(074), pnpkostl-low,

48 'Time :'(075), sy-uzeit.

else.

write: /2 'Cost Center From:'(076), pnpkostl-low+7(3),

'To:'(019), pnpkostl-high,

48 'Time :'(075), sy-uzeit.

endif.

else.

write: /48 'Time :'(075), sy-uzeit.

endif.

if not pnppernr[] is initial.

if pnppernr-high is initial.

write: /2 'Personal Number :'(077), pnppernr-low,

48 'User :'(078), sy-uname.

else.

write: /2 'Personal No.From:'(079), pnppernr-low,

'To:'(019), pnppernr-high,

48 'User :'(078), sy-uname.

endif.

else.

write: /48 'User :'(078), sy-uname.

endif.

write: /48 'Page No :'(080), sy-pagno.

endif.

skip.

if r_per eq c_x.

write /1(193) sy-uline.

format color col_heading on.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(40) 'Name'(012) centered,

53 sy-vline, 54(8) 'Grade'(013) centered,

62 sy-vline, 63(15) 'Nationality'(017) centered,

78 sy-vline, 79(10) 'Eng.Date'(014) centered,

89 sy-vline, 90(10) 'Birth Date'(016) centered,

100 sy-vline,101(25) 'Location'(026) centered,

126 sy-vline,127(25) 'Position'(015) centered,

152 sy-vline,153(40) 'Division'(018) centered,

193 sy-vline.

format color off.

write /1(193) sy-uline.

elseif r_pay eq c_x.

write /1(188) sy-uline.

format color col_heading on.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(15) 'Basic'(033) centered,

28 sy-vline, 29(15) 'Housing Allow.'(034) centered,

44 sy-vline, 45(15) 'Sup.Allow.'(035) centered,

60 sy-vline, 61(15) 'Social Allow.'(036) centered,

76 sy-vline, 77(15) 'Child Allow.'(037) centered,

92 sy-vline, 93(15) 'Fixed Overtime'(038) centered,

108 sy-vline,109(15) 'R.A.Allow.'(041) centered,

124 sy-vline,125(15) 'Perform.Allow.'(039) centered,

140 sy-vline,141(15) 'Pension.Allow.'(059) centered,

156 sy-vline,157(15) 'Others'(040) centered,

172 sy-vline,173(15) 'Total'(042) centered,

188 sy-vline.

format color off.

write /1(188) sy-uline.

elseif r_edn eq c_x.

write /1(172) sy-uline.

format color col_heading on.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(25) 'Discipline'(043) centered,

38 sy-vline, 39(20) 'Edu.Establishment'(044) centered,

59 sy-vline, 60(45) 'Institute'(045) centered,

105 sy-vline,106(15) 'Country'(046) centered,

121 sy-vline,122(30) 'Certificate'(047) centered,

152 sy-vline,153(19) 'Duration of Course'(048) centered,

172 sy-vline.

format color off.

write /1(172) sy-uline.

elseif r_pemp eq c_x.

write /1(97) sy-uline.

format color col_heading on.

write:/1 sy-vline, 12 sy-vline,

33 sy-vline, 34(21) 'Employment Period'(055) centered,

55 sy-vline, 81 sy-vline,

97 sy-vline.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(20) 'Employer'(049) centered,

33 sy-vline, 34(10) 'From'(050) centered,

44 sy-vline, 45(10) 'To'(051) centered,

55 sy-vline, 56(25) 'Last Position'(052) centered,

81 sy-vline, 82(15) 'Country'(053) centered,

97 sy-vline.

format color off.

write /1(97) sy-uline.

elseif r_job eq c_x.

write /1(75) sy-uline.

format color col_heading on.

write:/1 sy-vline,

12 sy-vline,13(10) 'Date of'(054) centered,

23 sy-vline,49 sy-vline,

75 sy-vline.

write:/1 sy-vline,2(10) 'Employee #'(011),

12 sy-vline,13(10) 'Upgrading/'(058) centered,

23 sy-vline,24(25) 'Position'(015) centered,

49 sy-vline,50(25) 'Job'(056) centered,

75 sy-vline.

write:/1 sy-vline, 12 sy-vline,

13(10) 'Promotion'(057) centered,

23 sy-vline, 49 sy-vline,

75 sy-vline.

format color off.

write /1(75) sy-uline.

elseif r_app eq c_x.

format color col_heading on.

write: /1 sy-vline,2(56) sy-uline, 58 sy-vline,

/1 sy-vline, 2(56) text-025 centered color 3, 58 sy-vline.

write /1(58) sy-uline.

format color col_heading on.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(4) 'Year'(067),

17 sy-vline, 18(40) 'Appraisal Text'(068) centered,

58 sy-vline.

format color off.

write /1(58) sy-uline.

endif.

endform. "top_of_page

&----


*& Form end_of_page

&----


  • Write the Page footers

----


form end_of_page.

if r_per eq c_x.

write : /(193) sy-uline.

elseif r_pay eq c_x.

write : /(188) sy-uline.

elseif r_edn eq c_x.

write : /(172) sy-uline.

elseif r_pemp eq c_x.

write /1(97) sy-uline.

elseif r_job eq c_x.

write /1(75) sy-uline.

elseif r_app eq c_x.

write /1(217) sy-uline.

endif.

endform. "end_of_page

&----


*& Form Display_report

&----


  • Write the Report Output

----


form display_report.

if r_all eq c_x.

if pers_tab[] is initial.

message i999 with

'No Personal Data found'(061).

else.

write: /1 sy-vline,2(51) sy-uline, 53 sy-vline,

/1 sy-vline, 2(50) text-020 centered color 3, 53 sy-vline.

write /1(193) sy-uline.

format color col_heading on.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(40) 'Name'(012) centered,

53 sy-vline, 54(8) 'Grade'(013) centered,

62 sy-vline, 63(15) 'Nationality'(017) centered,

78 sy-vline, 79(10) 'Eng.Date'(014) centered,

89 sy-vline, 90(10) 'Birth Date'(016) centered,

100 sy-vline,101(25) 'Location'(026) centered,

126 sy-vline,127(25) 'Position'(015) centered,

152 sy-vline,153(40) 'Division'(018) centered,

193 sy-vline.

format color off.

write /1(193) sy-uline.

sort pers_tab by pernr.

loop at pers_tab.

format color col_normal.

write:/1 sy-vline, 2(10) pers_tab-pernr,

12 sy-vline, 13(40) pers_tab-ename,

53 sy-vline, 56(6) pers_tab-trfgr,

62 sy-vline, 63(15) pers_tab-ntext,

78 sy-vline, 79(10) pers_tab-hdate,

89 sy-vline, 90(10) pers_tab-gbdat,

100 sy-vline,101(25) pers_tab-name1,

126 sy-vline,127(25) pers_tab-ptext,

152 sy-vline,153(40) pers_tab-ctext,

193 sy-vline.

endloop.

write /1(193) sy-uline.

endif.

skip 3.

if pay_tab[] is initial.

message i999 with

'No Standard Pay Data found'(062).

else.

write: /1 sy-vline,2(42) sy-uline, 44 sy-vline,

/1 sy-vline, 2(42) text-021 centered color 3, 44 sy-vline.

format color col_heading on.

write /1(188) sy-uline.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(15) 'Basic'(033) centered,

28 sy-vline, 29(15) 'Housing Allow.'(034) centered,

44 sy-vline, 45(15) 'Sup.Allow.'(035) centered,

60 sy-vline, 61(15) 'Social Allow.'(036) centered,

76 sy-vline, 77(15) 'Child Allow.'(037) centered,

92 sy-vline, 93(15) 'Fixed Overtime'(038) centered,

108 sy-vline,109(15) 'R.A.Allow.'(041) centered,

124 sy-vline,125(15) 'Perform.Allow.'(039) centered,

140 sy-vline,141(15) 'Pension.Allow.'(059) centered,

156 sy-vline,157(15) 'Others'(040) centered,

172 sy-vline,173(15) 'Total'(042) centered,

188 sy-vline.

format color off.

write /1(188) sy-uline.

sort pay_tab by pernr.

loop at pay_tab.

format color col_normal.

write:/1 sy-vline, 2(10) pay_tab-pernr,

12 sy-vline,

13(15) pay_tab-basic currency pay_tab-waers no-zero,

28 sy-vline,

29(15) pay_tab-hra_allow currency pay_tab-waers no-zero,

44 sy-vline,

45(15) pay_tab-sup_allow currency pay_tab-waers no-zero,

60 sy-vline,

61(15) pay_tab-soc_allow currency pay_tab-waers no-zero,

76 sy-vline,

77(15) pay_tab-chl_allow currency pay_tab-waers no-zero,

92 sy-vline,

93(15) pay_tab-fix_allow currency pay_tab-waers no-zero,

108 sy-vline,

109(15) pay_tab-ra_allow currency pay_tab-waers no-zero,

124 sy-vline,

125(15) pay_tab-per_allow currency pay_tab-waers no-zero,

140 sy-vline.

pay_tab-pen_allow = pay_tab-pen_allow * -1.

write: 141(15) pay_tab-pen_allow currency pay_tab-waers no-zero,

156 sy-vline,

157(15) pay_tab-oth_allow currency pay_tab-waers no-zero,

172 sy-vline,

173(15) pay_tab-tot_allow currency pay_tab-waers no-zero,

188 sy-vline.

endloop.

write /1(188) sy-uline.

endif.

skip 3.

if edn_tab[] is initial.

message i999 with

'No Educational Data found'(063).

else.

write: /1 sy-vline,2(36) sy-uline, 38 sy-vline,

/1 sy-vline, 2(36) text-022 centered color 3, 38 sy-vline.

format color col_heading on.

write /1(172) sy-uline.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(25) 'Discipline'(043) centered,

38 sy-vline, 39(20) 'Edu.Establishment'(044) centered,

59 sy-vline, 60(45) 'Institute'(045) centered,

105 sy-vline,106(15) 'Country'(046) centered,

121 sy-vline,122(30) 'Certificate'(047) centered,

152 sy-vline,153(19) 'Duration of Course'(048) centered,

172 sy-vline.

format color off.

write /1(172) sy-uline.

sort edn_tab by pernr.

loop at edn_tab.

format color col_normal.

write:/1 sy-vline, 2(10) edn_tab-pernr,

12 sy-vline, 13(25) edn_tab-atext,

38 sy-vline, 39(20) edn_tab-stext,

59 sy-vline, 60(45) edn_tab-insti,

105 sy-vline,106(15) edn_tab-landx,

121 sy-vline,122(30) edn_tab-ctext,

152 sy-vline,153(4) edn_tab-anzkl,

157(10) edn_tab-etext,

172 sy-vline.

endloop.

write /1(172) sy-uline.

endif.

skip 3.

if pemp_tab[] is initial.

message i999 with

'No Previous Employment Data found'(064).

else.

write: /1 sy-vline,2(53) sy-uline, 55 sy-vline,

/1 sy-vline, 2(53) text-023 centered color 3, 55 sy-vline.

write /1(97) sy-uline.

format color col_heading on.

write:/1 sy-vline, 12 sy-vline,

33 sy-vline, 34(21) 'Employment Period'(055) centered,

55 sy-vline, 81 sy-vline,

97 sy-vline.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(20) 'Employer'(049) centered,

33 sy-vline, 34(10) 'From'(050) centered,

44 sy-vline, 45(10) 'To'(051) centered,

55 sy-vline, 56(25) 'Last Position'(052) centered,

81 sy-vline, 82(15) 'Country'(053) centered,

97 sy-vline.

format color off.

write /1(97) sy-uline.

sort pemp_tab by pernr.

loop at pemp_tab.

format color col_normal.

write:/1 sy-vline, 2(10) pemp_tab-pernr,

12 sy-vline, 13(20) pemp_tab-arbgb,

33 sy-vline, 34(10) pemp_tab-begda,

44 sy-vline, 45(10) pemp_tab-endda,

55 sy-vline, 56(25) pemp_tab-stltx,

81 sy-vline, 82(15) pemp_tab-landx,

97 sy-vline.

endloop.

write /1(97) sy-uline.

endif.

skip 2.

new-page.

if job_tab[] is initial.

message i999 with

'No Job History Data found'(065).

else.

write: /1 sy-vline,2(47) sy-uline, 49 sy-vline,

/1 sy-vline, 2(47) text-024 centered color 3, 49 sy-vline.

format color col_heading on.

write /1(75) sy-uline.

write:/1 sy-vline,

12 sy-vline,13(10) 'Date of'(054) centered,

23 sy-vline,49 sy-vline,

75 sy-vline.

write:/1 sy-vline,2(10) 'Employee #'(011),

12 sy-vline,13(10) 'Upgrading/'(058) centered,

23 sy-vline,24(25) 'Position'(015) centered,

49 sy-vline,50(25) 'Job'(056) centered,

75 sy-vline.

write:/1 sy-vline, 12 sy-vline,

13(10) 'Promotion'(057) centered,

23 sy-vline, 49 sy-vline,

75 sy-vline.

format color off.

write /1(75) sy-uline.

sort job_tab by pernr.

loop at job_tab.

format color col_normal.

at new pernr.

write:/1 sy-vline, 2(10) job_tab-pernr.

endat.

write: 1 sy-vline, 12 sy-vline,

13(10) job_tab-begda,

23 sy-vline,24(25) job_tab-ptext,

49 sy-vline,50(25) job_tab-stltx,

75 sy-vline.

new-line.

endloop.

write /1(75) sy-uline.

endif.

skip 3.

if app_tab[] is initial.

message i999 with

'No Performance Appraisal Data found'(072).

else.

write: /1 sy-vline,2(56) sy-uline, 58 sy-vline,

/1 sy-vline, 2(56) text-025 centered color 3, 58 sy-vline.

write /1(58) sy-uline.

format color col_heading on.

write:/1 sy-vline, 2(10) 'Employee #'(011),

12 sy-vline, 13(4) 'Year'(067),

17 sy-vline, 18(40) 'Appraisal Text'(068) centered,

58 sy-vline.

format color off.

write /1(58) sy-uline.

sort app_tab by pernr.

loop at app_tab.

format color col_normal.

write:/1 sy-vline, 2(10) app_tab-pernr,

12 sy-vline, 13(4) app_tab-year,

17 sy-vline, 18(40) app_tab-appr,

58 sy-vline.

endloop.

write /1(58) sy-uline.

endif.

skip 2.

elseif r_per eq c_x.

if pers_tab[] is initial.

message i999 with

'No Data found for the entered Selection'(032).

else.

sort pers_tab by pernr.

loop at pers_tab.

format color col_normal.

write:/1 sy-vline, 2(10) pers_tab-pernr,

12 sy-vline, 13(40) pers_tab-ename,

53 sy-vline, 56(6) pers_tab-trfgr,

62 sy-vline, 63(15) pers_tab-ntext,

78 sy-vline, 79(10) pers_tab-hdate,

89 sy-vline, 90(10) pers_tab-gbdat,

100 sy-vline,101(25) pers_tab-name1,

126 sy-vline,127(25) pers_tab-ptext,

152 sy-vline,153(40) pers_tab-ctext,

193 sy-vline.

endloop.

write /1(193) sy-uline.

endif.

elseif r_pay eq c_x.

if pay_tab[] is initial.

message i999 with

'No Data found for the entered Selection'(032).

else.

sort pay_tab by pernr.

loop at pay_tab.

format color col_normal.

write:/1 sy-vline, 2(10) pay_tab-pernr,

12 sy-vline,

13(15) pay_tab-basic currency pay_tab-waers no-zero,

28 sy-vline,

29(15) pay_tab-hra_allow currency pay_tab-waers no-zero,

44 sy-vline,

45(15) pay_tab-sup_allow currency pay_tab-waers no-zero,

60 sy-vline,

61(15) pay_tab-soc_allow currency pay_tab-waers no-zero,

76 sy-vline,

77(15) pay_tab-chl_allow currency pay_tab-waers no-zero,

92 sy-vline,

93(15) pay_tab-fix_allow currency pay_tab-waers no-zero,

108 sy-vline,

109(15) pay_tab-ra_allow currency pay_tab-waers no-zero,

124 sy-vline,

125(15) pay_tab-per_allow currency pay_tab-waers no-zero,

140 sy-vline.

pay_tab-pen_allow = pay_tab-pen_allow * -1.

write: 141(15) pay_tab-pen_allow currency pay_tab-waers no-zero,

156 sy-vline,

157(15) pay_tab-oth_allow currency pay_tab-waers no-zero,

172 sy-vline,

173(15) pay_tab-tot_allow currency pay_tab-waers no-zero,

188 sy-vline.

endloop.

write /1(188) sy-uline.

endif.

elseif r_edn eq c_x.

if edn_tab[] is initial.

message i999 with

'No Data found for the entered Selection'(032).

else.

sort edn_tab by pernr.

loop at edn_tab.

format color col_normal.

write:/1 sy-vline, 2(10) edn_tab-pernr,

12 sy-vline, 13(25) edn_tab-atext,

38 sy-vline, 39(20) edn_tab-stext,

59 sy-vline, 60(45) edn_tab-insti,

105 sy-vline,106(15) edn_tab-landx,

121 sy-vline,122(30) edn_tab-ctext,

152 sy-vline,153(4) edn_tab-anzkl,

157(10) edn_tab-etext,

172 sy-vline.

endloop.

write /1(172) sy-uline.

endif.

elseif r_pemp eq c_x.

if pemp_tab[] is initial.

message i999 with

'No Data found for the entered Selection'(032).

else.

sort pemp_tab by pernr.

loop at pemp_tab.

format color col_normal.

write:/1 sy-vline, 2(10) pemp_tab-pernr,

12 sy-vline, 13(20) pemp_tab-arbgb,

33 sy-vline, 34(10) pemp_tab-begda,

44 sy-vline, 45(10) pemp_tab-endda,

55 sy-vline, 56(25) pemp_tab-stltx,

81 sy-vline, 82(15) pemp_tab-landx,

97 sy-vline.

endloop.

write /1(97) sy-uline.

endif.

elseif r_job eq c_x.

if job_tab[] is initial.

message i999 with

'No Data found for the entered Selection'(032).

else.

sort job_tab by pernr.

loop at job_tab.

format color col_normal.

at new pernr.

write:/1 sy-vline, 2(10) job_tab-pernr.

endat.

write: 1 sy-vline, 12 sy-vline,

13(10) job_tab-begda,

23 sy-vline,24(25) job_tab-ptext,

49 sy-vline,50(25) job_tab-stltx,

75 sy-vline.

new-line.

endloop.

write /1(75) sy-uline.

endif.

elseif r_app eq c_x.

if app_tab[] is initial.

message i999 with

'No Data found for the entered Selection'(032).

else.

sort app_tab by pernr.

loop at app_tab.

format color col_normal.

write:/1 sy-vline, 2(10) app_tab-pernr,

12 sy-vline, 13(4) app_tab-year,

17 sy-vline, 18(40) app_tab-appr,

58 sy-vline.

endloop.

write /1(58) sy-uline.

endif.

endif.

endform. " Display_report

<b>Reward points if useful</b>

Regards

Ashu