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.
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.