Como alternativa para a função HR_READ_INFOTYPE, existe a classe cl_hrpa_read_infotype. Abaixo está um exemplo da classe e método de leitura.
METHOD if_hrpaybr_efd_ee_compl_id_dt~fill_worker_category.
DATA: ls_p0016 TYPE p0016,
ls_p0398 TYPE p0398,
ls_pnnnn TYPE prelp,
ls_pnnnn2 TYPE prelp.
DATA lo_infty TYPE REF TO if_hrpa_read_infotype.
TRY.
cl_hrpa_read_infotype=>get_instance( IMPORTING infotype_reader = lo_infty ).
lo_infty->read_single( EXPORTING tclas = 'A'
pernr = io_employee->mv_pernr
infty = '0016'
subty = space
objps = space
sprps = space
begda = iv_begda
endda = iv_endda
mode = '0'
no_auth_check = abap_true
IMPORTING pnnnn = ls_pnnnn
pnnnn2 = ls_pnnnn2 ).
cl_hr_pnnnn_type_cast=>prelp_to_pnnnn( EXPORTING prelp = ls_pnnnn
IMPORTING pnnnn = ls_p0016 ).
cl_hr_pnnnn_type_cast=>prelp_to_pnnnn( EXPORTING prelp = ls_pnnnn2
IMPORTING pnnnn = ls_p0398 ).
CATCH cx_hrpa_violated_assertion.
ENDTRY.
CASE ls_p0398-cattr.
WHEN '13'.
cv_worker_categ = '701'.
WHEN '15'.
cv_worker_categ = '711'.
WHEN '16'.
cv_worker_categ = '712'.
WHEN '17'.
cv_worker_categ = '731'.
WHEN '18'.
cv_worker_categ = '734'.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.