Advanced ABAP Programming2

49
7/24/2019 Advanced ABAP Programming2 http://slidepdf.com/reader/full/advanced-abap-programming2 1/49  Advanced Techniques in ABAP Programming 2

Transcript of Advanced ABAP Programming2

Page 1: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 1/49

 Advanced Techniques in ABAP Programming 2

Page 2: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 2/49

Page 3: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 3/49

Overview

88MHz

 Applicationserver 

 Application server files

88MHz

Presentationserver 

Presentation server files

Page 4: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 4/49

Overview

 ABAP program ABAP program Application server 

files

READ DATASET

TRANSFER

Presentation server 

files

UPLOAD

DOWNLOAD

Page 5: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 5/49

File Handling – OPEN DATASET

• Opens a file for reading, writing or for appending

• Syntax:

OPEN DATASET <dsn> [FOR INPUT|OUTPUT|APPENDING]

[IN BINARY|TEXT MODE]

[AT POSITION <pos>]

[MESSAGE <mess>]

[FILTER <filt>].

• <dsn> can be a logical or physical file names

Page 6: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 6/49

File Handling – READ DATASET

• Reads a file• Syntax:

READ DATASET <dsn> INTO <f > [LENGTH <len>].

• <dsn> can be a logical or physical file names

• Logical file names can be created in customizing

Page 7: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 7/49

File Handling – TRANSFER DATASET

• Syntax:

 – Writing to a datasetTRANSFER <f > TO <dsn> [LENGTH <len>].

 – Closing a dataset

CLOSE DATASET <dsn>.

Page 8: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 8/49

DOWNLOAD and UPLOAD

CALL FUNCTION

’GUI_DOWNLOAD’

File name:

File type:

CALL FUNCTION

’GUI_UPLOAD’

File name:

File type:

Convertaccording to

file type

Convertaccording to

file type

Convertaccording to

file type

Convertaccording to

file type

Page 9: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 9/49

Function Module ’GUI_DOWNLOAD’

CALL FUNCTION ’DOWNLOAD’CALL FUNCTION ’DOWNLOAD’

EXPORTING

BIN_FILESIZE = <file length with binary files>

CODEPAGE = <do not use>

FILENAME = <default value for fi le name>FILETYPE = <default value for f ile type>

ITEM = <heading for file dialog>

MODE = <write mode>

WK1_N_FORMAT = <value column format for file type WK1>

WK1_N_SIZE = <value column width for fi le type WK1>WK1_T_FORMAT = <text column format for file type WK1>

WK1_T_SIZE = <text column width for file type WK1>

IMPORTING

 ACT_FILESIZE = <file name - value entered> ACT_FILETYPE = <file type - value entered>

FILESIZE = <number of bytes transferred>

TABLES

DATA_TAB = <transfer fi le>

Page 10: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 10/49

Function Module ’GUI_UPLOAD’

CALL FUNCTION ’GUI_UPLOAD’CALL FUNCTION ’GUI_UPLOAD’

EXPORTING

CODEPAGE = <do not use>

FILENAME =<default value for file name>

FILETYPE =<default value for f ile type>

ITEM =<heading for f ile dialog>

IMPORTING

FILESIZE= =<file length>

TABLES

DATA_TAB =<transfer table for file content>

Page 11: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 11/49

Sequential File and Local File

TRANSFERTRANSFER

READ DATASETREAD DATASET

CALLFUNCTION

’GUI_DOWNLOAD’

CALLFUNCTION

’GUI_DOWNLOAD’

CALLFUNCTION

’GUI_UPLOAD’

CALLFUNCTION

’GUI_UPLOAD’

Sequential

file

Local sequential

file

Page 12: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 12/49

Topic Objectives

In this Topic, the participant will learn:

• To Define and Call Subroutines

• To Maintain and Call Function Modules

• Advanced Reporting using ABAP

• File Handling

• ALV Reporting

• Logical Databases and usage

• Background Processing of Programs

 ALV Reporting

Page 13: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 13/49

In this section, we will…

• Explain the concept of ALV Reports

• The Data Declaration for ALV Reports

• Database Selection, Event Handling and FormHandling in ALV reports

• Different Function Modules for displaying ALVreports

Page 14: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 14/49

The Concept of ALV Reports

Page 15: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 15/49

The Data Declaration

Type Pool SLIS for ALV Reporting

Type Pool SLIS for ALV Reporting

 ALV Tables to passevents and triggers to ALV Function Modules

 ALV Tables to passevents and triggers to ALV Function Modules

Page 16: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 16/49

Saving the VARIANT

Page 17: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 17/49

Database selection, Events and Forms

Calling Function

Page 18: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 18/49

Calling Function

