220
HR ABAP HR ABAP HR ABAP HR ABAP

HR ABAP Training

Embed Size (px)

Citation preview

Page 1: HR ABAP Training

HR ABAPHR ABAPHR ABAPHR ABAP

Page 2: HR ABAP Training

Agenda

• Overview and Features in HR programming

• Difference between Conventional ABAP

• Concepts of Infotypes

• Logical Databases in HR

• Macros in HR

• Clusters in HR

• Enhancement and creation of Infotype

• Reporting in HR

• User Exits and BAdIs

• Authorization Objects in HR

Page 3: HR ABAP Training

• The aim in the Human Resources component is to be able to process employee related data according to business requirements in an effective structure.

• The Human Resources module uses a system of data grouped together called infotypes. The Human Resources module uses a system of data grouped together called infotypes. And storing bulk data like time management and Payroll data in Cluster files. HR Programming involves data extraction and manipulation from theseinfotypes and clusters using LDB/MACRO and function modules.

• Infotypes mirror a quantity of connected data records; infotypes are identifiable through a four character numerical string [e.g. infotype Addresses (0006)] .

• You can save the infotypes as time-dependent to enable a retroactive evaluation of Employee data.

• The infotypes appear as an entry screen for the user, through which you can maintain infotype records. Infotypes can be processed individually or in fast entry mode.

Overview and Features in HR Programming

Page 4: HR ABAP Training

• Advanced Business Application Programming ABAP is SAP's fourth generation language. All of R/3's applications and even parts of its basic system are developed in ABAP. ABAP is used for customization and modification of SAP applications.

• In HR ABAP use of select statements significantly less than in other areas of ABAP development, Logical databases have limited applications in other modules but are very useful in HR. Also, you really need to understand the infotype time constraint concept since the data organization in HR is Employee-Time based, When you cannot get the information that you need out of the logical DB look at the function modules starting with HR* and RH*. These function modules will provide you with multiple ways of accessing data to save time. Worst-case scenario, use a select statement.

• In addition to the LDB, HR programming also involves the use of Macros for data extraction

• The storage an access of data is different

• Authorization checks

Difference between Conventional ABAP

Page 5: HR ABAP Training

An infotype represents a group of related data fields, provide

information structure, facilitates data entry, and allows time dependent

storage. In other words we can say infotypes are information units used

to enter the time dependent data of the employee.

Master data in HR is stored in infotypes .Each infotype pertains to a

specific type of data. Each infotype has a database table associated with

it.

Time constraints: Enable you to determine how the validity periods of

Infotype data records interact.

1. Time constraint 1: Exactly one valid data record of the infotype in question must exist for the entire time that the employee belongs to the enterprise.

2. Time constraint 2: No more than one valid data record of the infotype in question can exist at any one time.

3. Time constraint 3: Any number of valid data records of the infotype in question can exist at any one time.

Concepts of Infotypes

Page 6: HR ABAP Training

Transparent tables for infotype

• Each infotype has a transparent table. Each logical field for aninfotype has a corresponding physical field on the database.

• One physical table is stored on the database for each transparent table. The names of the physical table and logical table definition in the Dictionary are compatible.

• The following naming convention applies to infotype tables; nnnnstands for the infotype number:

• PAnnnn for transparent tables in Personnel Administration

• PBnnnn for transparent tables in Recruitment

• HRPnnnn for transparent tables in Personnel Planning

• Example : For Infotype 0000, the corresponding database table associated with it is PA0000

Concepts of Infotypes

Page 7: HR ABAP Training

Transparent tables for infotype

It is not true always that a Personnel Administration/Recruitment/Personnel

Planning etc has a transparent table like PAnnnn or PBnnnn or HRPnnnn. One

such example is TEVEN table for IT 2011.It is better to use the Function module

HR_INFOTYPE_DATABASETABLE_GET to get the Infotype table name for an

infotype.

CALL FUNCTION 'HR_INFOTYPE_DATABASETABLE_GET'

EXPORTING

INFTY = <INFTY>

TCLAS = <TCLAS> “Transaction Class with values ‘A’ or ‘B’ or ‘T’

IMPORTING

DBNAME = <DBTAB>

EXCEPTIONS

ENTRY_NOT_FOUND = 1

OTHERS = 2.

You can also use the database table T777D to find the database table associated

with an infotype.

Concepts of Infotypes

Page 8: HR ABAP Training

Technical Data Structure of Info Types

PA Infotypes

The transparent table for PA Infotype is PAnnnn where nnnn is the infotype

number.

Structure PAKEY:

This is nothing but primary key of transparent table PAnnnn

• PERNR: the personnel number is the only unique key within a client for identifying an employee. It is used to access the display and maintenance screens for an employee’s master data and working time data (infotypes).

• SUBTY: subtypes are subdivisions of infotypes. An infotype’s subtypes can have different time constraints and form their own histories.

• OBJPS: the object identification is used to make a distinction between records with the same infotype, subtype, lock indicator, start date, and end date. For example, the child number in infotype 0021 Family/Related Person.

Concepts of Infotypes

Page 9: HR ABAP Training

• SPRPS: the lock indicator for HR master data is used to lock and unlock data records, which enables the “double verification principle” to be put into practice. In accordance with this principle, at least two users are involved in the process of writing an active data record to the database. One of the users creates a locked infotype record, and the other user unlocks - that is, activates the data record.

• ENDDA: end date.

• BEGDA: start date.

• SEQNR: The Sequential Number is used to make a distinction between infotype records that have the same key and time constraint '3' (any number of valid infotype data records at any one time). Unlike the object identification, it is assigned by the system automatically

Note: Structure PAKEY should never be changed

Concepts of Infotypes

Page 10: HR ABAP Training

Concepts of Infotypes

Structure PSHD1:

In addition to structure PAKEY, there is another basic structure that is identical

for all infotypes in personnel administration – that is, the structure PSHD1.

Structure PSHD1 should never be changed

Page 11: HR ABAP Training

Concepts of Infotypes

Structure PSHDR:

This is a meta structure and contains the structures PSHDR and PSKEY.

Structure PSHDR should never be changed

Structure Pnnnn:

This structure contains the includes PSHDR and PS0002, where PSHDR in turn contains the

include structures PSKEY and PSHD1.

Page 12: HR ABAP Training

Concepts of Infotypes

P9nnn:Yes

P0nnn-P8nnn:No

PSHDR

PSnnnn

StructurePnnnn

PS9nnn:Yes

PS0nnn-PS8nnn:

No

(field definitions)

CI_Pnnnn

StructurePSnnnn

NoPSKEY

PSHD1

StructurePSHDR

No-StructurePSHD1

No-StructurePAKEY

Can be changed by

customer

IncludesDefinitionElement

Page 13: HR ABAP Training

Concepts of Infotypes

Yes-StructureCI_nnnn

PA9nnn:Yes

PA0nnn- PA8nnn

:No

MANDT

PAKEY

PSHD1

PSnnnn

Transparent

Table

PAnnnn

Can be changed by

customer

IncludesDefinitionElement

Page 14: HR ABAP Training

Technical Data Structure of Info Types

Personnel Infotypes

Structure: HRIKEY

• MANDT: This field contains the clients.

• PLVAR: It is a two-character alphanumeric Key for the plan versions that enables us to differentiate between alternative plan versions.

• OTYPE: This field contains the object type key, which is a maximum of two alphanumeric characters in length.

• OBJID: This field contains an eight-digit key that represents a single object.

• SUBTY: Contains specification of sub type

• ISTAT: This field is one-digit numeric key in which the planning status is indicated. There is a status for all objects and for the infotypes that describe them.

• BEGDA: This contains start date of the validity period

• ENDDA: This contains end date of the validity period

• VARYF: This contains the target object of a relationship

• SEQNR: This specifies a sequence number for Infotypes of time constraint class 3.

Concepts of Infotypes

Page 15: HR ABAP Training

Concepts of Infotypes

Structure HRIKEYL:

The structure HRIKEYL is a variant of the structure HRIKEY. This supports language-dependant

infotypes.

Page 16: HR ABAP Training

Concepts of Infotypes

Structure HRIADMIN:

The structure HRIADMIN is a data structure contains administrative information on each infotype.

Page 17: HR ABAP Training

Concepts of Infotypes

Structure HRInnnn:

The infotype-specific data fields for an infotype are defined in the structure HRInnnn. Here nnnn

stands for four-digit infotype number, as appropriate.

Transparent Table HRPnnnn:

The transparent table now contains the structures HRIKEY(key fields), HRADMIN and HRInnnn.

Logical structure Pnnnn:

Like the infotypes in Pa, the structure Pnnnn is also found in the infotypes of personnel planning.

It contains the includes HRIPKEY, HRIADMIN and HRInnnn.

Page 18: HR ABAP Training

Concepts of Infotypes

Table Infotypes:

Table infotypes are a special form of infotype used in personnel planning. Table infotypes are

infotypes for which the data part has a repetitive structure of arbitary length. The repetitive

structures could be texts with any number of lines, or it could, for example, be a course

schedule with any number of days. In order to provide the option of saving repetitions of any

length, the data part must have repetitive structure and it must be saved in a separate data table.

This repetition part of the table part is described in the logical structure PTnnnn and stored in

separate table HRTnnnn. While maintaining the entry in table T777D for infotypes, the table

infotype will be having the T777D-TBTAB field will be filled with HRTnnnn.

Page 19: HR ABAP Training

Concepts of Infotypes

External Object Types:

External Object types refer to those object types that are not stored in the data structure of

personnel planning. From a technical point of view there is no record in HRP1000 for external

objects. External Object types are only referenced in the context of a relationship record.

Technically, this means that data records on the relationship are only held in HRP1001.

For internal object types, relationships can exist in two directions, top-down (B) and bottom-up

(A). This results in the creation of two records in IT 1001, relationships. External Object types are

limited in this respect. In order to create an inverse relationship for an external object type, the

key structure of the external object type must be an eight-digit numeric string type NUMC of

length 8). It must be therefore be defined with the same type as the field object ID (HRPnnnn-

OBJID).

Whether external object types have only one relationship – or if inverse relationships are also

possible – is established for each object type in the table T77EO.

Page 20: HR ABAP Training

Concepts of Infotypes

External Infotypes:

Infotypes that are needed for planning purposes in personnel planning, but are not stored in

transparent infotype tables of the type HRPnnnn are referred to as external infotypes. This

information can be physically available, for example, in the tables of personnel administration.

An identifier for an external infotype appears in table T777D in the field EXT_INFTY.

Page 21: HR ABAP Training

Concepts of Infotypes

P9nnn:Yes

P0nnn-P8nnn:No

HRIPKEY

HRIADMIN

HRInnnn

StructurePnnnn

HRI9nnn:Yes

HRI0nnn-

HRI8nnn: No

(field definitions)

CI_Pnnnn

StructureHRInnnn

No-StructureHRIADMIN

No-StructureHRIKEYL

No-StructureHRIKEY

Can be changed by

customer

IncludesDefinitionElement

Page 22: HR ABAP Training

Concepts of Infotypes

Yes-StructureCI_nnnn

HRT9nnn:Yes

HRT0nnn-

HRT8nnn : No

PTnnnnTransparent

Table

HRTnnnn

PT9nnn:Yes

PT0nnn-PT8nnn:

No

-StructurePTnnnn

HRP9nnn:Yes

HRP0nnn-

HRP8nnn: No

HRIKEY or

HRIKEYL

and

HRIADMIN

Transparent

Table

HRPnnnn

Can be changed by

customer

IncludesDefinitionElement

Page 23: HR ABAP Training

To reduce programming Efforts, it often helps to use the logical

databases when creating reports. Logical databases are special ABAP

Programs that provide selection screens, additional features and so on.

The main objects of a LDB are Structure, Selection and Database

Program. An LDB has another advantage for the option of central

authorization checking.

Logical Databases used In HR:

1. PAP

2. PNP

3. PNPCE - Enhanced version of PNP available form SAP Enterprise version onwards

4. PCH

5. PTRVP

The LDB PAP is for Applicant administration, PNP and PNPCE for

Personnel Management, PCH for Organisational Management and PTVRP

for Travel Management.

The Logical Databases PNP/PNPCE and PCH are mostly used.

Logical Databases in HR

Page 24: HR ABAP Training

Macros in HR

• Like subroutines and function modules, macro modules can be

used to modularize programs. Macro modules are frequently used

in HR.

• These macros are defined in program SAPDBPNP (include

DBPNPMAC) with the keyword DEFINE. They can be used in any

program that uses the logical database PNP.

• If you want to use these macros in reports that do not use the

logical database PNP, you must include program DBPNPMAC with

the keyword INCLUDE.

• You can also define your own macros. In accordance with the

naming convention, the first two letters stand for the application.

• Some macros are also stored in the Macros in ABAP Programs table

(TRMAC)

Example of Macros are

1. RP_PROVIDE_FROM_LAST which is available in the include DBPNPMAC

2. RP-PROVIDE-FROM-FRST which is available in table TRMAC

Page 25: HR ABAP Training

Macros in HR

• The RP_PROVIDE_FROM_LAST macro retrieves the last valid data

record in the data selection period.

• The parameters for RP_PROVIDE_FROM_LAST are: infotype,

subtype, start date, and end date. If you do not want to specify a

particular subtype, enter SPACE.

• You can process not only the last valid data record in the data

selection period, but also the first valid data record using the

RP_PROVIDE_FROM_FRST macro.

• The macro return code PNP-SW-FOUND has the value 1 if a suitable

entry exists in the infotype table for the specified period. If no entry

is found, the value is 0.

Page 26: HR ABAP Training

Clusters in HR

S A P A G 1999

D a tab ase T ab le s P C L n

PC LnPC Ln

A1

A2

A3

Page 27: HR ABAP Training

• Database tables of type PCLn are divided

into subareas known as data clusters.

• Data clusters can be identified by their two-

character IDs.

• The respective subareas within Human

Resources work on their own cluster.

• A separate data key is defined for each

subarea.

• The PCLn database tables are a type of

import/export database table.

Clusters in HR

Page 28: HR ABAP Training

Clusters in HR

Page 29: HR ABAP Training

Clusters in HR

Cluster table PCL1:

PCL1 contains the following data areas

B1 Time events/PDC

G1Group incentive wages

L1 Individual incentive wages

PCPersonal calendar

TE Trip costs/accounting results

TCTrip costs/credit card data

TX Infotype texts

Z1 Interface PDC -> cost accounting/materials management

This table is maily used for retrieving data from the following data areas:

1. B1

2. TX

Page 30: HR ABAP Training

Clusters in HR

Cluster table PCL2:

PCL2 contains the following data areas:

B2 Time accounting results

CUCluster directory

PSGenerated schema

PT Texts for generated schemas

RXPayroll results/international

Xy Payroll results/country-specific, whereby xy represents the relation

ID. This is from RELID field of table T500L for the country.

ZL Personal work schedule

Page 31: HR ABAP Training

Clusters in HR

DB Table Administration/ PCLn

IMPORT

PCLnPCLn

A1 A2

TABLES: PCLn.

EXPORT

1. The PCLn import/export database tables are managed by the ABAP

commands IMPORT and EXPORT.

2. We can use these commands to store any data object - such as fields,

structures or internal tables - on the database, or to read them from the

database.

3. Data is read and written using a unique key.

Page 32: HR ABAP Training

Clusters in HR

Table Structure / PCLn

Field name

CLIENT

RELID

SRTFD

SRTF2

KEY

X

X

X

X

Length

3

2

40

10

Text

C lient

Relation ID

W ork area key

Sort field for duplicate key

Example of international payroll results:

RELID SRTFD

RX 00001911 00001

RX 00001911 00002

RX 00001911 00003

. . .

Page 33: HR ABAP Training

Clusters in HR

� The structure of PCLn database tables provides a basic structure for

individual subareas.

� The name of each subarea must include a two-character cluster name

or

relation ID.

� A key structure must also be defined; 40 bytes are available in field

SRTFD for this purpose.

� In the international payroll results, for example, the field RELID

contains

the cluster name RX and the field SRTFD contains the eight-digit

personnel number as well as a five-digit sequence number for each

individual payroll result for a payroll period.

� To enable the import of a record from a PCLn database table, the

RELID

field must contain the cluster identifier and the SRTFD field must contain

the cluster key. The fields CLIENT and SRTF2 are filled by the system.

Page 34: HR ABAP Training

Clusters in HR

Utilities/Dele ting a C luster

PCLnPCLnUTILITYUTILITY

PCLnPCLn

Utility transaction PU00 enables us to delete payroll results in xy clusters for specific

personnel numbers.

1. Utility programs RPUPnD00 and RPUPnD10 - where n stands for database table

PCL1 or PCL2 - enable us to delete one or more records from any cluster.

2. We can delete payroll results using the program RPUDEL20.

3. Caution:

The deletion utilities should only be used for testing. Archiving takes place to

reduce the amount of data in the database.

Page 35: HR ABAP Training

Enhancement and Creation of Infotypes

Enhancement of Infotypes

Page 36: HR ABAP Training

Enhancement and Creation of Infotypes

Infotype needs to be enhanced sometimes to add our own fields

to the existing infotype fields. Before Enhancing any infotype, CI_

Include must be available.

Enhancement of PA InfotypesIn PA we can enhance the Single screen as well as list screen.

Enhancing the single screen

• Procedure

1. Start the transaction Enhance Infotype, (transaction code

PM01). The Create Infotype screen appears.

2. Choose Enhance Infotype Tab

Page 37: HR ABAP Training

Enhancement and Creation of Infotypes

3. In the Infotype Number field, enter the four-digit number of the

infotype you want to enhance

When you enter the infotype number, remember to enter any

leading

zeros.

Note: It is not possible to enhance a single screen for the Actions

infotype (0000), or the Time Management infotypes.

Page 38: HR ABAP Training

Enhancement and Creation of Infotypes

4. Choose the button ‘Create All’

The following screen appears:

5. Press Enter. Then create the fields required on the screen. In this

case Train Route

Page 39: HR ABAP Training

Enhancement and Creation of Infotypes

6. The following screen appears.

7. Now if we go to Infotype 0006 of any employee we can see

the field added.

Page 40: HR ABAP Training

Enhancement and Creation of Infotypes

Note: While enhancing the single screen of an infotype a module pool

program ZPnnnn00 will be created and that can be modified by

ourselves. We have to modify the screen number 0200 for adjusting

the screen elements and appearance of the enhanced screen.

The module pool program of a PA Infotype will be MPnnnn00.

For every infotype there is a dialog module associated with it. It will

be RP_nnnn for PA infotypes.

The single screen of an Infotype will be 2000 and the list screen will

be 3000.

Here nnnn denotes 4-digit infotype number.

Page 41: HR ABAP Training

Enhancement and Creation of Infotypes

Enhancing the single screen

• Procedure

1. Start the transaction Enhance Infotype, (transaction code PM01). The Create Infotype screen appears.

2. Choose Enhance List screen Tab

3. In the Infotype Number field, enter the four-digit number of the infotype you want to enhance the list screen.

Page 42: HR ABAP Training

Enhancement and Creation of Infotypes

4. Choose the button ‘Create All’

The following screen appears:

5. Press Enter. Then create the fields required on the screen. In this

example Train Route

Page 43: HR ABAP Training

Enhancement and Creation of Infotypes

6. The following screen appears.

6. Now if we go to Infotype 0006 overview screen of any

employee we can see the field added .

Page 44: HR ABAP Training

Enhancement and Creation of Infotypes

Note: While enhancing the list screen of an infotype a module pool

program ZPnnnn00 will be created (if it is not available already) with

an include ZPnnnn40. We cannot modify the screen appearance of

the added field since it will be directly added to the list screen 3000

of the module pool MPnnnn00.

Page 45: HR ABAP Training

Enhancement and Creation of Infotypes

Enhancement of Personnel InfotypesUse the transaction PPCI to enhance Personnel Infotypes.

Enhancing the single screen

• Procedure

1. Start the transaction Enhance Infotype, (transaction code PPCI). The following screen appears. Enter the 4 digit infotype number. Click on extend button.

Page 46: HR ABAP Training

Enhancement and Creation of Infotypes

2. The following screen appears. Click on ‘Create All’ Button.

3. Enter the fields and activate the include CI_Pnnnn and the fields

entered will appear in the infotype.

Page 47: HR ABAP Training

Enhancement and Creation of Infotypes

Enhancing the list screen

• Procedure

1. Start the transaction Enhance Infotype, (transaction code PPCI). The following

screen appears. Enter the 4 digit infotype number. Select the menu Infotype����

Enhance list screen.

Page 48: HR ABAP Training

Enhancement and Creation of Infotypes

2. The following screen appears. Click on ‘Create All’ Button.

3. Enter the fields and activate the structure ZPLISnnnn and these fields

entered will appear in the infotype's overview screen.

Page 49: HR ABAP Training

Enhancement and Creation of Infotypes

Creation of Infotypes

Page 50: HR ABAP Training

Enhancement and Creation of Infotypes

Infotype needs to be created when you cannot store the required

information in any of the standard infotypes.

Creation of PA Infotypes1. Start the transaction Enhance Infotype, (transaction code PM01). The

Create Infotype screen appears.

2. Enter the four digit Infotype number ( starting from 9000-9999).

3. Then click on the ‘Create All’ button.

Page 51: HR ABAP Training

Enhancement and Creation of Infotypes

3. The following popup appears. Press Enter.

4. The new screen for entering the required infotype field appears.

Activate the structure PSnnnn and the required infotype details are

created.

Page 52: HR ABAP Training

Enhancement and Creation of Infotypes

5. Then our major duty is to maintain the infotype characteristics. For that from the PM01 transaction select the button ‘Infotype Characteristics’. Copy the entry from existing infotype to the newly created one and change the characteristics of our infotype accordingly. The characteristics can also be maintained through IMG or by using the customizing view V_T582A.

New Infotype

Page 53: HR ABAP Training

Enhancement and Creation of Infotypes

Details of customization

Page 54: HR ABAP Training

Enhancement and Creation of Infotypes

If you goto PA30 transaction for Infotype 9nnn you can find the infotype

fields entered.

Page 55: HR ABAP Training

Enhancement and Creation of Infotypes

Creation of Personnel InfotypesField Infotypes

For Field infotypes we have to create the structure HRI9nnn though

the transaction SE11 before we are creating the infotype.

Table Infotypes

For Table infotypes we have to create the structure HRI9nnn and

PT9nnn though the transaction SE11 before we are creating the

infotype.

Other than these the creation of both types of Infotype remain the

same.

Page 56: HR ABAP Training

Enhancement and Creation of Infotypes

Let us see the procedure of creating a table Infotype, 9700.

Goto SE11 transaction and create the structures HRI9700 and

PT9700

Page 57: HR ABAP Training

Enhancement and Creation of Infotypes

1. Start the transaction Enhance Infotype, (transaction code PPCI). The

Create Infotype screen appears.

2. Enter the four digit Infotype number ( starting from 9000-9999. In our

example it is 9700). Also enter the description of the Infotype.

3. Then click on the ‘Create’ button. The following screen appears.

Page 58: HR ABAP Training

Enhancement and Creation of Infotypes

4. Select the radio button ‘Table infotype and click on the ‘Create’

Button. The following popup appears. Select ‘Yes’.

5. Finally an information message appears as follows:

Page 59: HR ABAP Training

Enhancement and Creation of Infotypes

6. Then our major duty is to maintain the infotype characteristics. Do it through IMG or by using the customizing table T777I. What we have to add is the Time constraint and Infotypes per object type.

Page 60: HR ABAP Training

Enhancement and Creation of Infotypes

I have added this to Object type O and with time constraint 2.

Similarly I can add the infotypes per object type as follows

Page 61: HR ABAP Training

Enhancement and Creation of Infotypes

Finally If I goto PP01 transaction for the maintenance of Organization

Unit, I can see the infotype.

Page 62: HR ABAP Training

Enhancement and Creation of Infotypes

Page 63: HR ABAP Training

Reporting in HR

Special ABAP Statements for HR1. INFOTYPES

2. PROVIDE

3. ENDPROVIDE

1. INFOTYPES

The syntax for this statement is:

INFOTYPES nnnn. - nnnn between 0000 and 0999: HR master data info types - nnnn between 1000 and 1999: HR planning data info types - nnnn between 2000 and 2999: HR time data info types - nnnn between 3000 and 8999: Not yet used - nnnn between 9000 and 9999: Customer-specific info types

There are some variants for INFOTYPES statement

1. … NAME c

2. … OCCURS n

3. … MODE N

4. … VALID FROM comp1 TO comp2

Page 64: HR ABAP Training

Reporting in HR

The effect of ‘INFOTYPES’ statement is that it will create an internal

table Pnnnn as follows:

DATA BEGIN OF Pnnnn OCCURS 10. INCLUDE STRUCTURE Pnnnn.

DATA END OF Pnnnn VALID BETWEEN BEGDA AND ENDDA.

(eg) INFOTYPES 0001.

Variant 1: … NAME c , c����20 character field

This will create an internal table with the name c

DATA BEGIN OF c OCCURS 10. INCLUDE STRUCTURE Pnnnn.

DATA END OF c VALID BETWEEN BEGDA AND ENDDA.

(eg) INFOTYPES 0006 NAME ADDRESS.

Page 65: HR ABAP Training

Reporting in HR

Variant 2: … OCCURS n, n ���� numeric value

This will create an internal table as follows:

DATA BEGIN OF Pnnnn OCCURS n.

INCLUDE STRUCTURE Pnnnn.

DATA END OF Pnnnn VALID BETWEEN BEGDA AND ENDDA.

(eg) INFOTYPES 0005 OCCURS 2.

Variant 3: …MODE N

Applies only to the HR logical databases PNP, PNPCE and PCH.

The info type tables are not filled by GET PERNR (logical database

PNP) or GET OBJEC (logical database PCH). The effect of the

INFOTYPES statement is then the same as the data declaration of

an internal table (as described above). Generally used for Time Infotypes.

(eg) INFOTYPES 2001 MODE N.

Page 66: HR ABAP Training

Reporting in HR

Variant 4: … VALID FROM comp1 TO comp2

This should be used only with LDBs PNP and PNPCE

GET PERNR retrieves only those info type records which are valid

within the time range ( comp1 and comp2) specified. comp1 and

comp2 are dates with the format YYYYMMDD.

(eg) INFOTYPES 0007 VALID FROM 19910101

TO 19911231.

Page 67: HR ABAP Training

Reporting in HR

2. PROVIDE

The syntax for this statement is:

PROVIDE f1 f2 … FROM itab1

g1 g2 … FROM itab2

BETWEEN f AND g.

- We can use * instead of individual field names

- itab1, itab2 etc will be of structure Pnnnn

- f and g are from and to dates.

This statement will retrieve the contents of the specified fields from the internal tables ( itab1, itab2, ...) and places them in the table header lines within the required range. Also executes the processing block enclosed by the PROVIDE and ENDPROVIDE statements for each range.

Page 68: HR ABAP Training

Reporting in HR

