If you are going to develop automatic FI posting, it’s quite nice to use RFBIBL00 program.
Using it you are independent from screen numbers, field names and other static dynpro stuff.
The example below shows, how you can submit program RFBIBL00 from you ABAP,
wait until it’s finished and display protocol of the map generation.
See also my other example to displaying a protocol of map processing.
*&---------------------------------------------------------------------*
*& Form rfbibl00_submit
*&---------------------------------------------------------------------*
FORM rfbibl00_submit USING pi_filename TYPE rlgrap-filename.
DATA:
lv_jobcount TYPE tbtcjob-jobcount,
lv_jobname TYPE tbtcjob-jobname VALUE 'RFBIBL00',
lv_realm TYPE c VALUE 'X',
ls_job_read_jobhead TYPE tbtcjob,
ls_joblog_attributes TYPE bapixmjoblog,
lt_joblogtbl TYPE TABLE OF tbtc5,
ls_joblogtbl TYPE tbtc5.
* Define background job
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = lv_jobname
IMPORTING
jobcount = lv_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
* with program RFBIBL00
SUBMIT rfbibl00
WITH ds_name = pi_filename
WITH fl_check = ' '
WITH callmode = 'B'
WITH max_comm = 1000
WITH pa_xprot = ' '
* WITH ANZ_MODE = 'N'
* WITH UPDATE = 'A'
WITH xpop = ' '
WITH xlog = 'X'
WITH xinf = ' '
VIA JOB lv_jobname NUMBER lv_jobcount
AND RETURN.
* Release the job
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = lv_jobcount
jobname = lv_jobname
strtimmed = 'X'
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.
* Wait on for end of the job
WHILE ls_job_read_jobhead-status <> 'F'
AND ls_job_read_jobhead-status <> 'A'.
CALL FUNCTION 'BP_JOB_READ'
EXPORTING
job_read_jobcount = lv_jobcount
job_read_jobname = lv_jobname
job_read_opcode = '37'
IMPORTING
job_read_jobhead = ls_job_read_jobhead
joblog_attributes = ls_joblog_attributes
EXCEPTIONS
invalid_opcode = 1
job_doesnt_exist = 2
job_doesnt_have_steps = 3
OTHERS = 4.
ASSERT sy-subrc = 0.
WAIT UP TO 1 SECONDS.
ENDWHILE.
* Read protocol
CALL FUNCTION 'BP_JOBLOG_READ'
EXPORTING
client = sy-mandt
jobcount = lv_jobcount
joblog = ls_joblog_attributes-tmsname
jobname = lv_jobname
TABLES
joblogtbl = lt_joblogtbl
EXCEPTIONS
cant_read_joblog = 1
jobcount_missing = 2
joblog_does_not_exist = 3
joblog_is_empty = 4
joblog_name_missing = 5
jobname_missing = 6
job_does_not_exist = 7
OTHERS = 8.
ASSERT sy-subrc = 0.
* Display protocol
SKIP.
WRITE: / 'Protocol of program RFBIBL00:'.
LOOP AT lt_joblogtbl INTO ls_joblogtbl
WHERE msgid <> '00'.
WRITE: / ls_joblogtbl-text.
ENDLOOP.
ENDFORM. "rfbibl00_submit
See other related notes on my website: