z Request Program Compare

Embed Size (px)

DESCRIPTION

SAP ABAP

Citation preview

*&---------------------------------------------------------------------**& Report Z_REQUEST_PROGRAM_COMPARE*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------**&---------------------------------------------------------------------**& Programa: Z_REQUEST_PROGRAM_COMPARE **& Descrio: Relatrio de comparao de request para objetos **& Transao: - **& Autor: Renato Martins Data: 08.05.2014 **& Funcional Responsvel: - **&---------------------------------------------------------------------**& Alterao 001 **& Autor: Renato Martins Data: 23.05.2014 **& Informao: insero de informaes de hora e data de transporte **& da request, sem compara com os demais dados **&---------------------------------------------------------------------**************************************************************************** Declaraes ***************************************************************************REPORT z_request_program_compare.*************************************************************************** TYPE-POOLS ***************************************************************************TYPE-POOLS: icon, slis, kkblo.*************************************************************************** TABLES ***************************************************************************TABLES: e070.*************************************************************************** Definio de types ***************************************************************************TYPES: BEGIN OF gy_req, trkorr TYPE e070-trkorr, as4user TYPE e070-as4user, END OF gy_req.TYPES: BEGIN OF gy_reqt, trkorr TYPE e07t-trkorr, as4text TYPE e07t-as4text, END OF gy_reqt.TYPES: BEGIN OF gy_req_obj, trkorr TYPE e071-trkorr, object TYPE e071-object, obj_name TYPE e071-obj_name, pgmid TYPE e071-pgmid, END OF gy_req_obj.TYPES: BEGIN OF gy_ambiente, sysnam TYPE tmscsys-sysnam, ststxt TYPE tmscsys-systxt, ordem TYPE i, END OF gy_ambiente.TYPES: BEGIN OF gy_lista, trkorr TYPE e070-trkorr, as4text TYPE e07t-as4text, as4user TYPE e070-as4user, trs1_dt TYPE sy-datum, trs1_uz TYPE sy-uzeit, trs2_dt TYPE sy-datum, trs2_uz TYPE sy-uzeit, trs3_dt TYPE sy-datum, trs3_uz TYPE sy-uzeit, trs4_dt TYPE sy-datum, trs4_uz TYPE sy-uzeit, trs5_dt TYPE sy-datum, trs5_uz TYPE sy-uzeit, trs6_dt TYPE sy-datum, trs6_uz TYPE sy-uzeit, trs7_dt TYPE sy-datum, trs7_uz TYPE sy-uzeit, object TYPE e071-object, obj_name TYPE e071-obj_name, status TYPE icons-text, amb1_tr TYPE e070-trkorr, amb1_dt TYPE sy-datum, amb1_uz TYPE sy-uzeit, amb2_tr TYPE e070-trkorr, amb2_dt TYPE sy-datum, amb2_uz TYPE sy-uzeit, amb3_tr TYPE e070-trkorr, amb3_dt TYPE sy-datum, amb3_uz TYPE sy-uzeit, amb4_tr TYPE e070-trkorr, amb4_dt TYPE sy-datum, amb4_uz TYPE sy-uzeit, amb5_tr TYPE e070-trkorr, amb5_dt TYPE sy-datum, amb5_uz TYPE sy-uzeit, amb6_tr TYPE e070-trkorr, amb6_dt TYPE sy-datum, amb6_uz TYPE sy-uzeit, amb7_tr TYPE e070-trkorr, amb7_dt TYPE sy-datum, amb7_uz TYPE sy-uzeit, END OF gy_lista.*************************************************************************** Definio de tababelas internas ***************************************************************************DATA: gt_req TYPE TABLE OF gy_req, gt_req_rel TYPE TABLE OF gy_req, gt_reqt TYPE TABLE OF gy_reqt, gt_reqt_rel TYPE TABLE OF gy_reqt, gt_req_obj TYPE TABLE OF gy_req_obj, gt_req_obj_rel TYPE TABLE OF gy_req_obj, gt_log_transp TYPE TABLE OF tstrfcofil, gt_amb_flow TYPE TABLE OF tmsfsysl, gt_amb_trans TYPE TABLE OF v_clidest, gt_ambiente TYPE TABLE OF gy_ambiente, gt_lista TYPE TABLE OF gy_lista.*************************************************************************** Definio de Tabelas Internas / Workareas ***************************************************************************DATA: gs_ambiente TYPE gy_ambiente, gs_lista TYPE gy_lista.*************************************************************************** Definio de Variveis ***************************************************************************DATA: gv_max_amb TYPE i.*************************************************************************** Definio de field_symbol ***************************************************************************FIELD-SYMBOLS: TYPE gy_req, TYPE gy_req, TYPE gy_reqt, TYPE gy_reqt, TYPE gy_req_obj, TYPE gy_req_obj, TYPE tmsfsysl, TYPE tstrfcofil, TYPE gy_ambiente, TYPE gy_lista.*************************************************************************** Definio de objetos ****************************************************************************************************************************************************** Definio de constantes ***************************************************************************CONSTANTS: gc_corr TYPE e071-pgmid VALUE 'CORR', gc_tabu TYPE e071-pgmid VALUE 'TABU', gc_e TYPE char1 VALUE 'E', gc_g TYPE char1 VALUE 'G', gc_a TYPE char1 VALUE 'A', gc_status TYPE e070-trstatus VALUE 'R'.*************************************************************************** Definio de Ranges ****************************************************************************************************************************************************** Definio de variveis ALV ***************************************************************************DATA: gt_header TYPE kkblo_t_listheader, gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.DATA: gt_sort TYPE TABLE OF slis_sortinfo_alv.DATA: gs_header TYPE kkblo_listheader, gs_layout TYPE slis_layout_alv, gs_sort TYPE slis_sortinfo_alv.*************************************************************************** Parmetros ***************************************************************************SELECTION-SCREEN BEGIN OF BLOCK bloco01 WITH FRAME TITLE TEXT-010.SELECT-OPTIONS: p_trkorr FOR e070-trkorr NO INTERVALS.SELECTION-SCREEN END OF BLOCK bloco01.*************************************************************************** Include ****************************************************************************************************************************************************** INITIALIZATION ***************************************************************************INITIALIZATION.*************************************************************************** AT SELECTION-SCREEN ***************************************************************************AT SELECTION-SCREEN.*************************************************************************** AT SELECTION-SCREEN OUTPUT ***************************************************************************AT SELECTION-SCREEN OUTPUT.*************************************************************************** AT SELECTION-SCREEN ON VALUE-REQUEST ****************************************************************************************************************************************************** START-OF-SELECTION ***************************************************************************START-OF-SELECTION.*** Obter ambientes PERFORM f_obter_ambiente. IF NOT gt_ambiente[] IS INITIAL.*** Obter informaes da request inicial PERFORM f_request_compare.*** Criando tabela de sada IF NOT gt_req[] IS INITIAL. PERFORM f_criar_saida.*** Processando request individualmente UNASSIGN: . LOOP AT gt_req ASSIGNING . READ TABLE gt_req_obj TRANSPORTING NO FIELDS WITH KEY trkorr = -trkorr BINARY SEARCH. UNASSIGN: . LOOP AT gt_req_obj ASSIGNING FROM sy-tabix.*** Obtendo request relacionadas IF -trkorr = -trkorr. PERFORM f_request_relacionada USING -trkorr -object -obj_name. ELSE. EXIT. ENDIF. ENDLOOP. ENDLOOP. ENDIF. IF NOT gt_lista[] IS INITIAL.*** Preenchendo status para lista final PERFORM f_status_lista.*** Exibindo resultado PERFORM f_gerar_alv. ENDIF. ENDIF.END-OF-SELECTION.*************************************************************************** FORMS ****************************************************************************&---------------------------------------------------------------------**& Form: f_obter_ambiente **& Descrio: Obtem ambientes e ordem de transporte **&---------------------------------------------------------------------*FORM f_obter_ambiente.*** Varivel local DATA: lv_ordem TYPE i VALUE 1.*** Obtendo ambientes CLEAR: gt_amb_flow, gt_amb_trans. FREE: gt_amb_flow, gt_amb_trans. CALL FUNCTION 'TMW_GET_TARGET_SYSTEMS' EXPORTING IV_SYSTEM = sy-sysid IV_CLIENT = sy-mandt TABLES ET_TARGETS = gt_amb_flow ET_TRANSLAYERS = gt_amb_trans EXCEPTIONS CANNOT_READ_CONFIGURATION = 1 OTHERS = 2. SORT gt_amb_flow ASCENDING BY sort.*** Obtendo descries IF sy-subrc EQ 0. CLEAR: gt_ambiente, gs_ambiente. FREE: gt_ambiente. SELECT SINGLE sysnam systxt INTO gs_ambiente FROM tmscsys WHERE sysnam = sy-sysid. gs_ambiente-ordem = lv_ordem. APPEND gs_ambiente TO gt_ambiente. UNASSIGN: . LOOP AT gt_amb_flow ASSIGNING . CLEAR: gs_ambiente. SELECT SINGLE sysnam systxt INTO gs_ambiente FROM tmscsys WHERE sysnam = -sysnam. lv_ordem = lv_ordem + 1. gs_ambiente-ordem = lv_ordem. APPEND gs_ambiente TO gt_ambiente. ENDLOOP. SORT gt_ambiente ASCENDING BY ordem. gv_max_amb = LINES( gt_ambiente ). ENDIF.ENDFORM. "f_obter_ambiente*&---------------------------------------------------------------------**& Form: f_request_compare **& Descrio: Obtem informao das request iniciais (filtro) **&---------------------------------------------------------------------*FORM f_request_compare.*** Obtendo lista de objetos por request CLEAR: gt_req. FREE: gt_req. SELECT trkorr as4user INTO TABLE gt_req FROM e070 WHERE trkorr IN p_trkorr AND trstatus = gc_status. SORT gt_req ASCENDING by trkorr. IF NOT gt_req[] IS INITIAL. CLEAR: gt_reqt. FREE: gt_reqt. SELECT trkorr as4text INTO TABLE gt_reqt FROM e07t FOR ALL ENTRIES IN gt_req WHERE trkorr = gt_req-trkorr. SORT gt_reqt ASCENDING BY trkorr.*** Obtendo objetos da request CLEAR: gt_req_obj. FREE: gt_req_obj. SELECT trkorr object obj_name pgmid INTO TABLE gt_req_obj FROM e071 FOR ALL ENTRIES IN gt_req WHERE trkorr = gt_req-trkorr.*** Restries de objetos*** CORR = textos*** TABU = TVDIR e TDDAT DELETE gt_req_obj WHERE pgmid = gc_corr. DELETE gt_req_obj WHERE object = gc_tabu. SORT gt_req_obj ASCENDING BY trkorr obj_name. ENDIF.ENDFORM. "f_request_compare*&---------------------------------------------------------------------**& Form: f_criar_saida **& Descrio: Criao da informao de sada **&---------------------------------------------------------------------*FORM f_criar_saida.*** Variveis locais DATA: lv_cmp_dt TYPE fieldname, lv_cmp_uz TYPE fieldname, lv_ordem TYPE char1. FIELD-SYMBOLS: TYPE any, TYPE any. CONSTANTS: lc_cmp_lst TYPE fieldname VALUE 'gs_lista-trs', lc_cmp_dt TYPE fieldname VALUE '_dt', lc_cmp_uz TYPE fieldname VALUE '_uz'.*** Montando incio da tabela de sada CLEAR: gt_lista. FREE: gt_lista. UNASSIGN: . LOOP AT gt_req_obj ASSIGNING . CLEAR: gs_lista. gs_lista-trkorr = -trkorr. gs_lista-object = -object. gs_lista-obj_name = -obj_name. UNASSIGN: . READ TABLE gt_req ASSIGNING WITH KEY trkorr = -trkorr BINARY SEARCH. IF sy-subrc EQ 0. gs_lista-as4user = -as4user. ENDIF. UNASSIGN: . READ TABLE gt_reqt ASSIGNING WITH KEY trkorr = -trkorr BINARY SEARCH. IF sy-subrc EQ 0. gs_lista-as4text = -as4text. ENDIF.*** Obtendo informaes de transporte para a request referenciada CLEAR: gt_log_transp. FREE: gt_log_transp. CALL FUNCTION 'STRF_READ_COFILE' EXPORTING IV_DIRTYPE = 'T' IV_TRKORR = gs_lista-trkorr TABLES TT_COFI_LINES = gt_log_transp EXCEPTIONS WRONG_CALL = 1 NO_INFO_FOUND = 2 OTHERS = 3. IF sy-subrc EQ 0.*** Obtendo informao transporte UNASSIGN: . LOOP AT gt_ambiente ASSIGNING . IF -ordem = 1.*** Obtendo data de ambiente DEV (ambiente 0)*** Parmetro de busca*** E = Criao de verses aps exportao UNASSIGN: . READ TABLE gt_log_transp ASSIGNING WITH KEY tarsystem = -sysnam function = gc_e. ELSE.*** Obtendo data de ambiente outros ambientes*** Parmetro de busca*** G = Gerao Abaps e telas*** A = Ativao de objetos de data dictionary UNASSIGN: . READ TABLE gt_log_transp ASSIGNING WITH KEY tarsystem = -sysnam function = gc_g. IF sy-subrc NE 0. UNASSIGN: . READ TABLE gt_log_transp ASSIGNING WITH KEY tarsystem = -sysnam function = gc_a. ENDIF. ENDIF. IF sy-subrc EQ 0. MOVE -ordem TO lv_ordem. CONCATENATE lc_cmp_lst lv_ordem lc_cmp_dt INTO lv_cmp_dt. ASSIGN (lv_cmp_dt) TO . CONCATENATE lc_cmp_lst lv_ordem lc_cmp_uz INTO lv_cmp_uz. ASSIGN (lv_cmp_uz) TO . = -trdate. = -trtime. ENDIF. ENDLOOP. ENDIF. APPEND gs_lista To gt_lista. ENDLOOP.ENDFORM. "f_criar_saida*&---------------------------------------------------------------------**& Form: f_request_relacionada **& Descrio: Obtem request relacionadas para os objetos da request **&---------------------------------------------------------------------*FORM f_request_relacionada USING pe_request TYPE e070-trkorr pe_object TYPE e071-object pe_program TYPE e071-obj_name.*** Obtendo outras request para cada objeto de uma request incial*** Restries de objetos*** CORR = textos*** TABU = TVDIR e TDDAT CLEAR: gt_req_obj_rel. FREE: gt_req_obj_rel. SELECT trkorr object obj_name pgmid INTO TABLE gt_req_obj_rel FROM e071 WHERE object = pe_object AND obj_name = pe_program.*** Restries de objetos*** CORR = textos*** TABU = TVDIR e TDDAT DELETE gt_req_obj_rel WHERE pgmid = gc_corr. DELETE gt_req_obj_rel WHERE object = gc_tabu. SORT gt_req_obj_rel ASCENDING BY trkorr obj_name. IF NOT gt_req_obj_rel[] IS INITIAL. CLEAR: gt_req_rel. FREE: gt_req_rel. SELECT trkorr as4user INTO TABLE gt_req_rel FROM e070 FOR ALL ENTRIES IN gt_req_obj_rel WHERE trkorr = gt_req_obj_rel-trkorr AND trstatus = gc_status. SORT gt_req_rel ASCENDING by trkorr. DELETE ADJACENT DUPLICATES FROM gt_req_rel COMPARING trkorr. IF NOT gt_req_rel[] IS INITIAL. CLEAR: gt_reqt_rel. FREE: gt_reqt_rel. SELECT trkorr as4text INTO TABLE gt_reqt_rel FROM e07t FOR ALL ENTRIES IN gt_req_rel WHERE trkorr = gt_req_rel-trkorr. SORT gt_reqt_rel ASCENDING BY trkorr.*** Obtendo informaes de transporte para as request PERFORM f_log_transporte USING pe_request pe_object pe_program. ENDIF. ENDIF.ENDFORM. "f_request_relacionada*&---------------------------------------------------------------------**& Form: f_log_transporte **& Descrio: Obtem logs de transporte **&---------------------------------------------------------------------*FORM f_log_transporte USING pe_request TYPE e070-trkorr pe_object TYPE e071-object pe_program TYPE e071-obj_name.*** Variveis locais DATA: lv_cmp_tr TYPE fieldname, lv_cmp_dt TYPE fieldname, lv_cmp_uz TYPE fieldname, lv_ordem TYPE char1. FIELD-SYMBOLS: TYPE any, TYPE any, TYPE any. CONSTANTS: lc_cmp_amb TYPE fieldname VALUE '-amb', lc_cmp_dt TYPE fieldname VALUE '_dt', lc_cmp_uz TYPE fieldname VALUE '_uz', lc_cmp_tr TYPE fieldname VALUE '_tr'.*** Log para requests iniciais UNASSIGN: . LOOP AT gt_req_rel ASSIGNING . CLEAR: gt_log_transp. FREE: gt_log_transp. CALL FUNCTION 'STRF_READ_COFILE' EXPORTING IV_DIRTYPE = 'T' IV_TRKORR = -trkorr TABLES TT_COFI_LINES = gt_log_transp EXCEPTIONS WRONG_CALL = 1 NO_INFO_FOUND = 2 OTHERS = 3. IF sy-subrc EQ 0.*** Obtendo informao transporte UNASSIGN: . LOOP AT gt_ambiente ASSIGNING . IF -ordem = 1.*** Obtendo data de ambiente DEV (ambiente 0)*** Parmetro de busca*** E = Criao de verses aps exportao UNASSIGN: . READ TABLE gt_log_transp ASSIGNING WITH KEY tarsystem = -sysnam function = gc_e. ELSE.*** Obtendo data de ambiente outros ambientes*** Parmetro de busca*** G = Gerao Abaps e telas*** A = Ativao de objetos de data dictionary UNASSIGN: . READ TABLE gt_log_transp ASSIGNING WITH KEY tarsystem = -sysnam function = gc_g. IF sy-subrc NE 0. UNASSIGN: . READ TABLE gt_log_transp ASSIGNING WITH KEY tarsystem = -sysnam function = gc_a. ENDIF. ENDIF. IF sy-subrc EQ 0. UNASSIGN: . READ TABLE gt_lista ASSIGNING WITH KEY trkorr = pe_request object = pe_object obj_name = pe_program. IF sy-subrc EQ 0. MOVE -ordem TO lv_ordem. CONCATENATE lc_cmp_amb lv_ordem lc_cmp_dt INTO lv_cmp_dt. ASSIGN (lv_cmp_dt) TO . CONCATENATE lc_cmp_amb lv_ordem lc_cmp_uz INTO lv_cmp_uz. ASSIGN (lv_cmp_uz) TO . CONCATENATE lc_cmp_amb lv_ordem lc_cmp_tr INTO lv_cmp_tr. ASSIGN (lv_cmp_tr) TO . IF ( -trdate > ) OR ( ( -trdate = ) AND ( -trtime > ) ). = -trdate. = -trtime. = -trkorr. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. ENDLOOP.ENDFORM. "f_log_transporte*&---------------------------------------------------------------------**& Form: f_log_transporte **& Descrio: Obtem logs de transporte **&---------------------------------------------------------------------*FORM f_status_lista.*** Variveis locais DATA: lv_cont TYPE i, lv_contp TYPE i, lv_cont_c TYPE char1, lv_contp_c TYPE char1, lv_cmp_a TYPE fieldname, lv_cmp_p TYPE fieldname, lv_dif TYPE i. DATA: lv_nome TYPE char20, lv_info TYPE char20, lv_symbol TYPE icons-text. FIELD-SYMBOLS: TYPE any, TYPE any. CONSTANTS: lc_cmp_amb TYPE fieldname VALUE '-amb', lc_cmp_tr TYPE fieldname VALUE '_tr', lc_cmp_ini TYPE fieldname VALUE '-trkorr'.*** Verificando status UNASSIGN: . LOOP AT gt_lista ASSIGNING . lv_cont = 1. lv_contp = lv_cont + 1. WHILE lv_cont