CE PLUS - Nota 012152

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Agrupamento de Câmbio

Data/Hora da Publicação: 02/05/2012 00:00:00

Data/Hora Última Alteração: 12/07/2012 11:24:10

Descrição da Nota: FUNÇÃO PARA MENSAGEM (F6D) DE ALERTA P/ LOG DE AUDITORIA - CARREGA_LOG

Sintoma

Criada uma função somente no F6D (não enviar para cliente), para verificar se o programa que está

sendo alterado, ou função ou tabela na SE54, possuem o comando de carrega_log para as instruções de

alteração de dados nas tabelas (INSERT, MODIFY, DELETE E UPDATE).

 

 

Solução

Criada uma função somente no F6D (não enviar para cliente), para verificar se o programa que está

sendo alterado, ou função ou tabela na SE54, possuem o comando de carrega_log para as instruções de

alteração de dados nas tabelas (INSERT, MODIFY, DELETE E UPDATE).

 

Versões Tratadas

9.0

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 12152 Data: 02/05/2012 Hora: 10:20:24

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 12152

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 8.0

Pacote                   : 00011

Agrupamento              : 00113

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote Descrição Breve

 

----------------------------------------------------------------------------------------------------

Texto Rápido:

FUNÇÃO PARA MENSAGEM (F6D) DE ALERTA P/ LOG DE AUDITORIA - CARREGA_LOG

----------------------------------------------------------------------------------------------------

Palavras Chave:

FUNÇÃO PARA MENSAGEM (F6D) DE ALERTA P/ LOG DE AUDITORIA - CARREGA_LOG

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

FUNC /PWS/ZYGL_VERIFICA_TRILHA

REPS /PWS/LZYGLGFUXX

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em FUNC /PWS/ZYGL_VERIFICA_TRILHA

 

* >> Início da inclusão:

