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.

saphcm

[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]