La manera más correcta de leer un infotipo desde código es mediante la función HR_READ_INFOTYPE. En este artículo encontraréis el por qué y cómo utilizarla.

Los datos de los distintos infotipos, al igual que la mayoría de información de SAP, se guardan en tablas. Existe una tabla por cada infotipo y las de los infotipos de personal (PA), las podemos encontrar bajo la denominación de PAnnnn, siendo nnnn el número correspondiente al infotipo con el que queremos trabajar.

A la hora de leer un infotipo, por ejemplo, para obtener los datos de éste en la ejecución de un programa, podríamos hacerlo mediante una sentencia SELECT, igual que para cualquier otra tabla. Pero a la hora de trabajar con este tipo de tablas, es recomendable sustituir esta sentencia por la función HR_READ_INFOTYPE para así evitar vulnerabilidades y tener los datos personales del empleado más protegidos.

La llamada a la función y la declaración de sus variables es la siguiente:

Función HR_READ_INFOTYPE

Los parámetros obligatorios para llamar a esta función son:

  • PERNR
  • INFTY
  • INFTY_TAB

Parámetros de entrada

En TCLAS indicaremos la clase de transacción con la que queremos que se ejecute la función. Por defecto, la función utilizará a ‘A’. Sus posibles valores son los siguientes:

  •  A: datos maestros y datos de tiempo
  • B: datos del solicitante
  • T: horario de turnos

El PERNR es el número que identifica al empleado del cual queremos obtener información.

Como esta función podemos conseguir información de muchos infotipos y será en el parámetro INFTY en el que le indicaremos el número del infotipo.

A pesar de no ser obligatorios, es recomendable utilizar los parámetros BEGDA y ENDDA para filtrar el resultado por fechas. De esta manera, aunque el empleado en el infotipo tenga muchos cortes, en la tabla interna solamente nos llegarán aquellos que se encuentren entre las fechas pasadas por parámetro. Por defecto, la función recogerá todos los cortes, ya que no filtra porque utiliza el inicio y el fin de los tiempos como fechas.

Mediante BYPASS_BUFFER y LEGACY_MODE indicamos si se va a leer con búfer y si se va a usar la implementación de éste o no. Por defecto, al primero de ellos no se le pasa ningún dato. Si por el contrario, queremos leerlo sin búfer, habría que pasarle una X. En el último de los campos, podemos jugar también con la X, y por defecto tenemos un espacio en blanco.

Parámetros de salida

El único parámetro de salida que tiene esta función es SUBRC, el cual ya lo podemos consultar de por sí mediante la variable de sistema SY-SUBRC.

Tablas

El resultado que estamos buscando se recoge en una tabla interna que nos devuelve el parámetro INFTY_TAB, la cual tenemos que declarar del mismo tipo que la tabla del infotipo que queramos obtener. Esto es así para que la tabla tenga los mismos campos que el infotipo y no perdernos ningún dato.

Excepciones

La única excepción que tiene declarada es INFTY_NOT_FOUND con el valor 1. Nos saltará cuando el infotipo que le hemos pasado en número no exista.

Con estos conocimientos, podemos utilizar y aprovechar al máximo la función HR_READ_INFOTYPE, evitando que alguien sin permisos acceda a los datos de alguno de los empleados.

Si tienes cualquier duda al respecto, puedes dejarnos tu pregunta en comentarios. También puedes ponerte en contacto con nuestra área de SAP Recursos Humano.

Área SAP Recursos Humanos