O objetivo desta publicação é compartilhar uma ferramenta, bem, não apenas uma ferramenta, um framework... Gosto do termo framework, soa um pouco geek :grin: .
Este framework estará sempre em desenvolvimento... então sinta-se à vontade para dar sua opinião.
Para manter as coisas simples, vou postar o código-fonte do framework e alguns exemplos de uso. Mas antes, vamos aprofundar em algumas perguntas sobre o quê, por que e como.
O quê?
Este é um framework que permite aos usuários ter a capacidade de utilizar o paralelismo de processos de trabalho sem a carga de gerenciar todos os detalhes técnicos de implementação.
Por que?
-
Porque é um tema que realmente me interessa;
-
Não sei... porque quero.
Como?
Estou descrevendo a forma simples de utilizar o framework nos seguintes pontos:
-
As tarefas que você está tentando processar são independentes e não estão relacionadas entre si;
-
Você deve definir um Módulo de Função
Habilitado para acesso remoto
(isso é extremamente importante... aposto que alguém vai ignorar essa particularidade :razz: ), que será sua forma de processar uma entrada;
-
Reúna os dados a serem processados
-
Exemplo 1: selecione pernr na tabela
it_employee
de pa0000 onde o nome seja como '%peanuts%'
-
it_employee precisa ter todos os dados necessários para processar uma unidade de processo (neste caso, um funcionário)
-
Se você precisar de múltiplos dados, por exemplo, dados de outra tabela ou de sete mil e trinta e cinco tabelas
-
Crie um tipo de dados que conterá todos os dados por unidade de processo.
-
Instancie o framework fornecendo:
-
Nome do Módulo de Função
-
Tabela interna que contém os dados a serem processados
-
Execute o método run
Tudo isso é só conversa, mas... fale comigo em código!
Se você é como eu, provavelmente está pulando toda a introdução e chegou a este ponto... ou não, de qualquer forma, aqui está um exemplo simples:
" **********************************************************************
" Recupera alguns dados de exemplo
data: it_t005 type table of t005.
select * into table it_t005 up to 100 rows from t005.
try .
" **********************************************************************
" Constrói a instância
l_pp_ref = zcl_pp_factory=>build_instance( pit_raw_data = it_t005
p_rfc_name = 'Z_PP_UNIT_TESTS'
p_logon_group = sp_loggr
p_max_execution_time = sp_maxt
p_task_wait_time = sp_tswt
p_task_max_retries = sp_maxr
p_task_wait_no_resource = sp_tstn
p_log_level = sp_logl
).
" **********************************************************************
" Executa o processamento
l_pp_ref->run( ).
" **********************************************************************
" Mostra os resultados
perform display_results using
l_pp_ref
changing
git_processed
git_unprocessed
git_error.
catch zcx_pp_exception into cx.
l_err = cx->if_message~get_text( ).
message l_err type 'S' DISPLAY LIKE 'E'.
endtry.
Onde?
Neste momento específico, estou compartilhando esta ferramenta usando o formato saplink... se você não sabe o que é saplink, por favor, siga este
Pedro Pascal
Se unió el 07/03/2018