SAP Netweaver / ABAP                  Notas técnicas / Tips / Tutorials

Cómo actualizar un infotipo de HR en background en SAP

Utilice la función estándar de SAP HR_INFOTYPE_OPERATION, para actualizar, generar, o eliminar datos de un infotipo de HR en background y conozca cómo operar con ella.

En reiteradas ocasiones el desarrollador ABAP se encuentra con el problema de agregar o modificar información en tablas estándar. 

Es conocido por todos los desarrolladores el hecho de que siempre es conveniente anticiparse a posibles cambios en el modelo de datos de SAP, por lo que se deben evitar sentencias ABAP del tipo UPDATE, INSERT o DELETE a estas tablas del sistema. La dificultad aparece cuando no existe una BAPI o función estándar capaz de realizar estos cambios de forma transparente, por lo que en muchos casos la solución es realizar un Batch-Input de la transacción que normalmente hace los cambios.

En este artículo se conocerá una forma de ingresar, actualizar y eliminar información relativa al módulo de HR. Específicamente se tratará el caso de una función estándar pensada para actualizar todos los infotipos existentes.

Características de la función HR_INFOTYPE_OPERATION

La función HR_INFOTYPE_OPERATION es una función específica para el módulo HR de SAP. Se caracteriza por ser extremadamente flexible ya que brinda la posibilidad de actualizar la gran mayoría de los infotipos existentes de forma transparente mediante una única interfaz. Como contrapartida, el uso de la misma es relativamente complejo.

La función permite una serie de operaciones típicas, entre ellas: Creación, Copia, Modificación y Eliminación de datos. En este tip se mostrará un caso concreto de su utilización en una operación de Actualización, considerado en el ambiente de SAP como el más propenso a errores.

1. Interfaz de la función:

En la pantalla siguiente se describen los parámetros de Importing necesarios (y algunos opcionales) para el uso de esta herramienta:

ABAP-Bibl.funciones-HR_INFOTYPE_OPERATION-Visualizar

  • INFTY: Número de infotipo, representado en un CHAR de longitud 4. Ejemplo: ‘0001’.
  • NUMBER: Número de empleado (PERNR).
  • SUBTYPE: Subtipo (SUBTY).
  • OBJECTID: Identificación de objeto (OBJPS).
  • LOCKINDICATOR: Indicador de bloqueo (SPRPS).
  • VALIDITYEND, VALIDITYBEGIN: Fin e inicio de la validez, respectivamente (ENDDA, BEGDA).
  • RECORDNUMBER: Número de un registro de infotipo para misma clave (SEQNR).
  • RECORD: Estructura que contiene los datos actualizados. Luego de la ejecución de la función, el infotipo de número ‘INFTY’ contendrá los datos que se encuentren en esta estructura. La misma debe ser del tipo del infotipo correspondiente.

Nota: No es posible usar la estructura de la tabla correspondiente al infotipo. Por ejemplo si se trata del 0001, no es posible usar una estructura del tipo PA0001. En su lugar se debe usar P0001.

  • OPERATION: Código de operación representado en un CHAR de longitud 20, por ejemplo:

‘INS’: Crear

‘COP’: Copiar

‘MOD’: Modificar

‘DEL’: Borrar

‘DIS’: Mostrar

  • DIALOG_MODE: Modo de diálogo, por ejemplo: ‘0’ Background, ‘2’ En línea.

Importante: Luego de ejecutar la función, ejecutar un COMMIT WORK AND WAIT para garantizar que los cambios se hayan efectuado correctamente.

2. Uso de la función:

Para ejecutarla se necesita proveer todos los parámetros mostrados en la sección anterior a excepción de DIALOG_MODE, por defecto vale ‘0’ Background.

Para el caso del parámetro RECORD, como se mencionó anteriormente, se debe usar una estructura del tipo PXXXX y no PAXXXX (donde XXXX es el número de infotipo). Se debe cargar esta estructura con los nuevos datos que pasará a tener el infotipo, notar que TODOS los campos de la estructura se transfieren a la base de datos, por lo que una forma segura de completarla es primero recuperando el registro completo de la tabla, modificar los datos que se requieran, y luego invocar a la función.

Es importante notar que las estructuras PXXXX, a diferencia de las PAXXXX, tienen un campo adicional ‘INFTY’ que es un CHAR de longitud 4 utilizado para contener el numero de infotipo. Es necesario completar este campo con el mismo valor de ‘INFTY’ que se provee a la función en su llamada. Por ejemplo si se quiere actualizar el infotipo 0001, INFTY = ‘0001’ y PXXXX-INFTY = ‘0001’.

A continuación se muestra un ejemplo de uso de la función HR_INFOTYPE_OPERATION funcionando correctamente, se trata de una nueva función Z que dado un número de empleado y un área de nómina, asigna dicha área de nómina al empleado:

  • Primero se obtienen los datos vigentes del infotipo 0001 del empleado. Dicho infotipo es el que contiene el campo a modificar. Luego se valida el área de nomina provista, y por último, se asigna la nueva área de nómina a la estructura que contiene los datos.

ABAP-Bibl.funciones-ZWF_0001-modificar-2

En el ejemplo de arriba, la estructura lr_0001 (TYPE P0001) contiene los datos a grabar en el infotipo.

Nota: en la subrutina F_OBTENER_DATOS_EMPLEADO, además se carga el campo INFTY de la estructura lr_p0001 con el valor ‘0001’. Este paso es obligatorio.

 

  • Luego se llama a la función HR_INFOTYPE_OPERATION.

ABAP-Bibl.funciones-ZWF_0001-modificar-3

Importante: Antes de realizar una llamada a la función HR_INFOTYPE_OPERATION, se debe bloquear el registro del empleado que se quiere modificar. Para ello se pueden utilizar las funciones BAPI_EMPLOYEE_ENQUEUE o HR_EMPLOYEE_ENQUEUE, que en este caso resultan equivalentes. Una vez terminada la operación se debe llamar a la correspondiente función de desbloqueo: BAPI_EMPLOYEE_DEQUEUE o HR_EMPLOYEE_DEQUEUE. Ambas parejas de funciones reciben como único parámetro el número de empleado (PERNR). En suma, el código resultante debe tener el siguiente aspecto:

ABAP-Bibl.funciones-ZWF_0001-modificar

Para tener en cuenta ...

  • La función HR_INFOTYPE_OPERATION soporta muchas operaciones diferentes: COP (Copiar), DEL (Borrar), DIS (Mostrar), EDQ (Bloquear/Desbloquear), INS (Crear), MOD (Modificar), entre otras, para realizar sobre la totalidad de los infotipos de SAP.
  • Además permite ejecutar la operación solicitada tanto en background como en línea mediante el parámetro de Importing DIALOG_MODE.

      • n_Marco_Gatti

      - Especialista ABAP y Workflow


    •  

       

 


Copyright 2012 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 


 

 

  •  

Copyright © 2024 Teknoda Tech Portal & Training. Todos los derechos reservados.
Joomla! es software libre, liberado bajo la GNU General Public License.