Top Banner
ABAP (Advanced Business Application Programming) is a programming language for developing applications for the SAP R/3 system, a widely-installed business application subsystem. The latest version, ABAP Objects, is object-oriented programming. SAP will run applications written using ABAP/4, the earlier ABAP version, as well as applications using ABAP Objects. SAP's original business model for R/3 was developed before the idea of an object-oriented model was widespread. The transition to the object-oriented model reflects an increased customer demand for it. ABAP Objects uses a single inheritance model and full support for object features such as encapsulation, polymorphism, and persistence. ABAP (Advanced Business Application Programming, originally Allgemeiner Berichts-Aufbereitungs-Prozessor , German for "general report creation processor" [1] ) is a high-level programming language created by the German software company SAP . It is currently positioned, alongside the more recently introduced Java , as the language for programming the SAP Application Server , part of its NetWeaver platform for building business applications. [edit ]Introduction ABAP is one of the many application-specific fourth-generation languages (4GLs ) first developed in the 1980s . It was originally the report language for SAP R/2 , a platform that enabled large corporations to build mainframe business applications for materials management and financial and management accounting. ABAP used to be an abbreviation of Allgemeiner BerichtsAufbereitungsProzessor, German for "generic report preparation processor", but was later renamed to the English Advanced Business Application Programming. ABAP was one of the first languages to include the concept of Logical Databases (LDBs), which provides a high level of abstraction from the basic database level(s).
28
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ABAP HR

ABAP (Advanced Business Application Programming) is a programming language for developing applications for the SAP R/3 system, a widely-installed business application subsystem. The latest version, ABAP Objects, is object-oriented programming. SAP will run applications written using ABAP/4, the earlier ABAP version, as well as applications using ABAP Objects.

SAP's original business model for R/3 was developed before the idea of an object-oriented model was widespread. The transition to the object-oriented model reflects an increased customer demand for it. ABAP Objects uses a single inheritance model and full support for object features such as encapsulation, polymorphism, and persistence.

ABAP (Advanced Business Application Programming, originally Allgemeiner Berichts-Aufbereitungs-Prozessor, German for "general report creation processor"[1]) is a high-level programming language created by the German softwarecompany SAP. It is currently positioned, alongside the more recently introducedJava, as the language for programming the SAP Application Server, part of itsNetWeaver platform for building business applications.

[edit]Introduction

ABAP is one of the many application-specific fourth-generation languages (4GLs) first developed in

the 1980s. It was originally the report language for SAP R/2, a platform that enabled large corporations to

build mainframe business applications for materials management and financial and management

accounting.

ABAP used to be an abbreviation of Allgemeiner BerichtsAufbereitungsProzessor, German for "generic

report preparation processor", but was later renamed to the

English Advanced Business Application Programming. ABAP was one of the first languages to include

the concept of Logical Databases (LDBs), which provides a high level of abstraction from the basic

database level(s).

The ABAP programming language was originally used by developers to develop the SAP R/3 platform. It

was also intended to be used by SAP customers to enhance SAP applications – customers can develop

custom reports and interfaces with ABAP programming. The language is fairly easy to learn[opinion] for

programmers but it is not a tool for direct use by non-programmers. Knowledge of relational database

design and preferably also of object-oriented concepts is necessary to create ABAP programs.

ABAP remains as the language for creating programs for the client-server R/3 system, which SAP first

released in 1992. As computer hardware evolved through the 1990s, more and more of SAP's

applications and systems were written in ABAP. By 2001, all but the most basic functions were written in

ABAP. In 1999, SAP released an object-oriented extension to ABAP called ABAP Objects, along with R/3

release 4.6.

SAP's current development platform NetWeaver supports both ABAP and Java.

Page 2: ABAP HR

[edit]ABAP runtime environment

All ABAP programs reside inside the SAP database. They are not stored in separate external files like

Java or C++ programs. In the database all ABAP code exists in two forms: source code, which can be

viewed and edited with the ABAP Workbench tools; and generated code, a binary representation

somewhat comparable with Java bytecode. ABAP programs execute under the control of the runtime

system, which is part of the SAP kernel. The runtime system is responsible for processing ABAP

statements, controlling the flow logic of screens and responding to events (such as a user clicking on a

screen button); in this respect it can be seen as a Virtual Machinecomparable with the Java VM. A key

component of the ABAP runtime system is the Database Interface, which turns database-independent

ABAP statements ("Open SQL") into statements understood by the underlying DBMS ("Native SQL"). The

database interface handles all the communication with the relational database on behalf of ABAP

programs; it also contains extra features such as buffering of tables and frequently accessed data in the

local memory of the application server.

[edit]SAP Basis

The ABAP language environment, including the syntax checking, code generation, and runtime system, is

part of the SAP Basis component/layer. SAP Basis is the technological platform that supports the entire

