Solution about pp module

1) what are the steps required for long term planning ?
2) can we use interactive planning i.e, MD43 in long term planning?
3) why conversion of material is not in possible in MS04?

Hi,
1. In long-term planning, you can create your own versions of the demand program, which are
only used for simulative planning. This means you can calculate and compare the effects of
various versions of the demand program in simulative mode in Material Requirements Planning
(MRP) and in Capacity Planning. For each version of the demand program, the system calculates
the capacity requirements, the activity category requirements of the cost centers and the
purchased parts requirements.
Long Term Planning Steps:
1. Create Planned Independent Requirements Versions
2. Copying PIR versions to LTP
3. Creating and Releasing Planning Scenario
You use the planning scenario to define the settings for long-term planning. The planning
scenario controls how long-term planning is to be carried out.
To compare different versions of planned independent requirements or plants, you can create
various planning scenarios and then compare the planning results of these scenarios
4. Executing MRP for LTP
5. Evaluating LTP (MRP list and Stock/Requirements list)
6. Copying  LTP results to Operative planning (You must firm the simulative planned orders you want to copy to operative planning)
Procedure
1. Starting from the MRP node, choose Planning  Single-Item, Interactive.
The initial screen for single-item, interactive planning appears.
2. Enter the plant and the material number, then check the control parameters.
If purchase requisitions and delivery schedules (schedule lines) are to be created when
copying the data, enter the appropriate indicator in the Create pur.req and Schedule lines
fields.
3. To start the planning run, choose .
The Planning Result - Individual Lines screen appears.
4. From the Planning Result screen, choose Edit   Copy simulative LT plnd ords to copy
the planned orders.
The system displays the dialog box entitled, Copy Firm Planned Orders From LTP.
5. Enter the number of the planning scenario and choose .
The system proposes a copying period.
6. Check the proposed copying period and change it, if necessary.
7. Choose .
The system checks the date you entered.
8. Choose Copy planned orders.
The system copies the planned orders and they then appear in the planning results.
9. Save your data.
Result
The system copies all firm planned orders in the selected period from long-term planning to
operative planning.
In MRP, the system deletes all the planned orders in the copying period.
2.  You can use MD43 for LTP (refer above steps)
3. In MS04 it displays stock/requitements list for LTP. You can not  convert materials here.
Hope this gives you an idea  about LTP.
Thanks,
DV

