Thursday, May 14, 2026

Capture TR Import Time programatically

 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-OPTIONSso_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-transportls_rel_01-ddic_rvw_by_coels_rel_01-odw_impactls_rel_01-tr_time_qals_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(14TYPE 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=>subtracttstmp1 lv_ts1 tstmp2 lv_ts2 ).
      lv_days floorlv_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 PAD '0' } { lv_sec+8(2}:{ lv_sec+10(2}:{ lv_sec+12(2}|.
      CLEARlv_ts1lv_ts2lv_slv_dayslv_sec.
    ENDIF.
  ENDLOOP.
  CLEARlt_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=>subtracttstmp1 lv_ts1 tstmp2 lv_ts2 ).
      lv_days floorlv_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 PAD '0' } { lv_sec+8(2}:{ lv_sec+10(2}:{ lv_sec+12(2}|.
      CLEARlv_ts1lv_ts2lv_slv_dayslv_sec.
    ENDIF.
  ENDLOOP.
  CLEARlt_tr_imp_time[]ls_tr_imp_time.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_ddic_odw
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM get_ddic_odw .

  DATAlv_ddic TYPE char02,
        lv_odw  TYPE char02.

  LOOP AT lt_rel_01 ASSIGNING FIELD-SYMBOL(<lfs_rel_01>).

    CLEARlv_ddiclv_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.
datagr_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

Search SAPMV45A includes for Constants and Statics

 This report can find CONSTANTS and STATICS in SAPMV45A Z-includes. We know that Constants and Statics consume global variables so identifyi...