range of SAP applications, now typically implemented in the framework of the SAP Web Application

Server. In that sense SAP Basis can be seen as the virtual machine on which SAP applications run. Like

any operating system, SAP Basis contains both low-level services (for example memory management,

database communication, or servicing Web requests) and high-level tools for end users and

administrators. These tools can be executables ("SAP kernel") running directly on the underlying

operating system, transactions developed in ABAP, or Web-based programs.

SAP Basis also provides a layer of abstraction between the business applications and the operating

system and database. This ensures that applications do not depend directly upon a specific server or

database platform and can easily be ported from one platform to another.

SAP Basis currently runs on UNIX (AIX, HP-UX, Solaris, Linux), Microsoft Windows, i5/OS on

IBM System i (formerly iSeries, AS/400), and z/OS on IBM System z (formerly zSeries, S/390). Supported

databases are IBM DB2, Informix, MaxDB, Oracle, and Microsoft SQL Server (support for Informix was

discontinued in SAP Basis release 7.00).

[edit]SAP systems and landscapes

All SAP data exists and all SAP software runs in the context of a SAP system. A system consists of a

central relational database and one or more application servers ("instances") accessing the data and

programs in this database. A SAP system contains at least one instance but may contain more, mostly for

reasons of sizing and performance. In a system with multiple instances, load balancing mechanisms

ensure that the load is spread evenly over the available application servers.

Installations of the Web Application Server (landscapes) typically consist of three systems: one for

development; one for testing and quality assurance; and one for production. The landscape may contain

more systems (e.g., separate systems for unit testing and pre-production testing) or it may contain fewer

(e.g., only development and production, without separate QA); nevertheless three is the most common

configuration. ABAP programs are created and undergo first testing in the development system.

Page 3: ABAP HR

Afterwards they are distributed to the other systems in the landscape. These actions take place under

control of the Change and Transport System (CTS), which is responsible for concurrency control (e.g.,

preventing two developers from changing the same code at the same time), version management, and

deployment of programs on the QA and production systems.

The Web Application Server consists of three layers: the database layer; the application layer; and the

presentation layer. These layers may run on the same or on different physical machines. The database

layer contains the relational database and the database software. The application layer knowledge

contains the instance or instances of the system. All application processes, including the business

transactions and the ABAP development, run on the application layer. The presentation layer handles the

interaction with users of the system. Online access to ABAP application servers can go via a proprietary

graphical interface, which is called "SAP GUI", or via a Web browser.

[edit]Transactions

A transaction in SAP terminology is the execution of a program. The normal way of executing ABAP code

in the SAP system is by entering a transaction code (for instance, VA01 is the transaction code for

"Create Sales Order"). Transactions can be called via system-defined or user-specific, role-based menus.

They can also be started by entering the transaction code directly into a command field, which is present

in every SAP screen. Transactions can also be invoked programmatically by means of the ABAP

statements CALL TRANSACTION and LEAVE TO TRANSACTION.

The term "transaction" must not be misunderstood here; in the context just described, a transaction

simply means calling and executing an ABAP program. In application programming, "transaction" often

refers to an indivisible operation on data, which is either committed as a whole or undone (rolled back) as

a whole. This concept exists in SAP and is called a LUW (Logical Unit of Work). In the course of one

transaction (program execution), there can be different LUWs. Transaction for ABAP Workbench could be

invoked using transaction code SE80 to work on all ABAP related activities.[citation needed]

[edit]Types of ABAP programs

As in other programming languages, an ABAP program is either an executable unit or a library, which

provides reusable code to other programs and is not independently executable.

ABAP distinguishes two types of executable programs:

Reports

Module pools

Reports follow a relatively simple programming model whereby a user optionally enters a set of

parameters (e.g., a selection over a subset of data) and the program then uses the input parameters to

produce a report in the form of an interactive list. The term "report" can be somewhat misleading in that

reports can also be designed to modify data; the reason why these programs are called reports is the

"list-oriented" nature of the output they produce.

Module pools define more complex patterns of user interaction using a collection of screens. The term

“screen” refers to the actual, physical image that the user sees. Each screen also has a "flow logic", which

refers to the ABAP code implicitly invoked by the screens. Each screen has its own flow logic, which is

divided into a "PBO" (Process Before Output) and "PAI" (Process After Input) section. In SAP

Page 4: ABAP HR

documentation the term “dynpro” (dynamic program) refers to the combination of the screen and its flow

logic.

The non-executable program types are:

INCLUDE modules

Subroutine pools

Function groups

Object classes

Interfaces

Type pools

An INCLUDE module gets included at generation time into the calling unit; it is often used to subdivide

very large programs. Subroutine pools contain ABAP subroutines (blocks of code enclosed by

FORM/ENDFORM statements and invoked with PERFORM). Function groups are libraries of self-

