Lea en SAP Netweaver . . .

Desanudando Conceptos: SAP HANA

No hay “newsletter”, conferencia o evento del ambiente ERP que en los últimos meses haya ahorrado detalles y especulaciones sobre el nuevo paradigma: SAP HANA.

En medio del marketing “hype”, es siempre difícil para los que estamos en el ruedo decodificar lo esencial de las nuevas tecnologías, así que aquí va nuestro aporte para ayudar a una cabal y conceptual comprensión de SAP HANA.

FaceBookTwitterGoogle+

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, SAP Netweaver, R/3 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


 

 

  •  

Comentarios  

0 #6 Mauro_ABAP 18-02-2016 13:59
Cito a Hilda Cháirez:
Es muy importante aclarar que esta función ocasiona problemas de performance tanto por tiempo de respuesta como porque se come la memoria ya que hace un export to memory, para corregir este problema hay una función que inicializa el buffer y con esto baja increíblemente el tiempo en responder así como el consumo de memoria. Es excelente usarla poniendo esto después de desbloquear al empleado.
Saludos!


Buenas tardes Hilda,

Puedes compartir más informacion acerca de la función que inicializa el buffer.

Saludos y gracias por compartir el concimiento !!
Citar
0 #5 Esteban 23-08-2012 14:13
Esto podría ser interesante
Citar
0 #4 Marco A. Gatti 15-06-2012 13:18
Cito a Catherine:
Muy buenas tardes una pregunta yo requiero realizar una modificación en un infotipo y estaba usando la funición que mencionan pero el problema que se está presentando es que debe ser al momento de correr la nómina en real por lo que los datos maestros estan bloqueados y no me permite hacer la modificación que podria hacer en este caso


Te recomiendo buscar un user-exit o enhancement-point para poder modificar los datos antes de que estos sean grabados. Esta función exige el bloqueo de los datos para poder modificarlos.
Citar
0 #3 Catherine 04-05-2012 20:09
Muy buenas tardes una pregunta yo requiero realizar una modificación en un infotipo y estaba usando la funición que mencionan pero el problema que se está presentando es que debe ser al momento de correr la nómina en real por lo que los datos maestros estan bloqueados y no me permite hacer la modificación que podria hacer en este caso
Citar
0 #2 Marco A. Gatti 15-03-2012 01:22
Muchas gracias Hilda! Tenes el nombre de la funciòn que mencionas?
Citar
0 #1 Hilda Cháirez 13-03-2012 17:18
Es muy importante aclarar que esta función ocasiona problemas de performance tanto por tiempo de respuesta como porque se come la memoria ya que hace un export to memory, para corregir este problema hay una función que inicializa el buffer y con esto baja increíblemente el tiempo en responder así como el consumo de memoria. Es excelente usarla poniendo esto después de desbloquear al empleado.
Saludos!
Citar

Escribir un comentario


Código de seguridad
Refescar

Copyright © 2017 Teknoda tips - Tecnologia SAP Netweaver - IBM AS400 - System i - iSeries. Todos los derechos reservados.