REUSE_ALV_GRID_DISPLAY

Page 19: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 19/49

Dynamic calling of form top_of_page

Call Function

Page 20: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 20/49

Call Function

REUSE_ALV_COMMENTARY_WRITE

Page 21: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 21/49

Topic Objectives

In this Topic, the participant will learn:

• To Define and Call Subroutines

• To Maintain and Call Function Modules

• Interactive Reporting using ABAP

• File Handling

• ALV Reporting

• Logical Databases and usage

• Background Processing of Programs

Logical Databases and usage

Page 22: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 22/49

In this section, we will…

• Explain Logical Databases• Describe Report Driven Reading of Vendor

Master Data

• Describe Reading Data

• Compare Logical Databases v. Select

• Define the structure of a Logical Database• Explain Event Keywords

• Describe the interaction of Logical Databasesand Reports

Page 23: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 23/49

What are Logical Databases?

• Database within a database, but logically stored within existing(physical) tables.

Physical Database

LogicalDatabase

LogicalDatabase

LogicalDatabase

Page 24: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 24/49

Structure of a Logical Database

Vendor master data

Documents

LFB5 LFC1 LFC3

LFAS LFB1LFBK

LFA1

BKPF

BSIK

BSEG

GSEG

LFAS

LFBK

LFB5

LFC1

LFC3

BSIK

LFB1

LFA1

BKPF

BSEG

GSEG

Logical Databases: Display Structure of KDF

Page 25: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 25/49

Reading Data

 ABAP Dictionary

1 2

REPORT ... .

TABLES: SPFLI,SFLIGHT.

SELECT SPFLI.

SELECT SFLIGHT.

........

ENDSELECT.

ENDSELECT.

Processing

Without Logical

Database

Processing

Processing

Logical DatabaseREPORT ... .

TABLES:SPFLI,SFLIGHT.

GET SPFLI.

GET SFLIGHT.

Page 26: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 26/49

Event Key Words: Overview

START-OF-SELECTION Introduces any init ial processing to be done

prior to next event keyword (usually GET).

END-OF-SELECTION Introduces any statements that are to be

processed after all logical database records

have been read and processed.

GET <dbtab > Retrieves the table <dbtab> for 

processing via the logical database

program SAPD<db><a>.

GET <dbtab > LATE Introduces statements that are only processed

once subordinate tables have been read and

processed. These statements are processed

before the next loop is performed.

Interaction of Logical Databases

Page 27: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 27/49

and Report

Read programRead program

REPORT RSDEMO00.

TABLES: LFA1,

LFBK,LFB5 .

GET LFA1.

REPORT SAPDBKDF...

FORM PUT LFA1 .

SELECT * FROM LFA1... .

PUT LFA1 .

ENDSELECT .

ENDFORM .

FORM PUT_LFBK .

SELECT * FROM LFBK... .

PUT LFBK. GET LFBK.ENDSELECT.

ENDFORM.

FORM PUT_LFB1.

SELECT * FROM LFB1... .

PUT LFB1.ENDSELECT.

ENDFORM.

FORM PUT_LFB5.

SELECT * FROM LFB5... .

PUT LFB5. GET LFB5.

ENDSELECT.ENDFORM.

KDF

LFB5 LFC1 LFC3 BSIK

LFB1LFBK

LFA1LogicalLogical

database KDFdatabase KDF

Page 28: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 28/49

Report-Driven Reading of Vendor

Page 29: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 29/49

Master Data

REPORT ZZ70D121.

TABLES: LFA1, LFB1, LFC3.

SELECT * FROM LFA1

 WHERE LIFNR ...

SELECT * FROM LFB1

 WHERE LIFNR = LFA1-LIFNR.

SELECT * FROM LFC3

 WHERE LIFNR = LFA1-LIFNR

 AND BUKRS = LFB1-BUKRS.

ENDSELECT.

ENDSELECT.

ENDSELECT.

Processing LFA1

Processing LFB1

Processing LFC3

Page 30: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 30/49

The STOP Statement

REPORT ZZ70D124.

TABLES: LFA1.

DATA: COUNTER TYPE I.

GET LFA1.

 WRITE: ‘GET LFA1’, 15 LFA1-LIFNR,

LFA1-NAME.

COUNTER = COUNTER + 1.

SKIP.

IF COUNTER > 1.

STOP.

ENDIF.

END-OF-SELECTION.

 WRITE: / ‘END-OF-SELECTION’,

TEXT-001.

* TEXT-001: ‘That’s it buddy !’.

L i l D t b S l t

Page 31: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 31/49

Logical Database vs. Select

GET• The functional connection

already exists

• Beginners can find thedatabase they are aftereasier 

• The logic is reusable

• Select-Options are flexible