contained function modules (enclosed by FUNCTION/ENDFUNCTION and invoked with CALL

FUNCTION). Object classes and interfaces are similar to Java classes and interfaces; the first define a

set of methods and attributes, the second contain "empty" method definitions, for which any class

implementing the interface must provide explicit code. Type pools define collections of data types and

constants.

[edit]ABAP Workbench

The ABAP Workbench contains different tools for editing programs. The most important of these are

(transaction codes are shown in parentheses):

ABAP Editor for writing and editing reports, module pools, includes and subroutine pools (SE38)

ABAP Dictionary for processing database table definitions and retrieving global types (SE11)

Menu Painter for designing the user interface (menu bar, standard toolbar, application toolbar,

function key assignment) (SE41)

Screen Painter for designing screens and flow logic (SE51)

Function Builder for function modules (SE37)

Class Builder for ABAP Objects classes and interfaces (SE24)

The Object Navigator (transaction SE80) provides a single integrated interface into these various tools.

[edit]ABAP Dictionary

The ABAP Dictionary contains all metadata about the data in the SAP system. It is closely linked with the

ABAP Workbench in that any reference to data (e.g., a table, a view, or a data type) will be obtained from

the dictionary. Developers use the ABAP Dictionary transactions (directly or through the SE80 Object

Navigator inside the ABAP Workbench) to display and maintain this metadata.

When a dictionary object is changed, a program that references the changed object will automatically

reference the new version the next time the program runs. Because ABAP is interpreted, it is not

necessary to recompile programs that reference changed dictionary objects.

A brief description of the most important types of dictionary objects follows:

Page 5: ABAP HR

Tables are data containers that exist in the underlying relational database. In the majority of cases

there is a 1-to-1 relationship between the definition of a table in the ABAP Dictionary and the

definition of that same table in the database (same name, same columns). These tables are known

as "transparent". There are two types of non-transparent tables: "pooled" tables exist as independent

entities in the ABAP Dictionary but they are grouped together in large physical tables ("pools") at the

database level. Pooled tables are often small tables holding for example configuration data.

"Clustered" tables are physically grouped in "clusters" based on their primary keys; for instance,

assume that a clustered table H contains "header" data about sales invoices, whereas another

clustered table D holds the invoice line items. Each row of H would then be physically grouped with

the related rows from D inside a "cluster table" in the database. This type of clustering, which is

designed to improve performance, also exists as native functionality in some, though not all,

relational database systems.

Indexes provide accelerated access to table data for often used selection conditions. Every SAP

table has a "primary index", which is created implicitly along with the table and is used to enforce

primary key uniqueness. Additional indexes (unique or non-unique) may be defined; these are called

"secondary indexes".

Views have the same purpose as in the underlying database: they define subsets of columns (and/or

rows) from one or - using a join condition - several tables. View is actually a virtual table which does

not contain data physically. Views take very short memory space in database because the views

contain only the definition of data.

Structures are complex data types consisting of multiple fields (comparable to struct in C/C++).

Data elements provide the semantic content for a table or structure field. For example, dozens of

tables and structures might contain a field giving the price (of a finished product, raw material,

resource, ...). All these fields could have the same data element "PRICE".

Domains define the structural characteristics of a data element. For example, the data element

PRICE could have an assigned domain that defines the price as a numeric field with two decimals.

Domains can also carry semantic content in providing a list of possible values. For example, a

domain "BOOLEAN" could define a field of type "character" with length 1 and case-insensitive, but

would also restrict the possible values to "T" (true) or "F" (false).

Search helps (successors to the now obsolete "matchcodes") provide advanced search strategies

when a user wants to see the possible values for a data field. The ABAP runtime provides implicit

assistance (by listing all values for the field, e.g. all existing customer numbers) but search helps can

be used to refine this functionality, e.g. by providing customer searches by geographical location,

credit rating, etc.

Lock objects implement application-level locking when changing data.

[edit]ABAP syntax

This brief description of the ABAP syntax begins inevitably with the ubiquitous "Hello World" program.

[edit]"Hello World"REPORT TEST.

WRITE 'Hello World'.

Page 6: ABAP HR

This example contains two statements: REPORT and WRITE. The program displays a list on the screen.

In this case, the list consists of the single line "Hello World". The REPORT statement indicates that this

program is a report. An alternative statement, PROGRAM, would be used for a module pool.

[edit]Formatting rules

The basic formatting rules of ABAP are simple:

Every ABAP statement must end in a period

Tokens within a statement must be separated by at least one space

An end of line is equivalent to a space

Statements and keywords are not case-sensitive

The "Hello World" program could be legally rewritten as follows:

REPORT tESt. WRITE

'Hello World' .

To ensure that code is readable, the ABAP editor provides a "Pretty Printer" function, which takes care of

proper indentation. The Pretty Printer also offers a choice between several models of case

standardization (all upper case, all lower case, upper case for statements/keywords, upper case for

variable names).

