Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
*&---------------------------------------------------------------------*
*& Report Z_WINDOWS_PROCESS_CHECK
*&---------------------------------------------------------------------*
*& Autor: Joo Antnio Soares
*&---------------------------------------------------------------------*
REPORT z_windows_process_check.
*&---------------------------------------------------------------------*
*& Declarao de dados
*&---------------------------------------------------------------------*
DATA: BEGIN OF tasklist OCCURS 0,
line(255) TYPE c,
END OF tasklist,
windir(3)
filename_bat
filename_log
filepath_bat
filepath_log
filesize_log
rc
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
c,
string VALUE 'tasklist.bat',
string VALUE 'tasklist.log',
string,
string,
i,
i.
*&---------------------------------------------------------------------*
*& Criao da tela de seleo
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETER: p_proc TYPE string.
SELECTION-SCREEN END OF BLOCK b1.
*&---------------------------------------------------------------------*
*& Verifica a unidade do disco local no computador usurio
*&---------------------------------------------------------------------*
CALL FUNCTION 'GUI_GET_DESKTOP_INFO'
EXPORTING
type = 2
CHANGING
return = windir.
TRANSLATE p_proc TO LOWER CASE.
CLEAR: tasklist, tasklist[].
*&---------------------------------------------------------------------*
*& O comando tasklist com os parmetros -FI "IMAGENAME eq P_PROC"
*& vai verificar se o programa est em execuo. O parmetro /fo CSV
*& vai gerar um arquivo contendo informaes do processo caso ele
*& esteja em execuo, ou um arquivo em branco caso no esteja.
*&---------------------------------------------------------------------*
CONCATENATE 'tasklist -fi "IMAGENAME eq ' p_proc '" /fo CSV > ' windir
filename_log INTO tasklist-line RESPECTING BLANKS.
APPEND tasklist.
CONCATENATE:
*&---------------------------------------------------------------------*
*& Faz o download do arquivo tasklist.bat no disco local
*&---------------------------------------------------------------------*
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename
= filepath_bat
no_auth_check = 'X'
TABLES
data_tab
= tasklist[].
*&---------------------------------------------------------------------*
*& Executa o arquivo tasklist.bat no disco local
*&---------------------------------------------------------------------*
CALL METHOD cl_gui_frontend_services=>execute
EXPORTING
application = filepath_bat
minimized = 'X'
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
bad_parameter = 3
file_not_found = 4
path_not_found = 5
file_extension_unknown = 6
error_execute_failed = 7
synchronous_failed = 8
not_supported_by_gui = 9
OTHERS = 10.
*&---------------------------------------------------------------------*
*& Aps a execuo, foi gerado o arquivo tasklist.log
*& A execuo ou no do processo vai ser verificada pelo tamanho do
*& arquivo gerado. Caso o arquivo tenha tamanho 0 (zero), o comando
*& tasklist no encontrou processo correspondente e o arquivo gerado
*& est em branco. Caso contrrio, o processo est em execuo
*&---------------------------------------------------------------------*
cl_gui_cfw=>flush( ).
*&---------------------------------------------------------------------*
*& Deleta os arquivos tasklist.bat e tasklist.log do disco local
*&---------------------------------------------------------------------*
CALL METHOD cl_gui_frontend_services=>file_delete
EXPORTING
filename = filepath_log
CHANGING
rc
= rc.
CALL METHOD cl_gui_frontend_services=>file_delete
EXPORTING
filename = filepath_bat
CHANGING
rc
= rc.
IF filesize_log EQ 0.
WRITE 'Processo no est em execuo'.
ELSEIF filesize_log > 0.
WRITE 'Processo est em execuo'.
ENDIF.
Problemas conhecidos: