batch data communication
DESCRIPTION
TRANSCRIPT
![Page 1: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/1.jpg)
CHAPTER 1INTRODUCTION
![Page 2: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/2.jpg)
Background Processing
• Phases of Background Processing• Passing Data to Subsequent Job Steps• Scheduling Job within ABAP/4 Program
• Phases of Background Processing• Passing Data to Subsequent Job Steps• Scheduling Job within ABAP/4 Program
![Page 3: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/3.jpg)
Work Processes
Dispatcher
EnqueueUpdate SpoolOnlineBackground
![Page 4: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/4.jpg)
The Background Work Process
Background
Defining a background job.
Defining a background job.
Background Job ABackground Job ABackground Job ABackground Job A
Step #1Step #1
Step #2Step #2
![Page 5: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/5.jpg)
Phases of Background Processing
JobJobSchedulingScheduling
JobJobSchedulingScheduling
JobJobProcessingProcessing
JobJobProcessingProcessing
JobJobOverviewOverview
JobJobOverviewOverview
![Page 6: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/6.jpg)
Scheduling a Background JobJobJob
SchedulingSchedulingJobJob
SchedulingSchedulingTransaction
SM36
![Page 7: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/7.jpg)
Creating Step for Background Job
JobJobSchedulingScheduling
JobJobSchedulingScheduling
Steps
![Page 8: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/8.jpg)
Start Criteria for Background Job
Jobs can be scheduled to run immediately or at a
particular date/time.
Jobs can be scheduled to run immediately or at a
particular date/time.
Jobs can be scheduled to run
after another job has been completed.
Jobs can be scheduled to run
after another job has been completed.
Jobs can be scheduled to run after
an event has been “triggered/raised”.
Jobs can be scheduled to run after
an event has been “triggered/raised”.
If you start a job based on a date/time or an event, you can schedule the job to run at regular intervals, not just
at a particular time.
If you start a job based on a date/time or an event, you can schedule the job to run at regular intervals, not just
at a particular time.
JobJobSchedulingScheduling
JobJobSchedulingSchedulingStart date
Immediate After EventAfter JobDate/Time
![Page 9: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/9.jpg)
![Page 10: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/10.jpg)
Scheduling a Periodic JobJobJob
SchedulingSchedulingJobJob
SchedulingScheduling
With the ‘Period Values’ pushbutton, you can schedule
the job to run hourly, daily, weekly, monthly, etc.
With the ‘Period Values’ pushbutton, you can schedule
the job to run hourly, daily, weekly, monthly, etc.
By checking the ‘Periodic Job’ option,
you can specify that the job run at regular intervals.
By checking the ‘Periodic Job’ option,
you can specify that the job run at regular intervals.
Periodic jobX
Start date
Monthly
Weekly
Daily
Other period
Hourly
Period values
![Page 11: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/11.jpg)
Scheduling Job after Another Job
If you check the ‘Start status-depend.’ option, this job will run only if the specified job ends successfully.
If you check the ‘Start status-depend.’ option, this job will run only if the specified job ends successfully.
After Job
After clicking on the ‘After Job’ pushbutton, you must specify the
name of the job that must be completed before this
job will run.
After clicking on the ‘After Job’ pushbutton, you must specify the
name of the job that must be completed before this
job will run.
Start dateJobJob
SchedulingSchedulingJobJob
SchedulingScheduling
![Page 12: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/12.jpg)
Scheduling Job After an EventJobJob
SchedulingSchedulingJobJob
SchedulingSchedulingAfter Event
If you check the ‘Periodic Job’ option, the system starts a new job each time the
specified event is raised.
If you check the ‘Periodic Job’ option, the system starts a new job each time the
specified event is raised.
Start date
After clicking on the ‘After Event’ pushbutton, you must specify the
name of the event that must be raised before this job will run. You can distinguish between different occurrences of a particular event
by specifying a parameter.
After clicking on the ‘After Event’ pushbutton, you must specify the
name of the event that must be raised before this job will run. You can distinguish between different occurrences of a particular event
by specifying a parameter.
![Page 13: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/13.jpg)
SCREENSHOT: SM62 TRANSACTION, CREATE EVENT
![Page 14: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/14.jpg)
![Page 15: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/15.jpg)
Triggering/Raising Events
CALL FUNCTION ‘BP_EVENT_RAISE’EXPORTING
EVENTID = <event name>EVENTPARM = ‘ ’TARGET_INSTANCE = ‘ ’
EXCEPTIONSBAD_EVENTID = 1EVENTID_DOES_NOT_EXIST = 2EVENTID_MISSING = 3RAISE_FAILED = 4OTHERS = 5.
CALL FUNCTION ‘BP_EVENT_RAISE’EXPORTING
EVENTID = <event name>EVENTPARM = ‘ ’TARGET_INSTANCE = ‘ ’
EXCEPTIONSBAD_EVENTID = 1EVENTID_DOES_NOT_EXIST = 2EVENTID_MISSING = 3RAISE_FAILED = 4OTHERS = 5.
The only required exporting parameter is the name of the event to raise.
The only required exporting parameter is the name of the event to raise.
To trigger/raise an event from within an ABAP/4 program, you must call the ‘BP_EVENT_RAISE’ function module.
To trigger/raise an event from within an ABAP/4 program, you must call the ‘BP_EVENT_RAISE’ function module.
![Page 16: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/16.jpg)
Phases of Background Processing
JobJobSchedulingScheduling
JobJobSchedulingScheduling
JobJobProcessingProcessing
JobJobProcessingProcessing
JobJobOverviewOverview
JobJobOverviewOverview
![Page 17: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/17.jpg)
Processing a Background Job
Background
Dispatcher
JobJobProcessingProcessing
JobJobProcessingProcessing
JobJobJobJobScheduler
JobJobJobJob
![Page 18: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/18.jpg)
Processing a Background Job
TransactionSM50
JobJobProcessingProcessing
JobJobProcessingProcessing
Application Server Application Server Work ProcessesWork Processes
Application Server Application Server Work ProcessesWork Processes
1 Spool8 Online 3 Background
![Page 19: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/19.jpg)
Processing a Background Job
Scheduler
Start Module
End Module
Job Step #1Job Step #2Job Step #3
Job Log
Entries from start and end modules.
All messages issued by job steps and system.
JobJobProcessingProcessing
JobJobProcessingProcessing
ListAll “WRITE”
statement output from job step.
PRINT SPOOLPRINT SPOOL
![Page 20: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/20.jpg)
Phases of Background Processing
JobJobSchedulingScheduling
JobJobSchedulingScheduling
JobJobProcessingProcessing
JobJobProcessingProcessing
JobJobOverviewOverview
JobJobOverviewOverview
![Page 21: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/21.jpg)
Job Overview
JobOverview
JobOverview
Job StatusJob Status
TransactionSM37
![Page 22: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/22.jpg)
Job Analysis using Job Log
JobJobOverviewOverview
JobJobOverviewOverview
System and Program
Messages
System and Program
Messages
You can use this Job Log to analyze each step of a “finished” or “cancelled” background job.
You can use this Job Log to analyze each step of a “finished” or “cancelled” background job.
![Page 23: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/23.jpg)
Other Background Processing Topics
• Passing Data to Subsequent Job Steps
• Scheduling Job within ABAP/4 Program
• Passing Data to Subsequent Job Steps
• Scheduling Job within ABAP/4 Program
![Page 24: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/24.jpg)
Passing Data to Subsequent Job Steps
Global ABAP/4 Global ABAP/4 MemoryMemory
Global ABAP/4 Global ABAP/4 MemoryMemory
Background JobBackground JobBackground JobBackground Job
Step #1. . .EXPORT <data> TO MEMORY.. . .
Step #1. . .EXPORT <data> TO MEMORY.. . .
Step #2. . .IMPORT <data> FROM MEMORY.. . .
Step #2. . .IMPORT <data> FROM MEMORY.. . .
<data><data><data><data>
![Page 25: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/25.jpg)
Passing Data to Subsequent Job Steps
Global ABAP/4 Global ABAP/4 MemoryMemory
Global ABAP/4 Global ABAP/4 MemoryMemory
Background JobBackground JobBackground JobBackground Job
Step #1. . .EXPORT <data2> TO MEMORY ID <id2>.. . .
Step #1. . .EXPORT <data2> TO MEMORY ID <id2>.. . .
Step #2. . .IMPORT <data2> FROM MEMORY ID <id2>.. . .
Step #2. . .IMPORT <data2> FROM MEMORY ID <id2>.. . .
<id2><id2>
<data2><data2><data2><data2>
<id1><id1>
<data><data><data><data>
![Page 26: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/26.jpg)
Scheduling Job withinABAP/4 Program
Open Background JobOpen Background JobOpen Background JobOpen Background Job
JOB_OPENJOB_OPEN
Insert Job StepInsert Job StepInsert Job StepInsert Job Step
JOB_SUBMITJOB_SUBMIT
Close Background JobClose Background JobClose Background JobClose Background Job
JOB_CLOSEJOB_CLOSE
JOB_SUBMIT is called for
each step that is to be added
to the job.
![Page 27: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/27.jpg)
JOB_OPEN
JOB_OPENJOB_OPEN Background JobBackground JobBackground JobBackground Job
Exporting:jobname = <job name>
Exporting:jobname = <job name>
Importing:jobcount = <job #>
Importing:jobcount = <job #>
<job name><job name><job name><job name>
<job #><job #><job #><job #>
![Page 28: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/28.jpg)
JOB_SUBMIT
JOB_SUBMITJOB_SUBMIT Background JobBackground JobBackground JobBackground Job
Exporting:authcknam = <user>jobcount = <job #>jobname = <job name>report = <report>variant = <variant>
<job name><job name><job name><job name>
<job #><job #><job #><job #>
Step #1Step #1
Step #2Step #2
![Page 29: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/29.jpg)
JOB_CLOSE
JOB_CLOSEJOB_CLOSE Background JobBackground JobBackground JobBackground Job
Exporting:jobcount = <job #>jobname = <job name>sdlstrtdt = <start date>sdlstrttm = <start time>strtimmed = <flag1>
Importing:job_was_released =
<flag2>
<job name><job name><job name><job name>
<job #><job #><job #><job #>
Step #1Step #1
Step #2Step #2
![Page 30: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/30.jpg)
ABAP/4 Program Example
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 = JOBNAMEIMPORTING JOBCOUNT = JOBNUM.
CALL FUNCTION ‘JOB_SUBMIT’EXPORTING AUTHCKNAM = USER
JOBCOUNT = JOBNUMJOBNAME = JOBNAMEREPORT = PROGRAMVARIANT = VARIANT.
WRITE: / JOBNAME, JOBCOUNT, REPORT, VARIANT, BTCHUSER.
CALL FUNCTION ‘JOB_CLOSE’EXPORTING JOBCOUNT = JOBCOUNT
JOBNAME = JOBNAME.
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 = JOBNAMEIMPORTING JOBCOUNT = JOBNUM.
CALL FUNCTION ‘JOB_SUBMIT’EXPORTING AUTHCKNAM = USER
JOBCOUNT = JOBNUMJOBNAME = JOBNAMEREPORT = PROGRAMVARIANT = VARIANT.
WRITE: / JOBNAME, JOBCOUNT, REPORT, VARIANT, BTCHUSER.
CALL FUNCTION ‘JOB_CLOSE’EXPORTING JOBCOUNT = JOBCOUNT
JOBNAME = JOBNAME.
Open JobOpen JobOpen JobOpen Job
Submit StepSubmit StepSubmit StepSubmit Step
Close JobClose JobClose JobClose Job
![Page 31: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/31.jpg)
Summary of Background Processing
Step #1
Step #2
Background
Job Log
Spool List
JobJobSchedulingScheduling
JobJobSchedulingScheduling
JobJobProcessingProcessing
JobJobProcessingProcessing
JobJobOverviewOverview
JobJobOverviewOverview
![Page 32: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/32.jpg)
CHAPTER 2FILE HANDLING AT
APPLICATION SERVER
![Page 33: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/33.jpg)
Overview
DatabaseServer
ApplicationServers
PresentationServers
In this chapter, we will learn how to
process sequential files on an
application server
![Page 34: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/34.jpg)
Processing Files
Open File
Close File
Create File or Read File
![Page 35: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/35.jpg)
“FOR”INPUT
OUTPUT
APPENDING
Open File
“OPEN DATASET” statement
“IN”BINARY MODE
TEXT MODE
“AT POSITION” “MESSAGE”
![Page 36: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/36.jpg)
Close File or Delete File
“CLOSE DATASET” statement
“DELETE DATASET” statement
![Page 37: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/37.jpg)
Create File or Read File
“TRANSFER” statement
“READ DATASET” statement
![Page 38: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/38.jpg)
Example - Create New File
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 #3Step #4
Step #5
![Page 39: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/39.jpg)
Example - Extend File
REPORT Y180DM03.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 APPENDING IN TEXT MODE.SELECT * FROM KNA1 WHERE REGIO = STATE.
MOVE-CORRESPONDING KNA1 TO OUTREC.TRANSFER OUTREC TO OUTFILE.
ENDSELECT.CLOSE DATASET OUTFILE.
The only change from the The only change from the previous example is “FOR previous example is “FOR APPENDING” instead of APPENDING” instead of
“FOR OUTPUT”.“FOR OUTPUT”.
The only change from the The only change from the previous example is “FOR previous example is “FOR APPENDING” instead of APPENDING” instead of
“FOR OUTPUT”.“FOR OUTPUT”.
![Page 40: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/40.jpg)
Example - Read File
REPORT Y180DM04.
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.
Step #1
Step #2
Step #3Step #4
Step #5
![Page 41: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/41.jpg)
Text Mode versus Binary Mode
ABCDEFGHIJK
ABCDEFGHIJKL
File structuredin lines
File structuredbyte-by-byte
“READ DATASET” into field string that is four characters in length
A B C
D E GF
I J LK
A B DC
E F HG
I J K
1
2
3
![Page 42: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/42.jpg)
CHAPTER 3FILE HANDLING AT
PRESENTATION SERVER
![Page 43: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/43.jpg)
Overview
DatabaseServer
ApplicationServers
PresentationServers
In this chapter, we will learn how to
process sequential files on a
presentation server
![Page 44: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/44.jpg)
Use of an Internal Table
Internal Table
To create a local file, you must transfer the
contents of an internal table.
Internal Table
To read a local file, you must read the contents into an
internal table.
![Page 45: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/45.jpg)
Create Local File
“DOWNLOAD” function module
CALL FUNCTION ‘DOWNLOAD’EXPORTING
FILENAME = <default file name>FILETYPE = <default file type>MODE = <create new or extend>
IMPORTINGFILESIZE = <size of file in bytes>
TABLESDATA_TAB = <internal table to transfer>
EXCEPTIONS. . . .
The The onlyonly required required parameter is the parameter is the
internal table.internal table.
The The onlyonly required required parameter is the parameter is the
internal table.internal table.
![Page 46: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/46.jpg)
Example - Create Local FileREPORT 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
![Page 47: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/47.jpg)
Read Local File
“UPLOAD” function module
CALL FUNCTION ‘UPLOAD’EXPORTING
FILENAME = <default file name>FILETYPE = <default file type>
IMPORTINGFILESIZE = <size of file in bytes>
TABLESDATA_TAB = <internal table to transfer>
EXCEPTIONS. . . .
The The onlyonly required required parameter is the parameter is the
internal table.internal table.
The The onlyonly required required parameter is the parameter is the
internal table.internal table.
![Page 48: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/48.jpg)
Example - Read Local File
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.
Step #1
Step #2
Step #3
![Page 49: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/49.jpg)
Download/Upload Program Code
ABAP/4Program
To download an ABAP/4 program to a local file,
use the “Utilities > Download” menu path.
To upload a local file into an ABAP/4 program, use the “Utilities > Upload”
menu path.
ABAP/4Program
** Uploading into an ABAP/4 program will overwrite any existing code **
![Page 50: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/50.jpg)
CHAPTER 4BDC CONCEPTS
![Page 51: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/51.jpg)
Overview
SAP SystemExternal System
Data Batch InputBatch Input
![Page 52: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/52.jpg)
Data Transfer Rules
SAPDatabase
Table
ExternalData
Checks &Validations
ExternalData
X
![Page 53: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/53.jpg)
Online Program
Vendor
Company Code
TEST1TEST1
AddressXX
Name
Street
Computers, Inc.Computers, Inc.
City PhiladelphiaPhiladelphia
To check and validate the external data, user dialog is simulated through an SAP transaction
(i.e., an online program).
![Page 54: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/54.jpg)
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 DictionaryABAP/4 Dictionary
“BDCDATA”
PROGRAMDYNPRO
DYNBEGINFNAMFVAL
![Page 55: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/55.jpg)
Example - Change Vendor
Vendor
Company Code
TEST1TEST1
AddressXX
Name
Street
Computers, Inc.Computers, Inc.
123 Main St.123 Main St.
City PhiladelphiaPhiladelphia
For our example, we will use the “Change Vendor” transaction
(“FK02”) to add a street address to an already
existing vendor.
![Page 56: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/56.jpg)
Researching Transaction - 1st Screen
Vendor
Company Code
TEST1TEST1
Address X X
Step #1Use “System > Status” menu path to determine
online program name (SAPMF02K), screen number (0106), and
transaction code (FK02).
Step #2Use ‘F1’ key and “Technical
Info” pushbutton in each screen field to be filled to determine the field name.
Step #3Determine how to proceed
in the transaction (go to the next screen by pressing the ‘Enter’ key).
Field name = RF02K-LIFNR
Field name = RF02K-D0110
![Page 57: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/57.jpg)
Researching Transaction - 2nd Screen
Name
Street
Computers, Inc.Computers, Inc.
123 Main St.123 Main St.
City PhiladelphiaPhiladelphia
Step #1Use “System > Status” menu path to determine
online program name (SAPMF02K) and screen
number (0110).
Step #2Use ‘F1’ key and “Technical
Info” pushbutton in each screen field to be filled to determine the field name.
Step #3Determine how to proceed in the transaction (save the
record by clicking on the ‘Save’ pushbutton or
pressing the ‘F11’ key).
Field name = LFA1-STRAS
![Page 58: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/58.jpg)
BDC Table Contents
PROGRAMSAPMF02K
SAPMF02K
DYNPRO0106
0110
DYNBEGINX
X
FNAM
RF02K-LIFNRRF02K-D0110
LFA1-STRASBDC_OKCODE
FVAL
TEST1X
123 Main St./11
After researching the transaction, we can determine the contents of
the BDC table.
![Page 59: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/59.jpg)
Declaring BDC Table
DATA: BDC_TAB LIKE BDCDATAOCCURS 6 WITH HEADER LINE.
The internal table used to collect the transaction’s information must be
declared “LIKE BDCDATA”.
![Page 60: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/60.jpg)
Filling BDC Table - Method #1FORM FILL_BDC_TAB.
REFRESH BDC_TAB.
CLEAR BDC_TAB.BDC_TAB-PROGRAM = ‘SAPMF02K’.BDC_TAB-DYNPRO = ‘0106’.BDC_TAB-DYNBEGIN = ‘X’.APPEND BDC_TAB.
CLEAR BDC_TAB.BDC_TAB-FNAM = ‘RF02K-LIFNR’.BDC_TAB-FVAL = ‘TEST1’.APPEND BDC_TAB.
CLEAR BDC_TAB.BDC_TAB-FNAM = ‘RF02K-D0110’.BDC_TAB-FVAL = ‘X’.APPEND BDC_TAB.
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.
![Page 61: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/61.jpg)
Filling BDC Table - Method #2FORM FILL_BDC_TAB.
REFRESH BDC_TAB.
PERFORM POPULATE_BDC_TABUSING:
‘1’ ‘SAPMF02K’ ‘0106’,‘ ’ ‘RF02K-LIFNR’ ‘TEST1’,‘ ’ ‘RF02K-D0110’ ‘X’,
‘1’ ‘SAPMF02K’ ‘0110’,‘ ’ ‘LFA1-STRAS’ ‘123 Main St.’,‘ ’ ‘BDC_OKCODE’ ‘/11’.
ENDFORM.
FORM POPULATE_BDC_TAB USINGFLAG VAR1 VAR2.
CLEAR BDC_TAB.
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.
This two-subroutine method to fill the BDC table is preferable because the “POPULATE_BDC_TAB” subroutine is reusable throughout all batch input programs.
![Page 62: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/62.jpg)
Batch Input Methods
Batch Input SessionMethod #1
“CALL TRANSACTION USING” StatementMethod #2
“CALL DIALOG” StatementMethod #3
![Page 63: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/63.jpg)
CHAPTER 5BATCH INPUT METHODS
![Page 64: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/64.jpg)
Overview
SAPDatabase
Table
BatchInput
Session
BDCProgram
ExternalData
The first batch input method is to create a batch input session. It is the
processing of this batch input session that updates the database, not the
execution of the batch input program.
![Page 65: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/65.jpg)
Creating Batch Input Sessions
Open Batch Input SessionOpen Batch Input SessionOpen Batch Input SessionOpen Batch Input Session
BDC_OPEN_GROUPBDC_OPEN_GROUP
Insert Transaction Data into SessionInsert Transaction Data into SessionInsert Transaction Data into SessionInsert Transaction Data into Session
BDC_INSERTBDC_INSERT
Close Batch Input SessionClose Batch Input SessionClose Batch Input SessionClose Batch Input Session
BDC_CLOSE_GROUPBDC_CLOSE_GROUP
“BDC_INSERT” is called for each
transaction entered into the
batch input session.
![Page 66: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/66.jpg)
BDC_OPEN_GROUP
CALL FUNCTION ‘BDC_OPEN_GROUP’
EXPORTING
CLIENT = <client>
GROUP = <session name>
HOLDDATE = <lock session until date>
KEEP = <keep or delete session>
USER = <user name>
EXCEPTIONS
CLIENT_INVALID = 1
. . .
OTHERS = 11.
CALL FUNCTION ‘BDC_OPEN_GROUP’
EXPORTING
CLIENT = <client>
GROUP = <session name>
HOLDDATE = <lock session until date>
KEEP = <keep or delete session>
USER = <user name>
EXCEPTIONS
CLIENT_INVALID = 1
. . .
OTHERS = 11.
![Page 67: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/67.jpg)
BDC_INSERT
CALL FUNCTION ‘BDC_INSERT’
EXPORTING
TCODE = <transaction code>
TABLES
DYNPROTAB = <bdc internal table>
EXCEPTIONS
INTERNAL_ERROR = 1
. . .
OTHERS = 5.
CALL FUNCTION ‘BDC_INSERT’
EXPORTING
TCODE = <transaction code>
TABLES
DYNPROTAB = <bdc internal table>
EXCEPTIONS
INTERNAL_ERROR = 1
. . .
OTHERS = 5.
![Page 68: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/68.jpg)
BDC_CLOSE_GROUP
CALL FUNCTION ‘BDC_CLOSE_GROUP’
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
CALL FUNCTION ‘BDC_CLOSE_GROUP’
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
![Page 69: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/69.jpg)
Batch Input Session
BatchInput
Session
Header SectionCreatorClient
Session NameAuthorization User
Hold DateKeep or Delete
Data SectionTransaction Data
![Page 70: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/70.jpg)
Example #1 - Change Vendor
Vendor
Company Code
TEST1TEST1
AddressXX
Name
Street
Computers, Inc.Computers, Inc.
123 Main St.123 Main St.
City PhiladelphiaPhiladelphia
In this example, we will create a batch input
session to add a street address to an already
existing vendor (TEST1).
The “Change Vendor” transaction is “FK02”.
![Page 71: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/71.jpg)
Example #1 - Declaration Section
REPORT Y180DM08.
DATA: BDC_TAB LIKE BDCDATAOCCURS 6 WITH HEADER LINE,
SESSION LIKE APQI-GROUPIDVALUE ‘DEMO #8’.
REPORT Y180DM08.
DATA: BDC_TAB LIKE BDCDATAOCCURS 6 WITH HEADER LINE,
SESSION LIKE APQI-GROUPIDVALUE ‘DEMO #8’.
** This program is continued on the next slide **
Step #1
![Page 72: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/72.jpg)
Example #1 - Main ProgramSTART-OF-SELECTION.
CALL FUNCTION ‘BDC_OPEN_GROUP’EXPORTING
CLIENT = SY-MANDTGROUP = SESSIONUSER = SY-UNAME
EXCEPTIONS. . . .PERFORM FILL_BDC_TAB.CALL FUNCTION ‘BDC_INSERT’
EXPORTINGTCODE = ‘FK02’
TABLESDYNPROTAB = BDC_TAB
EXCEPTIONS. . . .CALL FUNCTION ‘BDC_CLOSE_GROUP’
EXCEPTIONS. . . .
START-OF-SELECTION.CALL FUNCTION ‘BDC_OPEN_GROUP’
EXPORTINGCLIENT = SY-MANDTGROUP = SESSIONUSER = SY-UNAME
EXCEPTIONS. . . .PERFORM FILL_BDC_TAB.CALL FUNCTION ‘BDC_INSERT’
EXPORTINGTCODE = ‘FK02’
TABLESDYNPROTAB = BDC_TAB
EXCEPTIONS. . . .CALL FUNCTION ‘BDC_CLOSE_GROUP’
EXCEPTIONS. . . .
Step #2
Step #3Step #4
Step #5
** This program is continued on the next slide **
![Page 73: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/73.jpg)
Example #1 - Subroutines
FORM FILL_BDC_TAB.
REFRESH BDC_TAB.
PERFORM POPULATE_BDC_TABUSING:
‘1’ ‘SAPMF02K’ ‘0106’,‘ ’ ‘RF02K-LIFNR’ ‘TEST1’,‘ ’ ‘RF02K-D0110’ ‘X’,
‘1’ ‘SAPMF02K’ ‘0110’,‘ ’ ‘LFA1-STRAS’ ‘123 Main St.’,‘ ’ ‘BDC_OKCODE’ ‘/11’.
ENDFORM.
FORM POPULATE_BDC_TAB USINGFLAG VAR1 VAR2.
CLEAR BDC_TAB.
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.
![Page 74: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/74.jpg)
Example #2 - Change Vendors
Vendor
Company Code
TEST1TEST1
AddressXX
Name
Street
Computers, Inc.Computers, Inc.
123 Main St.123 Main St.
City PhiladelphiaPhiladelphia
Vendor
Company Code
TEST2TEST2
AddressXX
Name
Street
Computer LandComputer Land
10 Walnut St.10 Walnut St.
City BostonBoston
In this example, we will read records from a sequential file on the application server to create a batch input session
that updates multiple vendors.
![Page 75: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/75.jpg)
Sequential File
TEST1 123 Main St.
TEST2 10 Walnut St.
TEST3 32 Chestnut St.
TEST4 30 Market St.
TEST5 17 S. 30th St. The sequential file we will read is set up in records. Each record has two fields with the following formats:<Field1> LIKE LFA1-LIFNR<Field2> LIKE LFA1-STRAS
File name:‘/tmp/bc180_file3’
![Page 76: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/76.jpg)
Example #2 - Declaration Section
REPORT Y180DM09.
DATA: BDC_TAB LIKE BDCDATAOCCURS 6 WITH HEADER LINE,
SESSION LIKE APQI-GROUPIDVALUE ‘DEMO #9’,
INFILE(20) VALUE ‘/tmp/bc180_file3’.
DATA: BEGIN OF INREC,VENDNUM LIKE LFA1-LIFNR,STREET LIKE LFA1-STRAS,
END OF INREC.
REPORT Y180DM09.
DATA: BDC_TAB LIKE BDCDATAOCCURS 6 WITH HEADER LINE,
SESSION LIKE APQI-GROUPIDVALUE ‘DEMO #9’,
INFILE(20) VALUE ‘/tmp/bc180_file3’.
DATA: BEGIN OF INREC,VENDNUM LIKE LFA1-LIFNR,STREET LIKE LFA1-STRAS,
END OF INREC.
** This program is continued on the next slide **
Step #1
Step #2
![Page 77: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/77.jpg)
Example #2 - Main ProgramSTART-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’
EXPORTINGTCODE = ‘FK02’
TABLESDYNPROTAB = BDC_TAB. . . .
ENDDO.CALL FUNCTION ‘BDC_CLOSE_GROUP’. . . .CLOSE DATASET INFILE.
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’
EXPORTINGTCODE = ‘FK02’
TABLESDYNPROTAB = BDC_TAB. . . .
ENDDO.CALL FUNCTION ‘BDC_CLOSE_GROUP’. . . .CLOSE DATASET INFILE.
Step #3
Step #4
Step #5Step #6
** This program is continued on the next slide **
Step #7Step #8
Step #9Step #10
![Page 78: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/78.jpg)
Example #2 - Subroutines
FORM FILL_BDC_TAB.
REFRESH BDC_TAB.
PERFORM POPULATE_BDC_TABUSING:
‘1’ ‘SAPMF02K’ ‘0106’,‘ ’ ‘RF02K-LIFNR’ INREC-VENDNUM,‘ ’ ‘RF02K-D0110’ ‘X’,
‘1’ ‘SAPMF02K’ ‘0110’,‘ ’ ‘LFA1-STRAS’ INREC-STREET,‘ ’ ‘BDC_OKCODE’ ‘/11’.
ENDFORM.
FORM POPULATE_BDC_TAB USINGFLAG VAR1 VAR2.
CLEAR BDC_TAB.
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.
Notice that the vendor number and street values are coming from the file’s records read into the “INREC” field string.
![Page 79: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/79.jpg)
Summary
Research Transaction
Code BDC Program
Execute BDC Program
Process Batch Input Session
Batch Input Session Created
SAP Database Updated
![Page 80: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/80.jpg)
CHAPTER 6SESSION HANDLING
![Page 81: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/81.jpg)
Overview
BDCProgram
ExternalData
In this chapter, we will learn how to process batch input sessions.
BatchInput
Session
ProcessBatchInput
Session
SAPDatabase
Table
![Page 82: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/82.jpg)
Session OverviewProcess
BatchInput
Session “SystemServicesBatch inputSessions” menu pathOR
Transaction Code “SM35”
![Page 83: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/83.jpg)
Processing Modes
Process batch input sessionin the FOREGROUND.
DISPLAY ERRORS ONLY whenprocessing batch input session.
Process batch input sessionin the BACKGROUND.
![Page 84: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/84.jpg)
![Page 85: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/85.jpg)
Processing Options
/bdel/n
/bda/bde
/bend
![Page 86: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/86.jpg)
Session Overview Options
Select block
Session
Process
Log
Delete
Statistics
BatchInput
Session
![Page 87: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/87.jpg)
Session Status
Sessions still to be processed
Sessions processed with errors
Sessions processed successfully
Background sessions
Sessions being processed
Sessions being created
![Page 88: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/88.jpg)
Session LogLog
![Page 89: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/89.jpg)
Session AnalysisSession
** This is not an analysis of the batch input session from the previous page **
![Page 90: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/90.jpg)
Timing Issue
BDC programexecuted -Batch input
session created
Batch inputsession processed -
SAP database updated
Time1
Time2
Remember: A batch input session is created when you
execute a BDC program (time1), but it is processed at
a different time (time2).
![Page 91: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/91.jpg)
Program “RSBDCSUB”
Execute program
“RSBDCSUB”
Specify batch input session to process.
Batch input session scheduled to be processed
in the background.
![Page 92: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/92.jpg)
![Page 93: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/93.jpg)
![Page 94: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/94.jpg)
CHAPTER 7CALL TRANSACTION
CALL DIALOG
![Page 95: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/95.jpg)
PROGRAM DYNPRO DYNBEGIN FNAM FVAL
SAPMF02K 0106 X RF02K-LIFNR TEST1
RF02K-D0110 X
SAPMF02K 0110 X
LFA1-STRAS 123 Main St.
BDC_OKCODE /11
BDC TableBDC Table
Overview
Create Batch Input Create Batch Input SessionSession
(BDC Program)(BDC Program)
Create Batch Input Create Batch Input SessionSession
(BDC Program)(BDC Program)
Use in “CALL Use in “CALL TRANSACTION” TRANSACTION”
statementstatement
Use in “CALL Use in “CALL TRANSACTION” TRANSACTION”
statementstatement
Use in “CALL Use in “CALL DIALOG” DIALOG” statementstatement
Use in “CALL Use in “CALL DIALOG” DIALOG” statementstatement
![Page 96: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/96.jpg)
Differences in Batch Input Methods
When is the SAP database
updated?
When is the SAP database
updated?
How are errors handled?
How are errors handled?
Create batchinput session
(BDC Program):
During the processing of the batch input
session
Automatically by the system during the processing of the
batch input session
CALL TRANSACTION:CALL DIALOG:
During the execution of the batch input
program
Must be handled in the batch input
program
![Page 97: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/97.jpg)
Example - Change Vendors
Vendor
Company Code
TEST1TEST1
AddressXX
Name
Street
Computers, Inc.Computers, Inc.
123 Main St.123 Main St.
City PhiladelphiaPhiladelphia
Vendor
Company Code
TEST2TEST2
AddressXX
Name
Street
Computer LandComputer Land
10 Walnut St.10 Walnut St.
City BostonBoston
To illustrate the “CALL TRANSACTION” and “CALL DIALOG” methods, we will use the example to change
vendors coming from a sequential file.
![Page 98: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/98.jpg)
“CALL TRANSACTION USING” Statement
CALL TRANSACTION <transaction code>
USING <bdc internal table>
MODE <display mode>
UPDATE <update mode>
MESSAGES INTO <mssg int. table>.
CALL TRANSACTION <transaction code>
USING <bdc internal table>
MODE <display mode>
UPDATE <update mode>
MESSAGES INTO <mssg int. table>.
<display mode>
A: display allE: display errors onlyN: no display
<update mode>
S: synchronousA: asynchronous
![Page 99: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/99.jpg)
Example #1 - Declaration Section
REPORT Y180DM10.
DATA: BDC_TAB LIKE BDCDATAOCCURS 6 WITH HEADER LINE,
INFILE(20) VALUE ‘/tmp/bc180_file4’.
DATA: BEGIN OF INREC,VENDNUM LIKE LFA1-LIFNR,STREET LIKE LFA1-STRAS,
END OF INREC.
PARAMETERS: DISPMODE DEFAULT ‘A’,UPDAMODE DEFAULT ‘S’.
REPORT Y180DM10.
DATA: BDC_TAB LIKE BDCDATAOCCURS 6 WITH HEADER LINE,
INFILE(20) VALUE ‘/tmp/bc180_file4’.
DATA: BEGIN OF INREC,VENDNUM LIKE LFA1-LIFNR,STREET LIKE LFA1-STRAS,
END OF INREC.
PARAMETERS: DISPMODE DEFAULT ‘A’,UPDAMODE DEFAULT ‘S’.
** This program is continued on the next slide **
Step #1
Step #2
![Page 100: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/100.jpg)
Example #1 - Main ProgramSTART-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_TABMODE DISPMODEUPDATE UPDAMODE.
IF SY-SUBRC <> 0.WRITE: / ‘Error’.
ENDIF.ENDDO.CLOSE DATASET INFILE.
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_TABMODE DISPMODEUPDATE UPDAMODE.
IF SY-SUBRC <> 0.WRITE: / ‘Error’.
ENDIF.ENDDO.CLOSE DATASET INFILE.
Step #3
Step #4Step #5Step #6
** This program is continued on the next slide **
Step #7
Step #8
Step #9
![Page 101: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/101.jpg)
Example #1 - SubroutinesFORM FILL_BDC_TAB.
REFRESH BDC_TAB.
PERFORM POPULATE_BDC_TABUSING:
‘1’ ‘SAPMF02K’ ‘0106’,‘ ’ ‘RF02K-LIFNR’ INREC-VENDNUM,‘ ’ ‘RF02K-D0110’ ‘X’,
‘1’ ‘SAPMF02K’ ‘0110’,‘ ’ ‘LFA1-STRAS’ INREC-STREET,‘ ’ ‘BDC_OKCODE’ ‘/11’.
ENDFORM.
FORM POPULATE_BDC_TAB USINGFLAG VAR1 VAR2.
CLEAR BDC_TAB.
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.
Notice that the vendor number and street values are coming from the file’s records read into the “INREC” field string.
![Page 102: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/102.jpg)
Error Handling
Write an error report.
Send the record(s) in error to an error file.
Create a batch input session with the
record(s) in error.
![Page 103: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/103.jpg)
Synchronous versus AsynchronousDO.
. . .PERFORM FILL_BDC_TAB.CALL TRANSACTION ‘FK02’
USING BDC_TABMODE ‘N’UPDATE ‘S’.
IF SY-SUBRC <> 0.WRITE: / ‘Error’.
ENDIF.ENDDO.
DO.. . .PERFORM FILL_BDC_TAB.CALL TRANSACTION ‘FK02’
USING BDC_TABMODE ‘N’UPDATE ‘S’.
IF SY-SUBRC <> 0.WRITE: / ‘Error’.
ENDIF.ENDDO.
DO.. . .PERFORM FILL_BDC_TAB.CALL TRANSACTION ‘FK02’
USING BDC_TABMODE ‘N’UPDATE ‘A’.
IF SY-SUBRC <> 0.WRITE: / ‘Transaction error’.
ENDIF.ENDDO.
DO.. . .PERFORM FILL_BDC_TAB.CALL TRANSACTION ‘FK02’
USING BDC_TABMODE ‘N’UPDATE ‘A’.
IF SY-SUBRC <> 0.WRITE: / ‘Transaction error’.
ENDIF.ENDDO.
With synchronous updating, we With synchronous updating, we can check SY-SUBRC to can check SY-SUBRC to
determine the success of the determine the success of the transaction transaction andand the actual the actual
update to the database.update to the database.
With asynchronous updating, With asynchronous updating, we can check SY-SUBRC to we can check SY-SUBRC to
determine the success of the determine the success of the transaction only,transaction only, not not the actual the actual
update to the database.update to the database.
![Page 104: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/104.jpg)
“CALL DIALOG” Statement
CALL DIALOG <dialog module>
USING <bdc internal table>
MODE <display mode>.
CALL DIALOG <dialog module>
USING <bdc internal table>
MODE <display mode>.
<display mode>
A: display allE: display errors onlyN: no display
<update mode>
Notice that an update mode is not specified.
![Page 105: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/105.jpg)
Example #2 - Declaration Section
REPORT Y180DM11.
DATA: BDC_TAB LIKE BDCDATAOCCURS 6 WITH HEADER LINE,
INFILE(20) VALUE ‘/tmp/bc180_file5’.
DATA: BEGIN OF INREC,VENDNUM LIKE LFA1-LIFNR,STREET LIKE LFA1-STRAS,
END OF INREC.
PARAMETERS: DISPMODE DEFAULT ‘A’.
REPORT Y180DM11.
DATA: BDC_TAB LIKE BDCDATAOCCURS 6 WITH HEADER LINE,
INFILE(20) VALUE ‘/tmp/bc180_file5’.
DATA: BEGIN OF INREC,VENDNUM LIKE LFA1-LIFNR,STREET LIKE LFA1-STRAS,
END OF INREC.
PARAMETERS: DISPMODE DEFAULT ‘A’.
** This program is continued on the next slide **
Step #1
Step #2
![Page 106: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/106.jpg)
Example #2 - Main ProgramSTART-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_TABMODE DISPMODE.
IF SY-SUBRC <> 0.WRITE: / ‘Transaction error’.STOP.
ENDIF.ENDDO.COMMIT WORK.CLOSE DATASET INFILE.
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_TABMODE DISPMODE.
IF SY-SUBRC <> 0.WRITE: / ‘Transaction error’.STOP.
ENDIF.ENDDO.COMMIT WORK.CLOSE DATASET INFILE.
Step #3
Step #4Step #5Step #6
** This program is continued on the next slide **
Step #7
Step #8
Step #9Step #10
![Page 107: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/107.jpg)
Example #2 - SubroutinesFORM FILL_BDC_TAB.
REFRESH BDC_TAB.
PERFORM POPULATE_BDC_TABUSING:
‘1’ ‘SAPMF02K’ ‘0106’,‘ ’ ‘RF02K-LIFNR’ INREC-VENDNUM,‘ ’ ‘RF02K-D0110’ ‘X’,
‘1’ ‘SAPMF02K’ ‘0110’,‘ ’ ‘LFA1-STRAS’ INREC-STREET,‘ ’ ‘BDC_OKCODE’ ‘/11’.
ENDFORM.
FORM POPULATE_BDC_TAB USINGFLAG VAR1 VAR2.
CLEAR BDC_TAB.
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.
Notice that the vendor number and street values are coming from the file’s records read into the “INREC” field string.
![Page 108: BATCH DATA COMMUNICATION](https://reader033.vdocuments.net/reader033/viewer/2022061114/545c4cb1af7959b4098b4710/html5/thumbnails/108.jpg)
“CALL TRANSACTION”versus “CALL DIALOG”
Timing ofUpdate
Update occurs after each transaction is
completed.
Update occurs on “COMMIT WORK”
statement.
CALLTRANSACTION
CALLDIALOG