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

LDB in HR

hi friends,

I am having a doubt, why LDB (HR PNP...) is used in HR, and why not Open sql statements for Reports.

what is the difference between LDB and open sql statement, in what way it is benificial ?

if possible any one send me documents how to use LDB in HR ? to this mail id venkee_12345@yahoo.co.in

thank u HR consultants

Add a comment
10|10000 characters needed characters exceeded

Related questions

3 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Jan 10, 2007 at 07:33 AM

    Hi,

    You can use open SQL statement also instead of LDB in HR for reports.

    But using LDB, we get more benefits

    1. Bulild in Standarad selection screen

    2. Automatic Data retrieval by just declaring infotypes

    3. Automatic Authorization check which is very imop in HR.

    check this link.

    http://help.sap.com/saphelp_erp2004/helpdata/en/c6/8a15381b80436ce10000009b38f8cf/frameset.htm

    Also check this link for programmming in LDB in HR

    http://help.sap.com/saphelp_erp2004/helpdata/en/4f/d5275f575e11d189270000e83

    22f96/frameset.htm

    Hope this helps.

    Thanks,

    Sarika.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 10, 2007 at 10:57 AM

    The biggest advantage of an LDB is that it 'preselects' the structure within a relationship which could be cumbersome if one has to design joins (and chances are one could go wrong!) but with an LDB you get the same structure as you get in other SAP std. PA modules/programs/reports etc.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 10, 2007 at 09:11 AM

    LDB - is a SET of programs which provide u its own selection screen and commands to deal with HR data.

    Hence for HR u can prefer LDB instead of SQL..

    u can acheive the same thing via SQL but LDB is more easier as u need not write much code.

    u have to specify in the attributes of the program ,LDb name..

    like PNP,PCH etc..

    here is a sample program using LDB -

    REPORT ZPPL_PREVEMPLOYERS message-id rp

    line-size 250

    line-count 65.

    *Program logic :- This Report is used to Download all the Previous

    • Employer (IT0023) records of the employees

    • **********************************************************************

    *eject

    &----


    *& Tables and Infotypes *

    *& *

    &----


    tables: pernr.

    infotypes: 0000,

    0001,

    0002,

    0023.

    *eject

    &----


    *& Constants *

    *& *

    &----


    constants: c_1(1) type c value '1' ,

    c_3(1) type c value '3' ,

    c_i(1) type c value 'I' ,

    c_x(1) type c value 'X' ,

    c_eq(2) type c value 'EQ' ,

    c_pl03 like p0001-werks value 'PL03'.

    *eject

    &----


    *& Selection-Screen *

    *& *

    &----


    parameters: p_file like rlgrap-filename default 'C:\Temp\ABC.xls',

    p_test as checkbox default c_x .

    *eject

    &----


    *& Internal tables *

    *& *

    &----


    • Internal Table for Output

    data: begin of t_output occurs 0 ,

    pernr like pernr-pernr ,

    nachn like p0002-nachn ,

    vorna like p0002-vorna ,

    orgeh_stext like p1000-stext ,

    plans_stext like p1000-stext ,

    begda like p0023-begda ,

    endda like p0023-endda ,

    land1 like p0023-land1 ,

    arbgb like p0023-arbgb ,

    ort01 like p0023-ort01 .

    data: end of t_output .

    *eject

    &----


    *& Variables *

    *& *

    &----


    data: o_stext like p1000-stext,

    p_stext like p1000-stext.

    *eject

    &----


    *& Initialization *

    *& *

    &----


    Initialization.

    • Initialize Selection-Screen values

    perform init_selction_screen.

    *eject

    &----


    *& AT Selection-screen *

    *& *

    &----


    at selection-screen .

    • Check if Test run selected, download file name should be entered

    if p_test is initial. "

    if p_file is initial.

    message e016 with 'Please enter file name'

    'specifying complete path'.

    endif.

    endif.

    *eject

    &----


    *& Start-of Selection *

    *& *

    &----


    Start-of-selection.

    get pernr.

    clear t_output.

    • Read Infotype 0

    rp-provide-from-last p0000 space pn-begda pn-endda.

    check pnp-sw-found eq c_1.

    • Check if employee is active

    check p0000-stat2 in pnpstat2. "pernr Active

    • Read Infotype 1

    rp-provide-from-last p0001 space pn-begda pn-endda.

    check pnp-sw-found eq c_1.

    • check if employee belongs to PL03

    check p0001-werks in pnpwerks. "belongs to PL03

    • Check if emp belongs to Active Group

    check p0001-persg in pnppersg.

    • Read Infotype 2

    rp-provide-from-last p0002 space pn-begda pn-endda.

    check pnp-sw-found eq c_1.

    • Read Org Unit Text.

    CALL FUNCTION 'HR_READ_FOREIGN_OBJECT_TEXT'

    EXPORTING

    OTYPE = 'O'

    objid = p0001-orgeh

    begda = p0001-begda

    endda = p0001-endda

    reference_date = p0001-begda

    IMPORTING

    object_text = o_stext

    EXCEPTIONS

    nothing_found = 1

    wrong_objecttype = 2

    missing_costcenter_data = 3

    missing_object_id = 4

    OTHERS = 5.

    *Read Position Text.

    CALL FUNCTION 'HR_READ_FOREIGN_OBJECT_TEXT'

    EXPORTING

    OTYPE = 'S'

    objid = p0001-plans

    begda = p0001-begda

    endda = p0001-endda

    reference_date = p0001-begda

    IMPORTING

    object_text = p_stext

    EXCEPTIONS

    nothing_found = 1

    wrong_objecttype = 2

    missing_costcenter_data = 3

    missing_object_id = 4

    OTHERS = 5.

    • Gather all the required information related to the emp

    move: pernr-pernr to t_output-pernr,

    o_stext to t_output-orgeh_stext,

    p_stext to t_output-plans_stext,

    p0002-nachn to t_output-nachn,

    p0002-vorna to t_output-vorna.

    • Gather previous Employee details

    loop at p0023.

    move-corresponding p0023 to t_output.

    append t_output.

    endloop.

    *eject

    &----


    *& End-of Selection *

    *& *

    &----


    end-of-selection.

    perform print_report.

    • Downlaod the file

    if not t_output[] is initial.

    if p_test eq space.

    perform download_file.

    endif.

    else.

    write: 'No records selected' color col_negative.

    endif.

    *eject

    &----


    *& Top-of-page *

    *& *

    &----


    Top-of-page.

    • Print Header

    perform print_header.

    *eject

    &----


    *& Form download_file

    &----


    • Description :

    ----


    FORM download_file .

    DATA: full_file_name TYPE string,

    z_akt_filesize TYPE i .

    full_file_name = p_file.

    • download table into file on presentation server

    CALL METHOD cl_gui_frontend_services=>gui_download

    EXPORTING

    filename = full_file_name

    filetype = 'DAT'

    NO_AUTH_CHECK = c_x

    codepage = '1160'

    IMPORTING

    FILELENGTH = z_akt_filesize

    CHANGING

    data_tab = t_output[]

    EXCEPTIONS

    file_write_error = 1

    no_batch = 2

    gui_refuse_filetransfer = 3

    invalid_type = 4

    no_authority = 5

    unknown_error = 6

    header_not_allowed = 7

    separator_not_allowed = 8

    filesize_not_allowed = 9

    header_too_long = 10

    dp_error_create = 11

    dp_error_send = 12

    dp_error_write = 13

    unknown_dp_error = 14

    access_denied = 15

    dp_out_of_memory = 16

    disk_full = 17

    dp_timeout = 18

    file_not_found = 19

    dataprovider_exception = 20

    control_flush_error = 21

    not_supported_by_gui = 22

    error_no_gui = 23

    OTHERS = 24.

    *

    IF sy-subrc NE 0.

    MESSAGE e016 WITH 'Download-Error; RC:' sy-subrc.

    ENDIF.

    ENDFORM. " download_file

    *eject

    &----


    *& Form print_report

    &----


    *Description:

    ----


    FORM print_report .

    data: i type i,

    w_count type i.

    sort t_output.

    • Print the report

    loop at t_output.

    i = sy-tabix mod 2.

    if i eq 0.

    format color col_normal intensified on.

    else.

    format color col_normal intensified off.

    endif.

    write:/1 t_output-pernr ,

    10 t_output-vorna(25) ,

    35 t_output-nachn(25) ,

    61 t_output-orgeh_stext ,

    102 t_output-plans_stext ,

    143 t_output-begda ,

    154 t_output-endda ,

    168 t_output-land1 ,

    178 t_output-arbgb(40) ,

    219 t_output-ort01 ,

    249 space .

    endloop.

    uline.

    Describe table t_output lines w_count.

    Skip 2.

    Write:/ 'Total No of Records Downloaded: ' color col_total,

    w_count.

    ENDFORM. " print_report

    *eject

    &----


    *& Form print_header

    &----


    *Description:

    ----


    FORM print_header .

    skip 1.

    Uline.

    format Intensified on color col_heading.

    write:/1 'Pers. #' ,

    10 'Last Name' ,

    35 'First Name' ,

    61 'Org Unit' ,

    102 'Position' ,

    143 'Beg Date' ,

    154 'End Date' ,

    168 'Cntry Key' ,

    178 'Prev Employer' ,

    219 'City' ,

    249 space .

    format intensified off color off.

    uline.

    ENDFORM. " print_header

    *eject

    &----


    *& Form init_selction_screen

    &----


    *Description:

    ----


    FORM init_selction_screen .

    refresh: pnpwerks,

    pnppersg,

    pnpstat2.

    clear: pnpwerks,

    pnppersg,

    pnpstat2.

    pnpwerks-sign = c_i.

    pnpwerks-option = c_EQ.

    pnpwerks-low = c_pl03.

    append pnpwerks.

    pnppersg-sign = c_i.

    pnppersg-option = c_EQ.

    pnppersg-low = c_1.

    append pnppersg.

    pnpstat2-sign = c_i.

    pnpstat2-option = c_EQ.

    pnpstat2-low = c_3.

    append pnpstat2.

    ENDFORM. " init_selction_screen

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

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

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