If a text literal in an ABAP statement extends across more than one line, then a ‘&’ character must be

used to combine a succession of text literals into a single one. Example:

USERPROMPT = 'Please double-click on a line in the output list ' &

'to see the complete details of the transaction.'.

The rule that tokens must be separated by at least one space extends even to operators, parentheses

and other symbols. For example the following code is incorrect:

X=(A+B)-(C+2).

The variable names (X, A, B, C), the numeric constant 2, the operators "=", "+" and "-" and the

parentheses must all be white-space delimited. The correct code is:

X = ( A + B ) - ( C + 2 ).

[edit]Chained statements

Consecutive statements with an identical first (leftmost) part can be combined into a "chained" statement

using the chain operator ":" (colon). The common part of the statements is written to the left of the colon,

the differing parts are written to the right of the colon and separated by commas. The colon operator is

attached directly to the preceding token, without a space (the same applies to the commas in the token

list on , as can be seen in the examples below).

Chaining is very often used in WRITE statements. WRITE accepts just one argument, so if for instance

you wanted to display three fields from a structure called FLIGHTINFO, you would have to code:

WRITE FLIGHTINFO-CITYFROM.

WRITE FLIGHTINFO-CITYTO.

WRITE FLIGHTINFO-AIRPTO.

Chaining the statements results in a more readable and more intuitive form:

Page 7: ABAP HR

WRITE: FLIGHTINFO-CITYFROM, FLIGHTINFO-CITYTO, FLIGHTINFO-AIRPTO.

In a chain statement, the first part (before the colon) is not limited to the statement name alone. The entire

common part of the consecutive statements can be placed before the colon. Example:

REPLACE 'A' WITH 'B' INTO LASTNAME.

REPLACE 'A' WITH 'B' INTO FIRSTNAME.

REPLACE 'A' WITH 'B' INTO CITYNAME.

could be rewritten in chained form as:

REPLACE 'A' WITH 'B' INTO: LASTNAME, FIRSTNAME, CITYNAME.

[edit]Comments

ABAP has 2 ways of defining text as a comment:

An asterisk (*) in the leftmost column of a line makes the entire line a comment

A double quotation mark (") anywhere on a line makes the rest of that line a comment

Example:

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

** Program: BOOKINGS **

** Author: Joe Byte, 07-Jul-2007 **

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

REPORT BOOKINGS.

* Read flight bookings from the database

SELECT * FROM FLIGHTINFO

WHERE CLASS = 'Y' "Y = economy

OR CLASS = 'C'. "C = business

(...)

[edit]Data types and variables

ABAP provides a set of built-in data types. In addition, every structure, table, view or data element defined

in the ABAP Dictionary can be used to type a variable. Also, object classes and interfaces can be used as

types.

The built-in data types are:

Type Description

I Integer (4-bytes)

P Packed decimal

Page 8: ABAP HR

F Floating point

N Character numeric

C Character

D Date

T Time

X Hexadecimal (raw byte)

STRING Variable-length string

XSTRIN

GVariable-length raw byte array

Date variables or constants (type D) contain the number of days since January 1, AD 1. Time variables or

constants (type T) contain the number of seconds since midnight. A special characteristic of both types is

that they can be accessed both as integers and as character strings (with internal format "YYYYMMDD"

for dates and "hhmmss" for times), which makes date/time handling very easy. For example, the code

snippet below calculates the last day of the previous month (note: SY-DATUM is a system-defined

variable containing the current date):

DATA LAST_EOM TYPE D. "last end-of-month date

* Start from today's date

LAST_EOM = SY-DATUM.

* Set characters 6 and 7 (0-relative) of the YYYYMMDD string to "01",

* giving the first day of the current month

LAST_EOM+6(2) = '01'.

* Subtract one day

LAST_EOM = LAST_EOM - 1.

WRITE: 'Last day of previous month was', LAST_EOM.

Page 9: ABAP HR

All ABAP variables must be explicitly declared in order to be used. Normally all declarations are placed at

the top of the code module (program, subroutine, function) before the first executable statement; this

placement is a convention and not an enforced syntax rule. The declaration consists of the name, type,

length (where applicable), additional modifiers (e.g. the number of implied decimals for a packed decimal

field) and optionally an initial value:

* Primitive types:

DATA: COUNTER TYPE I,

VALIDITY TYPE I VALUE 60,

TAXRATE(3) TYPE P DECIMALS 1,

LASTNAME(20) TYPE C,

DESCRIPTION TYPE STRING.

* Dictionary types:

DATA: ORIGIN TYPE COUNTRY.

* Internal table:

DATA: T_FLIGHTS TYPE TABLE OF FLIGHTINFO,

T_LOOKUP TYPE HASHED TABLE OF FLT_LOOKUP.

* Objects:

DATA: BOOKING TYPE REF TO CL_FLT_BOOKING.

Notice the use of the colon to chain together consecutive DATA statements.

[edit]ABAP Objects

The ABAP language supports object-oriented programming, through a feature known as "ABAP Objects".[2] This helps to simplify applications and make them more controllable.

ABAP Objects is fully compatible with the existing language, so one can use existing statements and

modularization units in programs that use ABAP Objects, and can also use ABAP Objects in existing

ABAP programs. Syntax checking is stronger in ABAP Objects programs, and some syntactical forms

(usually older ones) of certain statements are not permitted.

[edit]ABAP statements – an overview

In contrast with languages like C/C++ or Java, which define a limited set of language-specific statements

and provide most functionality via libraries, ABAP contains an extensive body of built-in statements.

These statements often support many options, which explains why ABAP programs look "verbose",

especially when compared with programs written in C, C++ or Java.

This section lists some of the most important statements in the language, subdivided by function. Both the

statements listed here and the subdivision used are fairly arbitrary and by no means exhaustive.

[edit]Declarative statements

These statements define data types or declare data objects which are used by the other statements in a

program or routine. The collected declarative statements in a program or routine make up its declaration

part.

Page 10: ABAP HR

Examples of declarative statements:

TYPES, DATA, CONSTANTS, PARAMETERS, SELECT-OPTIONS, TABLES

[edit]Modularization statements

These statements define the processing blocks in an ABAP program.

The modularization statements can be further divided into event statements and defining statements:

Event statements

These are used to define the beginning of event processing blocks. There are no special statements to

mark the end of such blocks - they end when the next processing block is introduced.

Examples of event keywords are:

LOAD OF PAGE,INITIALIZATION,AT SELECTION SCREEN OUTPUT,AT SELECTION SCREEN ON

FIELD, AT SELECTION SCREEN ON BLOCK,

AT SELECTION SCREEN, START-OF-SELECTION,END-OF-SELECTION, AT USER-COMMAND, AT

LINE-SELECTION,GET,GET LATE,AT USER COMMAND,

AT LINE SELECTION

Defining statements

These statements delineate callable code units such as subroutines, function modules and methods. The

statement marking the end of the unit has the name of the opening statement prefixed with "END".

Examples of defining keywords:

FORM ..... ENDFORM, FUNCTION ... ENDFUNCTION,

MODULE ... ENDMODULE, METHOD ... ENDMETHOD

[edit]Control statements

These statements control the flow of the program within a processing block.

Statements controlling conditional execution are:

IF ... ELSEIF ... ELSE ... ENDIF

CASE ... ENDCASE

CHECK

The CHECK statement verifies a condition and exits the current processing block (e.g. loop or subroutine)

if the condition is not satisfied.

Several statements exist to define a loop:

Page 11: ABAP HR

DO ... ENDDO

WHILE ... ENDWHILE

LOOP ... ENDLOOP

DO/ENDDO defines an unconditional loop. An exit condition (typically in the form "IF <condition>. EXIT.

ENDIF.") must be provided inside the body of the loop. A variant (DO <n> TIMES) sets as exit condition

the number of times the loop body is executed. WHILE/ENDWHILE defines a conditional loop. The

condition is tested at the beginning of the loop. LOOP/ENDLOOP loops over the lines of an internal table.

The loop ends after processing the last line of the internal table.

[edit]Call statements

These statements call processing blocks defined using the corresponding modularization statements. The

blocks can either be in the same ABAP program or in a different program.

Examples of call keywords:

PERFORM, CALL METHOD, CALL TRANSACTION, CALL SCREEN, SUBMIT, LEAVE TO

transaction

[edit]Operational statements

These statements retrieve or modify the contents of variables.

A first group of operational statements assign or change a variable:

MOVE, ADD, SUBTRACT, DIVIDE

These statements, whose syntax originates in COBOL, can be written in a shorter form that uses

operators rather than keywords:

MOVE LASTNAME TO RECIPIENT.

* is equivalent to

RECIPIENT = LASTNAME.

ADD TAX TO PRICE.

* is equivalent to

PRICE = PRICE + TAX.

Examples of operational statements on character strings:

SEARCH, REPLACE, CONCATENATE, CONDENSE

Database access statements (Open SQL):

Page 12: ABAP HR

SELECT, INSERT, UPDATE, DELETE, MODIFY

Statements working on internal tables (notice that some "SQL" statements can also be used here):

READ TABLE, INSERT, UPDATE, DELETE, MODIFY, SORT, DELETE ADJACENT DUPLICATES,

APPEND, CLEAR, REFRESH, FREE

[edit]Formatting statements

These statements produce or format output. They appear mainly in reports, less so in module pools.

Examples are:

WRITE, FORMAT, SKIP, ULINE, MESSAGE, NEW-PAGE, FREE

[edit]Internal tables in ABAP

Internal tables are an extremely important feature of the ABAP language. An internal table is defined as a

vector of structs in C++ or a vector of objects in Java. The main difference with these languages is that

ABAP provides a collection of statements to easily access and manipulate the contents of internal tables.

Note that ABAP does not support arrays; the only way to define a multi-element data object is to use an

internal table.[citation needed]

[edit]See also

HR CLUSTER TABLES

Payroll Custer Tables Cluster tables combine the data from several tables with identical (or almost identical) keys into one physical record on the database.

Data is written to a database in compressed form.

Retrieval of data is very fast if the primary key is known.

Cluster tables are defined in the data dictionary as transparent tables.

External programs can NOT interpret the data in a cluster table.

Special language elements EXPORT TO DATABASE, IMPORT TO DATABASE and DELETE  FROM DATABASE are used to process data in the cluster tables.

PCL1 - Database for HR work area; (long text, etc)PCL2 - Accounting Results (time, travel expense and payroll); (payroll results)PCL3 - Applicant tracking data; PCL4 - Documents, Payroll year-end Tax data (change logs, etc)Database Tables PCLn PCLn database tables are divided into subareas known as data clusters.

Page 13: ABAP HR

Data Clusters are identified by a two-character code. e.g RU for US payroll result, B2 for    time evaluation result, TX for long text, LA for change logs.

Each HR subarea has its own cluster.

Each subarea has its own key.

Database Table PCL1The database table PCL1 contains the following data areas: B1 time events/PDC

G1 group incentive wages 

L1 individual incentive wages

PC personal calendar

TE travel expenses/payroll results

TS travel expenses/master data

TX infotype texts

ZI PDC interface -> cost account .

 

 

SRTFD (PSKEY) = pernr (8) info type (4) subtype (4) obj id (2) lock (1) endda (8) begda (8) seqnr (3)Database Table PCL2The database table PCL2 contains the following data areas:  B2 time accounting results

CD cluster directory of the CD manager

PS generated schemas

PT texts for generated schemas

RX payroll accounting results/international

Rn payroll accounting results/country-specific ( n = HR country indicatorRU for US payroll result)

ZL personal work schedule

SRTFD (PC200) = pernr (8) sequence (5)Database Table PCL3The database table PCL3 contains the following data areas: AP action log / time schedule

TY texts for applicant data infotypes

Database Table PCL4The database table PCL4 contains the following data areas: LA change logs (long term documents)

SA Short-Term Documents for HR Master Data

Page 14: ABAP HR

SB Short-Term Documents for Applicant Master

SRTFD (PC400) = trans class always A for master data (1) pernr (8) info type (4) modified date (8) modified time (8) seqnr (4)Data Management of PCLn The ABAP commands IMPORT and EXPORT are used for management of read/write to database tables PCLn.

A unique key has to be used when reading data from or writing data to the PCLn.

o MANDT(3) client

o RELID (2) cluster ID (RU,TX, LA..)

o SRTFD (40) Work Area Key

o SRTF2 (4) Sort key for dup. key

Cluster DefinitionNaming convention for INCLUDES when defining clusters. These INCLUDES will define the work area key above and the cluster data that is returned from an IMPORT: 

RPCnxxy0n = 1, 2, 3 or 4 (for PCL1, PCL2, PCL3, PCL4) xx = cluster ID y = country grouping (0 for international otherwise country indicator T500L)Description of Cluster Data using Cluster RX as an Example The data description is stored in the include RPC2RX00 in accordance with the above naming conventions. RPC1TX00 - Long text cluster ID in table PCL1

RPC2RUU0 - Payroll results for the US cluster ID in table PCL2

RPC4LA00 - Change log cluster ID in table PCL4

Importing Data (I) The IMPORT command causes data objects with the specified key values to be read from PCLn.

If the import is successful, SY-SUBRC is 0; if not, it is 4.

REPORT ZRPIMPORT. TABLES: PCLn. INCLUDE RPCnxxy0. "Cluster definition * Fill cluster Key * Import record IMPORT TABLE1 FROM DATABASE PCLn(xx) ID xx-KEY.    IF SY-SUBRC EQ 0.       * Display data object     ENDIF.See sample program for long text.

Importing data (II) Import data using macro RP-IMP-Cn-xy.

Page 15: ABAP HR

Check return code SY-SUBRC. If 0, it is successful. If 4, error.

Need include buffer management routines RPPPXM00

REPORT ZRPIMPORT. *Buffer definition INCLUDE RPPPXD00. DATA: BEGIN OF COMMON PART 'BUFFER'. INCLUDE RPPPXD10. DATA: END OF COMMON PART 'BUFFER'. *import data to buffer RP-IMP-Cn-xy. .... *Buffer management routines INCLUDE RPPPXM00.

Cluster Authorization Simple EXPORT/IMPORT statement does not check for cluster authorization.

Use EXPORT/IMPORT via buffer, the buffer management routines check for cluster authorization.

rpcbdt00 - include needed for importing from database PCL4(la) (Change log cluster ID)When we upgraded to ERP2005, we encountered a problem because a couple of our programs tested the version (VERNR) number to determine which structure the detail used. The SAP include program, RPCBDT00, indicates that VERNR 01 & 02 use the same structure which is PC404. Therefore, we made our programs match SAP.

The following concepts are defined in ABAP HR which is different with other modules.

1)  Use of Infotypes2)  The use of Logical Database3)  Use of Macros and Provide statement4)  Storage and Access of data5)  Authorization checksThere is nothing much difference between abap and hr abap. The way we retrieve the data from data base is deferent.In general ABAP data is stored in Tables, but coming to HR ABAP employee data is sorted through Infotypes. The way we retrieve the data from infotypes is deferent in hr abap.