Similar Messages

  • Who can give me a solution about the following requirment?

    Dear All,
    The requirment is very hard for me, Perhaps you can give me a detail solution about it. I will list my confusion....thank you very much.
    (1)
    On the SRM puchase order the payment terms (BBP_PDHGP-PMNTTRMS) shall be defaulted to the supplier’s payment term.
    Where I can find BBP_PDHGP-PMNTTRMS?
    (2)
    Create an implementation of the BADI definition BBP_DOC_CHANGE_BADI and name it ZQF_PO_FLDS_DEFAULT.  This implementation will have a filter type BUS2201 for purchase order processing.
    done
    (3)
    The vendor (business partner) for a purchase order can be found in importing table parameter it_partner.  Read the table where the field  partner_fct = 00000019  (i.e. vendor).  The field PARTNER_NO contains the data for the next step.
    the table? which table? I don't know. I can't find this table.
    I check BBP_PO_CHANGE, It_partner is a Parameter only, How to find the table on requirment mentioned?
    (4)
    Use standard SAP function module BBP_PARTNER_GET_PURCH_DATA_NEW to return the purchasing information for the vendor.  Pass in the following parameter to this function:
         PARTNER_GUID = IT_PARTNER-PARTNER_NO (from previous step)
    The terms for this vendor can be found in field PAYMENT_TERMS of return parameter ET_PURCH_ORG_SET.
    Change field PMNTTRMS in exporting stucture ES_HEADER to the value returned from previous step (ET_PURCH_ORG_SET- PAYMENT_TERMS)
    (5)If no payment terms can be round for a vendor, issue an error message as detailed in the component requirement section above. (see existing shopping cart code for technical details on issuing error messages)

    Hi
    Here are the suggestions.
    <b>Every information is available in BBP_DOC_CHANGE_BADI in SE18. Create an implementation of the same in SE19 transaction.</b>
    Move the changed data in the Shopping cart, back to your internal tables, like et_item, et_partner , et_orgdata... etc.. inside the BADI Implemenataion.
      et_item[]     = it_item[].
      et_partner[] = it_partner[].
      et_orgdata[] = it_orgdata[].
    <b>1) Inside BBP_DOC_CHANGE_BADI, the payment terms will also be present in et_item [] table. Populate the required payment terms from reading the same based on the vendor number into every line item.</b>
    <b>3) et_partner [ ] table in BBP_DOC_CHANGE_BADI holds the partner details, like paetner number, partner function, partner type, once the Shopping cart is filled with atleast one line item in the et_item[] table.</b>
    4) et_orgdata[] can be changed accordingly.
    <b>5) for issuing Error message, create an implementation of BBP_DOC_CHECK_BADI and use the message as per your requirements.</b>
    Hope this will help.
    Please reward suitable points.
    Regards
    - Atul

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

  • 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

  • What is the solution about some trouble with itunes 10.5?

    My PC : windows 7  My product is ipod Touch 4g.
    I installed new version itunes 10.5 and iOS 5  On October 21 st 2011 but it has problems:
    I can´t open itunes store and I can´t sync my ipod! .. what happen?... Please I need a solution about this problem.!

    The solution for me was to completely uninstall PC Tools Spyware doctor with Antivirus and then do a complete reinstall.  Just disabling the program will not work.
    There are other solutions to the problem of not being able to access the itunes store in other threads.

  • To BALTWO:I really appreciate the fast sent solution about my failure to burn DVDs with Lion, but I am 89 years old and think I know something about computers, but don't have a clue about ZAPPing PRAM nor RESET SMC.  I also can't find any evidence of a p

    I really appreciate the fast sent solution about my failure to burn DVDs with Lion, but I am 89 years old and think I know something about computers, but don't have a clue about ZAPPing PRAM nor RESET SMC.  I also can't find any evidence of a preserved earlier OS (Snow Leopard).  I also don't know how to partition further my drive after all this time…(I used to have Parallels partitioned) but as I said I cannot find any where on the HD SN.  Is it possible that it doesn't exist anymore?  Not too technical, please, unless that is the only possible answer to this whole delemna..

    Blue colored text in these forums usually indicates a clickable link. The two I posted in https://discussions.apple.com/message/18789716#18789716 bring up Apple's articles on those subjects. For partitioning information, peruse Disk Utilities help files, especially
    Changing a disk’s formatting and partitions
    BTW, the proper way to respond to a post is to use the Reply button and not start another. Good luck and hope you make it to your tenth decade—I'm in my eighth.

  • Seek for solution of custom module autosize

    hello everyone
    i have a simple question but confused me seriously.
    that is how to let the custom module autosize.
    i don't wanna a blank area for big size moudule panel with
    small size content.
    i don't wanna a scroll bar inside the moudule or just cut-off
    content neither.
    suppose i have a 400x300 module that defined when i create
    it.but the max area of its content is only 200x150. so,there would
    be display a ugly blank area.and i hate that.
    is there any solution to re-define the size of the module to
    200x150?
    autosize function? or defined a custom re-size function after
    the "render" event?
    i have no idea about how to do,help me plz,thanks

    how are you loading your modules? using a moduleloader class
    or MXML component? can you show us some code?
    essentially when the ready event for the module is fired, you
    can get the reference to loaded module and resize either the module
    or the container.
    there are certain containers, like e.g. view stack, that
    could resize automatically for others you'll have to do it
    manually.

  • Table that stores information about function module

    Hi All,
    I know that table TFDIR stores primary information about any function module.
    Could anyone tell me where the code of that function module gets stored in?
    Also.. If I want to write an ABAP code to read the function module code then what is the best possible solution?
    Thanks in advace and any answer will be appreciated.
    Regards
    Jignesh

    Hi All,
    Apologies for the same!
    The codes are not stored in any table, they are stored as cluster.
    To read the code, you can use READ REPORT.
    But there you must provide the Include Name For Example , If you want to read the code of READ_TEXT,
    READ REPORT 'LSTXDU01'.
    You can get this include name inside include LSTXDUXX
    Table TFDIR also stores the program name and include number.
    You need to truncate first 3 char 'SAP' and append UXX at the end and that will be your program name.
    Then we can use READ REPORT!!!
    Regards
    Jignesh

  • Integration SAP Learning Solution and SD module

    Hi experts,
    I need some help. I'm trying to integrate the LSO with the SD module, I know that there is a way to do it. The idea is to charge for trainings and to be able to even sell there trainings. Does anybody knows how to activate this integration and if there is any documentation about it?
    I would really appreciate any insights about this topic!
    Best Regads,
    Thais

    I assume you have already tried the steps under
    SAP Learning Solution > Training Management > Integration > Billing and ACtivity Allocation > Billing
    Thanks and Regards

  • Need some information about SCM - Module

    dear freiends i have a small doubt,
    sd, mm, this all modules are came under  SCM.
    IS THERE ANY ANOTHER MODULE LIKE '' SCM'' IN SAP.
    Thanks inadvance
    narasimha

    Hi,
    SAP has business suite with some new dimensional products, SAP SCM is part of it. Previously all were emphasizing on the indivisual modules like SD, MM, PP, PM etc., but now SAP is changing direction and talking more about End to ENd Solutions.
    On this road way they came up with these new dimension products.
    SAP SCM,
    SAP PLM,
    SAP CRM,
    SAP ERP
    SAP HCM
    For more details
    http://www.sap.com/solutions/business-suite/scm/index.epx
    Thanks,
    Raja

  • Trying to scroll emails is not possible despite trying advised solution 'about:config' & I get a window with a mike and clef symbol.

    I am still unable to scroll with the mouse -touchpad works ok- despite updating mouse software & applying solution in 'about:config'. When attempting to scroll, i get a window which displays a mike with a clef note superimposed.

    loqs wrote:You built the package (using --asroot with makepkg is not a good idea ) but you did missed Install_the_package
    Also see Kernel_Modules so the module is loaded automatically at boot.
    Seriously? I spent that many hours searching for my several error messages, trying to solve them, not wanting to ask for help without putting too much of my own effort into it and when I finally decide to ask for help it is when I didn't get a super essential thing like makepkg doesn't install and is merely to create .pkg.tar.xz?? Oh gosh... (;
    Well, thank you! I guess I'll take my next change to use Google to find out how to use makepkg without --asroot. Yes, wl is loaded now and it's set as the kernel driver in use!
    Unfortunately, after ip link set wlp2s0 up and typing dmesg | grep wl I get:
    wl: module license 'Mixed/Proprietary' taints kernel.
    wlan0: Broadcom BCM4727 802.11 Hybrid Wireless Controller 6.30.223.248 (r487574)
    systemd-udevd[148]: renamed network interface wlan0 to wlp2s0
    wl 0000:02:00.0: no hotplug settings from platform
    wl 0000:02:00.0: no hotplug settings from platform
    wl 0000:02:00.0: no hotplug settings from platform
    wl 0000:02:00.0: no hotplug settings from platform
    And therefor: No firmware loaded. Google doesn't give much about this message but hints to PCI or PCI-Express not working as it should. I found this and tried starting with pciehp.pciehp_force=1 and ordered a modprobe acpiphp but nothing changed.

  • Important conceptual question about Application Module, Maximum Pool Size

    Hello everyone,
    We have a critical question about the Application Module default settings (taking the DB connections from a DataSource)
    I know that on the Web it is generally suggested that each request must end with either a commit or rollback when executing PL/SQL blocks "directly" on the DB without the framework BC/ViewObject/Entity service intervention.
    Now, for some reasons, we started to develop our applications with thinking that each Web Session would reference exactly one DB session (opened by any instance taken from the AM pool) for the whole duration of the session, so that the changes made by each Web session to its DB session would never interfere with the changes made by "other" Web Sessions to "other" DB sessions .
    In other words, because of that convincement we often implemented sort of "transactions" that open and close (with either commit or rollback) each DB session not in/after a single HTTP request, but during many HTTP Requests.
    As a concrete example think of this scenario:
    1. the user presses the "Insert" button. An HTTP request is fired. The action listener is executed and ends up with inserting rows in a table via a PL SQL block (not via the ViewObjects API).
    2. no commit or rollback after the above PL/SQL block is done yet.
    3. finally the user presses a "Commit" or "Rollback" button, firing the call to the appropriate AM methos.
    Those three requests consist of what I called "transaction".
    From the documentation it's clear that there is no guarantee that the couple AM istance + DB session is the same during all the requests.
    This means that, during step 2, it's possible that another user might reference the same "pending" AM/DbSession for his needs and "steal" somehow the work done via PL/SQL after step 1. (This happens because sessions taken by the pool are always rolled back by default.)
    Now my question is:
    Suppose we set the "Maximum Pool Size" parameter to very a great number (always inferior to the maximum number of concurrent users):
    Is there any guarantee that all the requests will be isolated in that case?
    I hope the problem is clear.
    Let me know if you want more details.

    Thanks for the answers.
    If I am right, from all your answers about resource avaiability, this means that even supposing the framework is able to always give us the same AM instance back from the AM pool (by following the session-affinity criterias), there is, however, no "connection affinity" with the connections from the DataSource. This means that the "same AM instance" might take the "a new DB connection", if necessary, from the connection pool of the DataSource. If that happens, that could give us the same problems as taking "a new AM instance" (that is, not following session-affinity) from the beginning, since each time an a new connection is taken (either via a new AM instance or via the same AM instance plus a new DB connection), the corresponding DB session is rolle back by default, clearing all the pending transactions we might have performed before with direct PL/SQL calls bypassing the AM services during the life cycle of our application, so that the new HTTP request will have a clean DB session to start to work with.

  • What's the solution about data persistence in BPM?

    In some cases,data of completed processes need to be stored and reused in some applications.But in current BPM,I can't find where the data is stored and applications can't find interfaces to acquire these data.For example,if I want to check last month's or season's finished processes including detailed data in a Web Dynpro UI,what's the solution?

    Hi,
    not sure what exactly you are looking for. NW BPM offers a BW integration which allows you to do reporting about such things. Some information can be found here:
    http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/00b072ec-8ae3-2c10-1b96-e2af98b174b3?quicklink=index&overridelayout=true
    Besides that there is a public API introduced in BPM 7.30 which allows you to access data via java api. But I guess the apis offered by the public API are not suited yet for your use case as it does not provide such advanced search capabilities.
    Best regards.,
    Stefan

  • About function module in alv

    hai all
    iwant to know about few function modules in alv
    1) reuse_alv_default_varients_get.
    2)reuse alv_varients_f4
    what is the use of these function modules
    how to use these function modules, what r the structures used to use these function module. where to pass this in
    in list and grid display function modules.
    plz help me.
    thanks & regards
    sindu

    HI,
    check this.
    REPORT Z_TEST_alv_variant .
    TYPE-POOLS : SLIS.
    PARAMETERS: ONE RADIOBUTTON GROUP G1 DEFAULT 'X',
                TWO RADIOBUTTON GROUP G1.
    DATA: BEGIN OF I_TAB OCCURS 0,
    FIELD1 TYPE I,
    FIELD2 TYPE I,
    END OF I_TAB.
    DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: L_VARIANT TYPE DISVARIANT,
          LX_VARIANT LIKE DISVARIANT,
          L_SAVE TYPE C,
          L_EXIT(1) TYPE C.
    SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE TEXT-VAR.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
    SELECTION-SCREEN END OF BLOCK 0.
    INITIALIZATION.
      L_SAVE = 'A'.
      PERFORM VARIANT_INIT.
    Get default variant
      LX_VARIANT = L_VARIANT.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
        EXPORTING
          I_SAVE     = L_SAVE
        CHANGING
          CS_VARIANT = LX_VARIANT
        EXCEPTIONS
          NOT_FOUND  = 2.
      IF SY-SUBRC = 0.
        P_VARI = LX_VARIANT-VARIANT.
      ENDIF.
    Process on value request
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
      PERFORM F4_FOR_VARIANT.
      I_TAB-FIELD1 = 19.
      I_TAB-FIELD2 = 20.
      APPEND I_TAB.
      I_TAB-FIELD1 = 19.
      I_TAB-FIELD2 = 20.
      APPEND I_TAB.
      I_TAB-FIELD1 = 19.
      I_TAB-FIELD2 = 20.
      APPEND I_TAB.
      I_TAB-FIELD1 = 19.
      I_TAB-FIELD2 = 20.
      APPEND I_TAB.
      I_TAB-FIELD1 = 19.
      I_TAB-FIELD2 = 20.
      APPEND I_TAB.
      PERFORM INITIALIZE_FIELDCAT USING GT_FIELDCAT[].
      PERFORM CALL_ALV  TABLES I_TAB[]
                       USING GT_FIELDCAT.
    *& Form initialize_fieldcat
    text
    -->P_GT_FIELDCAT[] text
    FORM INITIALIZE_FIELDCAT USING L_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
      LS_FIELDCAT-FIELDNAME = 'FIELD1'.
      LS_FIELDCAT-KEY = 'X'.
      LS_FIELDCAT-COL_POS = 1.
      LS_FIELDCAT-SELTEXT_S = 'Work center'.
      LS_FIELDCAT-SELTEXT_L = 'Work center'.
      APPEND LS_FIELDCAT TO L_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME = 'FIELD2'.
      LS_FIELDCAT-KEY = ' '.
      LS_FIELDCAT-COL_POS = 2.
      LS_FIELDCAT-SELTEXT_S = 'Work center2'.
      LS_FIELDCAT-SELTEXT_L = 'Work center2'.
      APPEND LS_FIELDCAT TO L_FIELDCAT.
      CLEAR LS_FIELDCAT.
    ENDFORM. " initialize_fieldcat
    *&      Form  call_alv
          text
         -->P_GT_FIELDCAT  text
         -->P_I_TAB  text
    FORM CALL_ALV  TABLES   P_TAB
                    USING    P_GT_FIELDCAT .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM = SY-REPID
          IT_FIELDCAT        = P_GT_FIELDCAT
          I_DEFAULT          = 'X'
          IS_VARIANT         = L_VARIANT
          I_SAVE             = L_SAVE
        TABLES
          T_OUTTAB           = P_TAB[]
        EXCEPTIONS
          PROGRAM_ERROR      = 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.
    ENDFORM.                    " call_alv
    *&      Form  VARIANT_INIT
          text
    FORM VARIANT_INIT.
      CLEAR L_VARIANT.
      L_VARIANT-REPORT = SY-REPID.
    ENDFORM.                               " VARIANT_INIT
    *&      Form  variant_SELECTION_SCREEN
          text
    FORM VARIANT_SELECTION_SCREEN .
      IF NOT P_VARI IS INITIAL.
        MOVE L_VARIANT TO LX_VARIANT.
        MOVE P_VARI TO LX_VARIANT-VARIANT.
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
          EXPORTING
            I_SAVE     = L_SAVE
          CHANGING
            CS_VARIANT = LX_VARIANT.
        L_VARIANT = LX_VARIANT.
      ELSE.
        PERFORM VARIANT_INIT.
      ENDIF.
    ENDFORM.                    " variant_SELECTION_SCREEN
    *&      Form  F4_FOR_VARIANT
          text
    FORM F4_FOR_VARIANT.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          IS_VARIANT = L_VARIANT
          I_SAVE     = L_SAVE
        IMPORTING
          E_EXIT     = L_EXIT
          ES_VARIANT = LX_VARIANT
        EXCEPTIONS
          NOT_FOUND  = 2.
      IF SY-SUBRC = 2.
        MESSAGE ID SY-MSGID TYPE 'S'      NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        IF L_EXIT = SPACE.
          P_VARI = LX_VARIANT-VARIANT.
        ENDIF.
      ENDIF.
    ENDFORM.                    "F4_FOR_VARIANT
    Regards,
    Laxmi.