FUNCTION /pws/zygl_verifica_trilha.

  TYPES: BEGIN OF sewor_working_area,

           object            LIKE dwinactiv-object,

           obj_name          LIKE dwinactiv-obj_name,

           uname             LIKE dwinactiv-uname,

           foreign_flag      TYPE c,

           delet_flag        TYPE char1,

           main_item_object  TYPE dwinactiv-object,

           main_item         TYPE rsnewleng-programm,

           devclass          TYPE tadir-devclass,

         END OF sewor_working_area.

  DATA: it_tokens_novo    TYPE  TABLE OF stoken,

        it_tokens_velho   TYPE  TABLE OF stoken,

        it_tokens_aux     TYPE  TABLE OF stoken,

        it_statements_n   TYPE  TABLE OF sstmnt,

        it_statements_v   TYPE  TABLE OF sstmnt,

        it_trdir          TYPE  TABLE OF trdir,

        it_keywords       TYPE  abapprog,

        it_reps_velho     TYPE  abapprog,

        it_reps_novo      TYPE  abapprog,

        aux_versno        TYPE  vrsd-versno,

        row_ini           TYPE  stoken-row,

        row_fin           TYPE  stoken-row,

        aux_comando(1)    TYPE  c,

        v_lines_velho(7)  TYPE  n,

        v_lines_novo(7)   TYPE  n,

        v_prog            TYPE  vrsd-objname,

        v_type            TYPE  vrsd-objtype,

        v_form_name       TYPE  tvimf-formname,

        wa_tokens         LIKE  LINE  OF it_tokens_novo,

        wa_tokens_aux     LIKE  LINE  OF it_tokens_novo,

        fpool_name        LIKE  trdir-name.

  DATA: cp_w_items TYPE sewor_working_area OCCURS 100 WITH HEADER LINE.

  DATA: trdir_sec LIKE trdir OCCURS 1 WITH HEADER LINE.

  DATA: BEGIN OF itab_tvimf OCCURS 0.

          INCLUDE STRUCTURE tvimf.

  DATA:   END OF itab_tvimf.

  e_diferente = 'N'.

  CHECK i_progname(05) EQ '/PWS/'.

  IMPORT cp_w_items[] FROM MEMORY ID 'TABOBJTRILHA'.

  IMPORT fpool_name   FROM MEMORY ID 'TABOBJPROG'.

  IF i_progtype = 'TABL'.

    SELECT * FROM tvimf

      INTO TABLE itab_tvimf

     WHERE tabname EQ i_progname.

    IF sy-subrc NE 0.

      e_diferente = 'S'.

    ELSE.

      APPEND 'INCLUDE' TO it_keywords.

      MOVE: fpool_name TO v_prog.

      READ REPORT v_prog INTO it_reps_novo.

      SCAN ABAP-SOURCE it_reps_novo

           TOKENS      INTO it_tokens_novo

           STATEMENTS  INTO it_statements_n

           KEYWORDS    FROM it_keywords.

      LOOP AT it_tokens_novo INTO wa_tokens.

        IF wa_tokens-str(5) NE '/PWS/'.

          DELETE it_tokens_novo INDEX sy-tabix.

        ENDIF.

      ENDLOOP.

      LOOP AT itab_tvimf.

        CLEAR:   it_keywords,

                 it_reps_velho,

                 it_tokens_velho,

                 it_statements_v,

                 row_ini,

                 row_fin.

        REFRESH: it_keywords,

                 it_reps_velho,

                 it_tokens_velho,

                 it_statements_v.

        MOVE: itab_tvimf-formname TO v_form_name.

        APPEND 'FORM' TO it_keywords.

        LOOP AT it_tokens_novo INTO wa_tokens.

          MOVE: wa_tokens-str TO v_prog.

          READ REPORT v_prog INTO it_reps_velho.

          SCAN ABAP-SOURCE it_reps_velho

               TOKENS      INTO it_tokens_velho

               STATEMENTS  INTO it_statements_v

               KEYWORDS    FROM it_keywords.

          LOOP AT it_tokens_velho INTO wa_tokens_aux.

            IF wa_tokens_aux-str EQ v_form_name.

              row_ini = wa_tokens_aux-row.

            ENDIF.

            row_fin = wa_tokens_aux-row.

            IF NOT row_ini IS INITIAL.

              IF wa_tokens_aux-str = 'FORM'.

                EXIT.

              ENDIF.

            ENDIF.

          ENDLOOP.

          IF NOT row_ini IS INITIAL.

            EXIT.

          ENDIF.

        ENDLOOP.

        CLEAR: it_tokens_velho,

               it_statements_v,

               it_keywords.

        REFRESH: it_tokens_velho,

                 it_statements_v,

                 it_keywords.

        APPEND 'PERFORM' TO it_keywords.

        IF row_ini IS INITIAL.

          e_diferente = 'S'.

          EXIT.

        ENDIF.

        SCAN ABAP-SOURCE it_reps_velho

             TOKENS      INTO it_tokens_velho

             STATEMENTS  INTO it_statements_v

             KEYWORDS    FROM it_keywords.

        e_diferente = 'S'.

        LOOP AT it_tokens_velho INTO wa_tokens_aux.

          IF wa_tokens_aux-str(11) EQ 'CARREGA_LOG'.

            IF wa_tokens_aux-row >= row_ini AND

               wa_tokens_aux-row <  row_fin.

              e_diferente = 'N'.

              EXIT.

            ENDIF.

          ENDIF.

        ENDLOOP.

      ENDLOOP.

    ENDIF.

  ELSE.

    APPEND 'INSERT'    TO it_keywords.

    APPEND 'DELETE'    TO it_keywords.

    APPEND 'UPDATE'    TO it_keywords.

    APPEND 'MODIFY'    TO it_keywords.

    CHECK NOT cp_w_items[] IS INITIAL.

    LOOP AT cp_w_items.

      CLEAR: it_reps_novo,

             it_reps_velho,

             it_statements_n,

             it_statements_v,

             it_tokens_aux,

             row_ini,

             row_fin.

      REFRESH: it_reps_novo,

               it_reps_velho,

               it_statements_n,

               it_statements_v,

               it_tokens_aux.

      MOVE: cp_w_items-object    TO v_type,

            cp_w_items-obj_name  TO v_prog.

      SELECT MAX( versno )

        FROM vrsd

        INTO (aux_versno)

       WHERE objname = v_prog

         AND objtype = v_type.

      IF v_type EQ 'FUNC'.

        CALL FUNCTION 'SVRS_GET_REPS_FROM_OBJECT'

             EXPORTING

                  destination = ''

                  object_name = v_prog

                  object_type = v_type

                  versno      = '00000'

             TABLES

                  repos_tab   = it_reps_novo

                  trdir_tab   = trdir_sec

             EXCEPTIONS

                  no_version  = 01.

      ELSE.

        READ REPORT v_prog INTO it_reps_novo.

      ENDIF.

      CALL FUNCTION 'SVRS_GET_REPS_FROM_OBJECT'

           EXPORTING

                object_name = v_prog

                object_type = v_type

                versno      = aux_versno

           TABLES

                repos_tab   = it_reps_velho

                trdir_tab   = it_trdir

           EXCEPTIONS

                no_version  = 1

                OTHERS      = 2.

      SCAN ABAP-SOURCE it_reps_novo

           TOKENS      INTO it_tokens_novo

           STATEMENTS  INTO it_statements_n

           KEYWORDS    FROM it_keywords.

      SCAN ABAP-SOURCE it_reps_velho

           TOKENS      INTO it_tokens_velho

           STATEMENTS  INTO it_statements_v

           KEYWORDS    FROM it_keywords.

      it_tokens_aux[] = it_tokens_novo[].

      aux_comando = 'N'.

      LOOP AT it_tokens_novo INTO wa_tokens.

        IF row_ini IS INITIAL.

          row_ini = 1.

        ENDIF.

        IF sy-tabix > 1.

          IF wa_tokens-str(6) = 'MODIFY' OR

             wa_tokens-str(6) = 'INSERT' OR

             wa_tokens-str(6) = 'DELETE' OR

             wa_tokens-str(6) = 'UPDATE'.

            row_fin = wa_tokens-row.

            IF aux_comando = 'N'.

              DELETE it_tokens_aux WHERE row >= row_ini

                                     AND row <  row_fin.

            ENDIF.

            row_ini = wa_tokens-row.

            aux_comando = 'N'.

            IF wa_tokens-str(6) = 'UPDATE'.

              aux_comando = 'S'.

            ENDIF.

          ELSE.

            IF wa_tokens-str(7)   = '/PWS/ZY' AND

               wa_tokens-str+9(1) = 'T'.

              aux_comando = 'S'.

            ENDIF.

          ENDIF.

        ELSE.

          IF wa_tokens-str(6) = 'UPDATE'.

            aux_comando = 'S'.

          ENDIF.

        ENDIF.

      ENDLOOP.

      IF aux_comando = 'N'.

        DELETE it_tokens_aux WHERE row >= row_ini.

      ENDIF.

      LOOP AT it_tokens_aux INTO wa_tokens.

        wa_tokens-row = 0.

        MODIFY it_tokens_aux INDEX sy-tabix FROM wa_tokens.

      ENDLOOP.

      it_tokens_novo[] = it_tokens_aux[].

      DESCRIBE TABLE it_tokens_novo LINES v_lines_novo.

      CLEAR:   it_tokens_aux,

               row_ini.

      REFRESH: it_tokens_aux.

      it_tokens_aux[] = it_tokens_velho[].

      aux_comando = 'N'.

      LOOP AT it_tokens_velho INTO wa_tokens.

        IF row_ini IS INITIAL.

          row_ini = 1.

        ENDIF.

        IF sy-tabix > 1.

          IF wa_tokens-str(6) = 'MODIFY' OR

             wa_tokens-str(6) = 'INSERT' OR

             wa_tokens-str(6) = 'DELETE' OR

             wa_tokens-str(6) = 'UPDATE'.

            row_fin = wa_tokens-row.

            IF aux_comando = 'N'.

              DELETE it_tokens_aux WHERE row >= row_ini

                                     AND row <  row_fin.

            ENDIF.

            row_ini = wa_tokens-row.

            aux_comando = 'N'.

            IF wa_tokens-str(6) = 'UPDATE'.

              aux_comando = 'S'.

            ENDIF.

          ELSE.

            IF wa_tokens-str(7)   = '/PWS/ZY' AND

               wa_tokens-str+9(1) = 'T'.

              aux_comando = 'S'.

            ENDIF.

          ENDIF.

        ELSE.

          IF wa_tokens-str(6) = 'UPDATE'.

            aux_comando = 'S'.

          ENDIF.

        ENDIF.

      ENDLOOP.

      IF aux_comando = 'N'.

        DELETE it_tokens_aux WHERE row >= row_ini.

      ENDIF.

      LOOP AT it_tokens_aux INTO wa_tokens.

        wa_tokens-row = 0.

        MODIFY it_tokens_aux INDEX sy-tabix FROM wa_tokens.

      ENDLOOP.

      it_tokens_velho[] = it_tokens_aux[].

      DESCRIBE TABLE it_tokens_velho LINES v_lines_velho.

      IF v_lines_novo > v_lines_velho.

        e_diferente = 'S'.

        EXIT.

      ENDIF.

      IF it_tokens_velho[] <> it_tokens_novo[].

        e_diferente = 'S'.

        EXIT.

      ENDIF.

    ENDLOOP.

  ENDIF.

  IF e_diferente = 'S'.

    CALL FUNCTION 'POPUP_TO_INFORM'

       EXPORTING

           titel  = ' pw.CE - Trilha de Log de Auditoria.'

          txt1   = ' VERIFICAR SE FOI INSERIDO O COMANDO CARREGA_LOG'

          txt2   = ' EM TODOS OS PONTOS DE MANUTENÇÃO NAS TABELAS DO'

         txt3   = ' BANCO DE DADOS (INSERT, DELETE, MODIFY, UPDATE).'

       EXCEPTIONS

           OTHERS = 0.

  ENDIF.

ENDFUNCTION.

* << Fim da inclusão

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/LZYGLGFUXX

 

INCLUDE /PWS/LZYGLGFU01.

INCLUDE /PWS/LZYGLGFU02.

INCLUDE /PWS/LZYGLGFU03.

INCLUDE /PWS/LZYGLGFU04.

INCLUDE /PWS/LZYGLGFU05.

INCLUDE /PWS/LZYGLGFU06.

INCLUDE /PWS/LZYGLGFU07.

INCLUDE /PWS/LZYGLGFU08.

* >> Início da inclusão:

INCLUDE /PWS/LZYGLGFU09.

* << Fim da inclusão