3. ENDPROVIDE

The syntax for this statement is:

ENDPROVIDE.

- This statement will close the loop introduced by PROVIDE.

Page 69: HR ABAP Training

Reporting in HR

SAP AG 1999

Data Retrieval

1. Create data structures for infotypes

2. Fill the data structures with the infotype records

"Organizational Assignment"

"Personal Data"

"Planned Working Time"

INFOTYPES: 0001,0002,0007.

GET PERNR.

Page 70: HR ABAP Training

Reporting in HR

• Structure PERNR contains standard selections

for HR master data reporting. They consist of

the personnel number, the fields of infotypes

0000 and 0001, and a number of additional

fields.

• When the GET event occurs, the data structures

of declared infotypes are filled with all of the

records that exist for a personnel number. The

PERNR structure is fílled with the data from the

above infotypes. You can access the data in this

structure for processing.

Page 71: HR ABAP Training

Reporting in HR

SAP AG 1999

Processing Master Data

TABLES: PERNR.INFOTYPES: 0001, "Actions

0002, "Personal Data0006, "Addresses....

GET PERNR.PROVIDE * FROM P0002 BETWEEN PN-BEGDA AND PN-ENDDA.

WRITE...

ENDPROVIDE.

Page 72: HR ABAP Training

Reporting in HR

• Filled infotype structures are stored in the main memory for the GET PERNR event keyword.

• The infotype records are imported to internal tables Pnnnn (for example, P0006 for infotype 0006). These tables are then processed in a PROVIDE-ENDPROVIDE loop.

• The infotype records whose validity period overlaps the period selected in the selection screen (PN-BEGDA and PN-ENDDA) by at least one day are placed one after the other in the header of the respective infotype table Pnnnn.

• For example, if you choose the current year in the selection screen, PN-BEGDA contains the first day of the year and PN-ENDDA contains the last day of the year. If you do not enter any data for the period in the selection screen, PN-BEGDA contains the low date (01/01/1800) amd PN-ENDDA contains the high date (31/12/9999).

• Note: If you have entered period date in the selection screen, the contents of fields Pnnnn-BEGDA and Pnnnn-ENDDA are also reset in the header of the infotype table Pnnnn. For example, if the date in Pnnnn-ENDDA is after the date in PN-ENDDA, Pnnnn-ENDDA is given the value from PN-ENDDA.

Page 73: HR ABAP Training

Reporting in HR

SAP AG 1999

Loop Nesting

GET PERNR.PROVIDE * FROM P0002 BETWEEN PN-BEGDA

AND PN-ENDDA.WRITE...

ENDPROVIDE.or:

LOOP AT P0002 WHERE ENDDA GE PN-BEGDAAND BEGDA LE PN-ENDDA.

WRITE...ENDLOOP.

PROVIDE * FROM P0006BETWEEN PN-BEGDA AND PN-ENDDAWHERE P0006-SUBTY = '1'.WRITE...

ENDPROVIDE.

END-OF-SELECTION.

Infotype

loop

Infotype

loopEmployee

loop

Infotype

loop

Page 74: HR ABAP Training

Reporting in HR

• HR data is processed in two nested loops:

• A GET PERNR loop for all of the personnel numbers selected. It is concluded implicitly by the next event, for example, END-OF-SELECTION.

• Subordinate loops per infotype, for the processing of all infotype records for the selected personnel number.

• With this form of processing, you should note that the data for the Personal Data (0002) and Address (0006) infotypes is listed sequentially and is not linked.

• You can also process the infotype tables with a LOOP-ENDLOOP.

Page 75: HR ABAP Training

Reporting in HR

SAP AG 1 999

JANUARY - APR IL

M AY - AUGUST

SEPTEM BER - D ECEMBER

M s YM s Y

Perio d -B ased D a ta (1 )

Infotype data is period-based, in other words, it is only valid for

specific periods. For this reason, each record has a start date

and an end date.

This example shows the jobs that an employee has performed

over the course of a year.

The decision on how to retrieve data is made for each individual

infotype.

Page 76: HR ABAP Training

Reporting in HR

REPORTS IN PERSONNEL ADMINISTRATION

Page 77: HR ABAP Training

Reporting in HR

Some important fields1. PERNR ���� Personnel Number

2. WERKS ����Personnel Area

3. BTRTL ����Personnel Subarea

4. PERSG ����Employee Group

5. PERSK ����Employee Subgroup

6. ABKRS ����Payroll Area

7. LGART ����Wage Type

8. BETRG ����Amount

9. ANZHL ���� Number

10. MOLGA ����Country code

11. BEGDA ����Start Date

12. ENDDA ����End Date

13. MOABW ����Personnel subarea grouping for absence and attendance types

Page 78: HR ABAP Training

Reporting in HR

Report which is based on reading data from infotypes and

using LDBs

REPORT zpsol010.

*-- Declaration

TABLES: pernr.

INFOTYPES: 0002. "Personal Data

SELECT-OPTIONS: language FOR p0002-sprsl.

*-- Selection screen

INITIALIZATION.

pnptimed = 'D'.

Page 79: HR ABAP Training

Reporting in HR

*-- Processing

GET pernr.

PROVIDE * FROM p0002 BETWEEN pn-begda AND pn-endda.

CHECK language.

WRITE: / p0002-pernr,

sy-vline,

pernr-ename,

sy-vline,

p0002-sprsl,

sy-vline,

p0002-gbdat.

ENDPROVIDE.

Page 80: HR ABAP Training

Reporting in HR

Example for understanding the repetitive structure

Say, for an employee you want to know that for what all wage type

an employee is eligible for the latest period you mentioned on the

selection screen.

REPORT ZRP_REPETITIVE_STR NO STANDARD PAGE HEADING.

TABLES pernr.

INFOTYPES 0008.

*** you have to declare a structure same as repetitive structure in the

** 0008 infotype

DATA: BEGIN OF s_wagetypes,

wagetype TYPE p0008-lga01,

amount TYPE p0008-bet01,

hours TYPE p0008-anz01,

unit TYPE p0008-ein01,

ind TYPE p0008-opk01,

END OF s_wagetypes.

GET pernr.

DO 20 TIMES VARYING s_wagetypes FROM p0008-lga01 NEXT p0008-lga02.

IF s_wagetypes-wagetype IS INITIAL.

EXIT.

ELSE.

WRITE: / s_wagetypes-wagetype,

s_wagetypes-amount.

ENDIF.

ENDDO.

Page 81: HR ABAP Training

Reporting in HR

Importance of Dates and Periods

• Here is a simple ABAP example of reading DATE types stored in infotype 0041.

• There can be a maximum of 12 dates stored in this infotype. Here is an example of an infotype 0041 record:

Page 82: HR ABAP Training

Reporting in HR

The date types are stored in PA0041-DAR01, PA0041-DAR02, etc.

In the example above, PA0041-DAR01 is “01”, PA0041-DAR02 is “09”.

The dates themselves are stored in PA0041-DAT01, PA0041-DAT02, etc

To read through this in ABAP, the easiest way is to use the DO VARYING statement. Here is a simple demonstration ABAP:

Note: to print the text of the date type, e.g. “Leave year entry”select from table T548T.

Page 83: HR ABAP Training

Reporting in HR

REPORT ZDATES1 .

TABLES: PERNR.

DATA: BEGIN OF MYDATES,

DAR LIKE P0041-DAR01,

DAT LIKE P0041-DAT01,

END OF MYDATES.

INFOTYPES 0041.

GET PERNR.

WRITE: PERNR-PERNR, PERNR-ENAME. "show employee number and name

RP-PROVIDE-FROM-LAST P0041 SPACE PN-BEGDA PN-ENDDA.

IF PNP-SW-FOUND = 1.

*** Processing of repetitive structures *************

DO 12 TIMES VARYING mydates

FROM p0041-dar01

NEXT p0041-dar02.

IF mydates-dar NE space.

WRITE: /,MYDATES-DAR, MYDATES-DAT.

ENDIF.

ENDDO.

ENDIF.

Page 84: HR ABAP Training

Reporting in HR

SAP AG 1999

Macro Modules

TABLES: PERNR.INFOTYPES: 0001, "Organizational Assignment

0002, "Personal Data0006, "Addresses....

GET PERNR.RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.

WRITE...

* * * Include program DBPNPMAC.

DEFINE RP_PROVIDE_FROM_LAST.PNP-SW-FOUND = '0'.. . .

END-OF-DEFINITION.

Page 85: HR ABAP Training

Reporting in HR

SAP AG 1999

Reading the Group Table Using the Personnel Area/Subarea F ields

TABLES: PERNR, T001P.INFOTYPES: 0001,

....

GET PERNR.RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.

RP-READ-T001P P0001-WERKS P0001-BTRTL SPACE.

Personnel Area/Subarea Table

PersArea Groupings . . .Subarea

. . .

CABB

. . .

0001 01 01

Page 86: HR ABAP Training

Reporting in HR

• It is often necessary to read the groupings stored in the Personnel Area/Subarea table because they are required as keys for other tables. This must take place individually for each personnel number to be processed.

• Each employee's assignment to a personnel area and subarea is stored in infotype 0001.

• The parameters of the macro are:

• Personnel areas

• Personnel subareas

• Reaction, if no entry is found:

• X = Termination of report with error message ‘No entry found in table ...’

• SPACE = SY-SUBRC is set to 4.

• Alternatively, if you only want to determine the country indicator, you can use the function module HR_COUNTRY_GROUPING_GET.

Page 87: HR ABAP Training

Reporting in HR

S A P A G 1 9 9 9

R e a d in g I n f o t y p e s W i t h o u t L o g i c a l D B ( 1 )

P A n n n nP A n n n n

I N F O T Y P E S : < n n n n > .. . .C A L L F U N C T I O N' H R _ R E A D _ I N F O T Y P E ' . . .

You can also read infotype records for a particular personnel number

without using the logical database.

To do this, use the function module HR_READ_INFOTYPE. However,

you must ensure that the internal table for the required infotype is

declared with the INFOTYPE statement.

Page 88: HR ABAP Training

Reporting in HR

SAP AG 1999

Reading Infotypes Without Logical DB (2)

INFOTYPES: 0002.DATA: return LIKE SY-SUBRC.

CALL FUNCTION 'HR_READ_INFOTYPE'EXPORTING. . .

PERNR = <person>INFTY = '0002'BEGDA = <begdat>ENDDA = <enddat>

IMPORTINGSUBRC = return

TABLESINFTY_TAB = P0002

EXCEPTIONSINFTY_NOT_FOUND = 1OTHERS = 2.

Page 89: HR ABAP Training

Reporting in HR

• The function module reads the HR infotype records for a person (employee or applicant) in accordance with the specified selection criteria. Values are returned in an internal table, the structure of which corresponds to the appropriate infotype table. In the calling program, such tables can be declared with the INFOTYPES statement, for example. An infotype record is selected if its validity period overlaps with the specified period.

• The function module performs an authorization check.

• The following specifications are possible for the return code:0: The return table contains all required records4: The return table contains all records, however, it is incomplete due to missing authorization8: The return table is empty because no records were found with thespecified criteria12: The return table is empty due to missing authorization

• Note: You should not use this function module in reports that use thelogical database PNP. If you want to read an infotype separately in one of these reports, you can call the subroutine READ-INFOTYPE directly in the database program SAPDBPNP (PERFORM READ-INFOTYPE(SAPDBPNP)). . .). If this is the case, you declare the infotypes in the statement INFOTYPES with supplement MODE N.

Page 90: HR ABAP Training

Reporting in HR

SAP AG 1999

Determining the Entry Date

INFOTYPES: 0001.DATA: hire_date LIKE P0016-EINDT.

CALL FUNCTION 'RP_GET_HIRE_DATE'EXPORTING

PERSNR = P0001-PERNRCHECK_INFOTYPES = '0000'

* DATUMSART = '01'* STATUS2 = '3'* P0016_OPTIONEN = ' '

IMPORTINGHIREDATE = hire_date

EXCEPTIONSOTHERS = 1.

Page 91: HR ABAP Training

Reporting in HR

• With this function module, you can determine the initial start date of an employee. You can take the following infotypes into account when you determine this date:- P0000 Actions- P0001 Organizational Assignment- P0016 Contract Elements- P0041 Date Specifications

• The transfer parameter CHECK_INFOTYPES is used to determine which of these infotypes are taken into account. The employment status (parameter STATUS2) can also be specified for infotype P0000. In infotype P0016, only the Entry data field(P0016-EINDT) is taken into account. For infotype P0041, the corresponding date type can be given in the transfer parameter DATUMSART. The date type '01' is usually used for the technical entry date.

• Most function modules in HR have the letters 'HR' or 'RP' in thefirst two characters of their name. To find additional modules, use the search function in the Function Builder.

Page 92: HR ABAP Training

Reporting in HR

SAP AG 1999

Updating Infotype Records (1)

DATA: return_struc TYPE BAPIRETURN1,. . .

CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'EXPORTING

NUMBER = PERNR-PERNRIMPORTING

RETURN = return_struc.

IF NOT return_struc IS INITIAL.WRITE: / return_struc-TYPE,...

ENDIF.. . .* Update Infotype Records. . .CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'

EXPORTINGNUMBER = PERNR-PERNR

IMPORTINGRETURN = return_struc.

Page 93: HR ABAP Training

Reporting in HR

• Before you change employee data, you must lock the personnel number. You can do this with the function module BAPI_EMPLOYEE_ENQUEUE.

• Messages are returned in the parameter RETURN. If an error occurs, this structure contains the following information:- Message type (field TYPE)- Message text (field MESSAGE).If the step is successful, the structure is blank.

