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.