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

abap-hr

Former Member
0 Likes
540

I am new to abap-hr.What r infotypes and macros .plz explain me clearly

I am new to abap-hr.What r infotypes and macros .plz explain me clearly

3 REPLIES 3
Read only

Former Member
0 Likes
504

Hi

Infotypes are like Tables in SAp which contain employee information data

We use Macros like

RP_PROVIDE_FROM_LAST and

RP_PROVIDE_FROM_FIRST

SEE THE DOC

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

sites regarding hr-abap:

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

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPA/PAPA.pdf

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPD/PAPD.pdf

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_BASICS.pdf

http://www.atomhr.com/training/Technical_Topics_in_HR.htm

http://www.planetsap.com/hr_abap_main_page.htm

You can see some Standard Program examples in this one ...

http://www.sapdevelopment.co.uk/programs/programshr.htm

http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?Offer=SAlgwn12604#...

http://www.erpgenie.com/faq/hr.htm.

http://www.planetsap.com/hr_abap_main_page.htm

http://www.sapbrain.com/TUTORIALS/FUNCTIONAL/HR_tutorial.html

These are the FAQ's that might helps you as well.

http://www.sap-img.com/human/hr-faq.htm

http://www.sapgenie.com/faq/hr.htm

http://www.planetsap.com/hr_abap_main_page.htm

http://www.atomhr.com/library_full.htm

Reward points if useful

Regards

Anji

Read only

0 Likes
504

SAP has given the concept of Infotypes for HR module only..reason for this is ' HR data is Time dependent', like for one time period employee can be one position and later he got promoted to a new position.hence there wl be 2 records for this employee of infotype 0001, first record will be for time period whn he was on first position and second will be for the time period indicating the new position.

Infotype is a logical grouping of similar kind of DATA.

HR Macros - Sap has provided HR macros to ease out the processing of hR data while reporting.

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

here p0001 is having Infotype 0001 data of employee which is valid for period pn-begda and pn-endda.

when u pass this internal table to the above macro, wht it will do is place the latest it0001 record of employee in the header line of table p0001.

refer this demo code which is reading IT0023 data of the emploees -




REPORT  ZPPL_PREVEMPLOYERS   message-id rp
                             line-size 250
                             line-count 65.
************************************************************************
* Report: ZPPL_PREVEMPLOYERS                                           *
*****------------------------------------------------------------------*
* Program title:  Program to list Previous employers data for Poland
*
*****------------------------------------------------------------------*
*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:TempABC.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

Read only

Former Member
0 Likes
504

Hi

Infotypes stores the information about employee or others.

Exam : if you want employee basic info like name,phone etc ..you will have one infotype like infotypes for employee details etc.

Every infotype will be associated with one table

if infotype is 0001..table is pa001.

Macros are small type of subroutines you write some code in that(blocks)

sometimes it also do some calculations

just like perform...form in normal abap.

Thanks