About Func. module RRMS_MESSAGE_HANDLING

I am trying to use RRMS_MESSAGE_HANDLING for a customer exit variable and I am really not sure how to use it. My question is:
How to define I_CLASS? The data element says this is Application Area. Can someone tell me wht this is? and how I can define it?
Any additional information about how to use this function for i_step = 3 would be very helpful. I need to popup a warning message for the user if they enter a wrong value for a user exit variable.
Thanks
Deepa

hi Deepthi,
CALL FUNCTION 'RRMS_MESSAGE_HANDLING'
EXPORTING
i_class = 'UPF'
i_type = 'E'
i_number = '001'
i_msgv1 = 'Cannot fill Bex variable'
i_msgv2 = l_varname_bw
i_msgv3 = 'based on Sem variable'
i_msgv4 = l_varname_sem.
For details Check this out
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/biw/g-i/how to variables of type exit.pdf
Reward if it helps,
Regards,
Santosh

Similar Messages

  • To get the values from func. module

    c i have used a func. module to calculate the values of date , i wrote a subroutine i want the values of this to be dispalyed on the list...
    now how do i get them to the list output, i mean how do i assign to the fieldcatalog?????
    thanks,
    CAPC

    Hi CAPC,
    Plese find below a sample program which will solve u r broblem.
    report abc.
    TYPE-POOLS : slis.
    Data
    DATA : BEGIN OF itab OCCURS 0.
    INCLUDE STRUCTURE t001.
    DATA : flag tyPE c,
    END OF itab.
    DATA : alvfc TYPE slis_t_fieldcat_alv.
    DATA : alvly TYPE slis_layout_alv.
    Select Data
    SELECT * FROM t001 INTO TABLE itab.
    *------- Field Catalogue
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
    i_program_name = sy-repid
    i_internal_tabname = 'ITAB'
    i_inclname = sy-repid
    CHANGING
    ct_fieldcat = alvfc
    EXCEPTIONS
    inconsistent_interface = 1
    program_error = 2
    OTHERS = 3.
    Display
    alvly-box_fieldname = 'FLAG'.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    it_fieldcat = alvfc
    i_callback_program = sy-repid "<-------Important
    i_callback_user_command = 'ITAB_USER_COMMAND' "<------ Important
    is_layout = alvly
    TABLES
    t_outtab = itab
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    CALL BACK FORM
    FORM itab_user_command USING whatcomm TYPE sy-ucomm whatrow TYPE
    slis_selfield.
    data : msg(100) type c.
    LOOP AT itab.
    if itab-flag = 'X'.
    msg = sy-tabix.
    condense msg.
    concatenate 'Row Number ' msg ' ' into msg
    separated by space.
    message msg type 'I'.
    endif.
    ENDLOOP.
    ENDFORM. "ITAB_user_command
    Regards,
    Sunil

  • Func module to convert list to pdf without using memory id

    hi Experts,
    Is there any funct module to convert list to pdf without using memory, as I am using Convert_to_PDF func module which outputs last page only  when its running in Background.
    But my req is to output all the Pages in the PDF format.
    Sample code also appreciable,
    Reward Points are guranteed..
    Cheers
    Santosh

    Check the below postings :
    Re: Convert spool to pdf
    Convert a spooljob to a writeprotected PDF
    Hope this will helpful

  • Comp characteristics extraction - Func Modules

    All,
    There are 2 function modules to get characteristics info:
    1. CUAB_DISPLAY_CD_CONFIGURATION
    2. CUD0_GET_VAL_FROM_INSTANCE
    Both work off the CUOBJ value that is derived either from the RESB table for the Prod Order (component config information extraction) or from the Purchase Order table EKPO.
    Question is what is the diff b/w the 2 function modules in terms of the output they generate.
    My interest is to find a function module that will extract all the component characteristics (chars of class 300)
    Pls let me know
    Thanks

    Thanks,
    Then there are these 2 func modules, how do these differ from the earlier ones?:
    VC_I_GET_CONFIGURATION_IBASE
    CLAF_CLASSIFICATION_OF_OBJECTS
    I'm trying to be sure I use the right one that does not give me incorrect data. I'm plng to extract data for the char's & pass them to my MES system for further use.
    Thanks

  • To find the processing Func. module

    hi,
    can anyone tell me how to find the processing Func. module(outbound) if i know the message type, basic type and extension.
    i tried with we57 but coudnt find the one(outbound) needed.

    Hi Pawan,
    From the link
    http://www.intelligententerprise.com/channels/applications/feature/archive/kasturi.jhtml
      For more inf. you can check this link.
    From WEDI got to Control -> Inbound process codes -> Inbound with ALE service -> Processing by function module (transaction WE42), or from WEDI go to Control -> Outbound process codes -> Outbound with ALE service -> With function module (transaction WE41). There will be function modules associated with the process codes. For inbound, the function modules usually follow this pattern: IDOC_INPUT_messagetype: for example, IDOC_INPUT_CHRMAS for inbound characteristics master.
    *Use transaction WE57 or from WEDI go to Development -> Message/Application Object. The entries list the function module, Business Object, message type, and IDOC type that are used for inbound ALE/EDI interfaces.
    Hope you will clear now, if yes please close this thread with rewarding appropriate points to the helpful answers.
    Cheers
    Sunny

  • Need Tables and Func Modules related to Project Systems

    Hi
          I am working on a custom program that Creates Project ( CJ01) using standard Project Def.
         All WBS elements of  Standard Project Template  should be copied to the newly created Project
        I am not able to get any Standard Func Module which creates new WBS elements from Standard WBS elements.
      It will be of great help for me, if any one has info on this.
    thanks in advance.

    Hi
    See the Tables
    PRPS  -WBS element
    PROJ - Project Definition
    other tables are
    PRTE,PRTX,PSTX,PSTT  -Scheduling data for items
    PRHIS
    see the fun modules
    CJPN_GET_WBS_ELEMENT
    CJPS_GET_WBS_ELEMENT
    PSBW_GET_TEXT_WBS_ELEMENT
    PSBW_GET_WBS_ELEMENT
    K_PROJECT_WBS_PLANVALUES
    AIPR_GET_HIERARCHY_TO_WBSELEM
    CJDW_GET_NEW_WBS_ELEMENTS
    Reward points if useful
    Regards
    Anji
    Message was edited by:
            Anji Reddy Vangala

  • Scope of Func module???

    Hi guys
    Customer using Func group ZXXXXX, and using BDCRECXY include inside funcgroup
    to access for Func modules.
    In func module Z_XXXX_PLAN, PERFORM BDC_TRANSACTION statement is
    called and "Call transaction CJ30" is used under Subroutine "BDC_TRANSACTION"
    inside the BDCRECXY
    How to make sure that This Func module is calling include BDCRECXY using BDC_TRANSACTION Subroutine.
    In the where used list for BDCRECXY program,it listed only 2 other programs(Func module) LZPS00010U14 and LF040TOP.
    How to make believe that BDC_TRANSACTION is calling BDCRECXY include?
    Regards
    jaichan

    Hi Sreenivas,
    Thanks for your reply.
    Anyother way do we have to findout without working on editor?
    Because I dont have Test data as well as System in front of me.
    regards
    Jaichan

  • Func. module

    have u created any func. module, if yes then what is the purpose

    And what was it's purpose?
    You'll never get full points if you don't answer the whole question

  • 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?

    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

  • How to flag a func. module in Func. Library as executable in Update Task?

    How to flag a func. module in Func. Library as executable in Update Task? I am getting a program termination error. The foollowing is the error analysis.
    Error analysis                                                   
    The function module "ZHEM" was called with the addition      "... IN UPDATE TASK".                                                                               
    However, it is not flagged in the Function Library as executable in the update task.

    Hi!
    Go to SE37, tab attributes, area processing type, choose radio button update module and desired type (V1, V1 no restart, V2, V3).
    Regards,
    Christian

  • Reciever func.module, check func.module and receiver type func

    Hi Experts,
    what is the purpose of reciever func.module, check func.module and receiver type func.module in Event Linkage.
    Give some Examples which helps.
    Thanks In Advance.

    Please check these,
    https://forums.sdn.sap.com/click.jspa?searchID=1763105&messageID=3206751
    https://forums.sdn.sap.com/click.jspa?searchID=1763105&messageID=3206440
    https://forums.sdn.sap.com/click.jspa?searchID=1763105&messageID=3207214
    https://forums.sdn.sap.com/click.jspa?searchID=1763105&messageID=3207179
    I think FM's for Processing Events should give a clear idea.
    Thanks and Regards,

  • How to get information about the modules used in the RT system from host pc.

    hi all,
    i am trying to  read the modules of the RT tragets from my host pc without deploying the program.
    i have 2 or more than 2 rt systems from which i am trying to get the information about the modules used in that particular system.
    Regards,
    Santhosh M

    hi, you can use the sys_context function, like this:
    select sys_context('userenv','current_user'),
         sys_context('userenv','os_user'),
         sys_context('userenv','host'),
         sys_context('userenv','ip_address'),
         sys_context('userenv','instance'),
         sys_context('userenv','sessionid'),
         sys_context('userenv','terminal')
    from dual;
    Is this what you 're looking for?

  • Any Func Module to pull the value from DD07T ?

    Hi Experts,
    In my system, we hv a Z domain and 100 values are supplied in VALUE RANGE for it.
    So, I need to pull the short description(DDTEXT) of these fixed values, so, the  tbl is DD07T, fine, but the issue is that, the field DOMVALUE_L(which I can supply apart from DOMNAME)..........I can pull it by a SELECT........but this filed is DOMVALUE_L not a KEY FILED so, so, SELECT takes much time.........so, let me know that Is there any Func module to pull the values from this tbl DD07T?
    thanq

    if you have all the Zdomains in one structure you can use the
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
          i_program_name         = gd_repid
          i_internal_tabname     = 'I_ZSCHED'
          i_structure_name       = 'Z_ALV'  "><<<<<<<<<<<< structure name
          i_client_never_display = 'X'
          i_inclname             = gd_repid
        CHANGING
          ct_fieldcat            = fieldcatalog
        EXCEPTIONS
          inconsistent_interface = 1
          program_error          = 2
          OTHERS                 = 3.
    you can read the field catalog and get the values..

  • Func modules vs. BAPIs; What is a BADI? When do we use it?

    Hi experts,
    I have some ABAP questions and need your help to answer them.
    1. What is the difference between a func. module and a BAPI?
    2. What is a BADI and in which circumtanse we use it? How can I view a BADI example?
    3. What is a WorkFlow and in which circumtanse we use it? How can I view an WorkFlow example?
    Many many thanks,
    Ron

    1.
    All BAPIs are function modules, but they have been enhanced by using object oriented design. BAPIs are designed based around Business objects (in the business object repository SWO1/SWO2). They are created to fill a business need and are a good way of exposing SAP functionality to third party systems. They can be viewed through transaction BAPI. BAPIs are also generally all RFC enabled, whereas not all function modules are.
    Function modules are developed to perform a particular function, some of which is very specific to the program which calls it. A lot of the standard SAP function modules are only really meant to be used by SAP, hence the complete lack of documentation or intuitiveness.
    check this link too.
    Re: Diff. Between BAPI and RFC
    2.
    Difference Between BADI and User Exits
    Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. They can be inserted into the SAP System to accommodate user requirements too specific to be included in the standard delivery. Since specific industries often require special functions, SAP allows you to predefine these points in your software. 
    As with customer exits two different views are available:
    In the definition view, an application programmer predefines exit points in a source that allow specific industry sectors, partners, and customers to attach additional software to standard SAP source code without having to modify the original object. 
    In the implementation view, the users of Business Add-Ins can customize the logic they need or use a standard logic if one is available.
    In contrast to customer exits, Business Add-Ins no longer assume a two-level infrastructure (SAP and customer solutions), but instead allow for a multi-level system landscape (SAP, partner, and customer solutions, as well as country versions, industry solutions, and the like). Definitions and implementations of Business Add-Ins can be created at each level within such a system infrastructure.
    SAP guarantees the upward compatibility of all Business Add-In interfaces. Release upgrades do not affect enhancement calls from within the standard software nor do they affect the validity of call interfaces. You do not have to register Business Add-Ins in SSCR.
    The Business Add-In enhancement technique differentiates between enhancements that can only be implemented once and enhancements that can be used actively by any number of customers at the same time. In addition, Business Add-Ins can be defined according to filter values. This allows you to control add-in implementation and make it dependent on specific criteria (on a specific Country value, for example).
    All ABAP sources, screens, GUIs, and table interfaces created using this enhancement technique are defined in a manner that allows customers to include their own enhancements in the standard. A single Business Add-In contains all of the interfaces necessary to implement a specific task.
    The actual program code is enhanced using ABAP Objects. In order to better understand the programming techniques behind the Business Add-In enhancement concept, SAP recommends reading the section on ABAP Objects.
    SE18 - BADI definition
    SE19 - BADI implementation
    3. check the page for workflow links
    http://www.sapgenie.com/phpLinks/index.php?PHPSESSID=45016ad4a8b3e6005f53a04a83b79782&PID=62&PHPSESSID=45016ad4a8b3e6005f53a04a83b79782
    Thanks,

  • What should i know about MM module for a BW interview any docs?

    what should i know about MM module for my BW interview any docs?
    SDN experts are very helpfull to me. i will assign points. Thank you.

    Hi,
    If this is inventory management that you want to handle, you can use infocube 0IC_C03.
    Here a HowToguide:
    <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f83be790-0201-0010-4fb0-98bd7c01e328">https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f83be790-0201-0010-4fb0-98bd7c01e328</a>
    Jacques

Maybe you are looking for