Professional Documents
Culture Documents
Batch Data Input
Batch Data Input
INTRODUCTION
Background Processing
Phases
of Background Processing
Passing Data to Subsequent Job
Steps
Scheduling Job within ABAP/4
Program
Work Processes
Dispatcher
Online
Update
Enqueue
Spool
Background
Background Job A
Step #1
Step #2
Defining a
background job.
Background
Job
Scheduling
Job
Processing
Job
Overview
Job
Scheduling
Start date
Immediate
Date/Time
After Job
Jobs can be
scheduled to run
after another job has
been completed.
After Event
Jobs can be
scheduled to run after
an event has been
triggered/raised.
Start date
Period values
X Periodic job
Hourly
Daily
By checking the
Periodic Job option,
you can specify
that the job run at
regular intervals.
Weekly
Monthly
Other period
After Job
Job
Scheduling
After Event
Job
Scheduling
Triggering/Raising Events
To trigger/raise an event from within an ABAP/4 program, you must
call the BP_EVENT_RAISE function module.
Job
Processing
Job
Overview
Scheduler
Job
Background
Job
Processing
Dispatcher
Job
1 Spool
3 Background
Job
Processing
Transaction
SM50
Start Module
Job Step #1
Job Step #2
Job Step #3
End Module
PRINT SPOOL
Job
Processing
List
All WRITE
statement output
from job step.
Job
Processing
Job
Overview
Job Overview
Transaction
SM37
Job Status
Job
Overview
Job
Overview
<data>
Background Job
Step #1
...
EXPORT <data> TO
MEMORY.
...
Step #2
...
IMPORT <data> FROM
MEMORY.
...
<id1>
<data>
<id2>
<data2>
Background Job
Step #1
...
EXPORT <data2> TO
MEMORY ID <id2>.
...
Step #2
...
IMPORT <data2> FROM
MEMORY ID <id2>.
...
JOB_OPEN
JOB_OPEN
Exporting:
jobname = <job name>
Background Job
<job name>
<job #>
Importing:
jobcount = <job #>
JOB_SUBMIT
JOB_SUBMIT
Background Job
Exporting:
authcknam = <user>
jobcount = <job #>
jobname = <job name>
report = <report>
variant = <variant>
<job name>
<job #>
Step #1
Step #2
JOB_CLOSE
JOB_CLOSE
Background Job
Exporting:
jobcount = <job #>
jobname = <job name>
sdlstrtdt = <start date>
sdlstrttm = <start time>
strtimmed = <flag1>
<job name>
Importing:
job_was_released =
<flag2>
<job #>
Step #1
Step #2
Open Job
Submit Step
Close Job
REPORT Y180DM01.
DATA: JOBNUM LIKE TBTCJOB-JOBCOUNT.
PARAMETERS: JOBNAME LIKE TBTCJOB-JOBNAME,
PROGRAM LIKE SY-REPID,
VARIANT LIKE RALDB-VARIANT,
USER LIKE SY-UNAME.
CALL FUNCTION JOB_OPEN
EXPORTING JOBNAME = JOBNAME
IMPORTING
JOBCOUNT = JOBNUM.
CALL FUNCTION JOB_SUBMIT
EXPORTING AUTHCKNAM = USER
JOBCOUNT = JOBNUM
JOBNAME = JOBNAME
REPORT = PROGRAM
VARIANT = VARIANT.
WRITE: / JOBNAME, JOBCOUNT, REPORT, VARIANT,
BTCHUSER.
CALL FUNCTION JOB_CLOSE
EXPORTING JOBCOUNT = JOBCOUNT
JOBNAME = JOBNAME.
Job
Processing
Job
Overview
Job Log
Step #1
Spool List
Step #2
Background
CHAPTER 2
FILE HANDLING AT
APPLICATION SERVER
Overview
In this chapter, we
will learn how to
process sequential
files on an
application server
Database
Server
Application
Servers
Presentation
Servers
Processing Files
Open File
Close File
Open File
OPEN DATASET statement
FOR
INPUT
OUTPUT
APPENDING
AT POSITION
IN
BINARY MODE
TEXT MODE
MESSAGE
TRANSFER statement
Step #1
Step #2
Step #3
Step #4
Step #5
REPORT Y180DM02.
TABLES: KNA1.
PARAMETERS:
OUTFILE(20) DEFAULT /tmp/bc180_file1
LOWER CASE,
STATE LIKE KNA1-REGIO DEFAULT MA.
DATA: BEGIN OF OUTREC,
KUNNR LIKE KNA1-KUNNR,
REGIO LIKE KNA1-REGIO,
TELF1 LIKE KNA1-TELF1,
END OF OUTREC.
OPEN DATASET OUTFILE FOR OUTPUT IN TEXT MODE.
SELECT * FROM KNA1 WHERE REGIO = STATE.
MOVE-CORRESPONDING KNA1 TO OUTREC.
TRANSFER OUTREC TO OUTFILE.
ENDSELECT.
CLOSE DATASET OUTFILE.
Step #1
Step #2
Step #3
Step #4
Step #5
PARAMETERS:
INFILE(20) DEFAULT /tmp/bc180_file1
LOWER CASE.
DATA: BEGIN OF INREC,
KUNNR LIKE KNA1-KUNNR,
REGIO LIKE KNA1-REGIO,
TELF1 LIKE KNA1-TELF1,
END OF INREC.
OPEN DATASET INFILE FOR INPUT IN TEXT MODE.
DO.
READ DATASET INFILE INTO INREC.
IF SY-SUBRC <> 0. EXIT. ENDIF.
WRITE: INREC-KUNNR, INREC-REGIO, INREC-TELF1.
ENDDO.
CLOSE DATASET INFILE.
File structured
in lines
ABC
DEFGH
IJKL
ABCDEF
GHIJK
A B C
A B C D
D E F G
E F G H
I J K L
I J K
CHAPTER 3
FILE HANDLING AT
PRESENTATION
SERVER
Overview
In this chapter, we
will learn how to
process sequential
files on a
presentation server
Database
Server
Application
Servers
Presentation
Servers
Step #1
Step #2
Step #3
REPORT Y180DM05.
TABLES: KNA1.
PARAMETERS: STATE LIKE KNA1-REGIO DEFAULT MA.
TYPES: BEGIN OF OUTREC,
KUNNR LIKE KNA1-KUNNR,
REGIO LIKE KNA1-REGIO,
TELF1 LIKE KNA1-TELF1,
END OF OUTREC.
DATA:
OUT_ITAB TYPE OUTREC
OCCURS 10 WITH HEADER LINE.
SELECT * FROM KNA1 WHERE REGIO = STATE.
MOVE-CORRESPONDING KNA1 TO OUT_ITAB.
APPEND OUT_ITAB.
CLEAR OUT_ITAB.
ENDSELECT.
CALL FUNCTION DOWNLOAD
EXPORTING
FILENAME= c:\bc180_file2
TABLES
DATA_TAB
= OUT_ITAB.
Step #1
Step #2
Step #3
REPORT Y180DM06.
TYPES: BEGIN OF INREC,
KUNNR LIKE KNA1-KUNNR,
REGIO LIKE KNA1-REGIO,
TELF1 LIKE KNA1-TELF1,
END OF INREC.
DATA:
IN_ITAB TYPE INREC
OCCURS 10 WITH HEADER LINE.
CALL FUNCTION UPLOAD
EXPORTING
FILENAME= c:\bc180_file2
TABLES
DATA_TAB
= IN_ITAB.
LOOP AT IN_ITAB.
WRITE: / IN_ITAB-KUNNR,
IN_ITAB-REGIO,
IN_ITAB-TELF1.
ENDLOOP.
ABAP/4
Program
To download an ABAP/4
program to a local file,
use the Utilities >
Download menu path.
ABAP/4
Program
CHAPTER 4
BDC CONCEPTS
Overview
External System
Data
SAP System
Batch Input
X
External
Data
Checks &
Validations
SAP
Database
Table
Online Program
To check and validate the external
data, user dialog is simulated
through an SAP transaction
(i.e., an online program).
TEST1
Vendor
Company Code
X Address
Philadelphia
BDCDATA Structure
To simulate user dialog,
you must know the
following information:
(1) online program name,
(2) screen numbers,
(3) field names, and
(4) field values.
The BDCDATA ABAP/4
Dictionary structure is used
in a batch input program to
collect this information for
an entire transaction.
ABAP/4 Dictionary
BDCDATA
PROGRAM
DYNPRO
DYNBEGIN
FNAM
FVAL
TEST1
Company Code
X Address
Philadelphia
Step #2
Vendor
Company Code
X
Address
TEST1
Step #3
Determine how to proceed
in the transaction
(go to the next screen by
pressing the Enter key).
Field name = RF02K-LIFNR
Field name = RF02K-D0110
Step #2
Step #3
Philadelphia
0110
FNAM
FVAL
RF02K-LIFNR
RF02K-D0110
TEST1
X
X
LFA1-STRAS 123 Main St.
BDC_OKCODE
/11
DATA:
CLEAR BDC_TAB.
BDC_TAB-PROGRAM = SAPMF02K.
BDC_TAB-DYNPRO = 0110.
BDC_TAB-DYNBEGIN = X.
APPEND BDC_TAB.
CLEAR BDC_TAB.
BDC_TAB-FNAM = LFA1-STRAS.
BDC_TAB-FVAL = 123 Main St..
APPEND BDC_TAB.
CLEAR BDC_TAB.
BDC_TAB-FNAM = BDC_OKCODE.
BDC_TAB-FVAL = /11.
APPEND BDC_TAB.
ENDFORM.
FORM FILL_BDC_TAB.
REFRESH BDC_TAB.
CLEAR BDC_TAB.
PERFORM POPULATE_BDC_TAB
USING:
1
SAPMF02K
RF02K-LIFNR
RF02K-D0110
0106,
TEST1,
X,
SAPMF02K
0110,
LFA1-STRAS
123 Main St.,
BDC_OKCODE /11.
IF FLAG = 1.
BDC_TAB-PROGRAM = VAR1.
BDC_TAB-DYNPRO
= VAR2.
BDC_TAB-DYNBEGIN = X.
ELSE.
BDC_TAB-FNAM = VAR1.
BDC_TAB-FVAL = VAR2.
ENDIF.
APPEND BDC_TAB.
ENDFORM.
ENDFORM.
This two-subroutine method to fill the BDC table is preferable because the
POPULATE_BDC_TAB subroutine is reusable throughout all batch input programs.
Method #1
Method #2
CALL TRANSACTION
USING Statement
Method #3
CHAPTER 5
BATCH INPUT
METHODS
Overview
BDC
Program
External
Data
Batch
Input
Session
SAP
Database
Table
BDC_OPEN_GROUP
CALL FUNCTION BDC_OPEN_GROUP
EXPORTING
CLIENT
= <client>
GROUP
= <session name>
USER
= <user name>
EXCEPTIONS
CLIENT_INVALID
=1
...
OTHERS
= 11.
BDC_INSERT
= <transaction code>
TABLES
DYNPROTAB = <bdc internal table>
EXCEPTIONS
INTERNAL_ERROR = 1
...
OTHERS
= 5.
BDC_CLOSE_GROUP
=1
QUEUE_ERROR
=2
OTHERS
= 3.
Header Section
Batch
Input
Session
Creator
Client
Session Name
Authorization User
Hold Date
Keep or Delete
Data Section
Transaction Data
TEST1
Vendor
Company Code
X Address
Street
City
Philadelphia
REPORT Y180DM08.
Step #1
Step #3
Step #4
Step #5
START-OF-SELECTION.
CALL FUNCTION BDC_OPEN_GROUP
EXPORTING
CLIENT
= SY-MANDT
GROUP
= SESSION
USER
= SY-UNAME
EXCEPTIONS. . . .
PERFORM FILL_BDC_TAB.
CALL FUNCTION BDC_INSERT
EXPORTING
TCODE
= FK02
TABLES
DYNPROTAB
= BDC_TAB
EXCEPTIONS. . . .
CALL FUNCTION BDC_CLOSE_GROUP
EXCEPTIONS. . . .
** This program is continued on the next slide **
Example #1 - Subroutines
FORM POPULATE_BDC_TAB USING
FLAG VAR1 VAR2.
FORM FILL_BDC_TAB.
REFRESH BDC_TAB.
CLEAR BDC_TAB.
PERFORM POPULATE_BDC_TAB
USING:
1
SAPMF02K
RF02K-LIFNR
RF02K-D0110
0106,
TEST1,
X,
SAPMF02K
0110,
LFA1-STRAS
123 Main St.,
BDC_OKCODE /11.
IF FLAG = 1.
BDC_TAB-PROGRAM = VAR1.
BDC_TAB-DYNPRO
= VAR2.
BDC_TAB-DYNBEGIN = X.
ELSE.
BDC_TAB-FNAM = VAR1.
BDC_TAB-FVAL = VAR2.
ENDIF.
APPEND BDC_TAB.
ENDFORM.
ENDFORM.
Vendor
TEST2
Vendor
Company Code
Company Code
X Address
X Address
City
City
Philadelphia
Boston
Sequential File
TEST1
TEST2
10 Walnut St.
TEST3
32 Chestnut St.
TEST4
30 Market St.
TEST5
17 S. 30th St.
File name:
/tmp/bc180_file3
Step #2
Step #9
Step #10
START-OF-SELECTION.
OPEN DATASET INFILE
FOR INPUT IN TEXT MODE.
CALL FUNCTION BDC_OPEN_GROUP. . . .
DO.
READ DATASET INFILE INTO INREC.
IF SY-SUBRC <> 0. EXIT. ENDIF.
PERFORM FILL_BDC_TAB.
CALL FUNCTION BDC_INSERT
EXPORTING
TCODE
= FK02
TABLES
DYNPROTAB
= BDC_TAB. . . .
ENDDO.
CALL FUNCTION BDC_CLOSE_GROUP. . . .
CLOSE DATASET INFILE.
** This program is continued on the next slide **
Example #2 - Subroutines
FORM POPULATE_BDC_TAB USING
FLAG VAR1 VAR2.
FORM FILL_BDC_TAB.
REFRESH BDC_TAB.
CLEAR BDC_TAB.
PERFORM POPULATE_BDC_TAB
USING:
1
SAPMF02K
RF02K-LIFNR
RF02K-D0110
0106,
INREC-VENDNUM,
X,
SAPMF02K
LFA1-STRAS
BDC_OKCODE
0110,
INREC-STREET,
/11.
IF FLAG = 1.
BDC_TAB-PROGRAM = VAR1.
BDC_TAB-DYNPRO = VAR2.
BDC_TAB-DYNBEGIN = X.
ELSE.
BDC_TAB-FNAM
= VAR1.
BDC_TAB-FVAL
= VAR2.
ENDIF.
APPEND BDC_TAB.
ENDFORM.
ENDFORM.
Notice that the vendor number and street values are coming
from the files records read into the INREC field string.
Summary
Research Transaction
Code BDC Program
Execute BDC Program
Batch Input Session Created
CHAPTER 6
SESSION HANDLING
Overview
BDC
Program
External
Data
Batch
Input
Session
Process
Batch
Input
Session
SAP
Database
Table
Process
Batch
Input
Session
Session Overview
Transaction Code SM35
OR
Processing Modes
Process batch input session
in the FOREGROUND.
Processing Options
/bdel
/n
/bda
/bde
/bend
Process
Select block
Batch
Input
Session
Delete
Session
Statistics
Log
Session Status
Sessions still to be processed
Sessions processed with errors
Sessions processed successfully
Background sessions
Sessions being processed
Sessions being created
Log
Session Log
Session Analysis
Session
** This is not an analysis of the batch input session from the previous page **
Timing Issue
BDC program
executed Batch input
session created
Time1
Batch input
session processed SAP database updated
Program RSBDCSUB
Execute
program
RSBDCSUB
CHAPTER 7
CALL TRANSACTION
CALL DIALOG
Overview
PROGRAM
DYNPRO
DYNBEGIN
SAPMF02K
0106
SAPMF02K
0110
FNAM
FVAL
RF02K-LIFNR
RF02K-D0110
TEST1
X
LFA1-STRAS
BDC_OKCODE
BDC Table
Use in CALL
TRANSACTION
statement
Use in CALL
DIALOG
statement
Create batch
input session
(BDC Program):
Automatically by the
system during the
processing of the
batch input session
CALL TRANSACTION:
CALL DIALOG:
Must be handled in
the batch input
program
Vendor
TEST2
Vendor
Company Code
Company Code
X Address
X Address
Street
Street
10 Walnut St.
City
Philadelphia
City
Boston
CALL TRANSACTION
USING Statement
CALL TRANSACTION <transaction code>
USING
<bdc internal table>
MODE
<display mode>
UPDATE <update mode>
MESSAGES INTO <mssg int. table>.
<display mode>
<update mode>
A: display all
E: display errors only
N: no display
S: synchronous
A: asynchronous
Step #2
DISPMODE DEFAULT A,
UPDAMODE DEFAULT S.
Step #8
Step #9
START-OF-SELECTION.
OPEN DATASET INFILE
FOR INPUT IN TEXT MODE.
DO.
READ DATASET INFILE INTO INREC.
IF SY-SUBRC <> 0. EXIT. ENDIF.
PERFORM FILL_BDC_TAB.
CALL TRANSACTION FK02
USING
BDC_TAB
MODE
DISPMODE
UPDATE
UPDAMODE.
IF SY-SUBRC <> 0.
WRITE: / Error.
ENDIF.
ENDDO.
CLOSE DATASET INFILE.
** This program is continued on the next slide **
Example #1 - Subroutines
FORM POPULATE_BDC_TAB USING
FLAG VAR1 VAR2.
FORM FILL_BDC_TAB.
REFRESH BDC_TAB.
CLEAR BDC_TAB.
PERFORM POPULATE_BDC_TAB
USING:
1
SAPMF02K
RF02K-LIFNR
RF02K-D0110
0106,
INREC-VENDNUM,
X,
SAPMF02K
LFA1-STRAS
BDC_OKCODE
0110,
INREC-STREET,
/11.
IF FLAG = 1.
BDC_TAB-PROGRAM = VAR1.
BDC_TAB-DYNPRO = VAR2.
BDC_TAB-DYNBEGIN = X.
ELSE.
BDC_TAB-FNAM
= VAR1.
BDC_TAB-FVAL
= VAR2.
ENDIF.
APPEND BDC_TAB.
ENDFORM.
ENDFORM.
Notice that the vendor number and street values are coming
from the files records read into the INREC field string.
Error Handling
Write an error report.
DO.
...
PERFORM FILL_BDC_TAB.
CALL TRANSACTION FK02
USING
BDC_TAB
MODE
N
UPDATE
A.
IF SY-SUBRC <> 0.
WRITE: / Transaction error.
ENDIF.
ENDDO.
<update mode>
A: display all
E: display errors only
N: no display
Step #2
DISPMODE DEFAULT A.
Step #9
Step #10
START-OF-SELECTION.
OPEN DATASET INFILE
FOR INPUT IN TEXT MODE.
DO.
READ DATASET INFILE INTO INREC.
IF SY-SUBRC <> 0. EXIT. ENDIF.
PERFORM FILL_BDC_TAB.
CALL DIALOG Z_DIALOG_FK02
USING
BDC_TAB
MODE
DISPMODE.
IF SY-SUBRC <> 0.
WRITE: / Transaction error.
STOP.
ENDIF.
ENDDO.
COMMIT WORK.
CLOSE DATASET INFILE.
** This program is continued on the next slide **
Example #2 - Subroutines
FORM POPULATE_BDC_TAB USING
FLAG VAR1 VAR2.
FORM FILL_BDC_TAB.
REFRESH BDC_TAB.
CLEAR BDC_TAB.
PERFORM POPULATE_BDC_TAB
USING:
1
SAPMF02K
RF02K-LIFNR
RF02K-D0110
0106,
INREC-VENDNUM,
X,
SAPMF02K
LFA1-STRAS
BDC_OKCODE
0110,
INREC-STREET,
/11.
IF FLAG = 1.
BDC_TAB-PROGRAM = VAR1.
BDC_TAB-DYNPRO = VAR2.
BDC_TAB-DYNBEGIN = X.
ELSE.
BDC_TAB-FNAM
= VAR1.
BDC_TAB-FVAL
= VAR2.
ENDIF.
APPEND BDC_TAB.
ENDFORM.
ENDFORM.
Notice that the vendor number and street values are coming
from the files records read into the INREC field string.
CALL TRANSACTION
versus CALL DIALOG
CALL
TRANSACTION
Timing of
Update
CALL
DIALOG
Update occurs on
COMMIT WORK
statement.