Foro -Documentación -Código fuente -Contacto -Empleo

Buscar

Traducir

Amazon

Z_VERIFICA_USER_EXIT PDF Imprimir E-mail
Usar puntuación: / 0
MaloBueno 
Código fuente - Informativos
Lunes, 07 de Julio de 2003 21:05
Busca userexits en un programa o transacción
*======================================================================*
* PROGRAMADOR: FÁBIO ALESSANDRO COMASSETTO
*----------------------------------------------------------------------*
* PROGRAMA...: Z_VERIFICA_USER_EXIT
*----------------------------------------------------------------------*
* DATA.......: 15/02/2001
*----------------------------------------------------------------------*
* OBJETIVO...: PESQUISAR USER-EXITS EM UMA DETERMINADA TRANSAÇÃO    OU
*              PROGRAMA.                                               *
*----------------------------------------------------------------------*
* PARÂMETROS.: P_PROG  = NOME DO PROGRAMA A SER PESQUISADO
*              P_TCODE = NOME DA TRANSAÇÃO A SER PESQUISADA
*              OBS.: UM DOS DOIS PARÂMETROS ACIMA DEVE SER ESPECIFICADO
*
*              P_INCL  = DETERMINA SE A PESQUISA DEVE LEVAR         EM
*                        CONSIDERAÇÃO OS INCLUDES.
*              P_FUNC  = DETERMINA SE A PESQUISA DEVE LEVAR         EM
*                        CONSIDERAÇÃO AS FUNÇÕES.
*              P_SUBMIT= DETERMINA SE A PESQUISA DEVE LEVAR         EM
*                        CONSIDERAÇÃO DEMAIS PROGRAMAS CHAMADOS    POR
*                        SUBMIT.
*
*              P_NIVEL = DETERMINA EM ATÉ QUAL NÍVEL A PESQUISA   SERÁ
*                        FEITA DENTRO DOS INCLUDES, FUNÇÕES E   DEMAIS
*                        PROGRAMAS. NO NÍVEL 1 SOMENTE SERÃO   LEVADOS
*                        EM CONSIDERAÇÃO O PROGRAMA RAIZ.   NO NÍVEL 2
*                        SERÁ FEITA UMA PESQUISA NOS INCLUDES, FUNÇÕES
*                        OS QUAIS ESTÃO NOS INCLUDES, FUNÇÕES DO NÍVEL
*                        1 E ASSIM SUCESSIVAMENTE.
*
*              OBS.: NO PARÂMETRO P_NIVEL INFORMAR VALORES BAIXO, POIS
*              QUANTO MAIOR O NÚMERO, MAIOR A QUANTIDADE DE     CÓDIGO
*              A SER ANALIZADA
*----------------------------------------------------------------------*
*
*======================================================================*

REPORT z_verifica_user_exit LINE-SIZE 140 NO STANDARD PAGE HEADING.

