The time difference is based on the TR import time as the difference between the "Begin Time" and "End time" columns of the standard report /SDF/CMO_TR_CHECK output.
This program does the same programatically.
REPORT zgb_tr_import_time.
* Selection Screen Select Options
TYPES:
BEGIN OF lty_sel,
trkorr TYPE e070-trkorr,
trfunction TYPE e070-trfunction,
as4user TYPE e070-as4user,
as4date TYPE e070-as4date,
trstatus TYPE e070-trstatus,
END OF lty_sel.
* DATA DECLARATION
DATA:
ls_sel TYPE lty_sel.
DATA:
ls_rel_01 TYPE zgb_coe_rel_01,
lt_rel_01 TYPE STANDARD TABLE OF zgb_coe_rel_01.
* Selection Screen
SELECT-OPTIONS: so_tr FOR ls_sel-trkorr NO INTERVALS.
START-OF-SELECTION.
LOOP AT so_tr.
ls_rel_01-mandt = sy-mandt.
ls_rel_01-transport = so_tr-low.
APPEND ls_rel_01 TO lt_rel_01.
ENDLOOP.
PERFORM get_import_time.
PERFORM get_ddic_odw.
END-OF-SELECTION.
LOOP AT lt_rel_01 INTO ls_rel_01.
WRITE:/ ls_rel_01-transport, ls_rel_01-ddic_rvw_by_coe, ls_rel_01-odw_impact, ls_rel_01-tr_time_qa, ls_rel_01-tr_time_re.
ENDLOOP.
perform display_table.
*&---------------------------------------------------------------------*
*& Form get_import_time
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_import_time .
DATA:
lt_tmstpalog LIKE TABLE OF tmstpalog,
lt_tmstpalog_h TYPE tmstpalogs WITH HEADER LINE.
DATA:
l_time_stamp TYPE tzonref-tstamps,
lv_time_stamp(14) TYPE c,
ls_time_stamp TYPE timestamp,
lt_tr_imp_time TYPE TABLE OF /sdf/teap_tr_imp_time,
ls_tr_imp_time LIKE LINE OF lt_tr_imp_time,
lv_ts1 TYPE timestampl,
lv_ts2 TYPE timestampl,
lv_sec TYPE tstamp,
lv_s TYPE i,
lv_days TYPE i.
* l_form4 = 'IMPORT_TIME'.
CLEAR lt_tmstpalog_h.
CLEAR lt_tmstpalog_h[].
* IF lt_reqs[] IS INITIAL.
LOOP AT lt_rel_01 INTO ls_rel_01.
lt_tmstpalog_h-listname = '/SDF/CMO_TR_CHECK'.
* lt_tmstpalog_h-trkorr = p_ori_tr.
lt_tmstpalog_h-trkorr = ls_rel_01-transport.
CONCATENATE sy-datum sy-uzeit INTO lv_time_stamp.
ls_time_stamp = lv_time_stamp.
lt_tmstpalog_h-trtime = ls_time_stamp.
APPEND lt_tmstpalog_h.
ENDLOOP.
* ELSE.
* LOOP AT lt_reqs.
* lt_tmstpalog_h-listname = '/SDF/CMO_TR_CHECK'.
* lt_tmstpalog_h-trkorr = lt_reqs-trkorr.
* CONCATENATE sy-datum sy-uzeit INTO lv_time_stamp.
* ls_time_stamp = lv_time_stamp.
* lt_tmstpalog_h-trtime = ls_time_stamp.
* APPEND lt_tmstpalog_h.
* ENDLOOP.
* ENDIF.
lt_tmstpalog[] = lt_tmstpalog_h[].
CLEAR lt_tr_imp_time[].
CALL FUNCTION '/SDF/TEAP_IMPORT_TIME'
DESTINATION 'DEQCLNT100' "<-Quality system
TABLES
it_checked_tr = lt_tmstpalog
* ET_TR_STEP_IMP_TIME =
et_tr_imp_time = lt_tr_imp_time
* ET_STEP_IMP_TIME =
* ET_TRTYPE_IMP_TIME =
* ET_IMPORT_PROCESSES =
* ET_ALOG_IMPORT =
* ET_MESSAGES =
EXCEPTIONS
empty_checked_tr_list = 1
no_tpalog_for_checked_tr = 2
* OTHERS = 3
.
LOOP AT lt_tr_imp_time INTO ls_tr_imp_time.
READ TABLE lt_rel_01 ASSIGNING FIELD-SYMBOL(<lfs_rel_01>) WITH KEY transport = ls_tr_imp_time-trkorr.
IF sy-subrc EQ 0.
lv_ts1 = ls_tr_imp_time-end_time.
lv_ts2 = ls_tr_imp_time-begin_time.
lv_s = cl_abap_tstmp=>subtract( tstmp1 = lv_ts1 tstmp2 = lv_ts2 ).
lv_days = floor( lv_s / 86400 ).
lv_sec = ls_tr_imp_time-end_time - ls_tr_imp_time-begin_time.
<lfs_rel_01>-tr_time_qa = | { lv_days WIDTH = 2 PAD = '0' } { lv_sec+8(2) }:{ lv_sec+10(2) }:{ lv_sec+12(2) }|.
CLEAR: lv_ts1, lv_ts2, lv_s, lv_days, lv_sec.
ENDIF.
ENDLOOP.
CLEAR: lt_tr_imp_time[], ls_tr_imp_time.
CALL FUNCTION 'ZFM_COE_GET_IMPORT_TIME'
DESTINATION 'MEDCLNT100' "<- Another system dev with rfc to MEQCLNT100
TABLES
it_checked_tr = lt_tmstpalog
* ET_TR_STEP_IMP_TIME =
et_tr_imp_time = lt_tr_imp_time
* ET_STEP_IMP_TIME =
* ET_TRTYPE_IMP_TIME =
* ET_IMPORT_PROCESSES =
* ET_ALOG_IMPORT =
* ET_MESSAGES =
.
LOOP AT lt_tr_imp_time INTO ls_tr_imp_time.
READ TABLE lt_rel_01 ASSIGNING <lfs_rel_01> WITH KEY transport = ls_tr_imp_time-trkorr.
IF sy-subrc EQ 0.
lv_ts1 = ls_tr_imp_time-end_time.
lv_ts2 = ls_tr_imp_time-begin_time.
lv_s = cl_abap_tstmp=>subtract( tstmp1 = lv_ts1 tstmp2 = lv_ts2 ).
lv_days = floor( lv_s / 86400 ).
lv_sec = ls_tr_imp_time-end_time - ls_tr_imp_time-begin_time.
<lfs_rel_01>-tr_time_qa = | { lv_days WIDTH = 2 PAD = '0' } { lv_sec+8(2) }:{ lv_sec+10(2) }:{ lv_sec+12(2) }|.
CLEAR: lv_ts1, lv_ts2, lv_s, lv_days, lv_sec.
ENDIF.
ENDLOOP.
CLEAR: lt_tr_imp_time[], ls_tr_imp_time.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_ddic_odw
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_ddic_odw .
DATA: lv_ddic TYPE char02,
lv_odw TYPE char02.
LOOP AT lt_rel_01 ASSIGNING FIELD-SYMBOL(<lfs_rel_01>).
CLEAR: lv_ddic, lv_odw.
IF <lfs_rel_01>-transport(3) = 'DED'.
CALL FUNCTION 'ZZCOE_DDIC_TR_DETAILS_GET'
EXPORTING
iv_trkorr = <lfs_rel_01>-transport
IMPORTING
ev_ddic = lv_ddic
ev_odw = lv_odw.
ELSEIF <lfs_rel_01>-transport(3) = 'MED'.
CALL FUNCTION 'ZZCOE_DDIC_TR_DETAILS_GET'
DESTINATION 'MEDCLNT100'
EXPORTING
iv_trkorr = <lfs_rel_01>-transport
IMPORTING
ev_ddic = lv_ddic
ev_odw = lv_odw.
ENDIF.
<lfs_rel_01>-ddic_rvw_by_coe = lv_ddic.
<lfs_rel_01>-odw_impact = lv_odw.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display_table
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display_table .
*data: gt_outtab type table of zgb_coe_rel_01.
data: gr_table type ref to cl_salv_table.
*... Create Instance
call method cl_salv_table=>factory
IMPORTING
R_SALV_TABLE = gr_table
changing
t_table = lt_rel_01.
*... Display Table
gr_table->display( ).
ENDFORM.
In the other development system MED we also fetch the data from its corresponding quality system using FM ZFM_COE_GET_IMPORT_TIME
FUNCTION ZFM_COE_GET_IMPORT_TIME.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" TABLES
*" IT_CHECKED_TR TYPE TMSTPALOGS OPTIONAL
*" ET_TR_STEP_IMP_TIME STRUCTURE /SDF/TEAP_TR_STEP_IMP_TIME
*" OPTIONAL
*" ET_TR_IMP_TIME STRUCTURE /SDF/TEAP_TR_IMP_TIME OPTIONAL
*" ET_STEP_IMP_TIME STRUCTURE /SDF/TEAP_STEP_IMP_TIME OPTIONAL
*" ET_TRTYPE_IMP_TIME STRUCTURE /SDF/CMO_COUNT OPTIONAL
*" ET_IMPORT_PROCESSES STRUCTURE /SDF/CMO_COUNT OPTIONAL
*" ET_ALOG_IMPORT STRUCTURE TPALOG OPTIONAL
*" ET_MESSAGES TYPE BAPIRET2_T OPTIONAL
*"----------------------------------------------------------------------
CALL FUNCTION '/SDF/TEAP_IMPORT_TIME'
DESTINATION 'MEQCLNT100'
TABLES
IT_CHECKED_TR = IT_CHECKED_TR
ET_TR_STEP_IMP_TIME = ET_TR_STEP_IMP_TIME
ET_TR_IMP_TIME = ET_TR_IMP_TIME
ET_STEP_IMP_TIME = ET_STEP_IMP_TIME
ET_TRTYPE_IMP_TIME = ET_TRTYPE_IMP_TIME
ET_IMPORT_PROCESSES = ET_IMPORT_PROCESSES
ET_ALOG_IMPORT = ET_ALOG_IMPORT
ET_MESSAGES = ET_MESSAGES
EXCEPTIONS
EMPTY_CHECKED_TR_LIST = 1
NO_TPALOG_FOR_CHECKED_TR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFUNCTION.
No comments:
Post a Comment