In general ABAP we use Logical data base very rare, as in HR ABAP most of the programs use Logical data base to select data from Infotypes by using Get event.

In ABAP we use read statement to read particular record, still in HR ABAP we do use read statement apart from that we have Macros and provide statement.

Page 16: ABAP HR

Macro is pre defined code (like function module) which reads data from internal table (internal infotype) based on dates.

Provide statement is like Select statement but selects data from internal table

Storage and access of data in hr abap is completely deferent in hr abap comparing with ABAP. We use transaction code PA20 and PA30 to maintain data in infotypes.

PA20 is display mode and PA30 is change mode. We can create, change, display, copy, and delete in infotypes with PA30 transaction.

For Infotypes authorizations can be maintained infotype and subtype (field) level as HR data is more sensitive and secrete.

Will discuss in detail of above bullet points as a separately.

Related Posts

Evaluating Repetitive Structures in HR ABAP Programming SAP ABAP HR Program code using LDB PNP SAP HR ABAP Interview Faq’s Personnel Administration (PA): Introduction on SAP HR module Useful Transaction codes in SAP HR module Macros in HR-ABAP programming What is Logical Database ?

Creation of Custom Infotype in HR ABAP Step By Step process to create Custom Infotype For list of Online

Training Courses look at the above SAP TRAINING page. Go to Transaction PM01 to Create custom Infotype. Enter the custom Infotype number to be created. The number should be between the customer name space 9001 – 9999. This is the no. range interval [...]

Posted in Infotypes by: admin 

11 Comments

20MAY

Evaluating Repetitive Structures in HR ABAP Programming

Before writing this post I would like to thank Manoj kumar, ShivrajSinha, Santhosh Somasekharan, Amolkumar Patil, Vishal Jindal, Bijay Kumar Barik, Devi, who has referred  Abaphr.com in SAP SDN Forum. In many master data Infotypes, data is entered in table form. This, for example, allows you to enter up to forty different wage types and [...]

Page 17: ABAP HR

Posted in Programs by: admin 2 Comments

14

FEB

SAP ABAP HR Program code using LDB PNP Here is a basic abap hr program with screen shots step by step for

learners who are having knowledge of abap. This is a basic program but you can use this template for every abap hr program and add if and else conditions change the Infotype numbers and field names based on your requirement. Initially [...]

Posted in Programs by: admin 

23 Comments

14SEP

SAP HR ABAP Interview Faq’s sap hr abap interview questions Posted in ABAP HR, FAQ's by: admin 

30 Comments

26JAN

Personnel Administration (PA): PA involves administrating employee data, commonly referred to Master

Data. Master Data contains all employee data used in HR processing. Master Data includes Personal (Eg. address), Organizational (Position description), Benefits (Insurance, Pension), Time & Payroll. Master Data is stored in Infotypes. Infotypes are tables (for user Data entry screen) that contain logically related employee data. [...]

Posted in FAQ's by: admin 

3 Comments

26JAN

Introduction on SAP HR module The SAP HR module enables companies to effectively manage

information about the people in their organization. It is integrated with other SAP modules and external systems. From the Organization Management perspective, companies can model a business hierarchy, the relationships of employees to various business units and the reporting structure among employees. The Personnel Administration (PA) [...]

Page 18: ABAP HR

Posted in ABAP HR by: admin 

6 Comments

18JAN

Useful Transaction codes in SAP HR module Master Data PA10   Personnel File                 PA20   Display HR

Master Data         PA30   Maintain HR Master Data        PA40   Personnel Events               PA41   Change Hiring Data             PA42   Fast Data Entry for Events PRMD   Maintain HR Master Data             PRMF   Travel Expenses: Feature TRVFD      PRML   Set Country Grouping via Popup      PRMM   Personnel Events                    PRMO   Travel Expenses: Feature TRVCO      PRMP  Travel Expenses: [...]

Posted in ABAP HR by: admin 

1 Comment

22DEC