*----------------------------------------------------------------------*
* CONSTANTS
*----------------------------------------------------------------------*
CONSTANTS: C_USER_EXIT(22) TYPE C VALUE 'USEREXIT',
           C_ENHANCE(22)   TYPE C VALUE 'CALL CUSTOMER-FUNCTION',
           c_funcao_1(13)  TYPE c VALUE 'CALLFUNCTION''',
           c_funcao_2(13)  TYPE c VALUE 'CALL FUNCTION',
           c_include(07)   TYPE c VALUE 'INCLUDE',
           c_submit(06)    TYPE c VALUE 'SUBMIT',
           c_comentario    TYPE c VALUE '*',
           c_ponto         TYPE c VALUE '.',
           c_aspa          TYPE c VALUE '''',
           c_x             TYPE c VALUE 'X'.

*----------------------------------------------------------------------*
* TABELAS INTERNAS
*----------------------------------------------------------------------*
DATA: BEGIN OF ti_programa OCCURS 0,
            codigo_fonte LIKE rssource-line,
      END   OF ti_programa.

DATA: BEGIN OF ti_includes OCCURS 0,
            nome     LIKE sy-repid,
            nivel(2) TYPE n,
      END   OF ti_includes.

DATA: BEGIN OF ti_user_exit OCCURS 0,
            programa     LIKE sy-repid,
            linha(10)    TYPE n,
            codigo_fonte LIKE rssource-line,
            nivel(2)     TYPE n,
      END   OF ti_user_exit.

*----------------------------------------------------------------------*
* VARIÁVEIS GLOBAIS
*----------------------------------------------------------------------*
DATA: vg_caracter     TYPE c,
      vg_palavra(50)  TYPE c,
      vg_inicial      LIKE sy-index,
      vg_conta_aspa   TYPE n,
      vg_pname LIKE   tfdir-pname,
      vg_texto(50)    TYPE c,
      vg_contador     LIKE sy-tfill,
      vg_nivel(2)     TYPE n,
      vg_ini_contagem TYPE c, " INDICA QUE DEVE SER INICIADA A CONTAGEM
      vg_conta_espaco TYPE n. " TOTAL DE ESPAÇOS ( MÁXIMO 2 )

*----------------------------------------------------------------------*
* PARAMETERS
*----------------------------------------------------------------------*

*- DADOS OBRIGATÓRIOS.
SELECTION-SCREEN BEGIN OF BLOCK bl01 WITH FRAME TITLE text-001 .
PARAMETERS: p_prog  LIKE sy-repid,
            p_tcode LIKE sy-tcode.
SELECTION-SCREEN END   OF BLOCK bl01.

*- DADOS OPCIONAIS.
SELECTION-SCREEN BEGIN OF BLOCK bl02 WITH FRAME TITLE text-002.
PARAMETERS: P_INCL      AS CHECKBOX,
            P_FUNC      AS CHECKBOX,
            P_SUBMIT    AS CHECKBOX,
            p_nivel(2) TYPE n.
SELECTION-SCREEN END   OF BLOCK bl02.

*----------------------------------------------------------------------*
* INÍCIO
*----------------------------------------------------------------------*
START-OF-SELECTION.


*- CONSISTÊNCIAS DOS PARÂMETROS.
  PERFORM consisti_parametros.

*- INICIALIZA TABELA.
  PERFORM inicializa_tabela.

*- VERIFICA SE NO PROGRAMA EXISTE ALGUM INCLUDE,FUNÇÃO OU SUBMIT.
  PERFORM verifica_include_funcao_submit.

*- ANALISA OS INCLUDES E PROCURA POR USER EXIT.
  PERFORM procura_user_exit.

*- ANALISA OS INCLUDES E PROCURA POR USER EXIT.
  PERFORM PROCURA_ENHANCEMENTS.

*- EXIBE TODAS USER EXIT ENCONTRADAS.
  PERFORM exibe_user_exit.

*----------------------------------------------------------------------*
* FIM
*----------------------------------------------------------------------*
END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  PROCURA_USER_EXIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM procura_user_exit.

*- VERIFICA SE NOS INCLUDES SELECIONADOS EXISTEM USER EXITS.
  LOOP AT ti_includes.

*- ESVAZIA TABELA INTERNA.
    REFRESH ti_programa.

*- REALIZA LEITURA DO INCLUDE ARMAZENANDO-O EM TABELA INTERNA
    READ REPORT ti_includes-nome INTO ti_programa.

    LOOP AT ti_programa.

*- VERIFICA SE NA LINHA DO PROGRAMA EXISTE ALGUM INCLUDE.
      SEARCH ti_programa-codigo_fonte FOR c_user_exit.
*- SE ENCONTROU INCLUDE E SE A LINHA NÃO ESTÁ COMENTADA...
      IF  sy-subrc EQ 0
      AND ti_programa-codigo_fonte+0(1) NE c_comentario.
        CLEAR ti_user_exit.
*- REMOVE ESPAÇOS NO INÍCIO DA STRING.
        SHIFT ti_programa-codigo_fonte LEFT DELETING LEADING space.
        MOVE: ti_includes-nome         TO ti_user_exit-programa,
              sy-tabix                 TO ti_user_exit-linha,
              ti_programa-codigo_fonte TO ti_user_exit-codigo_fonte,
              ti_includes-nivel        TO ti_user_exit-nivel.
        APPEND ti_user_exit.
      ENDIF.

    ENDLOOP.

  ENDLOOP.

ENDFORM.                               " PROCURA_USER_EXIT

*&---------------------------------------------------------------------*
*&      Form  PROCURA_ENHANCEMENTS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PROCURA_ENHANCEMENTS.

*- VERIFICA SE NOS INCLUDES SELECIONADOS EXISTEM USER EXITS.
  LOOP AT ti_includes.

*- ESVAZIA TABELA INTERNA.
    REFRESH ti_programa.

*- REALIZA LEITURA DO INCLUDE ARMAZENANDO-O EM TABELA INTERNA
    READ REPORT ti_includes-nome INTO ti_programa.

    LOOP AT ti_programa.

*- VERIFICA SE NA LINHA DO PROGRAMA EXISTE ALGUM INCLUDE.
      SEARCH TI_PROGRAMA-CODIGO_FONTE FOR C_ENHANCE.
*- SE ENCONTROU INCLUDE E SE A LINHA NÃO ESTÁ COMENTADA...
      IF  sy-subrc EQ 0
      AND ti_programa-codigo_fonte+0(1) NE c_comentario.
        CLEAR ti_user_exit.
*- REMOVE ESPAÇOS NO INÍCIO DA STRING.
        SHIFT ti_programa-codigo_fonte LEFT DELETING LEADING space.
        MOVE: ti_includes-nome         TO ti_user_exit-programa,
              sy-tabix                 TO ti_user_exit-linha,
              ti_programa-codigo_fonte TO ti_user_exit-codigo_fonte,
              ti_includes-nivel        TO ti_user_exit-nivel.
        APPEND ti_user_exit.
      ENDIF.

    ENDLOOP.

  ENDLOOP.

ENDFORM.                               " PROCURA_ENHANCEMENTS

*&---------------------------------------------------------------------*
*&      Form  EXIBE_USER_EXIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM exibe_user_exit.
  PERFORM cabecalho.
  PERFORM user_exit_nao_encontrada.
  PERFORM lista_user_exit_encontrada.
  PERFORM rodape.
ENDFORM.                               " EXIBE_USER_EXIT

*&---------------------------------------------------------------------*
*&      Form  PROCURA_INCLUDE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM procura_include.

  CLEAR vg_palavra.
*- VERIFICA SE NA LINHA DO PROGRAMA EXISTE ALGUM INCLUDE.
  SEARCH ti_programa-codigo_fonte FOR c_include.
*- SE ENCONTROU INCLUDE E SE A LINHA NÃO ESTÁ COMENTADA...
  IF  sy-subrc EQ 0
  AND ti_programa-codigo_fonte+0(1) NE c_comentario.
*- VERIFICA TODOS OS 72 CARACTERES DA LINHA PARA MONTAR NOME DO INCLUDE
    DO 72 TIMES.
      vg_inicial = sy-index - 1.
      MOVE ti_programa-codigo_fonte+vg_inicial(1) TO vg_caracter.
      IF NOT vg_caracter IS INITIAL.
*- VERIFICA SE NÃO É FIM DO COMANDO.
        IF vg_caracter EQ c_ponto.
          EXIT.
        ENDIF.
*- MONTA PALAVRA.
        CONCATENATE vg_palavra vg_caracter INTO vg_palavra.
*- CONVERTE PARA MAÍUSCULA PARA FUTURA COMPARAÇÃO.
        TRANSLATE vg_palavra TO UPPER CASE.
*- SE ENCONTROU ALGUM INCLUDE
        IF vg_palavra EQ c_include.
          CLEAR vg_palavra.
        ENDIF.
      ENDIF.
    ENDDO.
*- SALVA NOME DO INCLUDE PARA FUTURA PESQUISA POR USER EXIT.
    READ TABLE ti_includes WITH KEY nome = vg_palavra.
    IF NOT sy-subrc IS INITIAL.
      IF vg_nivel LE p_nivel.
        MOVE: vg_palavra TO ti_includes-nome,
              vg_nivel   TO ti_includes-nivel.
        APPEND ti_includes.
      ENDIF.
    ENDIF.

  ENDIF.

ENDFORM.                               " PROCURA_INCLUDE

*&---------------------------------------------------------------------*
*&      Form  PROCURA_FUNCAO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM procura_funcao.

  CLEAR: vg_conta_aspa,
         vg_palavra.

*- VERIFICA SE NA LINHA DO PROGRAMA EXISTE ALGUM INCLUDE.
  SEARCH ti_programa-codigo_fonte FOR c_funcao_2.
*- SE ENCONTROU INCLUDE E SE A LINHA NÃO ESTÁ COMENTADA...
  IF  sy-subrc EQ 0
  AND ti_programa-codigo_fonte+0(1) NE c_comentario.
*- VERIFICA TODOS OS 72 CARACTERES DA LINHA PARA MONTAR NOME DO INCLUDE
    DO 72 TIMES.
      vg_inicial = sy-index - 1.
      MOVE ti_programa-codigo_fonte+vg_inicial(1) TO vg_caracter.
      IF NOT vg_caracter IS INITIAL.
*- VERIFICA SE NÃO É FIM DO COMANDO.
        IF vg_caracter EQ c_aspa.
          ADD 1 TO vg_conta_aspa.
          IF vg_conta_aspa EQ 2.
            EXIT.
          ENDIF.
        ENDIF.
*- MONTA PALAVRA.
        CONCATENATE vg_palavra vg_caracter INTO vg_palavra.
*- CONVERTE PARA MAÍUSCULA PARA FUTURA COMPARAÇÃO.
        TRANSLATE vg_palavra TO UPPER CASE.
*- SE ENCONTROU ALGUM INCLUDE
        IF vg_palavra EQ c_funcao_1.
          CLEAR vg_palavra.
        ENDIF.
      ENDIF.
    ENDDO.
*- PESQUISA NOME DA FUNÇÃO PARA FUTURA PESQUISA POR USER EXIT.
    CLEAR vg_pname.
    SELECT SINGLE pname
           INTO   vg_pname
           FROM   tfdir
           WHERE  funcname EQ vg_palavra.
    IF sy-subrc EQ 0.

      READ TABLE ti_includes WITH KEY nome = vg_pname.
      IF NOT sy-subrc IS INITIAL.
        IF vg_nivel LE p_nivel.
          MOVE: vg_pname TO ti_includes-nome,
                vg_nivel TO ti_includes-nivel.
          APPEND ti_includes.
        ENDIF.
      ENDIF.

    ENDIF.
  ENDIF.

ENDFORM.                               " PROCURA_FUNCAO

*&---------------------------------------------------------------------*
*&      Form  VERIFICA_INCLUDE_FUNCAO_SUBMIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM verifica_include_funcao_submit.

  LOOP AT ti_includes.

    ADD 1 TO vg_contador.
    DESCRIBE TABLE ti_includes.
    PERFORM evitar_time_out USING sy-tfill.
    MOVE ti_includes-nivel TO vg_nivel.
    ADD 1 TO vg_nivel.

*- ESVAZIA TABELA INTERNA.
    REFRESH ti_programa.

*- REALIZA LEITURA DO INCLUDE/FUNÇÃO ARMAZENANDO EM TABELA INTERNA
    READ REPORT ti_includes-nome INTO ti_programa.

    LOOP AT ti_programa.

*- PROCURA POR INCLUDES.
      IF p_incl EQ c_x.
        PERFORM procura_include.
      ENDIF.
*- PROCURA POR FUNÇÃO.
      IF p_func EQ c_x.
        PERFORM procura_funcao.
      ENDIF.
*- PROCURA POR SUBMIT.
      IF p_submit EQ c_x.
        PERFORM procura_submit.
      ENDIF.

    ENDLOOP.

  ENDLOOP.

ENDFORM.                               " VERIFICA_INCLUDE_FUNCAO_SUBMIT

*&---------------------------------------------------------------------*
*&      Form  EVITAR_TIME_OUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_SY_TFILL  text
*      -->P_SY_SUBRC  text
*----------------------------------------------------------------------*
FORM evitar_time_out USING    p_sy_tfill.

  DATA: vl_total(10) TYPE n,
        vl_atual(10) TYPE n.

  MOVE: p_sy_tfill  TO vl_total,
        vg_contador TO vl_atual.

  CONCATENATE 'Total:' vl_total '-' 'Atual:' vl_atual
         INTO vg_texto
         SEPARATED BY space.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
       EXPORTING
            text = vg_texto.


ENDFORM.                               " EVITAR_TIME_OUT

*&---------------------------------------------------------------------*
*&      Form  PROCURA_SUBMIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM procura_submit.

  CLEAR: vg_conta_espaco, vg_palavra, vg_ini_contagem.

*- VERIFICA SE NA LINHA DO PROGRAMA EXISTE ALGUM INCLUDE.
  SEARCH ti_programa-codigo_fonte FOR c_submit.
*- SE ENCONTROU INCLUDE E SE A LINHA NÃO ESTÁ COMENTADA...
  IF  sy-subrc EQ 0
  AND ti_programa-codigo_fonte+0(1) NE c_comentario.
*- VERIFICA TODOS OS 72 CARACTERES DA LINHA PARA MONTAR NOME DO INCLUDE
    DO 72 TIMES.
      vg_inicial = sy-index - 1.
      MOVE ti_programa-codigo_fonte+vg_inicial(1) TO vg_caracter.
      IF vg_ini_contagem EQ c_x AND vg_caracter IS INITIAL.
        ADD 1 TO vg_conta_espaco.
      ENDIF.

      IF NOT vg_caracter IS INITIAL.
        MOVE c_x TO vg_ini_contagem.
        IF vg_caracter EQ c_ponto.
          EXIT.
        ENDIF.
*- MONTA PALAVRA.
        IF vg_conta_espaco LT 2.
          CONCATENATE vg_palavra vg_caracter INTO vg_palavra.
*- CONVERTE PARA MAÍUSCULA PARA FUTURA COMPARAÇÃO.
          TRANSLATE vg_palavra TO UPPER CASE.
*- SE ENCONTROU ALGUM INCLUDE
          IF vg_palavra EQ c_submit.
            CLEAR vg_palavra.
          ENDIF.
        ELSE.
          EXIT.
        ENDIF.
      ENDIF.
    ENDDO.
*- PESQUISA NOME DA FUNÇÃO PARA FUTURA PESQUISA POR USER EXIT.
    READ TABLE ti_includes WITH KEY nome = vg_palavra.
    IF NOT sy-subrc IS INITIAL.
      IF vg_nivel LE p_nivel.
        MOVE: vg_palavra TO ti_includes-nome,
              vg_nivel   TO ti_includes-nivel.
        APPEND ti_includes.
      ENDIF.
    ENDIF.
  ENDIF.


ENDFORM.                               " PROCURA_SUBMIT

*&---------------------------------------------------------------------*
*&      Form  CONSISTI_PARAMETROS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM consisti_parametros.

  IF p_nivel IS INITIAL.
    MOVE 1 TO p_nivel.
  ENDIF.

  IF p_prog IS INITIAL AND p_tcode IS INITIAL.
*- NOME DO PROGRAMA E NOME DA TRANSAÇÃO NÃO PODEM SER NULOS. UM DELES
*- DEVE SER INFORMADO.
    MESSAGE ID 'ZF' TYPE 'I' NUMBER '000' WITH text-003.
    STOP.
  ENDIF.

  IF NOT p_prog IS INITIAL AND NOT p_tcode IS INITIAL.
*- SOLICITA AO USUÁRIO PARA INFORMAR O NOME DO PROGRAMA OU DA TRANSAÇÃO.
    MESSAGE ID 'ZF' TYPE 'I' NUMBER '000' WITH text-004.
    STOP.
  ENDIF.

ENDFORM.                               " CONSISTI_PARAMETROS

*&---------------------------------------------------------------------*
*&      Form  INICIALIZA_TABELA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM inicializa_tabela.
  DATA vl_pgmna LIKE tstc-pgmna.

  REFRESH ti_includes.
  IF NOT p_prog IS INITIAL.
    MOVE: p_prog TO ti_includes-nome,
          '0'    TO ti_includes-nivel.
    APPEND ti_includes.
  ELSEIF NOT p_tcode IS INITIAL.
    SELECT SINGLE pgmna
           FROM tstc
           INTO vl_pgmna
           WHERE tcode EQ p_tcode.
    IF sy-subrc EQ 0.
      MOVE: vl_pgmna TO ti_includes-nome,
             '0'     TO ti_includes-nivel.
      APPEND ti_includes.
    ENDIF.
  ENDIF.

ENDFORM.                               " INICIALIZA_TABELA

*&---------------------------------------------------------------------*
*&      Form  CABECALHO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM cabecalho.

  DATA vl_complemento(50) TYPE c.

  IF p_tcode IS INITIAL.
    CONCATENATE 'NO PROGRAMA' p_prog
           INTO vl_complemento
           SEPARATED BY space.
  ELSE.
    CONCATENATE 'NA TRANSAÇAO' p_tcode
           INTO vl_complemento
           SEPARATED BY space.
  ENDIF.

  FORMAT COLOR COL_KEY.
  WRITE: /001 sy-uline,
         /001 sy-vline,
          040 'RELAÇÃO DAS USER-EXITS ENCONTRADAS', vl_complemento,
          140 sy-vline,
         /001 sy-uline.
  WRITE: /001 sy-vline,
          003 'NOME DO PROGRAMA',
          044 sy-vline,
          046 'NÍVEL',
          052 sy-vline,
          054 'LINHA',
          065 sy-vline,
          067 'TEXTO',
          140 sy-vline,
         /001 sy-uline.

ENDFORM.                               " CABECALHO

*&---------------------------------------------------------------------*
*&      Form  USER_EXIT_NAO_ENCONTRADA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM user_exit_nao_encontrada.
  DESCRIBE TABLE ti_user_exit.
  CHECK sy-tfill IS INITIAL.
  FORMAT COLOR COL_NORMAL INTENSIFIED ON.
  WRITE: /003 'NENHUMA USER-EXIT FOI LOCALIZADA!',
          139 '  '.
  FORMAT RESET.
ENDFORM.                               " USER_EXIT_NAO_ENCONTRADA

*&---------------------------------------------------------------------*
*&      Form  LISTA_USER_EXIT_ENCONTRADA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM lista_user_exit_encontrada.

  DATA vl_cor TYPE c.

  LOOP AT ti_user_exit.

    IF vl_cor EQ c_x.
      CLEAR vl_cor.
    ELSE.
      MOVE c_x TO vl_cor.
    ENDIF.

*- AJUSTA COR NA TELA.
    IF vl_cor EQ c_x.
      FORMAT COLOR COL_NORMAL INTENSIFIED ON.
    ELSE.
      FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
    ENDIF.

*- INÍCIO DA IMPRESSÃO.
    WRITE: /003 ti_user_exit-programa,
            046 ti_user_exit-nivel,
            054 ti_user_exit-linha,
            067 ti_user_exit-codigo_fonte,
            139 '  '.
  ENDLOOP.
ENDFORM.                               " LISTA_USER_EXIT_ENCONTRADA

*&---------------------------------------------------------------------*
*&      Form  RODAPE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM rodape.
  DESCRIBE TABLE ti_includes.
  FORMAT COLOR COL_TOTAL.
  WRITE: /001 sy-uline,
         /001 sy-vline,
          003 'TOTAL DE PROGRAMAS ANALIZADOS:', sy-tfill,
              '   -   NÍVEL:', p_nivel,
          140 sy-vline,
         /001 sy-uline.
ENDFORM.                               " RODAPE





Comentarios
Buscar
¡Sólo los usuarios registrados pueden escribir comentarios!

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
home search