• If an employee's data has been locked, only the user who has locked the data can access the data records linked to the employee. For other users, access is denied. For this reason, you must remove the lock after the data has been changed. You can do this with the function module BAPI_EMPLOYEE_DEQUEUE.

Page 94: HR ABAP Training

Reporting in HR

SAP AG 1999

Updating Infotype Records (2)

DATA: return_struc TYPE bapireturn1,record_key TYPE bapipakey.

. . .GET PERNR.

LOOP AT P0002 WHERE. . .

CALL FUNCTION 'HR_INFOTYPE_OPERATION'EXPORTING

INFTY = '0002'NUMBER = P0002-PERNRLOCKINDICATOR = P0002-SPRPSVALIDITYEND = P0002-ENDDAVALIDITYBEGIN = P0002-BEGDARECORDNUMBER = P0002-SEQNRRECORD = P0002OPERATION = 'MOD'DIALOG_MODE = '1'

IMPORTINGRETURN = return-strucKEY = record_key.

ENDLOOP.

Page 95: HR ABAP Training

Reporting in HR

• With this function module, you can maintain the employee and applicant master data. You can specify one data record. All validations that would normally take place if the infotypes were maintained online with the individual maintenance screens are also carried out here. The module returns the same error messages as in the online operation. This means the error messages for the individual maintenance screens are displayed rather than interpreted. The update is carried out by a 'Call dialog' to the module pool for the infotype. This means that some restrictions apply to the infotypes processed in that way (see documentation for module).

• The following values are amongst those available for the parameter OPERATION: MOD (change), COPY (copy), DEL (delete), INS (insert), LIS9 (delimit).

• With the parameter DIALOG_MODE, you specify whether the action is generally run in the background or whether it only runs in the background until an error occurs, or whether the changes are generally carried out in the dialog mode. Possible values:'0' The changes are generally processed in the background. If an error occurs (with an E or A message), the complete step is terminated and the module returns the corresponding error message in the structure 'RETURN'. '1' The changes are generally processed in the background. If an error occurs, the system switches to dialog mode so that the user can correct the entries. '2' The changes are processed in the dialog mode.

Page 96: HR ABAP Training

Reporting in HR

SAP AG 1999

Updating Infotype Records (3)

PARAMETERS: natio_o LIKE P0002-NATIO DEFAULT 'DE',natio_n LIKE P0002-NATIO DEFAULT 'D'.

* Update infotype records

UPDATE PA0002SET NATIO = natio_nWHERE PERNR = P0002-PERNRAND NATIO = natio_o.

IF SY-SUBRC = 0.WRITE: 'Modified records', SY-DBCNT.

ENDIF.

Page 97: HR ABAP Training

Reporting in HR

Indirect Valuation:

Some times entries in Infotype 0008, 0014, 0015

etc are stored for indirect valuation (ie the wagetype has

to be valuated indirectly). The entries

will not be stored in the infotype tables.

We have to use any of the function modules for indirect

valuation to read the data.

(Eg) HR_INDVAL_READ_INFOTYPE

Page 98: HR ABAP Training

Reporting in HR

Join and ProjectionsJoins:

• Any number of infotypes can be linked by a JOIN.

• Note that changing data in any one of the infotypes linked by a

join causes a split in the selection period.

• Joins are only possible for infotypes with time constraint 1 or 2.

• If infotypes linked by a JOIN have subtypes, processing must be

restricted to one subtype using a WHERE condition, in which a

subtype is queried.

Page 99: HR ABAP Training

Reporting in HR

S A P A G 1 9 9 9

J o in / S u b t y p e s

T A B L E S : P E R N R .I N F O T Y P E S : 0 0 0 1 , " O r g a n i z a t i o n a l A s s i g n m e n t

0 0 0 2 , " P e r s o n a l D a t a0 0 0 6 , " A d d r e s s e s. . . .

G E T P E R N R .P R O V I D E * F R O M P 0 0 0 2

* F R O M P 0 0 0 6B E T W E E N P N - B E G D A A N D P N - E N D D A

W H E R E P 0 0 0 6 - S U B T Y = ' 1 ' .I F P 0 0 0 6 _ V A L I D = ' X ' .

W R I T E . . .E N D I F .

E N D P R O V I D E .

Using variable Pnnnn_VALID, the system recognizes that one partial

interval only contains incomplete data.

When the report is run, this variable is created for each Pnnnn

infotype included in a join.

If a partial interval for infotype Pnnnn contains data, its Pnnnn_VALID

variable is filled with X.

Page 100: HR ABAP Training

Reporting in HR

Projections:

• Selecting one or more infotype fields for processing is called PROJECTION.

• Using projection for specific fields enables you to specify that only the contents of these fields and time-based changes to the contents, are relevant to an evaluation.

• Like joins, projections are logical data views concentrated on one or more fields within an infotype.

• Projection is also an operation performed on the time axis. New validity periods are created when the contents of one of the projection fields change. The values stored in fields that are not included in the projection are in an undefined condition, which means they are no longer relevant to output.

• If the contents of a field included in the projection remain unchanged in several data records, the validity periods of these data records are combined.

• The process of combining data records during projection is called contraction.

• JOIN and PROJECTION can be combined in a PROVIDE statement.

Page 101: HR ABAP Training

Reporting in HR

SAP AG 1999

Join and Projection / Coding

TABLES: PERNR.INFOTYPES: 0001, "Organizational Assignment

0002, "Personal Data

....

GET PERNR.PROVIDE STELL

ENAME FROM P0001GBDAT FROM P0002

BETWEEN PN-BEGDA AND PN-ENDDA.WRITE...

ENDPROVIDE.

Page 102: HR ABAP Training

Reporting in HR

SAP AG 1999

Calling Reports Using Dynamic Actions

Table of Dynamic Actions

IType STy. Field FC No S Variable function part

0008___ SPRPS 06 0 _ *----------- Lock indicator set?----------------*

0008___ SPRPS 06 1 P P0008-SPRPS<>SPACE

0008___ SPRPS 06 2 F COMPUTE_DATE(ZPFORM01)

0008___ SPRPS 06 3 I INS,0019,10

0008___ SPRPS 06 4 W P0019-VTRMN=RP50D-DATE1

REPORT zpform01.TABLES: RP50D, "Return fields for dyn. actions

PRELP. "HR Master Data Buffer . .* Calculate date FORM compute_date.

RP50D-DATE1 = PRELP-BEGDA -14.ENDFORM.

Page 103: HR ABAP Training

Reporting in HR

• The 'Dynamic Actions' table (T588Z) is a control table that triggers steps taken when an infotype record is maintained. Such steps include maintaining another infotype record, performing a routine, or sending a mail.

• OP stands for a user operation where 02 stands for Change, 04 for Insert, and 08 for Delete a record. The values can be added, for example, 06 means that an action is performed if the current record has been changed or inserted.

• A stands for an action performed by the system, for example, P = Check a condition, F = Call a routine, I = Maintain an infotype record, W = Set default values when inserting a record.

• You can call internal (defined in the module pool) and external routines. In an external routine, the name of the program is given in parentheses after the name of the routine. You cannot enter the USING parameter. The fields of the structure that is not used in the standard system (RP50D) are available to return the values from the routine. They can be filled by the routine and then used for default values (W statements). This structure can be enhanced with customer fields in a customer include.

• In this example, the routine COMPUTE_DATE calculates a date in the subroutine pool ZPFORM01 and places it in field RP50D-DATE1. This date is calculated by subtracting 14 days from the start date of the locked record.

Page 104: HR ABAP Training

Reporting in HR

SAP AG 1999

Calling Features from Reports

TABLES: PME04. "Field string for feature ABKRSDATA: ret_value(2). "Return value for feature* Fill decision fields for feature with values.PME04-PERSK = P0001-PERSK,. . .* Call featureCALL FUNCTION 'HR_FEATURE_BACKFIELD'

EXPORTING FEATURE = 'ABKRS'STRUC_CONTENT = PME04

IMPORTING BACK = ret_value

EXCEPTIONSERROR_OPERATION = 2NO_BACKVALUE = 3FEATURE_NOT_GENERATED = 4.

Page 105: HR ABAP Training

Reporting in HR

• This function module reads the decision tree for a feature with the accompanying field contents and determines the return values for the field contents.

• To identify which fields in the field string for the feature (PMEnn) are used for the decisions in the feature, view the structure and decision tree in feature maintenance (transaction PE03).

• The field string PMEnn must be declared in the data declaration part of your program using a TABLES statement. Define a field to contain the return value of the feature.

• In your program, enter values in the decision fields used in your feature.

• Call the function module and enter the name of the feature to be used and the name of the field string. The return value for the feature is transferred to the main program with the BACK parameter.

• Possible errors when processing the decision tree:a) An error occurred in the feature (ERROR_OPERATION)b) No return value is available for the current contents of the decision field (NO_BACKVALUE)c) The feature was no generated (FEATURE_NOT_GENERATED)

• If the return value for a feature consists of a table, use the function module HR_FEATURE_BACKTABLE.

Page 106: HR ABAP Training

Reporting in HR

S A P A G 1 99 9

T im e D a ta a n d V a lid ity P e rio d

L ea ve

D a ta s e le c t io n

p e r io d

15 d a ys

PR OV IDE .. .W RI TE ...

EN DP ROV ID E.15 d a ys

Note: Don’t use PROVIDE statement for Time Infotypes

Page 107: HR ABAP Training

Reporting in HR

S A P A G 1 9 9 9

Im p o r t i n g T im e D a t a ( 1 )

P A n n n nP A n n n n

D a t a s e l e c t i o n p e r i o d

I N F O T Y P E S : 2 0 0 1 , " A b s e n c e s2 0 0 2 , " A t t e n d a n c e s 2 0 0 5 , " O v e r t i m e 2 0 1 0 . " E m p l o y e e

R e m u n e r a t i o n I n f o

G E T P E R N R .

A principle of the logical database is that all of the infotype records

between the lowest and highest system date are read, irrespective

of the data selection period, when the GET PERNR event occurs.

If there is a large number of time records, this gives rise to problems

with the main memory and bad performance times.

In particular, if positive recording has been implemented, the quantity

of infotype records soon overloads the main memory.

Page 108: HR ABAP Training

Reporting in HR

To control the amount of time required to read time infotypes, MODE N

is assigned to the infotypes in the declaration. This ensures that

infotype tables are not filled when GET PERNR occurs.

The time infotype tables are subsequently filled using the

RP_READ_ALL_TIME_ITY macro, however, only in the specified

period.

SAP AG 1999

Im po rting T im e D a ta (2 )

INFOTYPES: 0001,0002,...2005 MODE N.

GET PERNR.RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.. . . .RP_READ_ALL_TIME_ITY PN-BEGDA PN-ENDDA.. . . .

LOOP AT P2005.WRITE...

ENDLOOP.

Page 109: HR ABAP Training

Reporting in HR

• If you want to evaluate absence data according to

organizational units, it is a good idea to use an internal table

to group together the information from different database

tables (PA0001 and PA2005).

SAP AG 1999

Importing Time Data to Internal Tables

TYPES: BEGIN OF overtime,bukrs LIKE P0001-BUKRS,werks LIKE P0001-WERKS,btrtl LIKE P0001-BTRTL,stdaz LIKE P2005-STDAZ,

END OF overtime.DATA: tab TYPE TABLE OF overtime WITH HEADER LINE.

GET PERNR.RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.MOVE-CORRESPONDING P0001 TO tab.RP_READ_ALL_TIME_ITY PN-BEGDA PN-ENDDA.

LOOP AT P2005.MOVE-CORRESPONDING P2005 TO tab.COLLECT tab. (oder: APPEND tab.)

ENDLOOP. bukrs werks btrtl stdaz Work area(header line)

Data area

Page 110: HR ABAP Training

Reporting in HR

SAP AG 1999

Processing T ime Data w ith In ternal Tables

WERKSBUKRStab - BTRTL

0001

0001

0002

0002

0001

0001

0002

0002

0001

0002

0003

0004

Footer processing

Header processing

END-OF-SELECTION.LOOP AT tab.AT FIRST....ENDAT.

AT NEW bukrs....ENDAT.

AT NEW werks....ENDAT.

Single recordprocessing

AT END OF werks....ENDAT.

AT END OF bukrs....ENDAT.

AT LAST....ENDAT.

ENDLOOP.

Page 111: HR ABAP Training

Reporting in HR

Example report using ABAP List viewer

REPORT zpsol060.

*-- declaration

TYPE-POOLS: slis.

TABLES: pernr, t548t. "Date Types

INFOTYPES: 0001, "Org.Assignment

0041. "Date Specifications

DATA: BEGIN OF dtype, "Workarea for IT0041

dar LIKE p0041-dar01,

dat LIKE p0041-dat01,

END OF dtype.

TYPES: BEGIN OF data_struc, "Data table structure

pernr LIKE pernr-pernr,

ename LIKE p0001-ename,

eindt LIKE p0016-eindt,

dar LIKE p0041-dar01,

dtext LIKE t548t-dtext,

dat LIKE p0041-dat01,

END OF data_struc.

DATA: data_tab TYPE TABLE OF data_struc,

data_tab_wa TYPE data_struc.

DATA: alv_fieldcat TYPE slis_t_fieldcat_alv,

alv_layout TYPE slis_layout_alv.

DATA: filled_lines LIKE sy-index,

stru_disvar TYPE disvariant.

Page 112: HR ABAP Training

Reporting in HR

SELECT-OPTIONS: datetype FOR p0041-dar01 DEFAULT '01

*-- Processing

GET pernr.

DESCRIBE TABLE p0041 LINES filled_lines.

