Skip to Content
author's profile photo Former Member
Former Member

About HR Module

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?

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

4 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Jul 12, 2007 at 06:17 AM

    refer to the wesite www.erpgenie.com.

    Cheers,

    Sharadendu

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jul 12, 2007 at 06:18 AM

    Hi Gopi,

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

    Regards,

    Atish

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jul 12, 2007 at 06:20 AM
    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jul 12, 2007 at 06:20 AM

    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

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.