FORM f_job_submit USING fp_v_session TYPE d0100_mapn
CHANGING fp_v_jobcount TYPE btcjobcnt
fp_v_jobnam TYPE btcjob.
* Declaration of Local Variable
DATA: l_status TYPE char1,
l_jobnam TYPE btcjob VALUE 'ZLCN_FIN_524'.
* Declaration of Local Constants
CONSTANTS: l_c_batch(1) TYPE c VALUE 'B', " Value B
l_c_9999(4) TYPE n VALUE '9999'. " Value 9999
CLEAR : l_status .
CONCATENATE l_jobnam sy-uzeit INTO fp_v_jobnam.
* Open Job scheduling for creating background job
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = fp_v_jobnam
IMPORTING
jobcount = fp_v_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
*---Failed to create batch job for parking &
MESSAGE i070 WITH fp_v_jobnam .
LEAVE LIST-PROCESSING.
ENDIF.
* Submit job to program RFBIBL00
SUBMIT rfbibl00 "#EC CI_SUBMIT
WITH callmode = l_c_batch
WITH ds_name = v_pfileu
WITH max_comm = l_c_9999
WITH xlog = c_x
USER sy-uname
VIA JOB fp_v_jobnam NUMBER fp_v_jobcount AND RETURN.
IF sy-subrc <> 0.
*---Job could not be submitted for program RFBIBL00
MESSAGE i071.
LEAVE LIST-PROCESSING.
ENDIF.
* Process the batch job using program RSBDCSUB
SUBMIT rsbdcsub WITH mappe = fp_v_session "#EC CI_SUBMIT
WITH von = sy-datum
USER sy-uname
VIA JOB fp_v_jobnam NUMBER fp_v_jobcount AND RETURN.
IF sy-subrc <> 0.
*---Job could not be processed for program RFBIBL00.
MESSAGE i072.
LEAVE LIST-PROCESSING.
ENDIF.
*
* Close the Job scheduling
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = fp_v_jobcount " job count
jobname = fp_v_jobnam " job name
strtimmed = c_x " strimmed
* IMPORTING
* job_was_released =
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.
IF sy-subrc <> 0.
*---Job could not close &
MESSAGE i073 WITH fp_v_jobnam . "Job could not close &.
LEAVE LIST-PROCESSING.
ENDIF.
* Allow 15 sec to update the table TBTCO table
WAIT UP TO 15 SECONDS.
DO.
* Read the job status.
CALL FUNCTION 'BDL_READ_JOB_STATUS'
EXPORTING
jobname = fp_v_jobnam
jobnumber = fp_v_jobcount
IMPORTING
jobstatus = l_status
EXCEPTIONS
job_not_found = 1
OTHERS = 2.
* Check the job status whether it is canceled or not.
IF sy-subrc = 0.
IF l_status = c_a.
MESSAGE i074. "Job is canceled
LEAVE LIST-PROCESSING.
ENDIF.
EXIT.
ELSEIF sy-subrc = 1.
WAIT UP TO 3 SECONDS.
ELSE.
MESSAGE i074.
LEAVE LIST-PROCESSING.
ENDIF.
ENDDO.
----------------------------------------------------------------------
FORM f_read_job_log_msg USING fp_v_jobcount TYPE btcjobcnt
fp_v_jobnam TYPE btcjob
fp_v_session TYPE d0100_mapn
CHANGING fp_i_logrep TYPE ty_t_logrep
fp_v_input_line TYPE int2
fp_v_doc_post TYPE int2.
* Data declaration of local internal tables
DATA : l_i_joblogtbl TYPE STANDARD TABLE OF tbtc5,
l_i_lat_ses TYPE ty_t_lat_ses,
l_i_temse TYPE ty_t_temse,
l_i_session_log TYPE ty_t_session_log.
* Data declaration of local work areas
DATA: l_wa_temse TYPE ty_temse,
l_wa_bdclm TYPE bdclm,
l_wa_session_log TYPE ty_session_log,
l_wa_lat_ses TYPE ty_lat_ses.
* Data declaration of local Variables
DATA: l_temp TYPE i VALUE 1, "Temp variable
l_status TYPE char1,
l_index TYPE sytabix,
l_msg_id TYPE arbgb,
l_msg_nr TYPE msgnr,
l_msg1 TYPE string,
l_msg2 TYPE string,
l_msg3 TYPE string,
l_msg4 TYPE string,
l_msg TYPE string,
l_len(2) TYPE n.
* Declaration of field symbols
FIELD-SYMBOLS: TYPE ty_logrep.
* Declaration of local Constants
CONSTANTS :
l_c_auth TYPE rstsauthch VALUE 'BATCH',
" Authority check
l_c_prom TYPE rstsprom VALUE 'I',
" Processing mode
l_c_rectyp TYPE rstsrectyp VALUE 'VNL----', "Type
l_c_msgcls TYPE char2 VALUE 'FP', " message class
l_c_msgtyp TYPE char1 VALUE 'S', " message type
l_c_msgno TYPE char3 VALUE '001'," message number
l_c_progress TYPE char1 VALUE 'R',
l_c_f TYPE char1 VALUE 'F',
l_c_s TYPE char1 VALUE 'S',
l_c_e TYPE char1 VALUE 'E',
l_c_space TYPE char1 VALUE ' ',
l_c_msgid_00 TYPE char2 VALUE '00',
l_c_357 TYPE char3 VALUE '357',
l_c_00 TYPE char2 VALUE '00'.
*---------Wait until job is cancelled or finished---------------
DO.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 50
text = l_c_space.
CALL FUNCTION 'BP_JOBLOG_READ'
EXPORTING
client = sy-mandt
jobcount = fp_v_jobcount
joblog = space
jobname = fp_v_jobnam
TABLES
joblogtbl = l_i_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.
IF sy-subrc <> 0.
*---Error reading the status of the job &
MESSAGE i075 WITH fp_v_jobnam.
LEAVE LIST-PROCESSING.
ENDIF.
* Check if the Job has been finished
READ TABLE l_i_joblogtbl
WITH KEY msgid = l_c_msgid_00
msgno = '517'
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
EXIT.
ENDIF.
* Check if the Job has been cancelled
READ TABLE l_i_joblogtbl
WITH KEY msgid = l_c_msgid_00
msgno = '518'
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
EXIT.
ENDIF.
REFRESH l_i_joblogtbl.
WAIT UP TO 5 SECONDS.
ENDDO.
DO.
* Get data for Queue info definition
SELECT mandant "#EC CI_NOFIRST
groupid
qid
qstate
credate
cretime
INTO TABLE l_i_lat_ses
FROM apqi
WHERE mandant = sy-mandt
AND groupid = fp_v_session
AND credate = sy-datum.
IF sy-subrc <> 0.
*---"No batch input session exists with name & and date &
MESSAGE i077 WITH fp_v_session sy-datum.
LEAVE LIST-PROCESSING.
ENDIF.
* Get latest session QID
SORT l_i_lat_ses DESCENDING BY credate cretime.
DELETE ADJACENT DUPLICATES FROM l_i_lat_ses COMPARING groupid.
READ TABLE l_i_lat_ses
WITH KEY qstate = l_c_progress
TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
EXIT.
ELSE.
WAIT UP TO 5 SECONDS.
ENDIF.
ENDDO.
IF NOT l_i_lat_ses[] IS INITIAL.
* Get TEMSEID of the selected Queue ID
READ TABLE l_i_lat_ses INTO l_wa_lat_ses INDEX 1.
IF sy-subrc = 0 .
SELECT temseid
credate
cretime
INTO TABLE l_i_temse
FROM apql
WHERE mandant = sy-mandt
AND credate = sy-datum
AND groupid = fp_v_session
AND qid = l_wa_lat_ses-qid
AND creator = sy-uname. "#EC CI_NOFIRST
IF sy-subrc <> 0.
*---TEMSEID not available for the batch input session &
MESSAGE i078 WITH fp_v_session.
LEAVE LIST-PROCESSING.
ELSE.
SORT l_i_temse BY credate DESCENDING cretime.
CLEAR l_wa_temse.
ENDIF.
ENDIF.
ENDIF.
IF NOT l_i_temse IS INITIAL.
READ TABLE l_i_temse INTO l_wa_temse INDEX 1.
* Call function module 'RSTS_OPEN_RLC' for
* Opening TemSe Object To Read Line By Line With Conversion
IF sy-subrc = 0.
CALL FUNCTION 'RSTS_OPEN_RLC'
EXPORTING
name = l_wa_temse-temseid
client = sy-mandt
authority = l_c_auth
prom = l_c_prom
rectyp = l_c_rectyp
enqlock = l_c_e
EXCEPTIONS
fb_call_handle = 4
fb_error = 8
fb_rsts_noconv = 12
fb_rsts_other = 16
no_object = 20
OTHERS = 24.
IF sy-subrc NE 0.
*---Error in opening the temse object &
MESSAGE i081 WITH l_wa_temse-temseid.
LEAVE LIST-PROCESSING.
ENDIF.
* Call function module 'RSTS_READ' for
* Reading from TemSe Object
CALL FUNCTION 'RSTS_READ'
TABLES
datatab = l_i_session_log
EXCEPTIONS
fb_call_handle = 4
fb_error = 8
fb_rsts_noconv = 12
fb_rsts_other = 16
OTHERS = 16.
IF sy-subrc NE 0.
*---Error in reading the TemSe object
MESSAGE i079 .
LEAVE LIST-PROCESSING.
ENDIF.
* Call function module 'RSTS_CLOSE' for
* Closing TemSe Object Again
CALL FUNCTION 'RSTS_CLOSE'
EXCEPTIONS
OTHERS = 4.
IF sy-subrc NE 0.
*---Error in closing the TemSe object
MESSAGE i080 .
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDIF.
l_temp = 1.
* Find out if there are any sessions in error.
LOOP AT l_i_session_log INTO l_wa_session_log WHERE
logmessage+73(1) = l_c_e.
IF l_temp = 1.
WRITE:/ text-017 COLOR 6 INVERSE ON INTENSIFIED ON CENTERED.
"Parking of documents not occured: Log report
CLEAR l_temp .
ENDIF.
l_status = l_c_f.
l_wa_bdclm = l_wa_session_log.
l_msg_id = l_wa_bdclm-mid.
l_msg_nr = l_wa_bdclm-mnr.
IF STRLEN( l_wa_bdclm-mpar ) NE 0 .
l_len = l_wa_bdclm-mpar+0(2).
IF l_len > 0 .
SHIFT l_wa_bdclm-mpar BY 2 PLACES.
l_msg1 = l_wa_bdclm-mpar+0(l_len).
SHIFT l_wa_bdclm-mpar BY l_len PLACES.
ENDIF.
ENDIF.
IF STRLEN( l_wa_bdclm-mpar ) NE 0 .
l_len = l_wa_bdclm-mpar+0(2).
IF l_len > 0 .
SHIFT l_wa_bdclm-mpar BY 2 PLACES.
l_msg2 = l_wa_bdclm-mpar+0(l_len).
SHIFT l_wa_bdclm-mpar BY l_len PLACES.
ENDIF.
ENDIF.
IF STRLEN( l_wa_bdclm-mpar ) NE 0 .
l_len = l_wa_bdclm-mpar+0(2).
IF l_len > 0 .
SHIFT l_wa_bdclm-mpar BY 2 PLACES.
l_msg3 = l_wa_bdclm-mpar+0(l_len).
SHIFT l_wa_bdclm-mpar BY l_len PLACES.
ENDIF.
ENDIF.
IF STRLEN( l_wa_bdclm-mpar ) NE 0 .
l_len = l_wa_bdclm-mpar+0(2).
IF l_len > 0 .
SHIFT l_wa_bdclm-mpar BY 2 PLACES.
l_msg4 = l_wa_bdclm-mpar+0(l_len).
SHIFT l_wa_bdclm-mpar BY l_len PLACES.
ENDIF.
ENDIF.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = l_msg_id
lang = sy-langu
no = l_msg_nr
v1 = l_msg1
v2 = l_msg2
v3 = l_msg3
v4 = l_msg4
IMPORTING
msg = l_msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE:/2 l_msg.
ENDIF.
ENDLOOP.
l_index = 0.
IF l_status <> l_c_f.
*--------collect the successful msgs
* LOOP AT l_i_session_log INTO l_wa_session_log
* WHERE logmessage+73(1) = l_c_msgtyp
* AND logmessage+74(2) = l_c_msgcls
* AND logmessage+94(3) = l_c_msgno.
LOOP AT l_i_session_log INTO l_wa_session_log.
IF ( l_wa_session_log-logmessage+73(1) = l_c_msgtyp
AND l_wa_session_log-logmessage+74(2) = l_c_msgcls
AND l_wa_session_log-logmessage+94(3) = l_c_msgno )
.
l_index = l_index + 1.
l_wa_bdclm = l_wa_session_log.
l_msg_id = l_wa_bdclm-mid.
l_msg_nr = l_wa_bdclm-mnr.
IF STRLEN( l_wa_bdclm-mpar ) NE 0 .
l_len = l_wa_bdclm-mpar+0(2).
IF l_len > 0 .
SHIFT l_wa_bdclm-mpar BY 2 PLACES.
l_msg1 = l_wa_bdclm-mpar+0(l_len).
SHIFT l_wa_bdclm-mpar BY l_len PLACES.
ENDIF.
ENDIF.
IF STRLEN( l_wa_bdclm-mpar ) NE 0 .
l_len = l_wa_bdclm-mpar+0(2).
IF l_len > 0 .
SHIFT l_wa_bdclm-mpar BY 2 PLACES.
l_msg2 = l_wa_bdclm-mpar+0(l_len).
SHIFT l_wa_bdclm-mpar BY l_len PLACES.
ENDIF.
ENDIF.
IF STRLEN( l_wa_bdclm-mpar ) NE 0 .
l_len = l_wa_bdclm-mpar+0(2).
IF l_len > 0 .
SHIFT l_wa_bdclm-mpar BY 2 PLACES.
l_msg3 = l_wa_bdclm-mpar+0(l_len).
SHIFT l_wa_bdclm-mpar BY l_len PLACES.
ENDIF.
ENDIF.
IF STRLEN( l_wa_bdclm-mpar ) NE 0 .
l_len = l_wa_bdclm-mpar+0(2).
IF l_len > 0 .
SHIFT l_wa_bdclm-mpar BY 2 PLACES.
l_msg4 = l_wa_bdclm-mpar+0(l_len).
SHIFT l_wa_bdclm-mpar BY l_len PLACES.
ENDIF.
ENDIF.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = l_msg_id
lang = sy-langu
no = l_msg_nr
v1 = l_msg1
v2 = l_msg2
v3 = l_msg3
v4 = l_msg4
IMPORTING
msg = l_msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE fp_i_logrep ASSIGNING INDEX l_index.
IF sy-subrc IS INITIAL.
-belnr = l_msg1.
ENDIF.
ENDIF.
l_status = l_c_s.
*Shadab Change Begin
ELSEIF ( l_wa_session_log-logmessage+73(1) = l_c_msgtyp
AND l_wa_session_log-logmessage+74(2) = l_c_00
AND l_wa_session_log-logmessage+94(3) = l_c_357 ).
l_index = l_index + 1.
READ TABLE fp_i_logrep ASSIGNING INDEX l_index.
IF sy-subrc IS INITIAL.
-belnr = 'Tran Error'.
ENDIF.
ENDIF. "Shadab Change
*Shadab Change End
ENDLOOP.
IF NOT fp_i_logrep IS INITIAL.
PERFORM f_display_job_log_msg USING fp_i_logrep.
WRITE:/5 'Statistics:'(022),
/10 fp_v_input_line, 'input lines'(003),
/10 fp_v_doc_post, 'document posted'(004).
ENDIF.
ENDIF.
ENDFORM. " f_read_job_log_msg
阅读(1365) | 评论(0) | 转发(0) |