Macros in HR-ABAP programming Most commonly used Macros in ABAP-HR ? Macro contains some part of

source code which it will be useful for number of applications.( Like function modules ) Generally we use two macros in ABAP-HR or SAP-HR RP-PROVIDE-FROM-LAST RP-PROVIDE-FROM-FRST Ex: RP-PROVIDE-FROM-LAST P0000 SPACE PN-BEGDA PN-ENDDA. IF PN-SW-FOUND = 1. WRITE YOUR CONDITION. ENDIF. The macro RP-PROVIDE-FROM-LAST [...]

Posted in ABAP HR by: admin 

2 Comments

16DEC

What is Logical Database ? Logical database in SAP The LDB is special type of ABAP program that

combines the contents of certain related database tables and retrieve some related data and make it available to application programs. In other words, a LDB is a method by which ABAP programs read and process the data. The sequence in which the [...]

Posted in ABAP HR by: admin 

4 Comments

24NOV

Page 19: ABAP HR

Infotype 402 and Payroll results Payroll results can be held in infotype 402, for this we need to do some

configuration. IMG Menu path – Personnel Admin –> Personnel Management –> HRIS –> Payroll Results. Define Evaluation Results: The evaluation wage type is the name of the field – note it is not the actual wage type. The cumulation can [...]

Posted in Infotypes by: hivamsi 

1 Comment Next Entries »

20NOV

Difference between ABAP and HR ABAP ABAP vs HR ABAP The following concepts are defined in ABAP HR which

is different with other modules. 1)  Use of Infotypes 2)  The use of Logical Database 3)  Use of Macros and Provide statement 4)  Storage and Access of data 5)  Authorization checks

Posted in ABAP HR by: admin 

3 Comments

11NOV

More information on sap hr-abap infotypes More information on SAP hr abap infotypes: Infotype data is period-

based (time-dependent), in other words, it is only valid for specific periods. For this reason, each record has a start date and an end date. The database does not normally contain only one record for each infotype and personnel number but several records with different [...]

Posted in Infotypes by: admin 

No Comments

10NOV

ABAP vs HR-ABAP   What is the difference between abap and abap hr?   The following

concepts are defined in ABAP HR which is different with other modules . n      Use of Infotypes n      The use ofLogical Database n      Use of Macros and Provide statement n      Storage and Access of data n      Authorization checks  

Posted in ABAP HR by: admin 

No Comments

Page 20: ABAP HR

06NOV

Infotype concept in sap hr, Creation of infotype, Enhancement of infotype

What is Infotype? Infotypes are information units through which we can enter the data into tables. The Infotypes are used to group related data fields together. In general words its data entry screen from where we can store the data into tables. Naming conversion of infotype is four digits numerical. Each infotype will have corresponding [...]

Posted in Infotypes by: admin 

11 Comments

03NOV

Useful function modules in ABAP-HR    RS_PROGRAM_CHECK_NAME: To check program names if you are

generating them. RS_CORR_INSERT : To insert the correction request in the repository. REPS_OBJECT_ACTIVATE: To activate repository objects, for example – to activate a newly generated program. RS_DELETE_PROGRAM: To delete the program. RS_ACCESS_PERMISSION: To lock or unlock a program.   Function Modules related toDate and Time [...]

SAP ABAP HR Program code using LDB PNP Here is a basic abap hr program with screen shots step by step for

learners who are having knowledge of abap. This is a basic program but you can use this template for every abap hr program and add if and else conditions change the Infotype numbers and field names based on your requirement.

Initially I don’t want to confuse the readers adding more coding at first program. All the scenarios are covered in next posts one by one by using the same program template.

Requirement: Select the data from Infotypes using logical database PNP (with out single select statement) and display in report. Fields like

Personnel number, Action Type, Reason for Action, Payroll area, Personnel ID Number

Infotypes Used: 0000, 0001, 0002. Macros used: RP-PROVIDE-FROM-LAST P0000 SPACE PN-BEGDA PN-ENDDA. RP-PROVIDE-FROM-LAST P0001 SPACE PN-BEGDA PN-ENDDA. RP-PROVIDE-FROM-LAST P0002 SPACE PN-BEGDA PN-ENDDA. Selection screen: There is selection screen is defined in this program but by using logical

database PNP we do get standard selection screen.

Page 21: ABAP HR

Steps: 1) Go to se38 transaction 2) Enter the program name ZABAPHROVERVIEW and press on create 3) Enter the TITLE name, select TYPE as executable program, and

LOGICAL DATA BASE AS PNP.

Page 22: ABAP HR

4) Press on save button. And use the below code and execute you will get standard selection

screen.

Page 23: ABAP HR
Page 24: ABAP HR

Standard selection screen:

Enter the personnel number and execute the program report display is ready for you…:)

Don’t you feel abap hr is easy….  Incase any question use the below comments section…..