Escolar Documentos
Profissional Documentos
Cultura Documentos
Pesquisar User-Exits em Uma Determinada Transação Ou Prog
Pesquisar User-Exits em Uma Determinada Transação Ou Prog
*----------------------------------------------------------------------*
* PROGRAMADOR: FBIO ALESSANDRO COMASSETTO
*----------------------------------------------------------------------*
* PROGRAMA...: ZKBB_PROCURA_EXIT
*----------------------------------------------------------------------*
* DATA.......: 15/02/2001
*----------------------------------------------------------------------*
* OBJETIVO...: PESQUISAR USER-EXITS EM UMA DETERMINADA TRANSAO
OU
*
PROGRAMA.
*
*----------------------------------------------------------------------*
* PARMETROS.: P_PROG = NOME DO PROGRAMA A SER PESQUISADO
*
P_TCODE = NOME DA TRANSAO A SER PESQUISADA
*
OBS.: UM DOS DOIS PARMETROS ACIMA DEVE SER ESPECIFICADO
*
*
P_INCL = DETERMINA SE A PESQUISA DEVE LEVAR
EM
*
CONSIDERAO OS INCLUDES.
*
P_FUNC = DETERMINA SE A PESQUISA DEVE LEVAR
EM
*
CONSIDERAO AS FUNES.
*
P_SUBMIT= DETERMINA SE A PESQUISA DEVE LEVAR
EM
*
CONSIDERAO DEMAIS PROGRAMAS CHAMADOS
POR
*
SUBMIT.
*
*
P_NIVEL = DETERMINA EM AT QUAL NVEL A PESQUISA SER
*
FEITA DENTRO DOS INCLUDES, FUNES E DEMAIS
*
PROGRAMAS. NO NVEL 1 SOMENTE SERO LEVADOS
*
EM CONSIDERAO O PROGRAMA RAIZ. NO NVEL 2
*
SER FEITA UMA PESQUISA NOS INCLUDES, FUNES
*
OS QUAIS ESTO NOS INCLUDES, FUNES DO NVEL
*
1 E ASSIM SUCESSIVAMENTE.
*
*
OBS.: NO PARMETRO P_NIVEL INFORMAR VALORES BAIXO, POIS
*
QUANTO MAIOR O NMERO, MAIOR A QUANTIDADE DE
CDIGO
*
A SER ANALIZADA
*----------------------------------------------------------------------*
*
*======================================================================*
REPORT ZKBB_PROCURA_EXIT LINE-SIZE 140 NO STANDARD PAGE HEADING.
*----------------------------------------------------------------------*
* CONSTANTS
*----------------------------------------------------------------------*
CONSTANTS: c_user_exit(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,
END
LIKE sy-repid,
LIKE sy-tcode.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK bl01b WITH FRAME TITLE text-003.
PARAMETERS p_texto(072) TYPE c.
SELECTION-SCREEN END OF BLOCK bl01b.
SELECTION-SCREEN BEGIN OF BLOCK bl01c WITH FRAME TITLE text-004.
PARAMETERS: p_incl AS CHECKBOX.
PARAMETERS: p_func AS CHECKBOX.
PARAMETERS: p_submit AS CHECKBOX.
PARAMETERS: p_nivel(2) .
SELECTION-SCREEN END OF BLOCK bl01c.
SELECTION-SCREEN END
OF BLOCK bl01.
" PROCURA_USER_EXIT
*&---------------------------------------------------------------------*
*&
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 NO 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.
*-
***-
*-
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 NO 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 NO 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 MAUSCULA PARA FUTURA COMPARAO.
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 FUNO 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/FUNO 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 FUNO.
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_tfill
p_texto.
DATA: vl_total(10) TYPE n,
vl_atual(10) TYPE n.
IF p_tfill IS INITIAL.
vg_texto = p_texto.
ELSE.
MOVE: p_tfill
TO vl_total,
vg_contador TO vl_atual.
CONCATENATE 'Total:' vl_total '-' 'Atual:' vl_atual
INTO vg_texto
SEPARATED BY space.
ENDIF.
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.
" PROCURA_SUBMIT
*&---------------------------------------------------------------------*
*&
Form CONSISTI_PARAMETROS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM consisti_parametros.
IF p_nivel IS INITIAL.
MOVE 1 TO p_nivel.
ENDIF.
" 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 TRANSAAO' p_tcode
INTO vl_complemento
SEPARATED BY space.
ENDIF.
FORMAT COLOR COL_KEY.
WRITE: /001 sy-uline,
/001 sy-vline,
040 'RELAO DAS USER-EXITS ENCONTRADAS', vl_complemento,
140 sy-vline,
/001 sy-uline.
WRITE: /001 sy-vline,
003 'NOME DO PROGRAMA',
044 sy-vline,
046 'NVEL',
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/TEXTO FOI LOCALIZADO!',
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.
'0100',
'=BACK'.
*----------------------------------------------------------------------*
* PROGRAMADOR: FBIO ALESSANDRO COMASSETTO
*----------------------------------------------------------------------*
* PROGRAMA...: ZKBB_PROCURA_EXIT
*----------------------------------------------------------------------*
* DATA.......: 15/02/2001
*----------------------------------------------------------------------*
* OBJETIVO...: PESQUISAR USER-EXITS EM UMA DETERMINADA TRANSAO
OU
*
PROGRAMA.
*
*----------------------------------------------------------------------*
* PARMETROS.: P_PROG = NOME DO PROGRAMA A SER PESQUISADO
*
P_TCODE = NOME DA TRANSAO A SER PESQUISADA
*
OBS.: UM DOS DOIS PARMETROS ACIMA DEVE SER ESPECIFICADO
*
*
P_INCL = DETERMINA SE A PESQUISA DEVE LEVAR
EM
*
CONSIDERAO OS INCLUDES.
*
P_FUNC = DETERMINA SE A PESQUISA DEVE LEVAR
EM
*
CONSIDERAO AS FUNES.
*
P_SUBMIT= DETERMINA SE A PESQUISA DEVE LEVAR
EM
*
CONSIDERAO DEMAIS PROGRAMAS CHAMADOS
POR
*
SUBMIT.
*
*
P_NIVEL = DETERMINA EM AT QUAL NVEL A PESQUISA SER
*
FEITA DENTRO DOS INCLUDES, FUNES E DEMAIS
*
PROGRAMAS. NO NVEL 1 SOMENTE SERO LEVADOS
*
EM CONSIDERAO O PROGRAMA RAIZ. NO NVEL 2
*
SER FEITA UMA PESQUISA NOS INCLUDES, FUNES
*
OS QUAIS ESTO NOS INCLUDES, FUNES DO NVEL
*
1 E ASSIM SUCESSIVAMENTE.
*
*
OBS.: NO PARMETRO P_NIVEL INFORMAR VALORES BAIXO, POIS
*
QUANTO MAIOR O NMERO, MAIOR A QUANTIDADE DE
CDIGO
*
A SER ANALIZADA
*----------------------------------------------------------------------*
*
*======================================================================*