IF filled_lines GT 0.

rp_provide_from_last p0001 space pn-begda pn-endda.

IF pnp-sw-found EQ 0.

REJECT.

ELSE.

DO 12 TIMES VARYING dtype FROM p0041-dar01

NEXT p0041-dar02.

IF dtype-dar IS INITIAL.

EXIT.

ELSE.

IF dtype-dar IN datetype.

rp_provide_from_last p0001 space pn-begda pn-endda

CLEAR data_tab_wa.

MOVE-CORRESPONDING p0001 TO data_tab_wa.

MOVE-CORRESPONDING dtype TO data_tab_wa.

PERFORM read_hiredate.

PERFORM re548t USING sy-langu dtype-dar.

MOVE t548t-dtext TO data_tab_wa-dtext.

APPEND data_tab_wa TO data_tab.

ENDIF.

ENDIF.

ENDDO.

ENDIF.

ENDIF.

Page 113: HR ABAP Training

Reporting in HR

END-OF-SELECTION.

PERFORM fieldcat_init USING alv_fieldcat.

alv_layout-colwidth_optimize = 'X'.

alv_layout-zebra = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

* I_INTERFACE_CHECK = ' '

* I_BUFFER_ACTIVE = ' '

i_callback_program = 'ZPSOL060'

* I_STRUCTURE_NAME =

* I_BACKGROUND_ID = ' '

I_GRID_TITLE = 'Date Specifications'

* I_GRID_SETTINGS =

is_layout = alv_layout

it_fieldcat = alv_fieldcat

* I_DEFAULT = 'X'

I_SAVE = 'A'

IS_VARIANT = stru_disvar

* IT_EVENTS =

* IT_EVENT_EXIT =

* IS_PRINT =

* IS_REPREP_ID =

* I_SCREEN_START_COLUMN = 0

* I_SCREEN_START_LINE = 0

* I_SCREEN_END_COLUMN = 0

* I_SCREEN_END_LINE = 0

* IT_ALV_GRAPHICS =

* IT_ADD_FIELDCAT =

* IT_HYPERLINK =

* IMPORTING

* E_EXIT_CAUSED_BY_CALLER =

* ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = data_tab

EXCEPTIONS

program_error = 1

OTHERS = 2.

Page 114: HR ABAP Training

Reporting in HR

*-------------------------------------------------------------*

* FORM READ_HIREDATE

*-------------------------------------------------------------*

* Retrieving hiredate from infotype 0000

*-------------------------------------------------------------*

FORM read_hiredate.

CALL FUNCTION 'RP_GET_HIRE_DATE'

EXPORTING

persnr = p0001-pernr

check_infotypes = '0000'

IMPORTING

hiredate = data_tab_wa-eindt

EXCEPTIONS

OTHERS = 1.

ENDFORM.

*-------------------------------------------------------------*

* FORM RE548T

* Read date specification texts

*-------------------------------------------------------------*

* --> VALUE(LANGUAGE)

* --> VALUE(DTYPE)

*-------------------------------------------------------------*

FORM re548t USING value(language)

value(dtype).

CHECK t548t-sprsl NE language

OR t548t-datar NE dtype.

SELECT SINGLE * FROM t548t

WHERE sprsl EQ language

AND datar EQ dtype.

IF sy-subrc NE 0.

CLEAR t548t.

ENDIF.

ENDFORM.

Page 115: HR ABAP Training

Reporting in HR

*-------------------------------------------------------------*

* FORM FIELDCAT_INIT

*-------------------------------------------------------------*

FORM fieldcat_init USING p_fieldcatTYPE slis_t_fieldcat_alv.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'PERNR'.

ls_fieldcat-ref_tabname = 'PERNR'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO p_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'ENAME'.

ls_fieldcat-ref_tabname = 'P0001'.

APPEND ls_fieldcat TO p_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'EINDT'.

ls_fieldcat-ref_tabname = 'P0016'.

APPEND ls_fieldcat TO p_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'DAR'.

ls_fieldcat-ref_tabname = 'PERNR'.

ls_fieldcat-ref_tabname = 'P0041'.

APPEND ls_fieldcat TO p_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'DTEXT'.

ls_fieldcat-ref_tabname = 'T548T'.

APPEND ls_fieldcat TO p_fieldcat.

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'DAT'.

ls_fieldcat-ref_fieldname = 'DAT01'.

ls_fieldcat-ref_tabname = 'P0041'.

APPEND ls_fieldcat TO p_fieldcat.

ENDFORM.

Page 116: HR ABAP Training

Reporting in HR

REPORTS IN PERSONNEL PLANNING

Page 117: HR ABAP Training

Reporting in HR

SAP AG 1999

Data M odel

Pos ition

Cost cen ter

W ork cen ter

Person /user

Job

Task

O rganiza tiona l

be longs to

incorpora tes

incorpora tes

be longs to

Holder

occupies

describes

is

described

by

describes

is

described

by

Cost C en ter Alloca tion

describes

is

described

by

Cost Cen te r

A lloca tion

reports to /

is l ine

superv isor

o f

Page 118: HR ABAP Training

Reporting in HR

• Organizational Management is based on the idea of representing each element within an organization as a separate object with its own characteristics. These objects are created and maintained separately. Relationships are used to link one to the other (see graphic). This gives rise to a network that is flexible enough to facilitate personnel planning, projections, and evaluations.

• The cost center is an external object type because it is not maintained in Organizational Management.

• Customizing enables you to enhance the existing data model by defining new object types, for example, and establishing new relationships between the various object types. Each standard object type consists of two letters, whereas the customer namespace is 00 to 99.

• This data model (object types and relationships) also constitutes the basis of other applications within Personnel Planning, such as Training and Event Management (business event hierarchies) and Personnel Development (for example, qualification catalog).

Page 119: HR ABAP Training

Reporting in HR

SAP AG 1999

Relationship Between Jobs and Positions

Relationship

A/B 007

The job "describes" the position.

The position "is described by" the job.

Administrative assistant

for marketing department

Administrative assistant

for executive board

Administrative assistant

for research department

Job:

Administrative

assistant

Page 120: HR ABAP Training

Reporting in HR

• "Job" is used as a general classification, such as secretary or head of department.

• More than one employee can have the same job. For example, twenty employees can have the job of secretary.

• A position is the assignment of an individual employee in your enterprise, for example, sales manager, secretary in the marketing department. You form the structure of your enterprise by creating positions and linking them to each other.

Page 121: HR ABAP Training

Reporting in HR

SAP AG 1999

Objec t/In fo type S ta tus

Approved

Active

Rejected

P lanned

Subm itted

� Object

� Relationsh ip

(Info type 1000)

(Info type 1001)

Page 122: HR ABAP Training

Reporting in HR

A status is assigned to each object/infotype.

• Active means that an object or infotype record can be used at this time.

• Planned means that an object or infotype record has been proposed but is not yet active, which means it cannot be used.

• Submitted means that an object or infotype record is currently being checked by a person or group of persons before it is approved or rejected.

• Approved means that a submitted object/infotype record has been accepted.

• Rejected means that a submitted object/infotype record has not been approved.

• You can create objects with the status "planned" or "active".

Page 123: HR ABAP Training

Reporting in HR

SAP AG 1999

Evaluation Paths

Employee

Org.unit

Position

� Organizational unit

� Job

� Position

� Person

Org.unit

Org.unitPosition

O

S O

S Position

P Person

P Person

O

C

S

P

Page 124: HR ABAP Training

Reporting in HR

• An evaluation path describes a set of relationships between objects in a hierarchical structure. Evaluation path O-S-P, for example, describes the set of relationships found between organizational units, positions, and persons.

• Evaluation paths are used to select objects for structural evaluations. You choose an evaluation path, and the system evaluates the structure along the evaluation path. The report only evaluates objects that it finds in the specified evaluationpath.

• Every standard report has a defined standard evaluation path. They are predetermined in the system and must not be changed. The standard selection screen enables you to choose evaluation paths. You can also create new evaluation paths to meet the particular requirements of your enterprise.

• Report RHWEGID0 displays all possible evaluation paths between the starting object type and the target object type.

Page 125: HR ABAP Training

Reporting in HR

SAP AG 1999

Available Internal Information

Pnnnn

OBJEC

GDSTR

STRUC

TABLES: OBJEC, GDSTR.INFOTYPES: nnnn.

. . .

GET OBJEC.LOOP AT Pnnnn . . .

ENDLOOP.

Internal infotype table

Object information

Root of structure

Structure information

Page 126: HR ABAP Training

Reporting in HR

SAP AG 1999

Sequential Evaluations-Coding

TABLES: OBJEC.INFOTYPES: 0002, "Personal Data

1003, "Addresses....

GET OBJEC.LOOP AT Pnnnn

WHERE BEGDA LE PC-ENDDAAND ENDDA GE PC-BEGDA.WRITE...

ENDLOOP.

Page 127: HR ABAP Training

Reporting in HR

S A P A G 1 9 9 9

S tru c tu ra l E v a lu a t io n s -C o d in g

T A B L E S : O B J E C , G D S T R .I N F O T Y P E S : 0 0 0 2 , " P e r s o n a l D a t a

1 0 0 3 , " A d d r e s s e s. . . .

G E T O B J E C .L O O P A T P n n n n

W H E R E B E G D A L E P C - E N D D AA N D E N D D A G E P C - B E G D A .W R I T E . . .

E N D L O O P .

The only difference between a structural and sequential evaluation is

the additional GDSTR entry in the TABLES statement.

Page 128: HR ABAP Training

Reporting in HR

SAP AG 1999

Evaluating Table Infotypes

INFOTYPES: 1002. "DescriptionTABLES: OBJEC.DATA: ipt1002 LIKE PT1002 OCCURS 0 WITH HEADER LINE.. . .

GET OBJEC.WRITE: / OBJEC-OTYPE, OBJEC-OBJID.LOOP AT P1002.

RH-GET-TBDAT P1002-INFTY P1002-TABNR ipt1002.LOOP AT ipt1002.

WRITE: / ipt1002-TLINE.ENDLOOP.

ENDLOOP.

Page 129: HR ABAP Training

Reporting in HR

• RH-GET-TBDAT is a macro for logical database PCH. These macros are defined in include DBPCHCOM. With this macro, you can import the data for an infotype with a repetitive structure. See also Table Infotypes.

• The parameters for macro RH-GET-TBDAT are:Parameter 1 : InfotypeParameter 2 : Reference fieldParameter 3 : Table for structure PTnnnn

• Macros for logical database PCH must not be confused with macros for logical database PNP. Please note that you cannot use macros for logical databases PCH and PNP at the same time.

Page 130: HR ABAP Training

Reporting in HR

SAP AG 1999

Reading In fotypes W ith Function Modules

INFOTYPES: 1001. "RelationshipsDATA: ihrobject LIKE HROBJECT OCCURS 10.. . .CALL FUNCTION 'RH_READ_INFTY'EXPORTING. . .

INFTY = '1001'BEGDA = <begdat>ENDDA = <enddat>

TABLESINNNN = P1001OBJECTS = ihrobject

EXCEPTIONSALL_INFTY_WITH_SUBTY = 1NOTHING_FOUND = 2NO_OBJECTS = 3WRONG_CONDITION = 4OTHERS = 5.

Page 131: HR ABAP Training

Reporting in HR

• RH-GET-TBDAT is a macro for logical database PCH. These macros are defined in include DBPCHCOM. With this macro, you can import the data for an infotype with a repetitive structure. See also Table Infotypes.

• The parameters for macro RH-GET-TBDAT are:Parameter 1 : InfotypeParameter 2 : Reference fieldParameter 3 : Table for structure PTnnnn

• Macros for logical database PCH must not be confused with macros for logical database PNP. Please note that you cannot use macros for logical databases PCH and PNP at the same time.

Page 132: HR ABAP Training

Reporting in HR

Example Report

REPORT zhsol010.

TABLES: objec, gdstr.

INFOTYPES: 0002, 0006, 1003.

DATA: stabs LIKE p1003-stabs,

name LIKE p0001-ename.

INITIALIZATION.

pchotype = 'O'.

pchwegid = 'O-S-P'.

Page 133: HR ABAP Training

Reporting in HR

GET objec.

IF objec-otype = 'S'.

CLEAR stabs.

LOOP AT p1003 WHERE begda LE pc-endda

AND endda GE pc-begda.

IF p1003-stabs = 'X'.

stabs = 'X'.

WRITE : / objec-objid, objec-short, objec-stext.

ENDIF.

ENDLOOP.

ENDIF.

IF objec-otype = 'P' AND stabs = 'X'.

PROVIDE vorna nachn FROM p0002

subty telnr FROM p0006

BETWEEN pc-begda and pc-endda

WHERE p0006-subty = '1'.

IF p0006_valid = 'X'.

CONCATENATE p0002-vorna p0002-nachn INTO name

SEPARATED BY SPACE.

WRITE: / name, p0006-telnr.

SKIP.

ENDIF.

ENDPROVIDE.

ENDIF.

Page 134: HR ABAP Training

Reporting in HR

READING CLUSTER DATA

Page 135: HR ABAP Training

Reporting in HR

Export

The syntax for exporting the data to cluster table is

EXPORT var1…varn itab1 itab2…itabn

TO DATABASE dbtab(ID) [FROM wa] ID key.

Import

The syntax for exporting the data to cluster table is

IMPORT var1…varn itab1 itab2…itabn

FROM DATABASE dbtab(ID) [TO wa ] ID key.

Page 136: HR ABAP Training

Reporting in HR

S A P A G 1 9 9 9

E x p o r t i n g D a t a

