El propósito de esta publicación es compartir una herramienta, bueno, no solo una herramienta, un marco ... Me gusta el término marco, suena un poco geek :grin: .
Este marco siempre estará en desarrollo... así que siéntete libre de dar tu opinión.
Para mantener las cosas simples, publicaré el código fuente del marco y algunos ejemplos de uso. Pero antes, profundicemos en algunas preguntas de qué, por qué y cómo.
¿Qué?
Este es un marco que permite a los usuarios tener la capacidad de utilizar el paralelismo de procesos de trabajo sin la carga de gestionar todos los detalles técnicos de implementación.
¿Por qué?
-
Porque es un tema que realmente me gusta;
-
No sé... porque quiero.
¿Cómo?
Estoy describiendo la forma sencilla de utilizar el marco en los siguientes puntos:
-
Las tareas que estás intentando procesar son independientes y no están relacionadas entre sí;
-
Debes definir un Módulo de Función
Habilitado para acceso remoto
(esto es extremadamente importante... apuesto a que alguien va a pasar por alto esta particularidad :razz: ), que será tu forma de procesar una entrada;
-
Reúne los datos a procesar
-
Ejemplo 1: selecciona pernr en tabla
it_employee
de pa0000 donde el nombre sea como '%peanuts%'
-
it_employee necesita tener todos los datos que necesitas para procesar una unidad de proceso (en este caso, un empleado)
-
Si necesitas múltiples datos, por ejemplo, datos de otra tabla o de siete mil treinta y cinco tablas
-
Crea un tipo de datos que contendrá todos los datos por unidad de proceso.
-
Instancia el marco proporcionando:
-
Nombre del Módulo de Función
-
Tabla interna que contiene los datos a procesar
-
Ejecuta el método run
¡Todo esto es pura palabrería pero... háblame en código!
Si eres como yo, probablemente estás saltándote toda la introducción y has llegado a este punto... o no, de todos modos, aquí tienes un ejemplo sencillo:
" **********************************************************************
" Recupera algunos datos de ejemplo
data: it_t005 type table of t005.
select * into table it_t005 up to 100 rows from t005.
try .
" **********************************************************************
" Construye la instancia
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
).
" **********************************************************************
" Ejecuta el procesamiento
l_pp_ref->run( ).
" **********************************************************************
" Muestra los 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.
¿Dónde?
En este momento particular estoy compartiendo esta herramienta utilizando el formato saplink... si no sabes qué es saplink, por favor sigue este
Pedro Pascal
Se unió el 07/03/2018