• Authority check is madeautomatically

SELECT• Faster than logical

databases

• More powerful than logicaldatabases -

 – select into

 – order by• More flexible

• More specific coding iseasier work for the database.

BUT:

Logical databases are slower 

Changes to a logical database

affect all programs that use it

BUT:  Authority check missing

Parameters for select-

options have to becoded

Classic Scenario verses FunctionM d l LDB PROCESS

Page 32: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 32/49

Module LDB_PROCESS

Classic Scenario

LDB_PROCESS

T i Obj ti

Page 33: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 33/49

Topic Objectives

In this Topic, the participant will learn:

• To Define and Call Subroutines

• To Maintain and Call Function Modules

• Advanced Reporting using ABAP

• File Handling

• ALV Reporting

• Logical Databases and usage

• Background Processing of ProgramsBackground Processing of Programs

I thi ti ill

Page 34: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 34/49

In this section, we will…

• Describe the Process Flow of BackgroundJobs

• Define the Scheduling and Processing ofBackground Jobs

• Describe the Job Results for a Job Log and

Spool Requests• Define the Authorization Objects

• Describe the Automatic Generation of Jobs

• Define the Function Modules forGenerating Jobs

Background Processing

Page 35: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 35/49

Background Processing

Characteristics

Execution of ABAP programs without

dialog (no specific job-control languagefor operating system required)

Execution of ABAP programs without

dialog (no specific job-control languagefor operating system required)

Complete integration in the SAP SystemComplete integration in the SAP System

Parallel background and online operationParallel background and onl ine operation

Ease of useEase of use

Distributed processingDistributed processing

Process Flow Overview

Page 36: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 36/49

Process Flow Overview

BackgroundWork

process

BackgroundWork

process

 ABAP

PROGRAM.

PROCESSPROCESS OVERVIEWOVERVIEWSCHEDULESCHEDULE

VARIANT

Date & Time

JOBJob Log

Scheduling Background Jobs

Page 37: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 37/49

Scheduling Background Jobs

Function " Job definition"Function " Job definition"

StepsSteps

Job name ............

.

.

.

Print dataPrint data

Start dateStart date

PeriodPeriod

SaveSave

Processing Jobs Job Status

Page 38: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 38/49

Processing Jobs – Job Status

ScheduledScheduled

CancelledCancelled

 Active Active

FinishedFinished

ReleasedReleased

ReadyReady

Job Results Job Log

Page 39: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 39/49

Job Results – Job Log

Job LogJob Log

Date Time Msg. ID Message

07.21.1998

07.21.1998

.

.

.

.

.

07.21.1998

14:00:20

14:00:21

.

.

.

.

.

14:00:56

00516

00550

.

.

.

.

.

00517

Job Started

step001 started