T A B L E S : P C L n . " I m p o r t / e x p o r t t a b l eI N C L U D E : R P C n x x y 0 . " C l u s t e r d e f i n i t i o n

* F i l l c l u s t e r - K E Y

x y - K E Y - F I E L D = < V A L U E > .. . . .* F i l l d a t a o b j e c t

* E x p o r t r e c o r d

E X P O R T T A B L E 1 T O D A T A B A S E P C L n ( x y ) I D x y - K E Y .

I F S Y - S U B R C E Q 0 .W R I T E : / ' U p d a t e s u c c e s s f u l ' .

E N D I F .

The cluster definition is included using the INCLUDE statement.

The EXPORT command writes one or more data objects with xy-KEY

to cluster xy.

If the export is successful, the return code is 0.

Page 137: HR ABAP Training

Reporting in HR

SAP AG 1999

Export Using Buffer

PCLnPCLn

xy

M ain m emory buffer

* Buffer definitionINCLUDE: RPPPXD00.DATA: BEGIN OF COMMON PART buffer.

INCLUDE RPPPXD10.DATA: END OF COMMON PART buffer.. . .* Data export to bufferRP-EXP-Cn-xy.RP-EXP-Cn-xy.. . . * SavePERFORM PREPARE_UPDATE USING 'V'.. . .* Buffer Administration RoutinesINCLUDE: RPPPXM00.

Page 138: HR ABAP Training

Reporting in HR

• If data is exported using macros, the data records

are not written directly to the database. Instead,

they are written to a main memory buffer. The data

is diverted by a USING parameter in the EXPORT

statement, which accesses a buffer administration

routine.

• If data is exported successfully, the RP-IMP-xy-

SUBRC = 0 return code is set.

• At the end of the program, the buffered records

must be saved on a PCLn database.

• To save the data, the PREPARE_UPDATE routine

is accessed with USING parameter V.

Page 139: HR ABAP Training

Reporting in HR

S A P A G 1999

C LU S TER - D e fin it io n in P ro g ram R pcn x yz0

* KEY-Def initionDA TA: BEGI N OF xy -key,

FI ELD1,FI ELDn,

END OF xy-k ey.

* Definit ion of Data Ob jectsDA TA: BEGI N OF ta ble1 OC CURS 10 ,

CO LUMN1,CO LUMNn,

END OF tabl e1.DA TA: BEGI N OF ta ble2 OC CURS 10 , . . .

Page 140: HR ABAP Training

Reporting in HR

• The data definitions of a work area are stored in separate programs using a fixed naming convention.

• They are defined as INCLUDE programs. Their names follow convention RPCnxyz0, where.

• n = 1 or 2 for PCL1 or PCL2

• xy = Cluster, for example, RX

• z = 0 for international clusters or country indicator from table T500L for country-specific clusters.

• Example: The program RPC1TX00 contains the data definition of cluster TX. In this cluster, the database table PCL1 containsthe texts stored for infotypes.

• The key structure of the cluster is stored in a field string xy-KEY where the personnel number is the first element.

• The data objects (field strings and tables) are named individually per cluster.

Page 141: HR ABAP Training

Reporting in HR

S A P A G 1 9 9 9

Im p o r t in g D a t a

T A B L E S : P C L n . " I m p o r t / e x p o r t t a b l eI N C L U D E : R P C n x y z 0 . " C l u s t e r d e f i n i t i o n

* F i l l C l u s t e r - K E Yx y - K E Y - F I E L D 1 = < V A L U E > ,. . . * I m p o r t R e c o r dI M P O R T t a b l e 1 t a b l e 2 F R O M D A T A B A S E

P C L n ( x y ) I D x y - K E Y .* D i s p l a y D a t a o b j e c tI F S Y - S U B R C E Q 0 .

L O O P A T t a b l e 1 .W R I T E . . .

E N D L O O P .E N D I F .

The IMPORT command reads data objects with the specified key

values from the import/export database table.

If a record is read successfully, the return code is 0. If a record is not

read successfully, the return code is 4.

Page 142: HR ABAP Training

Reporting in HR

SAP AG 1999

Importing/Exporting With Macros

Macro HicPAYMACRO

...RP-IMP-Cn-xy....

DEFINE RP-IMP-Cn-xy.IMPORT

table1table2. . .. . .

FROM DATABASE PCLn(xy)ID xy-KEYUSING

PCLn_EXP_IMP.END-OF-DEFINITION.

Page 143: HR ABAP Training

Reporting in HR

• To ensure consistency when data is exported and imported, the IMPORT/EXPORT commands are defined as macros.

• It is possible to import only a portion of the data objects in acluster.

• The naming conventions for the macros are RP-IMP-Cn-xy and RP-EXP-Cn-xy, where n is the file name and xy is the cluster name.

• The macros for the import of payroll results are defined in include programs for the payroll driver with the name HicPAYMACRO (ic = ISO code, for example, HUSPAYMACRO for the USA) using the DEFINE keyword. These include programs are generated and must not be changed manually.

• The macro for importing infotype texts to cluster TX is contained in the table Macros in ABAP Programs.

• The macros use routines that carry out two tasks:

1. Data buffering

2. Cluster authorization check

Page 144: HR ABAP Training

Reporting in HR

S A P A G 1 9 9 9

Im p o r t in g /E x p o r t in g U s in g a B u f fe r

Im p o r t

E x p o r t

P ro g ram

U P D A T E

P C L nP C L n

B u f fe r

Page 145: HR ABAP Training

Reporting in HR

• To minimize the number of times that the database is accessed, import and export data is buffered in the main memory.

• If a test run is performed, the database is not updated. However, the payroll results of the previous period form the basis of the calculation used to determine the results of the subsequent period. For this reason, a difference arises between the results of a live payroll run and the results of a test run if test runs are performed for several periods.

• Using the buffer enables you to access the required results from the previous period.

Page 146: HR ABAP Training

Reporting in HR

SAP AG 1999

Im porting Using a Buffe r

PCLnPCLn

xy

M ain m emory bu ffer

* Buffer definitionINCLUDE: RPPPXD00.DATA: BEGIN OF COMMON PART BUFFER.

INCLUDE RPPPXD10.DATA: END OF COMMON PART buffer.* Fill cluster KEY. . .* Data import RP-IMP-Cn-xy.. . .* Buffer Administration RoutinesINCLUDE: RPPPXM00.

Page 147: HR ABAP Training

Reporting in HR

• If data is imported using macros, the data

records are not read directly from table PCLn.

Instead, the buffer directory is checked to

determine whether the main memory already

contains a record with the same key. If this is

not the case, the record is read from PCLn to

the buffer, and retrieved from the buffer by the

report.

• If data is read using a buffer, the system checks

the cluster authorization. The standard import

programs follow the RPCLSTxy naming

convention, where xy = cluster name.

Page 148: HR ABAP Training

Reporting in HR

Example program to read data from PCL1 ClusterThis example reads long text data from Infotype 0024.

REPORT ZRP_READ_PCL1_TX.

TABLES: pernr.

INFOTYPES 0024 NAME qualifications.

INCLUDE rpc1tx00.

START-OF-SELECTION.

GET pernr.

rp_provide_from_last qualifications space pn-begda pn-endda.

tx-key-pernr = qualifications-pernr.

tx-key-infty = qualifications-infty.

tx-key-subty = qualifications-subty.

tx-key-objps = qualifications-objps.

tx-key-sprps = qualifications-sprps.

tx-key-endda = qualifications-endda.

tx-key-begda = qualifications-begda.

tx-key-seqnr = qualifications-seqnr.

rp-imp-c1-tx.

LOOP AT ptext.

WRITE ptext-line.

ENDLOOP.

Page 149: HR ABAP Training

Reporting in HR

Example program to read data from PCL1 Cluster

This example reads data from PCL1 for RELID B1.

REPORT ZRP_READ_PCL1_B1.

TABLES: pernr.

INCLUDE rpc1b100.

START-OF-SELECTION.

GET pernr.

b1-key-pernr = pernr-pernr.

* rp-imp-c1-b1.

IMPORT nt1

nt2

ift1

ift2

ert

nct

qt

st

itp1

itp7

itp50

pdppm

FROM DATABASE pcl1(b1)

ID b1-key.

Page 150: HR ABAP Training

Reporting in HR

Example program to read data from PCL2 Cluster

This example reads data from PCL2 for RELID B2.

REPORT ZRP_READ_PCL2_B2.

TABLES: pernr.

INCLUDE rpc2b200.

START-OF-SELECTION.

GET pernr.

b2-key-pernr = pernr-pernr.

b2-key-pabrj = pn-begda+0(4).

b2-key-pabrp = pn-begda+4(2).

b2-key-cltyp = '1'.

*** ZL --> Time Wage Types (Table ZL)

IMPORT zl

FROM DATABASE pcl2(b2)

ID b2-key.

LOOP AT zl.

*** Process the itab zl....

ENDLOOP.

Page 151: HR ABAP Training

Reporting in HR

PayrollInternational Payroll driver program: RPCALCX0

Page 152: HR ABAP Training

Reporting in HR

The international payroll driver program is RPCALCX0.

We are having customized payroll driver programs for most of the

countries viz:

1. RPCALCA0 for Austria

2. RPCALCC0 for Switzerland

3. RPCALCD0 for Germany

4. RPCALCE0 for Spain

5. RPCALCG0 for Great Britain

6. RPCALCU0 for USA

7. HINCALC0 for India

8. HBRCALC0 for Brazil etc.

Page 153: HR ABAP Training

Reporting in HR

Display Payroll results

Program: RPCLSTRX

Page 154: HR ABAP Training

Reporting in HR

Page 155: HR ABAP Training

Reporting in HR

Page 156: HR ABAP Training

Reporting in HR

S A P A G 1999

P a yro ll R e su lts

P ayro ll re s u lt

K a th y C a lc J a nu a ry 1 9 xx

W T01 S tan d a rd sa la ry 5 0 00 U N I

W T0 2 B onu s 3 0 0 U N I

W T0 3 O ve rtim e 2 0 0 U N I

/1 0 1 T o ta l g ro ss am t 5 5 00 U N I

. . . .

REPOR TH99_D ISPLAY _PAYRES ULT

Page 157: HR ABAP Training

Reporting in HR

• With this report, you can display the payroll results for any country. The indicator behind each name shows whether results exist in the selected period.Green: Results existRed: No results existGray: No authorization for displaying personnel numbers

• Payroll results are stored as structures and internal tables on the database.

• Each payroll result has a status indicator:1. A = Current result

2. P = Previous result

3. O = All other results

Page 158: HR ABAP Training

Reporting in HR

SAP AG 1999

Data F low in P ayro ll

PCL2PCL2

xy

PAnnnnPAnnnn

PCL2PCL2

xy

Schem as & ru les

RPCALCn0

H99_D ISPLAY_PAYR ESULT

RPCEDTn0

Page 159: HR ABAP Training

Reporting in HR

• The payroll driver, RPCALCn0, uses HR data (stored in the database tables PAnnnn) and the last payroll result (stored in the database table PCL2) to run the payroll for the specified period

• The program (payroll driver) imports the processing logic in theform of a schema. The schema contains functions that call the subroutines contained in the payroll driver. In many cases, the function is enhanced by rules for specific control of the subroutines.

• The payroll result generated by the payroll driver is stored in cluster xy of the database table PCL2.

• Report H99_DISPLAY_PAYRESULT displays the payroll results for PCL2 and, from Release 4.6C, replaces reports RPCLSTxyand HxyCLSTR. The report is used in all country versions and the overview of payroll results is automatically displayed according to the particular country.

• Report RPCEDTn0, for example, lists the formatted result as a payroll form (n = HR country indicator from table T500L).

Page 160: HR ABAP Training

Reporting in HR

SAP AG 1999

Read ing the C luster D irec to ry

*Table containing directory of payroll resultsDATA: BEGIN OF RGDIR OCCURS 100.

INCLUDE STRUCTURE PC261.DATA: END OF RGDIR.DATA: COUNTRY LIKE T001P-MOLGA....CALL FUNCTION 'CU_READ_RGDIR'

EXPORTING PERSNR = PERNR-PERNR

IMPORTING MOLGA = country

TABLES IN_RGDIR = RGDIR

EXCEPTIONS NO_RECORD_FOUND = 1 OTHERS = 2.

Page 161: HR ABAP Training

Reporting in HR

• Table RGDIR contains the directory (cluster directory) for all of an employee's payroll results and is contained in cluster CU. A directory entry with the payroll area, for-period, in-period, status indicator, and the five-digit sequence number is required, together with the personnel number, to construct the key for each payroll result for an employee.

• The function module CU_READ_RGDIR reads table RGDIR from cluster CU. The personnel number whose payroll directory is to be read is transferred to the function module.

• If the MOLGA parameter is active, the function module returns the HR country indicator.

Page 162: HR ABAP Training

Reporting in HR

SAP AG 1999

Determ ining Current Payroll Result (1)

DATA: number LIKE PC261-SEQNR.. . .GET PERNR.

. . .CALL FUNCTION 'CU_READ_RGDIR'. . .

CALL FUNCTION 'CD_READ_LAST'EXPORTING

BEGIN_DATE = PN-BEGDAEND_DATE = PN-ENDDA

IMPORTING OUT_SEQNR = number

TABLES RGDIR = RGDIR

EXCEPTIONS NO_RECORD_FOUND = 1 OTHERS = 2.

Page 163: HR ABAP Training

Reporting in HR

• The function module CD_READ_LAST determines the current payroll result for a for-period to be evaluated. To determine the correct start date and end date of the for-period, you specify the period by entering the payroll period in the selection screen. If you specify report class XXM00004 in the attributes of your report, the payroll period is entered and the start date (PN-BEGDA) and the end date (PN-ENDDA) are determined using the Payroll Periods table (T549Q).