Maybe you are looking for

  • Windows 8 on macbook pro

    hey guys im new to these forums, so hopefulluy im asking this question in the right place so i have completly install windows 8 on my bootcamp, but folloing a tutoiral, its great, but there is one important piece missing, my nvidia graphics drivers,

  • "at" UNIX Command in Java Program

    Friends, 1. "at" command in UNIX execute Unix command at a scheduled time. 2. For each user there will be a table maintained internally which can be accessed by "at" with "-l" argument. 3. A mail will be sent to the owner with the output of the comma

  • Patch practice

    Hi, expert: I would like to practice patching in 11.5.10.2 on unix. There is a patch instance which no one is using it. BTW, how do you check if no one uses it? Would you please tell me which patch I can use for this purpose so there will be no/minim

  • FTO Assignment

    Hi Experts, Can anyone give me a brief idea about how do we configure Foreign Trade organization to company code. I.e how many company codes can possible to single fto. Exp: From we are exporting from India, Bangladesh, China, Pakistan, Sri Lanka to

  • Surely this bug cannot have persisted from ODT 10 to ODT 11..

    If I use ODT to design a table, I add a primary key and I choose my columns to be: ZZZ AAA MMM When I save, I frind ODT "helpfully" rearranges my columns into alphabetical order, but it didnt want that. I specifically wanted the index in the order ab