(program ZTEST, variant

ZVAR, . .

.

.

.

.

Job Finished

Job Results – Spool Request

Page 40: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 40/49

Job Results – Spool Request

Job name

User name

Start date

Job name

User name

Start date

Job listJob list

 WRITE...

JOBA

Smith

10/29/92

Spool

Passing Data To Memory

Page 41: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 41/49

Passing Data To Memory

Global

 ABAPMemory

Global

 ABAPMemory

REPORT. . .

DATA FLAG, F1, BEGI N OF TAB OCCURS.

I F SY- BATCH NE SPACE

IMPORT FLAG TAB LFA1 F1

FROM MEMORY.

I F SY- SUBRC NE SPACE

AND FLAG NE SPACE.

. . .

Step 1:

Step 2:

 TABLES: LFA1.

REPORT…

DATA FLAG, F1, BEGI N OF TAB OCCURSI F. . .

EXPORT FLAG TAB LFA1 F1 TO MEMORY.

ENDI F.

Job:

FLAG

F1

 TAB

 Authorizations and BackgroundProcessing

Page 42: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 42/49

Objects Fields Values DescriptionObjects Fields Values DescriptionS_BTCH_JOB Job activities DELE Delete job

PLAN Schedule job

LIST Display job list

PROT Display job logRELE Release job

SHOW Display job

S_BTCH_NAM User name <User names> User names that can

be specified whenscheduling a job

S_PROGRAM Authorization <Auth. group> Programs that belong

group to the authorizationgroups entered here can

be specified when

User action BTCSUBMIT scheduling a job.

S_BTCH_JOB Job activities DELE Delete job

PLAN Schedule job

LIST Display job list

PROT Display job log

RELE Release job

SHOW Display job

S_BTCH_NAM User name <User names> User names that can

be specified when

scheduling a job

S_PROGRAM Authorization <Auth. group> Programs that belong

group to the authorizationgroups entered here can

be specified when

User action BTCSUBMIT scheduling a job.

S_BTCH_ADM <Usernames>

Batch Administrator ID

User names that can

be specified tomaintain batch jobs

Processing

Generating Jobs Automatically

Page 43: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 43/49

Generating Jobs Automatically

Create jobCreate job

Insert job stepsInsert job steps

Complete jobComplete job

Function Modules for GeneratingJobs

Page 44: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 44/49

Jobs

JOB_OPENJOB_OPEN

Job name JOBNAME

Job number JOBCOUNT

JOB_SUBMITJOB_SUBMIT

Job name JOBNAME

Job number JOBCOUNT

Report name REPORT

Variant VARIANT

JOB_CLOSEJOB_CLOSE

Job name JOBNAMEJob number JOBCOUNT

Function Module ‘JOB OPEN’

Page 45: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 45/49

Function Module JOB_OPEN

CALL FUNCTION ’JOB_OPEN’CALL FUNCTION ’JOB_OPEN’

EXPORTINGDELANFREP = <delete internal report>

JOBNAME = <job name>

IMPORTING

JOBCOUNT =<job number>

EXCEPTIONSCANT_CREATE_JOB = 1

INVALID_JOB_DATA = 2

JOBNAME_MISSING = 3..

.

EXPORTING DELANFREP = <delete internal report>

JOBNAME = <job name>

IMPORTING

JOBCOUNT =<job number>

EXCEPTIONSCANT_CREATE_JOB = 1

INVALID_JOB_DATA = 2

JOBNAME_MISSING = 3...

Function Module ‘JOB SUBMIT’

Page 46: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 46/49

_

CALL FUNCTION ’JOB_SUBMIT’CALL FUNCTION ’JOB_SUBMIT’

EXPORTING  AUTHCKNAM = <user>

JOBCOUNT = <job number>

JOBNAME = <job name>

REPORT = <report name>

VARIANT = <report variant>

EXCEPTIONS...

EXPORTING  AUTHCKNAM = <user>

JOBCOUNT = <job number>

JOBNAME = <job name>

REPORT = <report name>

VARIANT = <report variant>

EXCEPTIONS.

..

Function Module ‘JOB CLOSE’

Page 47: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 47/49

_

CALL FUNCTION ’JOB_CLOSE’CALL FUNCTION ’JOB_CLOSE’

EXPORTING JOBCOUNT = <job number>

JOBNAME = <job name>

SDLSTRTDT = <start date>

SDLSTRTTM = <start time>

STRTIMMED = <immediate start>...

IMPORTING

JOB_WAS_RELEASED = <job released indicator>

EXCEPTIONS...

EXPORTING

JOBCOUNT = <job number>

JOBNAME = <job name>

SDLSTRTDT = <start date>

SDLSTRTTM = <start time>

STRTIMMED = <immediate start>...

IMPORTING

JOB_WAS_RELEASED = <job released indicator>

EXCEPTIONS...

Example: Program to Generate aJob

Page 48: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 48/49

REPORT B180D025.

DATA: JOBCOUNT LIKE TBTCO-JOBCOUNT.

PARAMETERS: JOBNAME LIKE TBTCO-JOBNAME,REPORT LIKE SY-REPID, VARIANT LIKE RALDB-VARIANT,

BTCHUSER LIKE SY-UNAME.

START-OF-SELECTION.

CALL FUNCTION ’JOB_OPEN’EXPORTING JOBNAME = JOBNAMEIMPORTING JOBCOUNT = JOBCOUNT.

CALL FUNCTION ’JOB_SUBMIT’EXPORTING AUTHCKNAM = BTCHUSER 

JOBCOUNT = JOBCOUNTJOBNAME = JOBNAMEREPORT = REPORT VARIANT = VARIANT.

 WRITE: / JOBNAME, JOBCOUNT,REPORT, VARIANT, BTCHUSER.

CALL FUNCTION ’JOB_CLOSE’

EXPORTING JOBCOUNT = JOBCOUNTJOBNAME = JOBNAME.

Other Function Modules forGenerating a Job

Page 49: Advanced ABAP Programming2

7/24/2019 Advanced ABAP Programming2

http://slidepdf.com/reader/full/advanced-abap-programming2 49/49

g

BP_JOBLOG_READBP_JOBLOG_READBP_JOBLOG_SHOWBP_JOBLOG_SHOW

Display job logDisplay job log Read job logRead job log

BP_JOB_COPYBP_JOB_COPY

Copy jobCopy jobBP_JOB_DELETEBP_JOB_DELETE

Delete jobDelete job

BP_CHECK_EVENTIDBP_CHECK_EVENTIDBP_EVENT_RAISEBP_EVENT_RAISE

Check event nameCheck event nameTrigger eventTrigger event