Hi Nair,
I think the code is ok! just modified as per the second situation!
TYPES:BEGIN OF TY_JOB,
LOG_ID type RSPC_LOGID,
TYPE type RSPC_TYPE,
EVENT_START type BTCEVENTID,
JOB_COUNT type BTCJOBCNT,
BATCHDATE type BTCRELDT,
BATCHTIME type BTCRELTM,
VARIANTE type RSPC_VARIANT,
INSTANCE type RSPC_INSTANCE,
STATE type RSPC_STATE,
ACTUAL_STATE type RSPC_STATE,
STARTTIMESTAMP type RSTIMESTMPL,
ENDTIMESTAMP type RSTIMESTMPL,
end of ty_job,
BEGIN OF TY_JOBNAME,
CHAIN_ID TYPE RSPC_CHAIN,
LOG_ID TYPE RSPC_LOGID,
DATUM TYPE SYDATUM,
ZEIT TYPE SYUZEIT,
MANUAL_ABORT TYPE RSPC_MANUAL_ABORT,
END OF TY_JOBNAME.
data: gt_job type table of ty_job,
gt_jobb type table of ty_job,
gt_jobname type table of ty_jobname,
gs_job type ty_job,
gs_jobname type ty_jobname,
gs_maildata type SODOCCHGI1,
mailtxt type table of SOLISTI1 with header line,
mailrec type table of SOMLRECI1 with header line,
OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE,
OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
ls_log_id type RSPC_LOGID,
ls_date type sydatum,
ls_time type sy-uzeit,
ls_params like pri_params,
ls_jobcount like tbtcjob-jobcount,
ls_jobname like tbtcjob-jobname,
gt_JOB_LOG type TABLE OF RSPC_S_MSG,
gs_job_log type rspc_s_msg,
TAB_LINES LIKE SY-TABIX.
* DATA L_NUM(3).
*constants: cv_1 value 'G',
* cv_2 value 'A',
* cv_3 value 'F',
* cv_4 value 'P'.
start-of-selection.
wait until gs_job-actual_state <> 'G'.
ls_date = sy-datum.
ls_date = ls_date - 1.
select LOG_ID
TYPE
EVENT_START
JOB_COUNT
BATCHDATE
BATCHTIME
VARIANTE
INSTANCE
STATE
ACTUAL_STATE
STARTTIMESTAMP
ENDTIMESTAMP
from RSPCPROCESSLOG
into table gt_job
where state not in ('F','G','A','P',' ')
and batchdate between ls_date and sy-datum.
check sy-subrc = 0.
loop at gt_job into gs_job.
SELECT SINGLE log_id
from RSPCPROCESSLOG
into ls_log_id
WHERE log_id = gs_job-log_id
AND type = gs_job-type
and job_count = gs_job-job_count
and state in ('A','F','G').
if sy-subrc ne 0.
CONTINUE.
else.
DELETE gt_job from gs_job.
endif.
CLEAR gs_job.
ENDLOOP.
* if two entries are exists - need to send one mail only
DELETE ADJACENT DUPLICATES from gt_job comparing type job_count.....
IF GT_JOB[] IS NOT INITIAL.
select CHAIN_ID
LOG_ID
DATUM
ZEIT
MANUAL_ABORT
from RSPCLOGCHAIN
into table gt_jobname
for all entries in gt_job
where log_id = gt_job-log_id.
ENDIF.
loop at gt_jobname into gs_jobname.
mailtxt-line = gs_jobname-chain_id.
append mailtxt.
endloop.
loop at gt_job_log into gs_job_log.
if gs_job_log-msgv4 = text-004.
CONCATENATE gs_job_log-msgv1
gs_job_log-msgv2
gs_job_log-msgv4 into mailtxt SEPARATED BY space.
append mailtxt.
endif.
ENDLOOP.
clear: gs_maildata,mailrec,mailtxt.
gs_maildata-obj_name = text-002.
gs_maildata-obj_descr = text-001.
gs_maildata-obj_langu = sy-langu.
mailrec-receiver = 'ZAPO_JOBS'.
mailrec-rec_type = 'C'.
append mailrec.
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = gs_maildata
DOCUMENT_TYPE = 'RAW'
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
OBJECT_HEADER = mailtxt
OBJECT_CONTENT = mailtxt
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
RECEIVERS = mailrec
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.