Los resultados de nómina de SAP HCM se almacenan de forma encriptada en clusters. Ello implica que para acceder a los resultados desde un programa no podamos hacerlo accediendo directamente a las tablas y la tarea se suele volver un poco engorrosa.
Por ello, en la nota 1764963, SAP nos proporcionó una clase que nos va a facilitar el proceso y va a permitir optimizar la lectura. La clase es CL_HRPAYES_PAYROLL_READER y a continuación se muestra un ejemplo de cómo utilizar los métodos de esta clase.
[php] STATICS lo_payreader TYPE REF TO cl_hrpayes_payroll_reader.
DATA lt_rgdir TYPE hrpy_tt_rgdir.
DATA lt_payes_result TYPE if_hrpayes_payroll_reader=>ty_t_payes_result.
DATA ls_payes_result TYPE payes_result.
DATA ls_rt TYPE pc207.
<i>” </i><i>1- Crear objeto de la clase para un número de personal</i>
CREATE OBJECT lo_payreader
EXPORTING
iv_pernr = p_pernr.
<i>” 2- Leer la tabla rgdir para un periodo. Srtza = ‘A’ para leer sólo los resultados actuales.</i>
lo_payreader->get_rgdir(
EXPORTING
iv_fpbeg = p_fecha_ini
iv_fpend = p_fecha_fin
iv_srtza = ‘A’
iv_reorg_rgdir = abap_true
IMPORTING
et_rgdir = lt_rgdir[] ).
IF lt_rgdir[] IS INITIAL.
RETURN.
ENDIF.
<i>” 3- Obtendremos los resultados de nómina para todos los periodos de la tabla lt_rgdir.
</i> lo_payreader->get_pay_result_table(
EXPORTING
it_rgdir = lt_rgdir[]
iv_read_only_buffer = abap_false
IMPORTING
et_payes_result = lt_payes_result[] ).
<i></i>
<i>” 4- Recorremos los periodos y por cada periodo leemos los resultados almacenados en el cluster RE
</i> LOOP AT lt_payes_result[] INTO ls_payes_result.
LOOP AT ls_payes_result-inter-rt[] INTO ls_rt
<i>” 5- Procesaremos los conceptos de nómina que nos interesen.</i>
ENDLOOP.
ENDLOOP.[/php]
Muchas gracias me sirvio esto para recorrer el cluster rt
LOOP AT lt_payes_result[] INTO ls_payes_result.
LOOP AT ls_payes_result-inter-rt[] INTO ls_rt
Buenos días Wladimir
Nos alegra que te haya sido de ayuda. Te animamos a seguir explorando contenido en el blog.
Un saludo