• You enter the start and end date of the for-period for the evaluation as well as table RGDIR. The function module then gives you the sequential number (OUT_SEQNR) for the current (A) result of the for-period.

• You can also use the following function modules:CD_READ_PREVIOUS (reads the record that precedes the payroll record)CD_READ_PREVIOUS_ORIGINAL (reads the last original result that precedes the original payroll result)

Page 164: HR ABAP Training

Reporting in HR

SAP AG 1999

D e te rm in in g C u rren t P ayro ll R esu lt (2 )

DATA: result TYPE PAY99_RESULT.DATA: rt_header TYPE LINE OF HRPAY99_RT.. . .

CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT' EXPORTING

CLUSTERID = 'RX'EMPLOYEENUMBER = p0001-pernrSEQUENCENUMBER = number

* READ_ONLY_BUFFER = ' ' * READ_ONLY_INTERNATIONAL = ' ' * CHECK_READ_AUTHORITY = 'X'

. . . CHANGING

PAYROLL_RESULT = resultEXCEPTIONS . .

LOOP AT result-INTER-RT INTO rt_header.WRITE: / rt_header-LGART, ...

ENDLOOP.

Page 165: HR ABAP Training

Reporting in HR

• With the function module PYXX_READ_PAYROLL_RESULT, you can read a complete payroll result from the database table PCL2 or from the buffer. The payroll result is then transferred to parameter PAYROLL_RESULT. This mmust be declared in the calling report as a complex structure that corresponds to structure PAYic_RESULT (ic = ISO code).

• With the READ ONLY INTERNATIONAL parameter, you can specify that only the international part is imported. The READ_ONLY_BUFFER means that the database is not accessed.

• If the parameter CHECK_READ_AUTHORITY is active and set to blank, the cluster authorization check is deactivated. Anonymous evaluations can then be carried out by users without cluster authorizations.

Page 166: HR ABAP Training

Reporting in HR

SAP AG 1999

Data Structure for Payro ll Results

DATA: result TYPE PAY99_RESULT.DATA: rt_header TYPE LINE OF HRPAY99_RT.. . .

* Access to payroll result dataWRITE: result-INTER-VERSC-FPPER,. . . LOOP AT result-INTER-RT INTO rt_header.

WRITE: / rt_header-LGART, . . .ENDLOOP.

Structure: PAY99_RESULT

EVPStructure PC261

INTER Structure PAY99_INTERNATIONAL NATDummy

for national

part

VERSCType PC202

RTType HRPAY99_RT

BTCRTType HRPAY99_CRT

Page 167: HR ABAP Training

Reporting in HR

• The data structures for the international payroll results (RX) are described in the Dictionary in structure PAY99_RESULT. The structure contains the components EVP (directory information), INTER (international), and NAT (country-specific part). The components INTER and NAT also contain the tables (for example, RT, CRT, and so on) and field strings (for example, VERSC) for the payroll results as substructures. In cluster RX, NAT consists of a dummy field.

• The structures PAYic_RESULT (ic = ISO code, for example, PAYUS_RESULT for the USA) exist for the country-specific results. Here, the component NAT contains the substructures for the country-specific results.

• If you want to evaluate payroll results, you need a data structure with the type PAYic_RESULT. For each table in the payroll results to be processed, you need a header with the typeHRPAYic_table name (for example, HRPAY99_RT for the results table RT).

Page 168: HR ABAP Training

Reporting in HR

SAP AG 1999

Coun try-Spec ific Payro ll R esu lts

DATA: result_tab TYPE PAY ic_RESULTOCCURS 0 WITH HEADER LINE,

result_header TYPE PAY ic_RESULT.DATA: table_header TYPE LINE OF HRPAY ic_table....

LOOP AT result_tab INTO result_header.. . .LOOP AT result_header-NAT-table INTO table_header.

WRITE. . .ENDLOOP.

ENDLOOP.

L ine type : PAY ic _RESULTEVPS truc tu re PC 261

IN TER S truc tu re PAY 99_ IN TERNAT IONAL NAT s truc tu rePAY ic_NAT IONAL

VERSCType PC 202

RTType HRPAY99_R T

BTCRTType HRPAY99_CR T

tab leType HRPAY ic_ tab le

Page 169: HR ABAP Training

Reporting in HR

Example program for reading and processing of

payroll results - 1REPORT zpsol090.

TABLES: pernr,

t512t,

t549a. "Payroll areas

INFOTYPES: 0001. "Organizational Assignment

DATA: result_tab TYPE hrpay99_tab_of_results,

result_header TYPE pay99_result.

Page 170: HR ABAP Training

Reporting in HR

DATA: rgdir LIKE pc261 OCCURS 0 WITH HEADER LINE.

DATA: period LIKE pc261-inper.

SELECT-OPTIONS: p_status FOR result_header-evp-srtza

DEFAULT 'A'.

START-OF-SELECTION.

SELECT SINGLE * FROM t549a

WHERE abkrs = pnpxabkr.

period = pn-paper.

Page 171: HR ABAP Training

Reporting in HR

GET pernr.

rp_provide_from_last p0001 space pn-begda pn-endda.

CALL FUNCTION ‘PYXX_GET_EVALUATION_PERIODS’

EXPORTING

clusterid = 'RX'

employeenumber = p0001-pernr

inper_modif = t549a-permo

inper = period

TABLES

rgdir = rgdir

evaluated_periods = result_tab

EXCEPTIONS

no_payroll_results = 1

no_entry_found_on_cu = 2

import_error = 3

OTHERS = 4.

Page 172: HR ABAP Training

Reporting in HR

IF sy-subrc NE 0.

WRITE: / 'No payroll result found for'(001), pn-paper.

ELSE.

LOOP AT result_tab INTO result_header.

CHECK p_status.

PERFORM print_rx.

ENDLOOP.

ENDIF.

Page 173: HR ABAP Training

Reporting in HR

*-------------------------------------------------------------*

* FORM PRINT_RX

*-------------------------------------------------------------*

* Print Payroll Result

*-------------------------------------------------------------*

FORM print_rx.

FORMAT INTENSIFIED ON.

WRITE: / p0001-pernr,

(15) p0001-ename,

p0001-werks,

p0001-btrtl.

FORMAT INTENSIFIED OFF.

SKIP 1.

WRITE: / 'For period/payroll area: '(003),

30 result_header-inter-versc-fpper+4(2),

result_header-inter-versc-fpper+0(4),

result_header-inter-versc-abkrs,

/ 'In-period/payroll area: '(004),

30 result_header-inter-versc-inper+4(2),

result_header-inter-versc-inper+0(4),

result_header-inter-versc-iabkrs.

SKIP 1.

WRITE: 'Results table: '(005).

SKIP 1.

Page 174: HR ABAP Training

Reporting in HR

LOOP AT result_header-inter-rt INTO rt_header.

PERFORM re512t USING result_header-inter-versc-molga

rt_header-lgart.

WRITE: / rt_header-lgart,

T512T-LGTXT,

rt_header-betrg CURRENCY rt_header-amt_curr.

ENDLOOP.

ENDFORM.

*-------------------------------------------------------------*

* FORM RE512T

*-------------------------------------------------------------*

* Read Wage Type Texts

*-------------------------------------------------------------*

FORM re512t USING value(country_grouping)

value(wtype).

CHECK t512t-sprsl NE sy-langu

OR t512t-molga NE country_grouping

OR t512t-lgart NE wtype.

SELECT SINGLE * FROM t512t

WHERE sprsl EQ sy-langu

AND molga EQ country_grouping

AND lgart EQ wtype.

IF sy-subrc NE 0.

CLEAR t512t.

ENDIF.

ENDFORM.

Page 175: HR ABAP Training

Reporting in HR

Example program for reading and processing of

payroll results – 2 ����Reading RT resultsREPORT zhpyr00134 NO STANDARD PAGE HEADING LINE-SIZE 130 LINE-COUNT 60.

* Declare internal tables

TABLES: pernr, t511.

INFOTYPES: 0000, 0001, 0002.

DATA: BEGIN OF gt_data OCCURS 0,

pernr LIKE p0000-pernr,

perid LIKE p0002-perid,

sname LIKE p0001-sname,

lgart LIKE t511-lgart,

betrg LIKE pc207-betrg,

bukrs LIKE p0001-bukrs,

END OF gt_data.

SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-h00.

SELECT-OPTIONS: s_stat2 FOR p0000-stat2.

SELECT-OPTIONS: s_lgart FOR t511-lgart OBLIGATORY.

SELECTION-SCREEN END OF BLOCK 1.

Page 176: HR ABAP Training

Reporting in HR

START-OF-SELECTION.

GET pernr.

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

IF pnp-sw-found NE '1' OR NOT p0000-stat2 IN s_stat2.

REJECT.

ENDIF.

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

IF pnp-sw-found NE '1'.

REJECT.

ENDIF.

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

IF pnp-sw-found NE '1'.

REJECT.

ENDIF.

PERFORM get_payroll.

END-OF-SELECTION.

PERFORM disp_result.

Page 177: HR ABAP Training

Reporting in HR

****************************************************************

FORM get_payroll.

****************************************************************

DATA: ls_hrpy_rgdir LIKE hrpy_rgdir.

DATA: lt_payresult TYPE payus_result,

lt_rt LIKE pc207 OCCURS 0 WITH HEADER LINE.

DATA: lw_fpper LIKE hrpy_rgdir-fpper.

IF pnppabrp IS INITIAL.

CONCATENATE pnpdispj pnpdispp INTO lw_fpper.

ELSE.

CONCATENATE pnppabrj pnppabrp INTO lw_fpper.

ENDIF.

SELECT SINGLE * INTO ls_hrpy_rgdir FROM hrpy_rgdir

WHERE pernr = pernr-pernr AND fpper = lw_fpper AND

abkrs = p0001-abkrs AND srtza = 'A'.

IF sy-subrc NE 0.

EXIT.

ENDIF.

CLEAR gt_data.

gt_data-pernr = pernr-pernr.

gt_data-perid = p0002-perid.

gt_data-sname = p0001-sname.

gt_data-bukrs = p0001-bukrs.

Page 178: HR ABAP Training

Reporting in HR

CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'

EXPORTING

clusterid = 'RU'

employeenumber = ls_hrpy_rgdir-pernr

sequencenumber = ls_hrpy_rgdir-seqnr

CHANGING

payroll_result = lt_payresult

EXCEPTIONS

illegal_isocode_or_clusterid = 1

error_generating_import = 2

import_mismatch_error = 3

subpool_dir_full = 4

no_read_authority = 5

no_record_found = 6

versions_do_not_match = 7

OTHERS = 8.

IF sy-subrc NE 0.

APPEND gt_data.

EXIT.

ENDIF.

lt_rt[] = lt_payresult-inter-rt[].

LOOP AT lt_rt WHERE lgart IN s_lgart.

gt_data-lgart = lt_rt-lgart.

gt_data-betrg = lt_rt-betrg.

APPEND gt_data.

ENDLOOP.

ENDFORM. "get_payroll

Page 179: HR ABAP Training

Reporting in HR

****************************************************************

FORM disp_result.

****************************************************************

SORT gt_data BY pernr.

IF p_dwnld = 'X'.

LOOP AT gt_data.

WRITE:/1 gt_data-pernr, 10 gt_data-perid

USING EDIT MASK '___-__-____',

22 gt_data-sname(25), 50 gt_data-bukrs,

65 gt_data-lgart, 71 gt_data-betrg.

ENDLOOP.

ELSE.

FORMAT COLOR COL_HEADING INTENSIFIED ON.

WRITE:/1(130) 'Employee#', 15 'S.S#', 30 'Name', 60 'CompanyCode'.

WRITE:/1(130) sy-uline.

Page 180: HR ABAP Training

Reporting in HR

LOOP AT gt_data.

AT NEW pernr.

FORMAT COLOR COL_HEADING INTENSIFIED OFF.

READ TABLE gt_data INDEX sy-tabix.

WRITE:/1(130) gt_data-pernr, 15 gt_data-perid

USING EDIT MASK '___-__-____', 30 gt_data-sname, 60 gt_data-bukrs.

ENDAT.

IF gt_data-lgart IS NOT INITIAL.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

WRITE:/1(130) '', 15 'Wage type/Amount >>>',

40 gt_data-lgart, 60(15) gt_data-betrg.

ENDIF.

ENDLOOP.

ENDIF.

SKIP 2.

FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.

WRITE:/1(130) '>>> End of Report <<<' CENTERED.

SKIP 1.

ENDFORM. "disp_result

Page 181: HR ABAP Training

Some of the user Exits available are:1. PBAS0001 ����PA: Pers.Admin./Recruitment: Default

values and checks

2. HRCTRCU0����Enhancement for Customer Exits for RPCTRCU0.

3. RHALE001 ����HR-CA: Enhancement for ALE functionality in HR

4. PCMP0009����Compensation Management: Calculation Base

5. PCMP0010����Compensation Management: Activate Compensation Adjustments

User Exits and BAdIs

Page 182: HR ABAP Training

1. PBAS0001 ����PA: Pers.Admin./Recruitment: Default values and checks

This is mainly used for validation of infotype entries

when maintaining data through PA40 or PA30

transactions.

Two Function modules EXIT_SAPFP50M_001

and EXIT_SAPFP50M_002 are associated with this

Enhancement. The first one is called in PBO module

and second one in PAI module.

User Exits and BAdIs

Page 183: HR ABAP Training

Reporting in HR

Goto transaction CMOD

Page 184: HR ABAP Training

Reporting in HR

Page 185: HR ABAP Training

Reporting in HR

The function exit EXIT_SAPFP50M_001 allows you to enter Defaultvalues in

the single screen when you are creating or copying infotypes.

The following are available for determining these default values:

TCLAS the transaction class (A= employees, B= applicants)

INNNN the infotype created

IPSYST workfields for dialog control and selected fields for

organizational assignment (IT 0001) that are valid on the start date

of the current record (INNNN-BEGDA).

I001P Table T001P (Personnel Subareas) determined with the

current organizational assignment (IPSYST-WERKS, IPSYST-BTRTL),

I503 Table T503 (Employee Subgroups) determined with the current

organizational assignment (IPSYST-PERSG, IPSYST-PERSK).

IPREF Assignment values for HR objects

Page 186: HR ABAP Training

Reporting in HR

Based on this data, the additional data can be returned to parameter INNNN.

Error messages or exceptions are not provided for in this function exit.

Note the following:

1 The function exit is executed when you Create or Copy a record.

2 As long as the enhancement is active, the function exit is called up

for every infotype, as the following steps are necessary:

- declaration of structure with desired infotype structure (I0008

LIKE P0008)

- infotype query in CASE statement

- temporary storage of transfer parameter INNNN in infotype

structure

- an example of the coding for this function exit is stored in

include LXPADF01.

Page 187: HR ABAP Training

Reporting in HR

The function exit EXIT_SAPFP50M_002 allows you to execute an additional

check after entries have been made on the single screen and the fields

have been verified.

The following are available for determining these default values:

TCLAS the transaction class (A= employees, B= applicants)

INNNN the infotype created

PSAVE Infotype prior to modification

IPSYST workfields for dialog control and selected fields for

organizational assignment (IT 0001) that are valid on the start date

of the current record (INNNN-BEGDA).

I001P Table T001P (Personnel Subareas) determined with the

current organizational assignment (IPSYST-WERKS, IPSYST-BTRTL),

I503 Table T503 (Employee Subgroups) determined with the current

organizational assignment (IPSYST-PERSG, IPSYST-PERSK).

IPREF Assignment values for HR objects

Page 188: HR ABAP Training

Reporting in HR

Created infotype records will be returned INNNN.

Error messages can be returned.

Note:

1. You can still change the created infotype record in function exit.

Whoever is responsible for the enhancement project must make sure

that the field contents are consistent! In order to that field

values can be displayed again, Show_data_again must be switched on.

2. As soon as the enhancement is active, the function exit will be

called up for each infotype. The following steps are required in

order to do this:

- Declaration of a field string with the desired infotype

structure (I0008 LIKE P0008)

- Query of infotype in a case statement

- Store transfer parameter INNNN temporarily in the infotype field string

- Determine the default value

- Return infotype to transfer parameter INNNN

3. There is an example of the coding for this function exit in include

LXPADF01.

Page 189: HR ABAP Training

Reporting in HR

Function Module EXIT_SAPFP50M_001

Page 190: HR ABAP Training

Reporting in HR

Page 191: HR ABAP Training

Reporting in HR

Function Module EXIT_SAPFP50M_002

Page 192: HR ABAP Training

Reporting in HR

Page 193: HR ABAP Training

Reporting in HR

Page 194: HR ABAP Training

Reporting in HR

Business Add-Ins (BAdI)

Business add-ins are programmer-defined places in source code where software

customers (industry sectors, partners, customers, and so on) can add their own code,

without modifying the original object.

Business add-ins are designed for users who require certain functions in the R/3 System

that are too specialized to be included in the standard system, but are needed often, and

therefore have been designed to be integrated into the R/3 System. A user who wants to

use a business add-in can create their own during implementation, or use one of the

delivered standard solutions.

The interface of a business add-in is forward compatible, thus ensuring that these add-ins

and their interface still function after a release upgrade. They do not need to be registered

in SSCR.

While customer exits (enhancements using SMOD/CMOD) are designed for use in a two-

level system landscape (SAP, customers), business add-ins are designed for use in a

multiple-level system landscape (SAP, country versions, IS solutions, partners, customers,

and so on). Business add-ins can be created at any level of the system landscape. In

addition, business add-ins can be created and delivered at all software levels.

Enhancements created using business add-ins can be implemented either exactly once, or

for an infinite number of customers simultaneously. Business add-ins can also be defined

according to a filter (for example, an add-in could be implemented according to "country"

or other criteria).

Interfaces can be designed for ABAP source code, screens, GUI interfaces, and tables.

Customers can then add their own enhancements to the standard system. Interfaces are

required to execute a task are combined in one business add-in.

Page 195: HR ABAP Training

Reporting in HR

BAdI for PA InfotypesNow let me explain the method of creating implementation/s for a BAdI with the example of HRPAD00INFTY.

Go to Transaction: SE18

Enter the definition name as HRPAD00INFTY.

Page 196: HR ABAP Training

Reporting in HR

Click on the display button. The following screen appears.

Page 197: HR ABAP Training

Reporting in HR

By seeing the attributes we can make out that this is a Multiple use BAdI which means there can be more than one

active implementation

at a time.

Choose the menu Implementation�Overview.

The following screen will appear which suggests that PY_UPD_T5RIC is the active implementation for the BAdI which

is a standard one.

Is this BAdI a complete replacement for the enhancement PBAS0001?

Yes. The enhancement PBAS0001 can be completely avoided by the BAdI.

Page 198: HR ABAP Training

Reporting in HR

How to implement our own Implementation of the BAdI Definition?Choose the menu Implementation�Overview.

The following screen will appear.

Click on the create button

The following popup appears. Enter the new implementation name

as ZRAJESH_P_NAIR_INFTY (for Example) and press enter.

The following screen will appear.

Enter the description of the implementation and save it.

Page 199: HR ABAP Training

Reporting in HR

Now select the interface tab

Page 200: HR ABAP Training

Reporting in HR

Page 201: HR ABAP Training

Reporting in HR

Here we are having three methods viz:

BEFORE_OUTPUT (PBO) - Equivalent to EXIT_SAPFP50M_001 of the

enhancement PBAS0001.

AFTER_INPUT (PAI) - Equivalent to EXIT_SAPFP50M_002 of the

enhancement PBAS0001.

IN_UPDATE (While Saving the Infotype)

We can write our code inside any of the methods depending upon the

requirement.

For Example, let us take a scenario; In Info Type 0001 if the employee

subgroup is “1A” then the payroll area entered should be only “01”.

Let us how can we implement this using BADI.

Obviously, we have to write the code in the method “AFTER_INPUT”.

Page 202: HR ABAP Training

Reporting in HR

The code is as follows:

METHOD if_ex_hrpad00infty~after_input.

DATA p0001 TYPE p0001.

CASE new_innnn-infty.

WHEN '0001'.

p0001 = new_innnn.

IF p0001-persk = '1A' AND p0001-abkrs NE '01'.

MESSAGE e000(fv) WITH 'Only payroll area 01 is allowed'

' for emp subgroup 1A’.

ENDIF.

ENDCASE.

ENDMETHOD.

Page 203: HR ABAP Training

Reporting in HR

For viewing the parameters which can be accessed inside the method, we can use the “Signature” button in the

application toolbar.

Screen with signature option

Page 204: HR ABAP Training

Reporting in HR

Screen without signature option

Page 205: HR ABAP Training

Reporting in HR

Activating the BAdI:

So far we have identified the BAdI definition created our own

implementation and written our own code. Now the final step is

activating the BAdI.

As discussed earlier, ours is a multiple use BAdI that means the

activation of our implementation will not affect the existing active

implementations. If we do not want the existing active

implementation, we can deactivate it.

For activating, we can go to the transaction SE19 and enter the

implementation name as

ZRAJESH_P_NAIR_INFTY and click on the activate icon in the

application toolbar.

We will get a message “BAdI implementation

ZRAJESH_P_NAIR_INFTY has been activated!” upon activation.

Page 206: HR ABAP Training

Reporting in HR

Page 207: HR ABAP Training

Reporting in HR

You can even do the activation of the implementation from the

BAdI definition itself.

Note: If the active implementation is of standard SAP, then we can

deactivate it easily, but if we want to activate it again we need the

access key.

Now let us see how this is affected in PA30 transaction for Info

Type 0001.

Page 208: HR ABAP Training

Reporting in HR

Now let us see how this is affected in PA30 transaction for Info Type 0001.

Go to Transaction PA30.

Enter the Personnel Number as 92510(Example).

Page 209: HR ABAP Training

Reporting in HR

Click on change icon and goto the next screen.

Enter the payroll area as W0.

Page 210: HR ABAP Training

Reporting in HR

Now we will get the error message as follows:

Page 211: HR ABAP Training

Reporting in HR

De-activating the BAdI:

For de-activating, we can go to the transaction SE19, enter the

implementation name as ZRAJESH_P_NAIR_INFTY, and click on

the Deactivate icon in the application toolbar.

Page 212: HR ABAP Training

Reporting in HR

We will get a message “BAdI implementation

ZRAJESH_P_NAIR_INFTY has been deactivated!” upon

deactivation.

Page 213: HR ABAP Training

Authorization Objects in HR

All the HR related Authorization objects are included in the

Authorization Class HR. Goto SU21 transaction select the

authorization class HR (Human Resources) and it will list all the

authorization objects associated with it.

Page 214: HR ABAP Training

Reporting in HR

Page 215: HR ABAP Training

Authorization Objects in HR

Some of the important HR authorization Objects are described

below:

Object: PLOG Personnel Planning

Fields:

PLVAR Plan Version

OTYPE Object Type

INFOTYP Infotype

SUBTYP Subtype

ISTAT Planning Status

PPFCODE Function Code

Definition:

The present object is used by the authorization check for PD

data.

Page 216: HR ABAP Training

Authorization Objects in HR

Field Details:

PLVAR - Plan version This field defines which plan version(s) the user may access.

OTYPE - Object type This field defines which object types the user may access.

INFOTYP - Infotype This field defines, which infotypes, that is, attributes, of an object

the users (generally) may access.

SUBTYP - Subtype This field determines which subtypes the user may access for given

infotypes.

Relationships are special subtypes for infotype 1001. Consequently, the relationships

for which a user should have access authorization can also be limited in this field.

ISTAT_D - Planning status This field determines in which planning status the user may

access information.

OKCODE - Function code This field defines for which type of information processing

(Display, Change ) the user is authorized.

The possible values are defined in table T77FC. This protection against unauthorized

access is extended by the structural authorization check. Two types of function codes

are distinguished in HR management. By marking the processing method Maintenance

in table T77FC the function codes are indicated, with which objects may be maintained

within the structure; Otherwise, only Display is allowed. The function code has effects

in connection with the structural authorization. In table

T77PR, authorization profiles can be indicated which are to have maintenance

authorization for the structure. Without this authorization, you can only display

structures. Consequently, the overall authorization results from the intersection

between basis authorization and structural authorization.

Page 217: HR ABAP Training

Authorization Objects in HR

Object: P_ABAP HR: ReportingFields: REPID ABAP Program Name

COARS Degree of simplification for authorization check

Definition:

The authorization object HR reporting (P_ABAP) is used in many ways:

HR Reporting with HR Reporting are reports with the SAPDBPNP logical

database PNP .

Report: RPUAUD00 Logged changes in infotype data

Processing person-related data using payment medium programs from

Accounting.

To 1. You can use the relevant authorization for these objects to control

how the objects P_ORGIN HR: Master data (P_ORGIN), P_ORGXX HR:

Master data - extended check (P_ORGXX) are used in specified reports to

check the authorization for INFTY HR infotypes . In this way, you can carry

out a fine-tuned control on reports for infotype authorization. This can be

useful for functional reasons or to improve

performance at runtime of the corresponding reports.

For this object, specify the report name(s) and the degree of simplification

to be used for the authorization check.

Page 218: HR ABAP Training

Authorization Objects in HR

Note:

HR: Reporting , however, overrides the HR infotype authorization

check for selected reports, with the result that the authorization

checks are weakened or completely switched off.

Object HR: Master data (P_ORGIN)

Fields are:

INFTY Infotype

SUBTY Subtype

AUTHC Authorization level

PERSA Personnel Area

PERSG Employee Group

PERSK Employee Subgroup

VDSK1 Organizational Key

Page 219: HR ABAP Training

Authorization Objects in HR

Object: P_ORGXX HR: Master Data - Extended Check

Fields: INFTY Infotype

SUBTY Subtype

AUTHC Authorization level

SACHA Payroll Administrator

SACHP Administrator for HR Master Data

SACHZ Administrator for Time Recording

SBMOD Administrator Group

Definition:

The object HR: Master data - Extended check (P_ORGXX) can be

used to check authorization for personal data INFTY (HR infotypes)

This check is not active in the standard system. The program

switch HR: Master data - Extended check (ORGXX) can be used to

add this check in the standard system or set it as an alternative to

P_ORGIN HR: master data . The main switch settings can be

processed using transaction HR: Authorization switch (OOAC)

Page 220: HR ABAP Training

Authorization Objects in HR

Object: P_PCLX HR: Clusters

Fields: RELID Area identifier for cluster in tables PCLx

AUTHC Authorization level

Definition:

This object is used in the authorization check when accessing

PCLx (x = 1, 2, 3,4) HR files using the PCLx buffer (interface

supported by HR).

Field Details:

Cluster ID: enter the cluster name in this field. Authorization level:

in this field you must specify the operation to be carried out on the

cluster along with the cluster ID specified above.

The values which can be entered here are R (read), U (update

database) and S (export data to PCLx buffer without database

update).