SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
SAP ERP 6.0 Agosto 2010 Spanish
Manual de Programacion HR ABAP Business Process Documentation
SAP AG Dietmar-Hopp-Allee 16 69190 Walldorf Germany
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
INDICE 1 2 3 4
Objetivos ........................................................................................................................................ 9 Introducción a la programación en HR .......................................................................................... 9 Bases de datos lógica .................................................................................................................... 9 INFOTIPOS ..................................................................................................................................12 4.1 Declaración ...........................................................................................................................12 4.2 Procesamiento del infotipo ...................................................................................................13 4.2.1 Procesar de un registro específico del infotipo .............................................................13 4.2.2 Procesamiento de todo el infotipo .................................................................................14 4.2.3 Actualización de un infotipo...........................................................................................14 4.3 Definición de un infotipo........................................................................................................15 4.3.1 Estructura de la tabla PSnnnn.......................................................................................16 4.3.2 Estructura de las tablas PAnnnn y PBnnnn ..................................................................16 4.3.2.1 Tabla PAnnnn.........................................................................................................16 4.3.2.2 Tabla PBnnnn.........................................................................................................17 4.3.2.3 Opciones técnicas ..................................................................................................17 4.3.3 Estructura Pnnnn ...........................................................................................................17 4.3.4 Estructura adicionales para campos de imagen ...........................................................18 4.3.5 Modulpool ABAP/4 de infotipo.......................................................................................18 4.3.6 Pantallas de un infotipo .................................................................................................19 4.3.6.1 Pantalla inicial.........................................................................................................19 4.3.6.2 Pantalla individual...................................................................................................20 4.3.6.2.1 Verificaciones .....................................................................................................20 4.3.6.2.2 Entradas posibles ...............................................................................................20 4.3.6.2.3 Configuración de pantalla...................................................................................21 4.3.6.2.4 Lógica de proceso ..............................................................................................21 4.3.6.3 Visualización de lista ..............................................................................................22 4.3.6.3.1 Configuración de pantalla...................................................................................22 4.3.6.3.2 Lógica de proceso ..............................................................................................23 4.3.6.4 Control de pantallas de un infotipo.........................................................................24 4.3.6.4.1 Control de imágenes según la función a ejecutar ..............................................25 4.3.6.4.2 Control de imágenes dependientes de los datos de control ..............................26 4.3.6.5 Status para los infotipos .........................................................................................27 4.3.7 Módulos de dialogos de infotipo ....................................................................................28 4.3.8 Características del infotipo ............................................................................................28 4.3.9 Módulos de texto de infotipo..........................................................................................29 4.3.9.1 Visualización y actualización de textos en la pantalla individual ...........................29 4.3.9.1.1 Configurar una imagen individual para visualizar y actualizar módulos de texto 29 4.4 Guía para crear un infotipo ...................................................................................................30 4.4.1 Crear infotipos ...............................................................................................................30
Agosto 2010 Spanish
2 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) 4.4.2 Actuslizar las características del infotipo.......................................................................31 4.4.3 Implementación funcional del infotipo ...........................................................................32 4.5 Ampliación de infotipos estándar..........................................................................................32 4.5.1 Ampliación de una imagen individual ............................................................................32 4.5.2 Ampliación de una visualización de lista .......................................................................33 4.5.2.1 Borrar campos adicionales.....................................................................................33 4.6 Modificación de infotipos.......................................................................................................34 4.7 Ampliación infotipo para entrada rápida de datos ................................................................34 4.7.1 Ampliación infotipo para entrada rápida de datos maestros (PA70).............................35 4.7.2 Ampliación infotipo para entrada rápida de datos de acción (PA42) ............................36 4.7.2.1 Definición de imagen de entrada............................................................................36 4.7.2.1.1 Lógica de proceso ..............................................................................................37 4.7.2.2 Generación de codificación ....................................................................................37 4.7.2.3 Actualización de tabla ............................................................................................38 4.7.3 Adaptación de status en Gestión de personal...............................................................38 4.8 Datos de tiempos ..................................................................................................................38 4.9 Repetir estructuras................................................................................................................40 4.10 Verificación de autorizaciones ..........................................................................................41 4.11 Vistas.................................................................................................................................41 4.11.1 Acoplamiento .................................................................................................................41 4.11.2 Proyección .....................................................................................................................44 4.11.3 Proyección y Aclopamiento ...........................................................................................45 4.11.4 Tablas de control dependientes del tiempo...................................................................46 4.11.5 Generalización de la vista ............................................................................................47 5 Importar/Exportar fichero en Recursos Humanos........................................................................47 5.1 Ficheros PCL1, PCL2, PCL3 y PCL4 ...................................................................................47 5.1.1.1 Información de los ficheros ....................................................................................47 5.1.1.2 Estructura del fichero .............................................................................................47 5.1.1.3 Convención de nombres ........................................................................................48 5.1.1.4 Importar/Exportar datos..........................................................................................48 5.1.1.5 Clave xx..................................................................................................................48 5.2 Almacenamiento de datos en ficheros PCLn .......................................................................48 5.2.1 Ejemplo de descripción de datos mediante el cluster RX .............................................49 5.3 Memoria intermedia de los ficheros PCLn............................................................................49 5.3.1 Retroactividad resultados cáclculo nomia .....................................................................49 5.3.2 Inicio del cákculo de la nómina en el modo de test.......................................................50 5.3.2.1 Export mediante la memoria intermedia de datos..................................................51 5.3.2.2 Import mediante la memoria intermedia de datos..................................................51 5.4 Directorio del cluster .............................................................................................................52 5.5 Interfase ................................................................................................................................52 5.5.1 Lectura de un registro del cálculo de nómina................................................................53 5.5.2 Evaluaciones estándar del cálculo de la nómina ..........................................................53 5.5.3 Módulos de funciones: RP_EVALUATION_PERIODS .................................................53 5.5.3.1 Lectura resultado cálculo nómina usando RP_EVALUATION_PERIODS ............54 5.5.4 Indicadores de control ...................................................................................................55
Agosto 2010 Spanish
3 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) 5.5.5 Acción ............................................................................................................................55 5.5.6 Códigos de retorno ........................................................................................................56 5.5.7 Lectura de un registro del cálculo de la nómina............................................................56 5.5.8 Importar resultado cálculo nómina de cluster RX..........................................................57 6 Comandos específicos.................................................................................................................57 6.1 Módulos de funciones en HR................................................................................................57 6.2 Módulos de macroinstrucciones ...........................................................................................57 6.2.1 Definición y llamada.......................................................................................................58 7 Módulos RMAC estándar en HR..................................................................................................58 7.1 Definición de datos ...............................................................................................................58 7.1.1 RP-LOWDATE-HIGHDATE...........................................................................................58 7.1.1.1 Función...................................................................................................................58 7.1.1.2 Parámetros .............................................................................................................59 7.1.1.3 Verificación .............................................................................................................59 7.1.1.4 Condiciones previas ...............................................................................................59 7.1.1.5 Utilización ...............................................................................................................59 7.2 Evento INITIALIZATION .......................................................................................................59 7.2.1 RP-SEL-EIN-AUS-INIT ..................................................................................................59 7.2.1.1 Función...................................................................................................................59 7.2.1.2 Parámetros .............................................................................................................59 7.2.1.3 Verificación .............................................................................................................60 7.2.1.4 Condiciones previas ...............................................................................................60 7.2.1.5 Utilización ...............................................................................................................60 7.2.1.6 Observaciones........................................................................................................60 7.2.2 RP-INIT-WITH-SYDATUM ............................................................................................60 7.2.3 Función ..........................................................................................................................60 7.3 Evento START-OF-SELECTION ..........................................................................................61 7.3.1 RP-SET-NAME-FORMAT .............................................................................................61 7.3.1.1 Función...................................................................................................................61 7.3.1.2 Parámetros .............................................................................................................61 7.3.1.3 Verificación .............................................................................................................61 7.3.1.4 Utilización ...............................................................................................................61 7.3.2 RP-FETCH-ALTER-PERID ...........................................................................................61 7.3.2.1 Función...................................................................................................................61 7.3.2.2 Parámetros .............................................................................................................62 7.3.2.3 Verificación .............................................................................................................62 7.3.2.4 Utilización ...............................................................................................................62 7.3.3 RP-SET-KEY-DATE ......................................................................................................62 7.3.3.1 Función...................................................................................................................62 7.3.3.2 Parámetros .............................................................................................................63 7.3.3.3 Verificación .............................................................................................................63 7.3.3.4 Condiciones previas ...............................................................................................63 7.3.3.5 Utilización ...............................................................................................................63 7.4 Selección GET PERNR ........................................................................................................63 7.4.1 RP-SEL-EIN-AUS ..........................................................................................................63
Agosto 2010 Spanish
4 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) 7.4.1.1 Función...................................................................................................................63 7.4.2 RP-SEL-CALC ...............................................................................................................64 7.4.2.1 Función...................................................................................................................64 7.4.2.2 Parámetros .............................................................................................................64 7.4.2.3 Verificación .............................................................................................................64 7.4.2.4 Condiciones previas ...............................................................................................64 7.4.2.5 Utilización ...............................................................................................................64 7.4.3 RP-WRITE-ALTER-PERID............................................................................................64 7.4.3.1 Función...................................................................................................................64 7.4.3.2 Parámetros .............................................................................................................65 7.4.3.3 Verificación .............................................................................................................65 7.4.3.4 Utilización ...............................................................................................................65 7.4.4 RP-MAKE-ADDRESS....................................................................................................65 7.4.5 Función ..........................................................................................................................65 7.4.5.1 Parámetros .............................................................................................................66 7.4.5.2 Verificación .............................................................................................................66 7.4.5.3 Utilización ...............................................................................................................66 7.4.6 RP-EDIT-ADDRESS......................................................................................................66 7.4.6.1 Función...................................................................................................................66 7.4.6.2 Parámetros .............................................................................................................67 7.4.6.3 Verificación .............................................................................................................67 7.4.6.4 Utilización ...............................................................................................................67 7.4.7 RP-READ-ALL-TIME-ITY ..............................................................................................68 7.4.7.1 Función...................................................................................................................68 7.4.7.2 Parámetros .............................................................................................................68 7.4.7.3 Verificación .............................................................................................................68 7.4.7.4 Condiciones previas ...............................................................................................68 7.4.7.5 Utilización ...............................................................................................................68 7.4.7.6 Observaciones........................................................................................................69 7.4.8 RP-EDIT-NAME.............................................................................................................69 7.4.8.1 Función...................................................................................................................69 7.4.8.2 Parámetros .............................................................................................................69 7.4.8.3 Verificación .............................................................................................................70 7.4.8.4 Utilización ...............................................................................................................70 7.4.9 RP-INIT-BUFFER ..........................................................................................................70 7.4.9.1 Función...................................................................................................................70 7.4.9.2 Parámetros .............................................................................................................70 7.4.9.3 Verificación .............................................................................................................70 7.4.9.4 Condiciones previas ...............................................................................................70 7.4.9.5 Utilización ...............................................................................................................71 7.4.10 RP-IMP-Cn-xx................................................................................................................71 7.4.10.1 Función...................................................................................................................71 7.4.10.2 Parámetros: ............................................................................................................71 7.4.10.3 Verificación: ............................................................................................................71 7.4.10.4 Condiciones previas: ..............................................................................................71
Agosto 2010 Spanish
5 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) 7.4.11 RP-EXP-Cn-xx...............................................................................................................72 7.4.11.1 Función...................................................................................................................72 7.4.11.2 Parámetros .............................................................................................................72 7.4.11.3 Verificación .............................................................................................................72 7.4.11.4 Condiciones previas: ..............................................................................................72 7.4.12 RP-REF-Cn-xx...............................................................................................................72 7.4.12.1 Función...................................................................................................................72 7.4.12.2 Parámetros .............................................................................................................73 7.4.12.3 Verificación .............................................................................................................73 7.4.12.4 Condiciones previas ...............................................................................................73 7.5 Evento TOP-OF-PAGE .........................................................................................................73 7.5.1 RP-STICHTAG ..............................................................................................................73 7.5.1.1 Función...................................................................................................................73 7.5.1.2 Parámetros .............................................................................................................73 7.5.1.3 Verificación .............................................................................................................73 7.5.1.4 Condiciones previas ...............................................................................................73 7.5.1.5 Utilización ...............................................................................................................73 7.5.2 RP-ZEITRAUM ..............................................................................................................74 7.5.2.1 Función...................................................................................................................74 7.5.2.2 Parámetros .............................................................................................................74 7.5.2.3 Verificación .............................................................................................................74 7.5.2.4 Condiciones previas ...............................................................................................74 7.5.2.5 Utilización ...............................................................................................................74 7.6 En cualquier punto ................................................................................................................74 7.6.1 Obtención de datos........................................................................................................74 7.6.1.1 RP-READ-INFOTYPE ............................................................................................74 7.6.1.1.1 Función...............................................................................................................75 7.6.1.1.2 Parámetros .........................................................................................................75 7.6.1.1.3 Verificación .........................................................................................................75 7.6.1.1.4 Condición previa.................................................................................................75 7.6.1.1.5 Utilización ...........................................................................................................75 7.6.1.1.6 Observaciones....................................................................................................76 7.6.1.2 RP-READ-T001P....................................................................................................76 7.6.1.3 Función...................................................................................................................76 7.6.1.4 Parámetros .............................................................................................................76 7.6.1.5 Utilización ...............................................................................................................77 7.6.1.6 RP-READ-T5D0P ...................................................................................................77 7.6.1.6.1 Función...............................................................................................................77 7.6.1.6.2 Parámetros .........................................................................................................77 7.6.1.6.3 Utilización ...........................................................................................................77 7.6.1.7 RP-READ-PAYROLL-DIR ......................................................................................78 7.6.1.7.1 Función...............................................................................................................78 7.6.1.7.2 Parámetros .........................................................................................................78 7.6.1.7.3 Verificación .........................................................................................................78 7.6.1.7.4 Condiciones previas ...........................................................................................79
Agosto 2010 Spanish
6 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) 7.6.1.7.5 Utilización ...........................................................................................................79 7.6.2 Procesamiento de datos................................................................................................79 7.6.2.1 RP-PROVIDE-FROM-FRST...................................................................................79 7.6.2.1.1 Función...............................................................................................................79 7.6.2.1.2 Parámetros .........................................................................................................79 7.6.2.1.3 Verificación .........................................................................................................80 7.6.2.1.4 Condiciones previas ...........................................................................................80 7.6.2.1.5 Utilización ...........................................................................................................80 7.6.2.1.6 Observaciones....................................................................................................80 7.6.2.2 RP-PROVIDE-FROM-LAST ...................................................................................80 7.6.2.2.1 Función...............................................................................................................80 7.6.2.2.2 Parámetros .........................................................................................................81 7.6.2.2.3 Verificación .........................................................................................................81 7.6.2.2.4 Condiciones previas ...........................................................................................81 7.6.2.2.5 Utilización ...........................................................................................................81 7.6.2.2.6 Observaciones....................................................................................................82 7.6.3 Modicación de datos......................................................................................................82 7.6.3.1 RP-UPDATE...........................................................................................................82 7.6.3.1.1 Función...............................................................................................................82 7.6.3.1.2 Parámetros .........................................................................................................82 7.6.3.1.3 Verificación .........................................................................................................82 7.6.3.1.4 Condiciones previas ...........................................................................................82 7.6.3.1.5 Utilización ...........................................................................................................82 8 Utilidades en HR ..........................................................................................................................82 8.1 Utilidades generales .............................................................................................................83 8.2 Utilidades de programación ..................................................................................................83 8.3 Utilidades de cluster..............................................................................................................83 9 Ejemplos Programación en Modulo HR.......................................................................................84 9.1 Transacciones en HR ...........................................................................................................84 9.2 SAP HR HR INFOTYPE OPERATION .................................................................................87 9.2.1 Funcion para crear modificar borrar infotipos................................................................87 9.2.2 Ejemplo 2 carga Infotipo 0171.......................................................................................91 9.3 SAP HR ABAP LECTURA CLUSTER ..................................................................................94 9.3.1 Ejemplo 1 lectura de estructura ARRS..........................................................................94 9.4 SAP HR ABAP BAPI BASICPAY GETDETAIL.....................................................................96 9.4.1 Ejemplo de BAPI 'BAPI_BASICPAY_GETDETAIL' para leer el IT0008 .......................96 9.4.2 Ejemplo 2, Aca soluciona problema con autorizacion en IT0008 .................................96 9.5 SAP HR ABAP HR READ INFOTYPE................................................................................100 9.5.1 FUNCION HR_READ_INFOTYPE PARA LEER DATOS INFOTIPO .........................100 9.6 SAP HR ABAP ORG...........................................................................................................107 9.6.1 Ejemplo 1.....................................................................................................................107 9.7 SAP HR ABAP CLUSTER TIEMPO ...................................................................................109 9.7.1 Ejemplo 1.....................................................................................................................109 9.7.2 Ejemplo 2.....................................................................................................................110 9.8 SAP HR ABAP LEER ACUMULADORES ..........................................................................112
Agosto 2010 Spanish
7 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) 9.9 SAP HR PRESTAMOS ABAP ............................................................................................114 9.9.1 FUNCIONES UTILES MODULO PRESTAMOS .........................................................114 9.9.1.1 EJEMPLO.............................................................................................................114 9.10 SAP HR TABLAS INFOTIPOS........................................................................................117 9.11 SAP HR ABAP PERFORMANCE ...................................................................................127 9.11.1 Ejemplo lectura tablas HRP1001 y HRP1000 .............................................................127 9.11.2 EJEMPLO HR_READ_INFOTYPE..............................................................................129 9.12 SAP HR DRIVER SIMULACION.....................................................................................131 9.12.1 Simular existencia de Infotipos en driver nomina RPCALCX0....................................131 9.13 HR NOTAS......................................................................................................................134 9.13.1 DUMP CX_HRPA_INVALID_PARAMETER ..............................................................134 9.14 SAP HR FAQ...................................................................................................................135 9.14.1 Cómo leer el molga de un empleado...........................................................................135 9.14.2 Detalle compañia ( campo bukrs )...............................................................................135 9.14.3 Nombres de mes ( util en formularios ) .......................................................................135 9.14.4 Sumar / restar meses a fecha .....................................................................................136 9.14.5 Último dia del mes .......................................................................................................136 9.14.6 Leer horario de trabajo de empleado ..........................................................................136 9.14.7 Leer caracteristica ( feature ) hr , transaccion pe03....................................................137 9.14.8 Verificar nif ( rut ) .........................................................................................................137 9.14.9 Leer clase de fecha de infotipo p0041.........................................................................137
Agosto 2010 Spanish
8 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
1 Objetivos La finalidad de este manual es enseñar como acceder a los distintos tipos de contenedores de información, a nivel de ABAP/4, que SAP usa en Recursos Humanos (a partir de este momento lo denominaremos HR) para almacenar datos y mostrar las instrucciones especiales existentes en HR.
2 Introducción a la programación en HR Desde siempre hemos visto que toda la información en SAP se guarda en tablas de diccionario. HR no es una excepción, pero además aparecen dos nuevos contenedores de información que son: Bases de datos lógicas de HR, Infotipos y Tablas de Base de datos. En HR tenemos dos bases de datos lógicas que son PNP y PAP. La primera se refiere a los datos de los empleados y la segunda a los datos a los candidatos. El uso de Base de datos lógica facilita el acceso a los infotipos. En los Infotipos se guarda la información referente al personal de la empresa: Datos de personales, Datos bancarios, Datos de nómina, Formación , Salud, Derecho de vacaciones, etc… en el sistema hay aproximadamente unos trescientos infotipos distintos, aunque muchos de ellos son específicos de cada país (como por ejemplo el infotipo 88 que guarda la información de la maternidad en Gran Bretaña). Las Tablas de base de datos se dividen en áreas o clusters, estas áreas o cluster guardan información referente a las a los resultados de nóminas, Impuestos, Seguridad Social, etc… El acceso a estas tablas es el más complicado de todos, debido a que no se accede como en una tabla cluster normal y corriente, como la INDX, sino que se accede a través de macroinstrucciones. Para acceder a los infotipos existen sentencias específicas para el acceso a infotipo y macroinstrucciones que es una combinación de estas últimas. Las Sentencias específicas para el acceso a infotipos son aquellas que usaremos para declarar el infotipo en el programa (el equivalente a la sentencia Tables) y el acceso a dicho(s) infotipo(s), su equivalente sería el Select. Las Macroinstrucciones es una posibilidad más de modularizar programas. Las macroinstrucciones contienen sentencias ABAP/4 que permiten el ahorro de trabajo.
3 Bases de datos lógica Como se ha mencionado antes SAP tiene dos base de datos lógica: PNP que se refiere a los datos de empleado y la PAP que se refiere a los datos de candidatos. La base de datos que más se usa es la PNP y será dicha tabla que usaremos como ejemplo. Cuando ejecutamos un report que accede a la base de datos lógica, esta carga los datos de personal de cada empleado en memoria para su tratamiento. En memoria se carga el historial completo del empleado. Estos datos se pierden cuando se carga un nuevo empleado.
Agosto 2010 Spanish
9 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Cada vez que se usa la base de datos lógica se realizan dos verificaciones una de personal y otra de datos. La primera se verifica que el usuario tiene acceso al empleado siguiendo los criterios de asignación organizacional. Si el usuario no tiene acceso al empleado, este no se evalúa. La segunda verifica que el usuario tiene acceso a los infotipos especificados en el report. Un ejemplo sencillo sería: En los atributos del programa:
El código fuente: REPORT zprueba1. * PERNR es una estructura que es llenada por la base de datos lógica PNP * con los datos del empleado TABLES: pernr." --> Datos de personal * Declaración de los infotipos INFOTYPES: 0001. START-OF-SELECTION.
Agosto 2010 Spanish
10 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) GET pernr. " --> Usa base de datos lógica PNP PROVIDE * FROM p0001 BETWEEN pn-begda AND pn-endda. WRITE:/'P0001:', p0001. ENDPROVIDE. La pantalla de selección que nos saldría al usar la base de datos lógica PNP sería la siguiente:
Los campos de la selección de datos están definidos en la estructura QPPNP , mientras que los campos de selección de personal están definidos en el programa include DBPNPSEL (Tablas internas que se completan mediante APPEND). Cuando se usa la base de datos lógica PNP hay que declarar en el programa la estructura PERNR , en esta estructura se guardarán los números de personal seleccionados mediante la pantalla de selección. En la estructura PERNR solo hay que el leer el campo PERNR, que contiene el número de empleado, el resto de campos se encuentran allí por motivos internos. Si se usa la base de lógica PAP habrá que declarar la tabla APPLICANT, para obtener el numero de candidato. Cuando se realiza el GET re rellenan la tablas internas (el nombre de la tabla interna es Pnnnn , nnnn es el número del infotipo) de los infotipos (declarados en la sentencia INFOTYPES) con los registros, desde los datos inferior hasta los datos superiores, del numero de personal leído en el GET .
Agosto 2010 Spanish
11 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Más adelante se explicaría como se accede a los infotipos.
4 INFOTIPOS Los infotipos se utilizan en HR y representan grupos de datos relacionados con un tema en particular. Los datos que se almacenan en un infotipo dependerán del número de personal de un empleado o del número de un candidato, es decir, cada empleado o candidato siempre se le asigna un registro de infotipo. Cada infotipo está compuesto por un número de cuatro dígitos nnnn . El rango de número de 9000 a9999 esta reservado para los infotipos del cliente. Mediante la transacción PM01 – Diálogos en la gestión de personal se pueden crear y tratar infotipos. En un infotipo no podemos añadir ni borrar información, solo podemos modificarla.
4.1 Declaración Antes de procesar un infotipo hay que declararlo. Para declararlo hay que usar la sentencia INFOTYPES. El rango de infotipos es el siguiente: •
Entre el 0000 y 0999 tenemos los datos maestros del infotipo.
•
Entre el 1000 y el 1999 tenemos los datos de planificación.
•
Entre el 2000 y el 2999 tenemos los datos de tiempo.
•
Entre el 3000 y 8999 no tenemos nada.
•
Y entre el 9000 y 9999 tenemos los infotipos de cliente.
La sintaxis sería:
INFOTYPES: nnnn [NAME c] [OCCURS n] [MODE N] [VALID FROM comp1 TO comp2] Donde nnnn es el número del infotipo que vamos a declarar. Cuando se declara un infotipo en memoria se crea una tabla interna con la siguiente estructura: DATA BEGIN OF Pnnnn OCCURS 10. INCLUDE STRUCTURE Pnnnn. DATA END OF Pnnnn VALID BETWEEN BEGDA AND ENDDA.
Agosto 2010 Spanish
12 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) La cláusula VALID BETWEEN BEGDA AND ENDDA indica que período se va a coger registros. Los parámetros opcionales son: •
NAME C Æ Nos crea una tabla interna, con la misma estructura que el infotipo declarado, con el nombre indicado en C. C tiene un longitud máxima de 20 caracteres.
•
OCCURS n Æ Nos crea una tabla interna poniendo el valor n en la cláusula OCCURS. MODE n Æ Esta cláusula solo esta disponible para las bases de datos lógica PNP y PCH, y su efecto es que no llena el infotipo cuando se ejecuta la sentencia GET PERNR. VALID FROM comp1 TO comp2 Æ Cuando se ejecuta la sentencia GET PERNR
• •
el infotipo se llenará con los registros cuyo período este comprendido entre
comp1 y comp2.
4.2 Procesamiento del infotipo Existen dos maneras de procesar un infotipo: •
Procesamiento de un registro especifico del infotipo, el más reciente/más antiguo.
•
Procesamiento de todo el infotipo.
4.2.1 Procesar de un registro específico del infotipo En muchos casos no necesitaremos leer todos los registros del infotipo, sino que necesitaremos leer al último o primer registro. Para ello utilizaremos las siguientes macroinstrucciones:
RP-PROVIDE-FROM-LAST Pnnn SPACE PN-BEGDA PN-ENNDA Æ Nos devuelve el último registro.
RP-PROVIDE-FROM-FIRST Pnnn SPACE PN-BEGDA PN-ENNDA Æ Nos devuelve el primer registro. Donde nnnn es el numero de infotipo, en la variable PN-BEGDA o PNPENDDA tenemos la fecha inicial del período introducido por pantalla, y en PN-ENDDA o PNPENDDA tenemos la fecha final del período introducido por pantalla. Un ejemplo sería: REPORT zprueba1. * PERNR es una estructura que es llenada por la base de datos lógica PNP * con los datos del empleado TABLES: pernr." --> Datos de personal
Agosto 2010 Spanish
13 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) * Declaración de los infotipos INFOTYPES: 0001. START-OF-SELECTION. GET pernr. " --> Usa base de datos lógica PNP rp_provide_from_last p0001 space pn-begda pn-endda. * Si hemos encontrado datos entonces se muestra el registro. IF pnp-sw-found = '1'. WRITE:/ 'P0001:', p0001. * En caso contrario leemos el siguiente numero de personal ELSE. REJECT. ENDIF. Las macroinstrucciones se definen en la tabla TRMAC.
4.2.2 Procesamiento de todo el infotipo Ya hemos comentado que cuando se realiza un GET PERNR las tablas internas de los infotipos son llenadas con el historial completo (del más antiguo al más reciente) del empleado leído. Por lo tanto podemos tener que en una tabla interna existan más de un registro o períodos o intervalos de validez. El procesamiento de registros del infotipo es dependiente del tiempo, es decir, depende del período de selección de datos introducido en la imagen de selección. Pueden procesarse al mismo tiempo los datos de varios infotipos y pueden prepararse para un período de tiempo parcial específico. Las tablas internas del infotipo se procesan con la sentencia PROVIDE. La sintaxis es: PROVIDE * FROM Pnnnn BETWEEN PN-BEGDA AND PN-ENDDA. …….. ENDPROVIDE. Donde nnnn sería el numero del infotipo. La relación entre el infotipo y el período de selección de datos de la imagen de selección se establece mediante las variables PN-BEGDA (Inicio) y PN-ENDDA (Fin).
4.2.3 Actualización de un infotipo Como hemos se ha visto antes a los infotipos no se les puede insertar ni borrar, pero si que podemos es modificar sus datos. Para ello esta la macroinstrucción RP-UPDATE. Cuya sintaxis es:
RP-UPDATE datos_antiguos datos_nuevos.
Agosto 2010 Spanish
14 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Un ejemplo sería: REPORT ZIVAN . TABLES: PERNR. * Definimos una tabla interna llamada OLD/NEW con la misma estructura * que 0001. INFOTYPES: 0001 NAME OLD, 0001 NAME NEW. START-OF-SELECTION. GET PERNR. * Cuando se efectura el GET las tablas internas OLD y NEW están llenas * con el resultado de la búsqueda PROVIDE * FROM OLD BETWEEN PNPBEGDA AND PNPENDDA. WRITE:/, OLD-PERNR, 'OLD-PERSK':, OLD-PERSK. * Ponemos el nuevo valor a la tabla NEW NEW-PERSK = '22'. WRITE:/ 'NEW-PERSK':, NEW-PERSK. * Modificamos la tabla interna, no insertamos porque ya esta llena MODIFY NEW INDEX SY-TABIX. ENDPROVIDE. * Llamamos a la macroinstrucción RP-UPDATE pasando la tablas interna * con los viejos y nuevos datos. RP-UPDATE OLD NEW.
4.3 Definición de un infotipo. Un infotipo nnnn esta formado por al menos dos estructuras y una tabla: •
Estructura PSnnnn Æ Esta estructura contiene todos los campos de datos del infotipo.
•
Estructura Pnnnn Æ Contiene los campos clave del infotipo y los campos de la estructura PSnnnn.
•
Tabla transparente Pannnn y/o PBnnnn Æ La tabla transparente PAnnnn se usa para los infotipos de gestión de personal. La tabla transparente PBnnnn se usa para los infotipos de contratación de personal.
Cuando se crea un infotipo hay que hacerlo a través del Data Dictionary del ABAP, dependiendo del release tambíen se puede crear desde la transacción PM01 – Diálogos en la gestión de personal. Es muy posible que se necesite definir otras estructuras y tablas para infotipos específicos.
Agosto 2010 Spanish
15 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
4.3.1 Estructura de la tabla PSnnnn Cada infotipo incluye campos de datos almacenados únicamente dentro de ese infotipo en cuestión. Los campos son necesarios para definir las estructuras de los datos del infotipo y las tablas de las bases de datos. Los campos de datos se agrupan en la estructura PSnnnn para evitar la redundancia en la definición. Cuando se crea la estructura PSnnnn hay que tener en cuenta que los campos no pueden estar formados por más de cinco dígitos y tampoco se pueden usar campos de tipo INT4. Si deseamos usar subtipos hemos de duplicar el campo clave Pnnnn-SUBTY en la estructura PSnnnn. Este campo necesito su propio nombre y elemento de datos. El campo de subtipo se debe incluir en todas las pantallas del infotipo y además debe permitir efectuar entradas. Cuando se actualizan las características del infotipo se debe especificar el nombre del campo del subtipo duplicado en el campo Campo del subtipo de la tabla T582A. Los módulos centrales del infotipo registran automáticamente los datos en el campo clave Pnnnn-SUBTY a partir de las entradas en este campo. Al usar un subtipo tendremos las siguiente ventajas: •
Se usan tablas de verificaciones especiales para el subtipo asignado al infotipo.
•
Se puede crear documentación específica de campo para el subtipo y visualizarla mediante la tecla de ayuda.
4.3.2 Estructura de las tablas PAnnnn y PBnnnn Los registros del infotipo nnnn se almacenan en las tablas de las bases de datos PAnnnn y PBnnnn. Dependiendo en que área se utilice el infotipo se utiliza una tabla u otra. •
Para infotipos de gestión de personal se usara la PAnnnn.
•
Para infotipos de contratación se usara la tabla PBnnnn.
También se debe especificar las tablas de la base de datos que desea utilizar en la tabla
T852A – Características del infotipo.
4.3.2.1 Tabla PAnnnn Nombre de campo
Clave
Elemento de datos
MANDT
X
MANDT
.INCLUDE
X
PAKEY
.INCLUDE
Agosto 2010 Spanish
Tipo Longitud
CLNT 3
Tabla de Texto breve verificación
T000
Mandante
PSHD1
16 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) .INCLUDE
PSnnnn
4.3.2.2 Tabla PBnnnn Nombre de campo
Clave Elemento de datos Tipo
MANDT
X
MANDT
.INCLUDE
X
PBKEY
.INCLUDE
PSHD1
.INCLUDE
PSnnnn
Longitud
CLNT 3
Tabla de verificación
T000
Texto breve
Mandante
4.3.2.3 Opciones técnicas En estas tablas no es necesario crear índices secundarios ya que los datos se leen a través del índice primario. En los campos de Parámetros memoria lógicos se ha de introducir lo siguiente: •
Clase de datos Æ El valor APPL0.
•
Categoría de tamaño Æ El valor variará dependiendo de la utilización del infotipo.
En los campos de Grabación en memoria intermedia indicaremos que no se pueda grabar registros en memoria intermedia, esto es debido a que los programas que trabajan con estos infotipos necesitan datos actuales. Los datos de los infotipos se graban en la memoria intermedia dentro de las aplicaciones de Gestión de personal independientemente de las parametrizaciones del Diccionario ABAP/4. Se pueden introducir modificaciones en los registros de infotipo en forma de protocolos de modificación mediante la función de creación de logs de infotipos en Gestión de personal. El report RPUAUD00 le permite visualizar estos documentos. Rara vez es necesario realizar una grabación en log de las modificaciones de datos en el Diccionario ABAP.
4.3.3 Estructura Pnnnn
Agosto 2010 Spanish
17 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) La estructura Pnnnn contiene los campos de datos de la estructura PSnnnn y los campos de datos incluidos en todos los infotipos. La estructura Pnnnn se compone de PSHDR y PSnnnn. La estructura de la tabla PSHDR contiene PSKEY y PSHD1. La estructura Pnnnn contiene casi los mismos campos que las tablas PAnnnn y PBnnnn. Existen diferencias en los campos claves incluidos (PSKEY en lugar de PAKEY y PBKEY). Además en la estructura no es necesario poner el campo mandante. Esta estructura se usa en los informes y modulpools de los infotipos. Además sirve como interfase entre el programa y la base de datos. Los infotipos del cliente se incluyen automáticamente en la base de datos lógica PNP.
4.3.4 Estructura adicionales para campos de imagen Al definir campos de imagen en el Screen Painter ABAP, no especificaremos datos estructurales (como tipo y longitud de datos) directamente cuando actualicemos la imagen. Es mejor especificar dichos datos indirectamente con el fin de que se tomen de la definición de objetos del Diccionario ABAP. Cada campo se encuentra en una estructura diferente, dependiendo de su significado: •
En la estructura RP50M nos encontramos los campos que se visualizan para todos los infotipos, como por ejemplo las cabeceras de pantallas individuales.
•
En la estructura PSnnnn se almacena los campos específicos del infotipo.
En una pantalla podemos incluir campos que aún no estén incluidos en una estructura. Para ello debemos crear la estructura Znnnn además de la estructura Znnnn. En la tabla Znnnn se pueden incluir todos los campos que deban visualizar en pantalla pero que aún no estén incluidos una estructura. El nombre de la estructura correspondiente para infotipos es Qnnnn.
4.3.5 Modulpool ABAP/4 de infotipo Cada infotipo consta de un modulpool que constituye el programa principal de la interfase de la actualización del infotipo. El nombre del programa es MPnnnn0. P se refiere al numero de personal y nnnn representa el número de infotipo. El programa MPnnnn0 solo contiene includes, si creamos el programa principal a través de la PM01 el sistema nos creará los siguientes includes: • • • •
MPnnnn10 Æ Declaración de objetos comunes MPnnnn20 –> Módulos PBO del programa. MPnnnn30 Æ Módulos PAI del programa MPnnnn40 Æ Subrutinas del programa.
Además de los includes propios del programa principal SAP inserta los siguientes includes:
Agosto 2010 Spanish
18 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) •
FP50PPSB Æ Es la declaración de objetos comunes. Esta área se utiliza como memoria intermedia para registros info importados e información sobre actualización. Las variables de este include se usan como parámetros export/import cuando se accede al módulo de dialogo del infotipo.
• • • •
MPPDAT00 Æ Declaración de objetos de datos comunes. MPPERS00 Æ Módulos de infotipos estándar. MPPIRC00 Æ Definición de códigos de retorno de infotipos. MPPREF00 Æ Definición de dos objetos de datos que contienen la cantidad de números de personal de referencia en la estructura P0031 ó P0121.
A veces nos encontramos que muchos infotipos necesitan módulos que solo funcionan para un determinado país. Las definiciones de datos, PBO, PAI y subrutinas se han de almacenar por separado en includes propios. Después se introduce el indicador de país de HR que se asigna en la tabla T500L en la agrupación de países adecuadas, al final del nombre de include correspondiente. La nomenclatura para funciones adicionales sería, siguiendo la las convenciones: • • • •
MPnnnn5x Æ Declaración de objetos comunes MPnnnn6x –> Módulos PBO del programa. MPnnnn7x Æ Módulos PAI del programa MPnnnn8x Æ Subrutinas del programa.
La x al final del nombre se puede utilizar para una mayor distinción entre los distintos includes.
4.3.6 Pantallas de un infotipo Cada infotipo dispone de al menos tres pantallas: •
Pantalla inicial
•
Pantalla individual
•
Visualización de lista
También es posible ajustar el control de pantallas para sustituir la pantalla individual o inicial por pantallas alternativas. También es posible usar otras pantallas individuales o visualizaciones de lista en HR, para adaptar una pantalla según las necesidades de un país determinado.
4.3.6.1 Pantalla inicial La pantalla inicial de un infotipo se utiliza como una interfase técnica entre transacciones dentro de Gestión de personal y el infotipo en sí. Se accede a través del módulo de diálogo asignado al infotipo en cuestión.
Agosto 2010 Spanish
19 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) El número de dynpro asignado para la pantalla inicial es el 1000. La pantalla 1000 del modulpool MPMMMM00 se utiliza como modelo. La pantalla inicial del infotipo se procesa en fondo, o sea, no se visualice aunque se procese. La funcionalidad de dicha pantalla es: •
Procedimiento de inicialización general, es necesaria para todos los infotipos.
•
Acceso a la pantalla individual.
•
Etapas de proceso generales una vez que se ha procesado la pantalla individual
La imagen inicial siempre se tiene que crear con la transacción PM01 – Diálogos en HR, ya que la genera con todas las funciones requeridas. Esta pantalla no es modificable.
4.3.6.2 Pantalla individual La imagen individual permite la comunicación entre el sistema y usuario. Y permite: crear, visualizar o actualizar registros individuales de infotipos. Por regla general a la pantalla individual se le asigna la dynpro 2000, pero esto es susceptible de ser cambiado. La dynpro 2000 del modulpool MPMMMM00. Además se pueden crear pantallas individuales propias para infotipos estándar de SAP. El área de nombre que se le asigna es entre el 2900 al 2999.
4.3.6.2.1
Verificaciones
Los valores del infotipo 0001 - Asignación organiz. válidos al principio del período de validez del registro y las entradas en las tablas T001, T001P, T500P y T503 válidas en la estructura PSYST le permiten efectuar verificaciones de entrada específicas de infotipo. Esto significa que el sistema no necesita leer el infotipo 0001 o las tablas mencionadas arriba. Tan solo hay que declararlas en la sentencia TABLES. Hay que tener en cuenta que los valores de la estructura P0001 y P0002 no se suelen inicializar y por lo tanto no es recomendable su uso.
4.3.6.2.2
Entradas posibles
En el sistema se visualizarán todas las entradas posibles que se verifiquen de acuerdo con una tabla. Si aun campo del diccionario se le asigna una tabla de verificación capaz de verificarse automáticamente, el sistema mostrará automáticamente las posibles entradas.
Agosto 2010 Spanish
20 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
4.3.6.2.3
Configuración de pantalla
Las seis primeras líneas de la pantalla inicial siempre son iguales para todos los infotipos: •
De la primera a la tercera línea se muestran los datos del empleado.
•
La cuarta línea permanece en blanco.
•
La quinta línea se visualizan los campos de Fecha DE, Fecha A, Campo de bloqueo, Campo de texto, Modificado por y Modificado el.
Los campos específicos del infotipo se visualizan de la séptima línea a la vigésima primera. Todos los campos en pantalla se han de mostrar en un marco. Aunque el campo que indica el subtipo puede estar por encima del primer marco.
4.3.6.2.4
Lógica de proceso
Si se crea la lógica de proceso del infotipo mediante la transacción PM01 – Diálogos en la Gestión de personal el sistema nos creará la siguiente lógica de proceso estándar: En el PBO tendríamos:
PROCESS BEFORE OUTPUT. MODULE BEFORE_OUTPUT. Æ No modificable MODULE Pnnnn. MODULE HIDDEN_DATA. Æ No modificable Dentro del módulo PBO Pnnnn se pueden llevar a cabo procedimientos de inicialización específicos de infotipo. Le permiten, por ejemplo, completar los campos de pantalla almacenados en las estructuras Qnnnn y Znnnn Si se evalúan indirectamente las CC-nóminas, debe completarse el campo Importe Q0014BETRG dentro de la lógica de proceso del infotipo 0014 Dev./deducc. period. porque el importe no se almacena en la base de datos. En el PAI tendríamos:
PROCESS AFTER INPUT. MODULE EXIT AT EXIT-COMMAND CHAIN. FIELD Pnnnn-campo1, …. MODULE INPUT_STATUS ON CHAIN-REQUEST.
Agosto 2010 Spanish
21 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) ENDCHAIN. El módulo PAI INPUT_STATUS se deberá crear cuando el usuario pueda realizar alguna entrada en un campo de pantalla. Por este motivo, se deben tener en cuenta todos los campos de entrada. El módulo PAI INPUT_STATUS fija status de sistemas internos: si se modifica un valor, por ejemplo, el registro de infotipo debe almacenarse con posterioridad.
MODULE PRE_INPUT_CHECKS. El módulo PAI PRE_INPUT_CHECKS se utiliza para procesar el código de función antes de la verificación de entrada. Si selecciona la función Finalizar, por ejemplo, el sistema interrumpe el proceso de la pantalla individual actual. Una vez que este módulo ha finalizado podemos incluir módulos propios o verificaciones a medida. Cuando hemos llegado a este punto debemos tener en cuenta que las verificaciones a los campos de debe estar completa, ya que en el proceso siguiente ya no se podrá modificar el contenido del campo. El módulo PAI POST_INPUT_CHECKS procesa el código de función después de la verificación de entrada. Además también efectúa la verificación de entrada general. Esto garantiza, por ejemplo, que la fecha DE de un registro de infotipo sea anterior a la fecha A del mismo registro. Todos los campos que se visualicen en la pantalla individual deben tenerse en cuenta en la siguiente cadena:
CHAIN. FIELD Pnnnn-feld1,RP50M-SPRPS,Tnnn-felda,... MODULE POST_INPUT_CHECKS. ENDCHAIN. Los
módulos
siguientes
no
pueden
modificarse:
PAI
EXIT,
INPUT_STATUS,
PRE_INPUT_CHECKS y POST_INPUT_CHECKS.
4.3.6.3 Visualización de lista Este tipo de visualización permite ver todos los registros de datos de un infotipo especifico creado para un número de personal. Este tipo de visualización usa la dynpro 3000, pero también es susceptible de ser cambiado. Como modelo se coge la dynpro 3000 del modulpool MPMMMM00 . También se pueden crear visualizaciones de lista propias de infotipos estándar, el ámbito de creación sería entre el 3000 y 3999.
4.3.6.3.1
Configuración de pantalla
La visualización de lista consta de tres áreas:
Agosto 2010 Spanish
22 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) •
De las líneas uno y tercera línea se visualiza las líneas de cabecera.
•
De las lineas quinta y decimonovena contiene la lista de los registros del infotipo.
Por regla general se usa los campos asignados a la estructura Pnnnn. Si deseamos mostrar otros campos podemos actualizarlos con otros campos. Los registros de infotipo se pueden visualizar en una o varias líneas. •
Los campos de selección: RP50M-BEGDA, RP50M-ENDDA, RP50M-SUBTY, RP50M-ABGRD y RP50M-PAGEA se muestran en la línea vigésima.
Estos campos permiten seleccionar los registros del infotipo basándose en el período validez, el subtipo, la fecha de limitación o la posición de lista. En estos campos, exceptuando en el RP50M-ABGRD (Fecha de limitación), esta permitido efectuar entradas. El campo de fecha de limitación solo debería mostrarse si la intención es realmente imitar. Si la visualización de lista se crea a través de la transacción PM01 – Diálogos en la Gestión de personal el sistema configura automáticamente la visualización de lista.
4.3.6.3.2
Lógica de proceso
Si creamos la visualización de lista mediante la transacción PM01 – Diálogos en la Gestión de personal el sistema creará la lógica de proceso. En el PBO:
PROCESS BEFORE OUTPUT. MODULE BEFORE_OUTPUT. LOOP. MODULE PSLIST. Æ No modificable. MODULE Pnnnn. ENDLOOP. Dentro del módulo Pnnnn se lleva a cabo los procedimientos de inicialización específico del infotipo. Si se necesitan crear procedimientos de inicialización diferentes se han de crear en un módulo aparte que deberá llamarse PnnnnL. En el PAI: PROCESS AFTER INPUT. MODULE EXIT AT EXIT-COMMAND. LOOP. FIELD RP50M-SELEC MODULE MARK ON REQUEST.
Agosto 2010 Spanish
23 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) ENDLOOP. CHAIN. FIELD RP50M-BEGDA. FIELD RP50M-ENDDA. FIELD RP50M-SUBTY. MODULE SELECT_FOR_LIST ON CHAIN-REQUEST. ENDCHAIN. MODULE POST_INPUT_CHECKS. Los módulos que no se pueden modificar: PAI EXIT, MARK, SELECT_FOR_LIST y POST_INPUT_CHECKS.
4.3.6.4 Control de pantallas de un infotipo Al crear imágenes individuales y visualizaciones de lista con el Screen Painter, pueden determinarse los atributos de las imágenes individuales. Sin embargo, siempre se utiliza la misma pantalla para varias funciones, como crear, visualizar, actualizar y borrar registros de infotipo. Por esta razón, no se puede especificar si se pueden efectuar entradas en un campo de pantalla al actualizar la pantalla. También es posible que determinados campos de pantalla se encuentren ocultos, en función de los datos organizativos del empleado. Es decir, algunos atributos no están especificados por norma, sino que se especifican en el tiempo de ejecución. El aspecto de las pantallas cambia dependiendo de la función que seleccione el usuario o de los datos que se procesen. Las mismas pantallas individuales se utilizan para las funciones Visualizar datos maestros y Actualizar datos maestros. No obstante, sólo debe ser posible efectuar entradas en los campos si se selecciona la función Actualizar datos maestros. Por este motivo, debe determinarse si se puede o no realizar entradas en los campos, dependiendo de la función a ejecutar. Las pantallas utilizadas para introducir datos del coche de la empresa en el infotipo 0032 Datos de la empresa deben estar ocultos para los empleados asignados al grupo de personal de pensionistas. Las funciones de control de pantallas ya se han implementado en el programa principal de infotipos. Estas funciones leen los valores desde los grupos de modificación de cada uno de los campos de la pantalla y fijan los atributos en función de los valores. El significado de los valores de los grupos de modificación se determina en las tablas. Al desarrollar infotipos, dispone de las siguientes opciones para el control de pantallas: •
Se puede determinar que las entradas se realicen en campos o bien optar por ocultar los campos de pantalla, dependiendo de la función a ejecutar. El valor del Grupo de modificación 1 le permite determinar que se puedan realizar entradas en campos de pantalla. También es posible ocultar cada uno de los campos de una pantalla. El valor del Grupo de modificación 1 se debe actualizar para todos los campos de entrada. •
Agosto 2010 Spanish
Se pueden utilizar dynpros alternativos o determinar que se puedan realizar entradas en campos u ocultar campos de pantallas mediante los datos de control de la tabla T588M.
24 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) En relación con la tabla T588M, el valor del Grupo de modificación 3 determina la actividad y si se pueden realizar entradas en campos. Si se utilizan ambas posibilidades para el control de pantallas de un campo de pantalla, tiene prioridad el control de pantallas mediante la tabla T588M. El Grupo de modificación 2 se utiliza internamente. El Grupo de modificación 4 no se utiliza en la versión estándar porque se reserva para clientes.
4.3.6.4.1
Control de imágenes según la función a ejecutar
Dependiendo de la función que vayamos a ejecutar podemos: Determinar si las entradas se pueden realizar en campos de pantallas individuales y ocultar los campos de imágenes individuales. El screen painter nos permite actualizar el valor del Grupo de modificación 1 para los campos de imagen en cuestión. El valor del Grupo de modificación 1 se debe actualizar para todos los campos de pantalla en los que se pueden realizar entradas. El significado de los valores en el Grupo de modificación 1 se determina en la tabla T589A. Para determinar si se pueden efectuar entradas en campos de pantalla en la versión estándar, se definen las siguientes constantes: Se puede efectuar una entrada en campo Constante hexadecimal para grupo de de pantalla para la función modificación 1 Visualizar
001
Modificar
002
Añadir y copiar
004
Borrar
008
Bloquear/desbloquear
010
Para ocultar campos de pantalla, en la versión estándar se definen las siguientes constantes: Se oculta campo de pantalla para la función
Constante hexadecimal para grupo de modificación 1
Limitar en visualización de lista
200
Visualizar en visualización de lista y Modificar en visualización de lista
400
Añadir y copiar
800
Agosto 2010 Spanish
25 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) El valor del Grupo de modificación 1 se interpreta por bits. Se puede combinar más de una constante entre sí. No hay que olvidar que se debe actualizar el valor del Grupo de modificación 1 en forma hexadecimal. •
Si desea realizar entradas en un campo de pantalla al utilizar las funciones Añadir y Modificar debe actualizar el valor 006 en el Grupo de modificación 1.
•
Si desea realizar entradas en un campo de pantalla al utilizar todas las funciones debe actualizar el valor 00F en el Grupo de modificación 1.
En el caso de campos específicos de pantalla para pantallas individuales o visualizaciones de lista, se especifica previamente para todos los infotipos la parametrización que determinará si se puede o no realizar entradas. Si se crea la pantalla individual o la visualización de lista mediante la transacción PM01 - Diálogos en la Gestión de personal, el sistema introduce el valor correcto en el Grupo de modificación 1 para estos campos de pantalla. •
Normalmente se pueden efectuar entradas en los campos BEGDA y ENDDA para todas las acciones, aparte de visualizar registros. Por esta razón, para estos campos al atributo Grupo de modificación 1 se le asigna el valor 00E.
•
El Grupo de modificación 1 tiene el valor 800 para los campos AEDTM y UNAME. Esto garantiza que estos campos se encuentren ocultos cuando se añada un registro.
•
La visualización de lista permite realizar entradas en los campos RP50MBEGDA, RP50M-ENDDA, RP50M-SUBTY y RP50M-PAGEA con el fin de poder seleccionar registros. A estos campos se les asigna el valor 00F porque debe ser posible realizar una entrada en cada operación.
•
La fecha de limitación en el campo RP50M-ABGRD sólo debería visualizarse en la visualización de lista si la función actual es realmente limitar. Por este motivo, el Grupo de modificación 1 se actualiza mediante el valor 400.
•
Sólo se pueden seleccionar registros múltiples en la visualización de lista si se utilizan las funciones de visualización y limitación. Al campo RP50M-SELEC, contenido en un loop, se le asigna el valor 009 para el Grupo de modificación 1.
4.3.6.4.2
Control de imágenes dependientes de los datos de control
En el control de pantallas según la función a ejecutar, se puede •
Sustituir la imagen estándar por una imagen alternativa
•
Determinar si las entradas pueden realizarse en campos de imagen individual
•
Ocultar los campos de imágenes individuales.
El control de pantalla se puede llevar a cabo: •
De forma general
•
En función de los datos organizativos del empleado
•
En función del subtipo del registro de infotipo.
Agosto 2010 Spanish
26 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) El screen painter permite actualizar el valor del Grupo de modificación 3 para los campos de imagen en cuestión. En el Grupo de modificación 3, a cada campo de pantalla se le asigna un valor entre 001 y 001. Si desea modificar campos de pantalla de la misma forma, utilice el mismo valor. Si se trata de un campo de entrada/salida, se utiliza el mismo valor que el de la palabra clave correspondiente y un texto explicativo que se puede visualizar. Si los campos de pantalla no se pueden modificar mediante la tabla T588M, asigne el valor SPACE en el Grupo de modificación 3. A continuación hay que utilizar la tabla T588M para determinar •
si se han utilizado imágenes alternativas y cuáles
•
cómo se han modificado los campos de imagen individuales.
Si necesita más información sobre control de pantallas según datos de control, consulte la IMG sobre Gestión de personal y la documentación sobre la etapa Fijar modificación de pantalla de la sección Adaptación de las superficies.
4.3.6.5 Status para los infotipos La interfase de pantallas individuales y de visualizaciones de lista es estándar en todos los infotipos. Se utiliza un status de interfase específico según la función a ejecutar. Cuando se utilizan determinadas funciones es posible desactivar opciones de menú particulares o teclas de función definidas en el status de interfase. El status de interfase se configura en un módulo PBO de la versión estándar. Si se crea el infotipo mediante la transacción PM01 - Diálogos en la Gestión de personal, la lógica de proceso de las pantallas de infotipo accede automáticamente al módulo PBO. Por esta razón, no es necesario programar el status de interfase. El módulo PBO que fija el status de interfase sólo funciona correctamente si el nombre y la estructura del status de la interfase a utilizar cumplen las convenciones SAP. Por este motivo, debe utilizarse también la transacción PM01 - Diálogos en la Gestión de personal para crear la interfase del infotipo. En el único sitio donde no hay que crear un status es la pantalla inicial. La listade status necesarias es la siguiente: Pantalla
Status de interfase
Pantalla ndividual DIS
Visualización de
Agosto 2010 Spanish
Uso del status de interfase para la función Visualizar
MOD
Modificar
DEL
Borrar
COP
Copiar
INS
Añadir
EDQ
Bloquear
LIS0
Visualización de lista/visualizar
27 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) lista LIS1
Visualización de lista/actualizar
LIS9
Visualización de lista/limitar
4.3.7 Módulos de dialogos de infotipo Cada infotipo necesita un módulo de diálogo que represente la interfase entre las transacciones utilizadas en Gestión de personal y el infotipo en sí. El nombre del módulo de diálogo debe ser RP_nnnn; nnnn se refiere al número del infotipo. Al actualizar el módulo de diálogo, éste se asigna a un infotipo. Se debe especificar el nombre del modulpool ABAP/4 y el número de la pantalla inicial del infotipo. El infotipo se asigna al módulo de diálogo en la tabla T582A o por el nombre del módulo de diálogo. El infotipo 0002 - Datos personales utiliza el modulpool MP000200 y la dynpro 1000 como pantalla inicial. Por lo tanto, este infotipo necesita un módulo de diálogo llamado RP_0002 que accede a la pantalla 1000 del modulpool MP000200.
4.3.8 Características del infotipo Las características de un infotipo las determinan las entradas almacenadas en varias tablas. Para cada infotipo se deben de actualizar las tablas siguientes: •
T582A Æ Características básicas del infotipo: Pantallas, módulos de dialogo, etc…
•
T582S Æ Texto breve de los infotipos.
La vista V_T582A permite actualizar estas dos tablas. Otras posibles tablas que pueden ser necesarias modificar: •
T591A Æ Esta tabla se usa cuando el infotipo esta divido en subtipos. La tabla que se usa para guardar las características del subtipo es la T582A, como tabla de subtipos.
• •
T588G Æ Esta tabla controla el lanzamiento de retroactividad por campos. T588M Æ Permite adaptar las pantallas del infotipo. Se puede especificar una pantalla alternativa o siguiente o también se puede especificar un control de pantalla dependiente de usuario.
• •
Agosto 2010 Spanish
T588B Æ Menús de infotipo. T588Z Æ Medidas dinámicas.
28 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Las entradas almacenadas en estas tablas deben actualizarse manualmente. La transacción PM01- Diálogos en Gestión de personal le permite actualizar las características básicas de infotipo y configurar los menús de infotipo.
4.3.9 Módulos de texto de infotipo SAP nos permite crear un módulo de texto al introducir los datos maestros de registros individuales de datos de infotipo. Estos elementos de texto se almacenan en el fichero PCL1, en el ID de cluster TX. Para asegurarse de que los módulos de texto puedan crearse para un infotipo, al actualizar las características de infotipos (tabla T582A), se debe marcar el campo Texto admitido (T582A-INFTX). Al visualizar o actualizar un registro de infotipo, es posible visualizar o actualizar el texto. Para ello, hay que ir a la función Tratar → Visualizar texto o Tratar → Actualizar texto de la pantalla individual del infotipo.
4.3.9.1 Visualización y actualización de textos en la pantalla individual Se puede también visualizar o actualizar las tres primeras líneas de texto en la pantalla individual del infotipo. Si queremos utilizar esta función, tenemos que ajustar simplemente la pantalla individual en cuestión. No es necesario modificar las estructuras ni las tablas del infotipo del Dictionary ABAP/4. Las tres primeras líneas del texto de la pantalla individual del infotipo 0019 Seguimiento
fechas se visualizan o pueden actualizarse.
4.3.9.1.1
Configurar una imagen individual para visualizar y actualizar módulos de texto
Si deseamos visualizar o poder actualizar las tres primeras líneas de la pantalla individual del infotipo, hay que seguir estos pasos: •
Se ha de modificar la visualización de la pantalla individual del infotipo en cuestión.
•
Incluir los campos RP50M-TEXT1, RP50M-TEXT2, RP50M-TEXT3 en la pantalla individual. Para asegurarse de que se pueden realizar entradas en estos campos al utilizar las funciones Añadir y Modificar, hay que actualizar el valor 006 en el Grupo de modificación 1 en los tres campos.
• Aumentar la lógica de proceso de la acción PROCESS BEFORE OUTPUT. Insertar el módulo GET_TEXT después del módulo HIDDEN_DATA. Por lo tanto, el módulo GET_TEXT es el último módulo de esta acción al que se accede. •
Agosto 2010 Spanish
Aumentar la lógica de proceso de la acción PROCESS AFTER INPUT.
29 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Insertar las siguientes líneas después del módulo PRE_INPUT_CHECKS y antes de las verificaciones de entrada específicas de infotipo:
CHAIN. FIELD: RP50M-TEXT1, RP50M-TEXT2, RP50M-TEXT3. MODULE UPDATE_TEXT ON CHAIN-REQUEST. ENDCHAIN. También se han de incluir los campos RP50M-TEXT1, RP50M-TEXT2, RP50MTEXT3 en la cadena para el módulo POST_INPUT_CHECKS con el fin de que se puedan realizar entradas en estos campos cuando aparezca el mensaje W200 Grabe la entrada. • Verificar que el indicador Texto permitido esta activado en la tabla T582A. Si no se ha activado este indicador, los campos RP50M-TEXT1, RP50M-TEXT2, RP50M-TEXT3 se ocultan. Con ello se puede actualizar los textos del infotipo. Las tres primeras líneas del texto de la pantalla individual se visualizan o pueden actualizarse.
4.4
Guía para crear un infotipo
Es importante recordar que los infotipos de cliente se asignan al ámbito del 9000 al 9999. Lo primero que hay que hacer a la hora de crear un infotipo es crear los objetos parciales para ello disponemos de la transacción PM01 - Diálogos en la Gestión de personal . Una vez creados los objetos parciales, se integrará el infotipo a las transacciones de gestión de personal y/o Contratación de personal. Los infotipos se incluirán automáticamente a la base de datos lógica PNP. Los infotipos se crean en cuatro etapas: •
Primero se crea la definición del infotipo en el diccionario.
•
Segundo se crea el programa principal que contiene la función estándar del infotipo.
•
Tercero se crea el modulo de dialogo que acedera a la pantalla inicial del infotipo.
•
Cuarto se actualizan las características del infotipo.
Para los puntos 2 y 3 se puede usar la transacción PM01 - Diálogos en la Gestión de
personal. Si se crean las definiciones PSnnnn y Pnnnn en el diccionario antes de generar el programa principal, esto se tendrá en cuenta cuando se generé dicho programa. Y también cuando se genera el programa todos los campos de la estructura PSnnnn se incluyen en la lógica de proceso.
4.4.1 Crear infotipos
Agosto 2010 Spanish
30 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Para crear un infotipo tenemos que ir a la PM01 - Diálogos en la Gestión de personal y seguir los siguientes pasos: •
En el campo Nº Infotipo hay que introducir un número de cuatro dígitos (hay que introducir ceros a la izquierda) del infotipo que vamos a crear.
•
En el marco o frame de Objeto Parcial seleccionar Estructura PS. Se puede crear un objeto parcial si se selecciona la casilla correspondiente en el marco Objetos Parciales y luego pulsar sobre Crear.
•
Una vez seleccionado el botón/Icono de Crear nos saldrá el ABAP Dictionary.
•
Una vez en el Dictionary crearemos la estructura PSnnnn y activamos la estructura.
•
Volvemos a la imagen de Crear Infotipo.
•
Seleccionamos Crear todo y con esto crearemos la estructura Pnnnn. • Si se ha marcado el Infotipo de empleado se creara la tabla PAnnnn. • Si se ha seleccionado el Infotipo de candidatos se creará la tabla PBnnnn. • También se crearán los siguientes subobjetos: • •
ModulPool ABAP/4. Programa principal: MPnnnn00. Includes del programa: MPnnnn10, MPnnnn20, MPnnnn30 y MPnnnn40. Imágenes. Dynpros 1000, 2000 y 3000 para el modulpool
MPnnnn00. •
Interfase donde contendrá todos los status de interfase necesarios.
•
Módulo de dialogo RP_nnnn.
•
Entrada en la tabla T777D con las características técnicas del infotipo.
•
Entrada en la tabla T77ID para la estructura de campo de datos PSnnnn para el infotipo
• Por último podemos crear las estructuras adicionales que se necesiten. Una vez creado el infotipo tendremos que realizar las configuraciones adecuadas en la tabla T582A en el customizing para Gestión de personal.
4.4.2 Actuslizar las características del infotipo Cuando se crea un infotipo, el sistema no crea las entradas de tabla que definen las características del infotipo, que son las tablas T582A y T582S. Por esto motivo tenemos que realizar las entradas manualmente en estas tablas o de una manera más comoda en la vista V_T582. Para actualizar las características del infotipo hay que ir a la transacción PM01 - Diálogos
en la Gestión de personal y realizar lo siguiente: •
Seleccionar Diálogo Æ Crear infotipo
•
Seleccionar Características IT y nos llevará a Visualizar vista infotipo: Imagen resumen.
Agosto 2010 Spanish
31 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) •
Creamos una nueva entrada con los datos del infotipo. También se puede crear una copia de una entrada ya existente para crear la nuestra.
4.4.3 Implementación funcional del infotipo En esta etapa es donde realizaremos las configuraciones necesarias para las visualizaciones de lista e individuales, crear procedimientos nuevos de inicialización para campos de pantalla, realizar validaciones propias, etc… Para realizar todas estas tareas podemos usar la transaccion PM01 - Diálogos en la Gestión
de personal o usar el Object Browser del Workbench ABAP.
4.5 Ampliación de infotipos estándar La ampliación de infotipos estándar consta de: •
Realizar validaciones adicionales, mediante la transacción CMOD - Ampliación
de sistema •
Incluir campos adicionales al infotipo. Esto quiere decir que se puede incluir campos nuevos a la estructura PSnnnn, con lo cual se pueden actualizar los campos en la pantallas individuales.
Si incorporamos campos nuevos en un infotipos, estos serán tratados de la misma manera que los campos estándar de SAP en la gestión de informes, cuando se crean los documentos y en los eventos dinámicos. La ampliación de un infotipo estándar no crea problemas a la hora de realizar un upgrade de liberación. En las ampliaciones de un infotipo estándar tenemos las siguientes limitaciones: •
Los infotipos a los cuales no se les puede hacer una ampliación son: • 0000 - Acciones • 0302 – Acciones adicionales • 2nnn – Gestión de tiempos
•
la longitud de la estructura PSnnnn del campo de datos y del include CI no puede superar los 1500 Bytes.
•
Si se incluyen campos adicionales en el infotipo 0000 – Asignación organizacional, estos no aparecerán en la base de datos lógica PNP en los campos de selección.
4.5.1 Ampliación de una imagen individual La ampliación de una imagen individual se realiza con la transacción PM01 - Diálogos en la Gestión de personal:
Agosto 2010 Spanish
32 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) •
Seleccionar Ampliar infotipos
•
Introducir el número del infotipo (introduciendo ceros por la izquierda) que deseamos crear. Los infotipos 0000 – Acciones y los infotipos de Gestión de tiempos no se pueden crear.
•
En el marco o frame Objeto Parcial marcar Include CI.
•
Pulsar sobre Crear.
•
Crear el include CI y activarlo.
•
Volver a la imagen de Crear infotipo y seleccionar Crear todo.
4.5.2 Ampliación de una visualización de lista La ampliación de una visualización de lista se realiza con la transacción PM01 - Diálogos
en la Gestión de personal: • Seleccionar Visualización de lista. •
Introducir el número del infotipo (introduciendo ceros por la izquierda) que deseamos crear.
•
En el campo Numero de imagen se ha de introducir el numero de la lista a ampliar y seleccionar Crear.
•
Cuando se seleccione Crear se visualizara el Data Dictionary
•
En el Dictionary se crea la estructura de la visualización de lista.
•
Activar la estructura y volver a Ampliar visualización de lista en la transacción PM01 - Diálogos en la Gestión de personal y seleccionar Crear todo.
Los campos adicionales que se insertan se visualizan en la lista, aunque todavía esta en blanco. Se puede introducir datos en estos campos mediante el procedimiento FORM FILLLISTSTRUCT en el programa generado Zpnnnn00. Esta rutina se llama por cada registro de la lista. La estructura ZPLISnnnn se detecta vía generación por medio de una certificación de TABLES en el programa ZPnnnn00. Entonces se pueden introducir los datos en el campo de la estructura Pnnnn, o por medio de la lectura de tablas de texto.
4.5.2.1 Borrar campos adicionales Para borrar campos adicionales incluidos en la visualización de lista estándar seleccionando Ampliar visualización lista Æ Ampliar infotipos Æ Visualización de lista Æ Borrar infotipo no estándar. Esta función borra los campos en la estructura ZPLISnnnn de la visualización de lista estándar.
Agosto 2010 Spanish
33 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
4.6 Modificación de infotipos Cuando se efectúa un cambio de release o de versión, la estructura o función de los infotipos de la versión estándar puede modificarse. Las modificaciones en infotipos de cliente descritas en esta sección no son compatibles con tales cambios. Por esta razón, después de cada actualización de release se debe verificar y posiblemente adaptar las modificaciones. Es posible añadir nuevos objetos parciales a los infotipos de la versión estándar, o sea, se pueden crear: Pantallas especificas del cliente y includes específicos del cliente para un infotipo existente. Podemos usar el Control de imágenes (explicado con anterioridad) conjuntamente con la tabla T588M para sustituir las imágenes del infotipo por la nuestras propias. Si lo que se desea es añadir includes específicos del cliente a un infotipo, se debe de modificar el modulpool MPnnnn00 del infotipo. Si se añaden nuevos objetos parcial se tiene que usar clases de desarrollo específicas del cliente. Es importante utilizar clases de desarrollo específicas de cliente y observar las convenciones para definiciones de nombre con el fin de que no se pierdan sus desarrollos al actualizar el sistema. Los objetos parciales específicos de cliente se asignan a los siguientes ámbitos de nombres: Objeto parcial
Ámbito de nombres
Pantallas individuales específicas de cliente
2900 a 2999
Visualizaciones de lista específicas de cliente
3900 a 3999
Includes para declaraciones de datos específicos de cliente
MPnnnn5x
Includes para módulos PBO específicos de cliente
MPnnnn6x
Includes para módulos PAI específicos de cliente
MPnnnn7x
Includes para subrutinas específicas de cliente
MPnnnn8x
En el nombre de los includes, nnnn hace referencia al número de infotipo que desea modificar. El último carácter x puede definirse como desee.
4.7 Ampliación infotipo para entrada rápida de datos Si desea utilizar funciones de entrada rápida para su infotipo en Gestión de personal, debe ampliarlo. Se pueden realizar diferentes tipos de ampliación en función del tipo de entrada rápida de datos que se solicite.
Agosto 2010 Spanish
34 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
4.7.1 Ampliación infotipo para entrada rápida de datos maestros (PA70) Para introducir datos con rapidez para más de una persona en el infotipo nnnn hay que ir a la transacción PM01 - Diálogos en la Gestión de personal y realizar lo siguiente: •
Una vez en la transacción PM01 se han de copiar las dynpros 4000 y 5000 del modulpool ABAP MPMMMM00 al modulpool MPnnnn00. • La dynpro 5000 se utiliza para la entrada rápida de registros de infotipos • La dynpro 4000 es necesaria para introducir valores de propuesta, si se desea utilizar la función Crear con valores de propuesta para entrada rápida de datos.
•
Las dynpros 4000 y 5000 del programa MPnnnn00 se han de tratar con el screen painter. En el screen painter se incluirán los campos en las pantallas que deben sugerirse como propuesta, o deben actualizarse, para la entrada rápida de datos. Y se tendrá que introducir el valor 006 en el Grupo de modificación 1 de los campos de entrada. También se tiene que borrar los indicadores de verificación automática de clave externa en la pantalla 5000. Si hace falta, se puede incluir verificaciones de entrada de valores de propuesta en la lógica de proceso.
•
Se ha de verificar que los status se han copiado en ambas pantallas. Para las entradas rápidas de datos maestros se necesitan los siguientes status: • FINS Æ Crear • FMOD Æ Modificar • FEDQ Æ Bloquear/Desbloquear • FDEL Æ Borrar
•
Se han de incluir el include MPPERSFS en el modulpool MPnnnn00.
•
Con la transacción PM01 se ha de copiar el include MPMMMMFS en el include MPnnnnFS y se tiene que incluir en el modulpool MPnnnn00. Después es añadir los campos visualizados como valores de propuesta en las posiciones que se soliciten. • Para la definición del registro de campo PROPOSED_VALUES • En subrutina DNNNN
•
•
Actualizar las tablas T588R – Reports de selección para entrada rápida y T588Q – Tipos de pantalla para entrada rápida en el infotipo. A través del IMG se puede actualizar dichas tablas: Gestión de personal Æ Adaptación de
procesos de trabajo Æ Menús de infotipo Æ Adaptar menú de infotipo para entrada rápida. Incluir el infotipo en el menú para la transacción PA70. A través del IMG: Gestión de personal Æ Adaptación de procesos de trabajo Æ Menús de infotipo Æ Modificar menú de infotipo. En la entrada rápida de datos se fijan los siguientes menús de infotipo: 07 para entrada rápida de datos maestros y 09 para entrada rápida de datos de tiempos.
Agosto 2010 Spanish
35 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
4.7.2 Ampliación infotipo para entrada rápida de datos de acción (PA42) Es posible definir una entra rápida de datos en cada acción en la tabla T529A. Se han de introducir los campos necesarios en la imagen de entrada rápida para cada infotipo asignado al infogrupo de la acción. La mayoría de los infotipos ya tienen asignados valores de propuesta de las tablas y generalmente no se especifican en la pantalla. Los datos especificados se registran en la tabla interna PROPOSED_VALUES, que se pasan al infotipo 0000 - Acciones. El infotipo de acción accede a los infotipos asignados uno tras otro al infogrupo y distribuye los datos introducidos en la imagen de entrada rápida. Por regla general, los diálogos de infotipo se ejecutan en proceso de fondo. Las pantallas individuales de infotipo se visualizan sólo si existe algún error. No obstante, es posible utilizar la pantalla de entrada rápida para determinar si se ha ejecutado un infotipo en proceso de fondo si, por ejemplo, se necesitan introducir datos adicionales de un empleado o datos no estándar, que no pueden introducirse en la pantalla de entrada rápida.
4.7.2.1 Definición de imagen de entrada Los modelos que se usarán para copiarlos: •
Programa SAPMP5X0 dynpro 100 para versiones nacionales de la acción de contratación; ‘X’ debe reemplazarse según convenga.
•
Programa SAPMP50F dynpro 100 para acciones que no actualicen infotipos nacionales; se pueden añadir otras imágenes.
La pantalla de entrada rápida para acciones debe ser compatible con el infogrupo que pertenezca a la acción. Si se incluyen otros campos adicionales en la pantalla de entrada rápida, éstos no se pasan a los infotipos ni se almacenan. Si se pierden campos de los infotipos procesados por la acción, se visualiza la imagen individual del infotipo con el correspondiente mensaje de error. En la pantalla de entrada se actualizan tres tipos diferentes de campos: •
Campos de estructuras de infotipo Pnnnn (campos P). Los contenidos de estos campos se pasan a los infotipos adecuados en donde se verifican y se almacenan. A estos campos se les asigna el valor 001 en el Grupo de modificación 1.
•
Campos de estructuras de infotipo Qnnnn (campos Q). Estos campos se usan como las pantallas individuales de infotipo donde el formato externo es distinto al interno. El campo Q0002-ANREX ("Sr." "Sra.") consta del campo invisible P0002ANRED ("1", "2") con el valor "001" en el Grupo de modificación 1. A los campos Q no se les asigna ningún valor en el Grupo de modificación 1.
•
Casillas de selección para procesar pantallas de infotipo individuales si existen adicionales, abreviadas como campos condicionales a partir de ahora. A estos campos se les asigna el valor 002 en el Grupo de modificación 1.
Agosto 2010 Spanish
36 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
4.7.2.1.1
Lógica de proceso
En el PBO:
MODULE INIT OUTPUT. El status f ‘RÁPIDO’ se crear en el módulo INIT. Si la integración se activa con RP_PLAN, los siguiente campos P0001-KOSTL, P0001-ORGEH, P0001-STELL se modifican para que no se pueden llevar a cabo entradas. En el PAI:
MODULE EXIT Si se introduce "E" en el campo de comandos, se sale de la pantalla de diálogo.
MODULE PERNR El número de personal asignado se bloquea y se realiza la lectura de datos.
MODULE FCODE Trata el código de función pulsado: En el caso que se pulse el botón de Grabar, los datos se registran en la tabla interna PROPOSED_VALUES y se accede al infotipo 0000. En el caso de una acción de contratación, el sistema verifica la existencia del número de personal especificado. Los datos no se almacenan.
4.7.2.2 Generación de codificación La transacción PM01 permite generar codificaciones desde la pantalla de entrada. •
Definición de datos Las estructuras de infotipo Pnnnn y Qnnnn y los campos adicionales ADD_nnnn se declaran en el include MPxxxTOP.
•
Módulos de salida Las sentencias MODULE y ENDMODULE de los módulos de salida se incluyen en el include MPxxxO00.
•
Módulos de entrada Las sentencias MODULE y ENDMODULE de los módulos de entrada se incluyen en el include MPxxxI00.
•
Subrutinas El procedimiento FORM FILL_PROPOSED_VALUES_nnnn (nnnn = número de dynpro) se incluye en el include MPxxxF00. En esta procedimiento, la tabla interna PROPOSED_VALUES se completa con los nombres y contenidos de los campos procesados por la acción. El Grupo de modificación 1 de los campos se interpreta en la pantalla de entrada.
Agosto 2010 Spanish
37 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) El procedimiento sería: Se crea una nueva pantalla de entrada para un modulpool. Los includes con definiciones de datos, módulos de salida y entrada y procedimientos se complementan convenientemente Se modifica una pantalla de entrada para la que ya existe una codificación. Los includes con definiciones de datos, módulos de salida y de entrada se complementan con nuevos objetos. Si se borran campos o módulos, los objetos correspondientes no se borran de los includes porque pueden utilizarlos otras pantallas. Si la rutina FILL_PROPOSED_VALUES_nnnn ya existe en la pantalla actual nnnn, se visualiza una ventana de diálogo con una consulta de seguridad y se reconstruye la rutina.
4.7.2.3 Actualización de tabla En la tabla T588A, a la transacción de entrada rápida PA42 se le asigna un menú de acción que se actualiza en la vista V_588B_M. Las acciones sólo están permitidas si tienen una entrada rápida de datos. En la tabla T529F, el nombre de un módulo de diálogo en el que el módulo de diálogo esté determinado se asigna a las acciones con entrada rápida de datos. En la tabla TDCT, se incluye una entrada para el módulo de diálogo.
4.7.3 Adaptación de status en Gestión de personal Para adaptar los status y procedimientos de Gestión de personal, se ha de realizar lo siguiente: •
Se puede determinar las cabeceras individuales para pantalla individuales y visualizaciones de lista de infotipos. Desde el customizing: Gestión de personal Æ Adaptación de superficies Æ Fijar cabeceras dynpro.
•
Se puede determinar pantallas individuales y visualizaciones de lista alternativas, ocultar cada uno de los campos en pantalla y especificar si se pueden realizar entradas o no según que campos, mediante la tabla T588M para llevar el control de pantallas con la ayuda de datos de control.
•
Se puede incluir un infotipo en un menú de infotipo para actualizar y visualizar datos maestros de Gestion de Personal. Desde customizing: Gestión
•
de personal Æ Adaptación de los procesos de trabajo Æ Menús de infotipo Æ Modificar menú de infotipo. Para incluir un infotipo en una medida, a través del Customizing: Gestión de personal Æ Adaptación de los procesos de trabajo Æ Acciones.
4.8 Datos de tiempos
Agosto 2010 Spanish
38 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Los infotipos del 2000 al 2999 son infotipos de tiempos. Los datos de tiempos de estos infotipos se almacenan en las tablas de la PA2000 a la PA2999. Como hemos visto los infotipos se declaran con la sentencia INFOTYPE y los datos se ponen a disposición para su procesamiento en las tablas internas del infotipo (el infotipo 2011 es una excepción). No debe cargar en la memoria principal todos los registros de infotipo de tiempos desde los datos del sistema inferiores hasta los superiores. Esto puede producir rápidamente una sobrecarga de memoria, especialmente si existe un sistema de captura de tiempos front end conectado a su sistema de HR. Éste es el motivo por el cual los datos de tiempos deben leerse sólo para un período determinado. Utilice el suplemento de declaración del infotipo MODE N para definir que las tablas internas de infotipos de tiempos sean declaradas, pero no cumplimentadas en el punto del evento GET PERNR . Más adelante podrá cumplimentar estas tablas mediante una certificación con parámetros de período de selección. El siguiente ejemplo permite leer los datos de tiempos: REPORT RPABAP05. TABLES: PERNR. INFOTYPES: 2001 MODE N. GET PERNR. RP-READ-ALL-TIME-ITY PN-BEGDA PN-ENDDA. LOOP AT P2001. WRITE: / P2001-ABWTG. ENDLOOP. Las macroinstrucciones nos permite leer los datos de tiempo. Esta macroinstrucción utiliza el parámetro del período de selección de datos de la imagen de selección.
Debido al enlace temporal de los infotipos, deberán tenerse en cuenta varias características especiales al procesar datos de tiempos. Las vistas de datos de tiempos no acostumbran a ser prácticas. En los infotipos de tiempos, los datos se determinan basándose en el período de validez. Cuando se introduce un registro de absentismo, el número de días de absentismo se calcula sobre la base del período de absentismo. En una vista, los meses parciales nuevos se crean sin que se realice ninguna modificación en los datos del infotipo. Esto produciría resultados incorrectos en los infotipos de tiempos, puesto que estos datos dependen del período de validez. Por ejemplo, si un registro de vacaciones se extiende desde mediados de enero hasta mediados de febrero y se calculan 20 días de vacaciones para este período, entonces una vista del mes de febrero daría como resultado un registro de vacaciones que se extendería desde el principio hasta mediados de febrero. El número de días de vacaciones no se habría modificado y la información sería incorrecta. En los datos maestros, el enlace temporal es una característica definitiva del infotipo o subtipo. No existen dependencias de tiempo entre infotipos y subtipos. Básicamente los datos de tiempos son diferentes. Supongamos, que un empleado se pone enfermo durante las vacaciones. De este modo, el registro de vacaciones se delimita al primer día de la enfermedad y, a continuación, el registro de enfermedad. De la misma forma, el sistema no permite introducir un registro de vacaciones que coincida con un registro de enfermedad. Ocurre lo mismo en el caso de las horas extras realizadas durante una enfermedad.
Agosto 2010 Spanish
39 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) La dependencia del tiempo de los registros de infotipos de tiempos no está limitada sólo a dependencias entre registros de uno y el mismo infotipo, sino que cubre todos los infotipos y subtipos. El enlace temporal de los infotipos de tiempos no es un atributo, sino que se define por las relaciones entre infotipos. Además, determinados registros de infotipos de tiempos tienen tiempos de llegada y salida específicos. Por consiguiente, podrían existir varios registros para un infotipo en un día concreto. Puesto que las vistas requieren datos explícitos y los infotipos de tiempos no cumplen esta condición previa, no debería utilizar objetos agregados ni extrapolaciones para datos de tiempos. Las tablas de infotipos de tiempos se tratan con la certificación LOOP , puesto que la certificación PROVIDE limita y, por consiguiente modifica, las fechas de inicio y fin de los infotipos con el período de selección de datos.
4.9 Repetir estructuras En muchos infotipos de datos maestros, los datos se introducen en forma de tabla. Esto, por ejemplo, permite introducir hasta veinte CC-nóminas diferentes y sus importes. La imagen de entrada, dispone de siete líneas para entradas de CC-nóminas y, si utiliza la función de desplazamiento, puede introducir hasta veinte CC-nóminas. La estructura de la línea de CC-nómina está almacenada en la estructura del infotipo P0008 y los campos individuales están numerados del uno al veinte. Cada campo de la tabla de CC-nóminas está definido. Al evaluar estructuras de evaluación, hay que asegurarse de que se introducen todos los campos. En el caso del infotipo de emolumentos básicos, se escanean los campos 20 * 5 = 100. Un loop ofrece un método de evaluación más atractivo. En éste, se evalúa una línea de la estructura de repetición cada vez que se ejecuta el loop. Para utilizar este método de evaluación, defina un string de campo cuya estructura se corresponda con los campos de una línea de la estructura de repetición. En este string de campo, se evalúa una línea de las CC-nóminas de emolumentos básicos cada vez que se ejecuta el loop.
REPORT RPABAP06. TABLES:PERNR. INFOTYPES: 0008. DATA: BEGIN OF WAGETYPES, LGA LIKE P0008-LGA01, BET LIKE P0008-BET01, ANZ LIKE P0008-ANZ01, EIN LIKE P0008-EIN01, OPK LIKE P0008-OPK01, END OF WAGETYPES. GET PERNR. RP-PROVIDE-FROM-LAST P0008 SPACE PN/BEGDA PN/ENDDA. DO 20 TIMES VARYING WAGETYPES FROM P0008-LGA01 NEXT P0008-LGA02. IF WAGETYPES-LGA IS INITIAL.
Agosto 2010 Spanish
40 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) EXIT. ELSE. WRITE: / WAGETYPES-LGA, WAGETYPES-BET. ENDIF. ENDDO. Las estructuras de repetición se encuentran también en los infotipos de Derecho a vacaciones, Distribución costes, Calificaciones y Garantía salarial. Las estructuras se evalúan en consecuencia.
4.10 Verificación de autorizaciones La verificación de autorización en los programas de HR no se diferencia de la realizada en las transacciones. Puesto que el acceso a datos en Reporting consiste siempre en un tipo de lectura, el sistema verifica si existe una autorización para la lectura; el grupo de autorizaciones debe ser R o *. Para efectuar una validación simplifica cuando se ejecute un report. Se usarán os objetos RPORGIN y RPABAP, que son necesarios para la verificación; si estas autorizaciones están disponibles, se realiza una verificación más sencilla y rápida. Si el programa de HR no puede leer determinados datos de personal debido a la falta de autorización, no se procesan todos los datos para estas personas en el evento GET PERNR. Aparece una nota al final de la lista informando del número de personas que se han descartado debido a la falta de autorización.
4.11 Vistas Cuando se evalúan de los datos, se diferencian entre la vista lógica y la vista física. La vista física se corresponde con el formato de los datos del infotipo almacenados en las tablas de personal. Estos datos se guardan en registro del infotipo con un período de validez. En la vista lógica, los períodos de validez de los campos individuales se determinan para varios registros del infotipo. Para una evaluación puede ser importante en qué tabla horaria trabajaba el empleado, en qué trabajo independientemente o si se ha producido una modificación de una sociedad o una división de personal durante este tiempo. Además, se suministran los datos procedentes de varios infotipos para un mes parcial específico. Cuando se calculan los períodos del cálculo de la nómina, es especialmente importante que los datos de los emolumentos básicos, el plan de horario de trabajo y la distribución de costes se suministren para el mes parcial. Estos dos tipos de vistas lógicas se implementan en la proyección y el acoplamiento.
4.11.1
Acoplamiento
Un proceso de acoplamiento de dos o más infotipos. Se suministran los datos procedentes de estos infotipos para un mes parcial específico. En el siguiente ejemplos nos gustaría saber en qué tabla horaria trabajó un empleado, en qué función y en qué dirección vivía durante este tiempo. Están disponibles las siguientes direcciones:
Agosto 2010 Spanish
41 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) •
Enero a Junio Æ Barcelona
•
Junio a Diciembre Æ Lleida
Están disponibles los siguientes datos de función: •
Enero a Abril Æ Programador
•
Mayo a Diciembre Æ Consultor
Si las direcciones y los datos de función se suministran para meses parciales, esto tiene el siguiente resultado: •
Enero a Abril Æ Barcelona/Programdaor
•
Mayo a Junio Æ Barcelona/Consultor
•
Julio a Diciembre Æ Lleida/Consultor
La sintaxis de este acoplamiento sería la siguiente:
PROVIDE * FROM Pmmmm * FROM Pnnnn BETWEEN PN-BEGDA AND PN-ENDDA. Los meses parciales para infotipos Pmmmm y Pnnnn y para todos los demás infotipos del acoplamiento se definen en los campos BEGDA y ENDDA. Los datos de cada infotipo en el acoplamiento deben estar disponibles durante todo el período de validez de infotipo. Las tablas horarias de los registros del infotipo pueden no superponerse; por ello, el acoplamiento no puede contener infotipos con un enlace temporal de "tres". La tabla horaria de los registros se superponen, si se lee un infotipo sin ningún tipo de restricciones de subtipo. Por ejemplo, el infotipo Dirección tiene los subtipos residencia permanente, segunda residencia y dirección en el país de origen. Las tablas horarias al final se superpondrán, si se leen todos los destinatarios. Por ello, debe seleccionar siempre un subtipo para un acoplamiento, y este subtipo no necesita tener el enlace temporal de tres. El programa para el acoplamiento citado más arriba y la dirección es:
REPORT ZACLOP. TABLES: pernr. INFOTYPES: 0001, 0006. GET pernr. PROVIDE * FROM p0001 * FROM p0006 BETWEEN pn-begda AND pn-endda WHERE p0006-subty eq '1'. WRITE: / pernr-pernr, p0001-stell, p0006-stras, p0006-begda,p0006-endda. ENDPROVIDE.
Agosto 2010 Spanish
42 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) A veces no hay datos disponibles para un determinado infotipo en el mes parcial seleccionado. Los períodos de validez del infotipo puede que no se superpongan, pero están permitidos los vacíos. Por ejemplo, los vacíos pueden producirse cuando se acoplan los datos personales con direcciones. Datos personales: •
Enero 1960 – Mayo 1993 Æ Pérez
•
Mayo 1993 – Diciembre 1993 Æ Huerta
Direcciones: •
Enero 1993 – Diciembre Æ Barcelona
El acoplamiento para datos personales y direcciones sería el siguiente: •
Enero 1960 – Diciembre 1992 Æ Pérez
•
Enero 1993 – Abril 1993 Æ Pérez/Barcelona
•
Mayo 1993 – Diciembre 1993 Æ Huerta/Barcelona
En el primer mes parcial sólo están disponibles los datos de personal. Puesto que el registro no suministra la información necesaria, la función de acoplamiento para el suministro de datos de los infotipos asociados no se ha cumplido. La variable Pnnnn_VALID identifica que sólo los datos incompletos están disponibles para un mes parcial determinado. Si los datos están disponibles para el infotipo Pnnnn en el mes parcial especificado, la variable Pnnnn_VALID contiene el valor X. En el siguiente ejemplo se muestra como se evaluarían las variables:
REPORT ZEJEMPLO. TABLES: PERNR. INFOTYPES: 0002, 0006. GET PERNR. PROVIDE * FROM P0002 * FROM P0006 BETWEEN PN-BEGDA AND PN-ENDDA WHERE P0006-SUBTY = '1'. IF P0006_VALID EQ 'X'. WRITE: / PERNR-PERNR, P0002-BEGDA DD/MM/YYYY, P0002-ENDDA DD/MM/YYYY, P0002-NACHN, P0006-ORT01. ENDIF. ENDPROVIDE.
Agosto 2010 Spanish
43 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Sólo se genera una lista, si las direcciones están disponibles. El primer mes parcial, que sólo tiene datos personales, se suprime.
4.11.2
Proyección
Todos los datos de un infotipo se almacenan en la base de datos conjuntamente con su período de validez. Cuando usted modifica uno o más campos de un registro del infotipo, el sistema crea un nuevo registro con una validez temporal nueva. La fecha en la que usted modifica el registro es la fecha de inicio de este nuevo registro. Los datos de campos que no están afectados por las modificaciones mantienen los mismos datos a lo largo de varios registros del infotipo y de períodos de validez. Desde una perspectiva lógica, estos campos son válidos en todos los registros del infotipo hasta que se modifican. Si se mira desde una perspectiva lógica, cada campo de un infotipo tiene su propio período de validez. Esto se ilustra en el siguiente caso: Un empleado ha trabajado como programador durante tres años en tres divisiones de personal diferentes. Los siguientes datos de asignación organizativos están disponibles: •
Enero 1992 a Diciembre 1992 Æ Programador / división de personal 1
•
Enero 1993 a Diciembre 1993 Æ Programador / división de personal 2
•
Enero 1994 a Diciembre 1994 Æ Programador / división de personal 3
Si sólo necesita la tabla horaria durante el tiempo en que un empleado realiza una función específica y no su división de personal para una evaluación, se aplica lo siguiente: •
Enero 1992 a Diciembre 1992 Æ Programador
La vista física tiene tres registros del infotipo, la vista lógica tiene uno. Para crear evaluaciones significativas y evitar redundancias, crear vistas lógicas para los registros del infotipo. Se Seleccionan los campos del infotipo importantes para la evaluación y hay que hacer caso omiso de los otros. Los datos de los otros campos no son válidos para la evaluación, puesto que no se sabe a qué división de personal y a qué empleado pertenecen para los años 1992 - 1994. Esta vista del período de validez de un grupo de campos del infotipo se conoce como proyección. El trozo del programa para la proyección es:
PROVIDE FROM Penn BETWEEN PN-BEGDA AND PN-ENDDA.
Agosto 2010 Spanish
44 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Los datos del infotipo para una proyección deben estás disponibles a lo largo de todo el período de validez. Si las tablas horarias de determinados registros del infotipo se superponen, los datos no se pueden asignar con claridad a un período. Por ello, no debería utilizar proyecciones para los registros del infotipo junto con el enlace temporal "tres". El report para la proyección indicada más arriba es:
REPORT EJEMPLO. TABLES: PERNR. INFOTYPES: 0001. GET PERNR. PROVIDE STELL FROM P0001 BETWEEN PN-BEGDA AND PN-ENDDA. WRITE: / PERNR-PERNR, P0001-STELL, P0001-BEGDA, P0001-ENDDA. ENDPROVIDE. La validez lógica para el período de la función está disponible en el infotipo de los campos BEGDA y ENDDA.
4.11.3
Proyección y Aclopamiento
Las dos vistas lógicas se pueden combinar en los datos del infotipo, el acoplamiento y la proyección. Se leen los datos de diferentes infotipos y se crean nuevos meses parciales. Seleccionamos los campos del infotipo importantes para la evaluación y combinamos esos meses parciales de nuevo. En el siguiente ejemplo se ilustra lo dicho con anterioridad. Un empleado trabaja como programador durante el ejercicio en curso y se casa en mayo. Su nombre (de ella) no se modifica. Asignación organizacional: •
Enero a Diciembre Æ Programador
Datos personales: •
Enero a Abril Æ Eva Sánchez – Soltera
•
Mayo a Diciembre Æ Eva Sánchez - Casada
Cuando se leen los datos de ambos infotipos a la vez, el resultado es: •
Enero a Abril Æ Eva Sánchez – Soltera/Programador
•
Mayo a Diciembre Æ Eva Sánchez – Casada/Programadora
Puesto que podemos hacer caso omiso de su estado civil en la evaluación, proyectamos en su nombre y apellidos: •
Agosto 2010 Spanish
Enero a Diciembre Æ Eva Sánchez/Programadora
45 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) El ejemplo siguiente nuestro lo citado más arriba:
REPORT ZEJEMPLO. TABLES: PERNR. INFOTYPES: 0001, 0002. GET PERNR. PROVIDE STELL FROM P0001 NACHN VORNA FROM P0002 BETWEEN PN/BEGDA AND PN/ENDDA IF P0001_VALID = 'X'. WRITE: / P0002-NACHN, P0002-VORNA, P0001-BEGDA DD/MM/YYYY, P0001-ENDDA DD/MM/YYYY, P0001-STELL. ENDIF. ENDPROVIDE. Este report combina los períodos de validez asociados y suministra los datos importantes de los campos del infotipo para un período específico. Aquellos campos a los que no se accede tienen su valor inicial en la proyección. El suministro de datos para un mes parcial específico es especialmente importante para un mes parcial del cálculo alícuota en el cálculo de la nómina. Si los emolumentos básicos de un empleado o la distribución de costes se modifican durante el período del cálculo de la nómina, se ha calcular el sueldo proporcionalmente para los meses parciales resultantes. De todas formas, si el encargado de la nómina de la unidad organizativa se modifica, esto no tiene ningún efecto sobre el cálculo de la nómina. Al enlazar un acoplamiento y una proyección, se puede leer los datos maestros para un mes parcial específico.
4.11.4
Tablas de control dependientes del tiempo
Los datos del infotipo están generalmente codificados como una leyenda (por ejemplo, infotipo P0006, tipo de dirección 1 = residencia permanente) para permitir una entrada rápida y un almacenaje que ahorre espacio. Cuando se procesa infotipos, los textos o atributos de las leyendas se leen desde las tablas de control importantes. En muchas tablas de control, el almacenamiento de los datos depende del tiempo y, por lo tanto, está asignado a un período de validez. En Recursos Humanos esto se aplica a las siguientes superficies: •
plan de horario de trabajo
•
estructura tarifaria
•
CC de nómina
•
valoración de CC-nóminas
•
datos del banco
•
posiciones
Agosto 2010 Spanish
46 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) • códigos del receptor Cuando se leen los datos para una leyenda del infotipo de las tablas de control dependientes del tiempo, se ha de determinar qué registro es válido para el período de validez especificado. Si se utiliza una transacción para procesar un infotipo, el sistema lee el registro de la tabla válida en la fecha de inicio.
4.11.5
Generalización de la vista
Se puede utilizar la vista lógica para tratar y dar salida a los datos según las especificaciones del usuario. La característica especial de las vistas HR es la dependencia del tiempo de los datos. Los datos personales casi siempre se relacionan con períodos de validez específicos. Una vista HR suministra datos para intervalos de tiempo específicos. En términos generales, una vista HR es una perspectiva lógica de tablas internas de dependencia interna.
5 Importar/Exportar Humanos
fichero
en
Recursos
En esta sección se explica como se accede a los ficheros cluster: PCL1 y PCL2.
5.1
Ficheros PCL1, PCL2, PCL3 y PCL4
5.1.1.1 Información de los ficheros El fichero PCL1 es la base de datos de las áreas funcionales para HR. Contiene información que se origina en la entrada de tiempos: por ejemplo, hojas de salario de incentivos o textos adicionales de infotipo. El fichero PCL2 contiene información derivada, como los resultados del cálculo de la nómina. También contiene todos los esquemas del cálculo de la nómina generados. El fichero PCL3 contiene datos de candidatos. El fichero PCL4 contiene los documentos de modificación para datos maestros y contratación de personal para HR. La estructura de los ficheros PCLn corresponde a la del fichero INDX, con el que deberiamos estar familiarizado gracias a su aparición en otras aplicaciones. La estructura de todos los ficheros PCLn (n = 1, 2, 3 y 4) es idéntica.
5.1.1.2 Estructura del fichero Como en la mayoría de los ficheros de SAP, el elemento clave que tiene mayor prioridad es el mandante; los datos dentro de un mandante se agrupan según relaciones básicas (campo PCLn-RELID). El tipo de relación básica se denomina cluster. Define datos según su tipo. El
Agosto 2010 Spanish
47 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) cluster RX contiene los resultados del cálculo de la nómina del país X, según la tabla T500L, y el cluster TE los datos de gastos de viaje. La estructura de PCLn-SRTFD depende del cluster y se define en el string del campo de la CLAVE xx el cual se define en el include RPCnxxy0 .
5.1.1.3 Convención de nombres n = 1, 2, 3 ó 4 (para PCL1, PCL2, PCL3 o PCL4) xx para el cluster y = 0 para clusters internacionales y = lista de países según T500L para clusters nacionales
5.1.1.4 Importar/Exportar datos Los ficheros import/export PCLn se gestionan con los comandos de IMPORT y EXPORT. Esos comandos almacenan objetos tales como campos, strings de campo o tablas internas en la base de datos, o los lee desde la base de datos. Los datos se leen desde y se escriben hacia la base de datos utilizando una única clave (CLAVE xx). Las macroinstrucciones de RMAC RP-IMP-Cn-xx y RP-EXP-Cn-xx se suministran para importar y exportar datos. Sólo deberían utilizarse esas macroinstrucciones.
5.1.1.5 Clave xx El nombre de la clave xx depende del cluster. RX KEY SE utiliza para todos los clusters Rx y Xx. En los demás episodios, la denominación de la clave xx se corresponde con la del cluster.
5.2
Cluster
Clave xx
RA
CLAVE -RX
B1
CLAVE-B1
G3
CLAVE-G3
XA
CLAVE-RX
Almacenamiento de datos en ficheros PCLn
Los datos de las diferentes áreas funcionales de HR se almacenan en clusters de los ficheros PCLn (n = 1, 2, 3 ó 4). Este grupo de objetos de datos puede consistir en: •
campos internos de report
•
strings de campo
• tablas internas La estructura de los ficheros PCLn ofrece un marco para las áreas funcionales individuales.
Agosto 2010 Spanish
48 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Cada área funcional debe tener un nombre de cluster de dos caracteres ( ID de relación). También deberá tener una estructura clave; para esta estructura hay 40 bytes del campo SRTFD disponibles. Cuando se exporta un registro al fichero PCLn, el ID del cluster se escribe en el campo RELID y el valor clave en el campo SRTFD. La convención para la definición de nombres para includes en la definición de clusters: RPCnxxy0 n = 1, 2, 3 o 4 (para PCL1, PCL2, PCL3, PCL4) xx = identificador de cluster y = lista de países
5.2.1 Ejemplo de descripción de datos mediante el cluster RX La descripción de datos se almacena en el include RPC2RX00 de acuerdo con las convenciones para la definición de nombres mencionadas anteriormente. Disposición de la clave del cluster: Data: BEGIN OF RX-KEY. INCLUDE STRUCTURE PC200. DATA: END OF RX-KEY. La estructura PC200 de diccionario contiene los campos PERNR (número de personal) y SEQNO (número secuencial). La descripción de datos del cluster también contiene otras tablas internas. Para una lista de clusters de datos disponibles, hay que consultar la descripción de dominio en el diccionario.
5.3
Memoria intermedia de los ficheros PCLn
Para reducir la cantidad de accesos a la base de datos al mínimo, los datos de import y export se almacenan en la memoria intermedia de la memoria principal. Las rutinas para la gestión de la memoria intermedia aseguran que los datos exportados se almacenen en los ficheros de PCLn.
5.3.1 Retroactividad resultados cáclculo nomia En febrero de 1993 se ejecuta una retroactividad para el mes de enero. FOR PERIOD 199301 IN PERIOD 199302 Se vuelven a calcular los resultados del cálculo de la nómina para enero y a continuación se escriben directamente en la base de datos. Resultado: La base de datos contiene ahora los resultados de los siguientes períodos del cálculo de la nómina.
FOR PERIOD 199301 IN PERIOD 199302 FOR PERIOD 199301 IN PERIOD 199301 A continuación se ejecuta el cálculo de la nómina del mes de febrero.
Agosto 2010 Spanish
49 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) FOR PERIOD 199302 IN PERIOD 199302 Si se produjeran problemas durante el cálculo de la nómina de este período, el registro de febrero no se almacenaría en la base de datos. Resultado: El registro actual de enero en la base de datos es:
FOR PERIOD 199301 IN PERIOD 199302 Este problema no se produce si utiliza la memoria intermedia, puesto que todos los datos de una transacción se actualizan siempre de forma colectiva. En el ejemplo anterior, el resultado recalculado de enero se almacenaría en la memoria intermedia y, si la ejecución del cálculo de la nómina para febrero se finalizara de forma prematura, no se actualizaría la base de datos. El registro actual de enero en la base de datos sería, por lo tanto:
FOR PERIOD 199301 IN PERIOD 199301
5.3.2 Inicio del cákculo de la nómina en el modo de test En una ejecución de test, la base de datos no se actualiza. Puesto que los resultados del cálculo de la nómina del período anterior se utilizan como base para el cálculo de los resultados del período siguiente, los resultados del cálculo de la nómina real serían diferentes de los de la ejecución de test, si ésta se ejecutara durante para varios períodos. La utilización de la memoria intermedia permite el acceso sin problemas a los resultados solicitados del período anterior. ¿Qué se necesita para exportar/importar datos a/de los ficheros PCLn mediante la memoria intermedia? Los siguientes includes contienen la descripción de los datos de la memoria intermedia.
RPPPXD00 Æ Contiene el área común del BUFFER. RPPPXD10 Estos includes se tiene que poner en el report que utilicemos para escribir o leer datos de la base de datos. Es necesario también el include RPPPXM00, que contiene las rutinas para la gestión de la memoria intermedia. Las macroinstrucciones para el import y el export de datos deberán seguir la siguiente convención para la definición de nombres: RP-aaa-Cn-xy donde: aaa = IMP/EXP, n=1 para PCL1, 2 para PCL2, 3 para PCL3, 4 o PCL4 y xy = nombre del cluster.
Agosto 2010 Spanish
50 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Esto garantiza la consistencia entre el export y el import de datos y también que todos los objetos exportados se importen de nuevo.
5.3.2.1 Export mediante la memoria intermedia de datos Cuando se utilizan macroinstrucciones para el export, los registros no se registran directamente en la base de datos, sino en la memoria intermedia de la memoria principal. Cuando se ha completado la ejecución del programa, los registros de la memoria intermedia se almacenan en la base de datos PCLn correspondiente.
5.3.2.2 Import mediante la memoria intermedia de datos Cuando se utilizan macroinstrucciones para el import, los registros no se leen directamente desde los PCLn. En su lugar, el sistema verifica el directorio de la memoria intermedia para determinar si se encuentra disponible en la memoria principal algún registro con la misma clave. De no ser así, se carga el registro desde el PCLn a la memoria intermedia y se pone a disposición desde la memoria intermedia al report. Si se realiza el import correctamente, se configura el código de retorno RP-IMP-xySUBRC = 0 . Cuando los datos se leen desde la memoria intermedia, el sistema realiza una verificación para la autorización del cluster. Los programas import estándares pueden encontrarse bajo la convención para la definición de nombres RPCLSTxy (xy = denominación del cluster).
report rpttcdmg. tablas: pernr, pcl1, pcl2. include rpppxd00. "buffer definitions data: begin of 'BUFFER’ common part. include rpppxd10. "PCLx buffer data: end of common part. data: begin of ‘CLUSTER_DIRECTORY' common part. include rpc2cd00. " "cluster directory definitions data: end of common part. include rpc2rdd0. get pernr. rp-init-buffer. "inicializamos el buffer cd-key-pernr = pernr-pernr. rp-imp-c2-cd. "leemos el cluster CD desde el buffer/DB perform cd_manager using.... * llamada alternativa: call function rp_evaluation_periods... rx-key-pernr = pernr-pernr. rx-key-seqno = rgdir-seqnr. rp-imp-c2-rd. "Se lee el cluster RD del buffer/DB ... rp-exp-c2-rd. "actualiza el cluster RD en buffer ... perform prepare_update using 'V'. "actualización bases de datos (DB)
Agosto 2010 Spanish
51 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) *-------------------------------------------------------------------* CD subrutinas de gestión y cluster buffer *-------------------------------------------------------------------include rpcmgr00. "Cluster Directory Manager include rpppxm00. "Modulo pcl1(2)-buffer
5.4
Directorio del cluster
Los resultados del cálculo de la nómina se almacenan en el cluster Rx del PCL2. La clave del cluster no es nemotécnica; contiene sólo los campos PERNR (número de personal) y SEQNO (número secuencial). Para cada resultado del cálculo de la nómina se almacena una entrada de directorio en la tabla interna RGDIR. Esta entrada es un número secuencial (RGDIR-SEQNR) que identifica unívocamente el resultado del cálculo de la nómina. Los resultados del cálculo de la nómina pueden importarse sólo si la clave del cluster de la nómina contiene el número de personal y el número secuencial. Los módulos de funciones RP_ se usan para leer los resultados del cálculo de nómina desde
PCL2. Hay que tener en cuenta que cuando se leen los resultados del cálculo de la nómina, los criterios de selección (área del cálculo de la nómina, período del cálculo de la nómina, etc.) se transfieren al administrador CD.
5.5 Interfase En la siguiente tabla se muestra las denominaciones de campo asignadas al tipo de datos, la máscara de entrada y el significado de cada campo: Campo(Longitud)
Tipo de datos
PERNR(8)
N
Número de personal
ABKRS(2)
C
Área de nómina PARA
FPPER(6)
C
YYYYPP
Período PARA
FBEGD
D
YYYYMMDD
Período PARA/fecha de inicio
FENDD
D
YYYYMMDD
Período PARA/fecha final
IABKRS(2)
C
Área de nómina EN
IPERM(2)
tipo C
Modificador de período EN
INPER(6)
tipo C
YYYYPP
Período EN
INEND
D
YYYYMMDD
Fecha de fin EN
JUPER(2)
C
Persona jurídica
STRZA(1)
C
Indicador de control
TYPE(4)
C
Tipo de cluster
Agosto 2010 Spanish
Máscara de edición
Significado
52 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) ACTION(1)
C
Acción
SUBRC
como SY-SUBRC
Código de retorno
5.5.1 Lectura de un registro del cálculo de nómina Para leer un registro hay que especificar los siguientes parámetros: •
Action (=R)
•
Número de personal,
•
Fecha de inicio PARA + fecha de fin PARA,
•
Modificador de período EN y período EN Y/O indicador de control (si se especifican ambos, deberán coincidir) Y/O persona jurídica.
Los parámetros que se devuelven son los siguientes: •
SUBRC El sistema configura un código de retorno que define si el READ se ha efectuado correctamente o si sólo se ha encontrado un intervalo. Si en el período en cuestión se encuentran disponibles varios registros, sólo se devuelve el primero. Destacar que también las fechas de inicio y fin de la orden no necesitan coincidir con el intervalo almacenado. Por ejemplo: orden: 15.01. - 30.01. almacenado: 1.01. - 30.01. devuelto: 1.01. - 30.01. SUBRC = 4
•
Índice del registro leído
•
Si la cabecera de la tabla RGDIR (DIR2) está cumplimentada, se conoce el número secuencial. Puede utilizar este número para leer el registro del cálculo de la nómina de la memoria intermedia.
5.5.2 Evaluaciones estándar del cálculo de la nómina Los siguientes reports estándar para la evaluación de los resultados del cálculo de la nómina están disponibles: Convención para definición de nombres: RPCLSTxy donde xy = cluster Report de ejemplo: RPCLST99
5.5.3 Módulos de funciones: RP_EVALUATION_PERIODS Este módulo de funciones escribe en la tabla EVP (períodos de evaluación) todos los períodos que se han contabilizado en el período seleccionado. En esta tabla se almacenan los datos que describen los resultados actuales y los anteriores. Los parámetros import del módulo serían: Parámetros
Agosto 2010 Spanish
Campo/estructura de referencia
53 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) LAST_CALCULATED_DAY
P0003-ABRDT
LAST_DAY_IN_PERIOD
T549Q-ENDDA
RETROCALCULATED_DAY
P0003-RRDAT
•
LAST_CALCULATED_DAY Æ En este campo, introduzca el último día que se contabilizó para el empleado; esto es importante si desea ejecutar una evaluación del último período contabilizado. Utilice el valor del campo P0003ABRDT.
•
LAST_DAY_IN_PERIOD Æ En este campo, introduzca el último día del período de evaluación. Utilice el valor del campo PN/ENDDA, si la evaluación ha de ejecutarse en la base de datos PNP.
•
RETROCALCULATED_DAY Æ En este campo, introduzca la fecha del período de evaluación en qué debería empezar la ejecución de la retroactividad. El módulo de funciones la utiliza como fecha de inicio; solamente aquellos registros que tengan fechas de inicio más tardías o iguales a este valor se almacenarán en la tabla de resultados. Puede definir esta fecha mediante el módulo RP-SEL-CALC-RPDAT de RMAC, que normalmente se encuentra en todos los reports de evaluación del cálculo de la nómina.
Los parámetros de la tabla son: Parámetros
Campo/estructura de referencia
DIR
PC231
EVP
PEVPT
•
DIR (directorio de resultados del cálculo de la nómina) Æ Tabla de entrada a la cual se transfiere la tabla RGDIR desde el directorio del cluster.
•
EVP (tabla para períodos de evaluación) Æ Tabla de salida que contiene los números y la información de gestión de los resultados de evaluación. A los resultados actuales se les asigna el indicador A, a los antiguos el indicador P.
Las excepciones son: •
RGDIR_EMPTY (tabla DIR (RGDIR) vacía) Æ Esta excepción se configura cuando la tabla DIR no contiene entradas cuando se transfiere. Esto se debe normalmente a un error del programa porque el sistema selecciona sólo aquellos números de personal para los que se ejecuta el cálculo de la nómina durante el período de evaluación.
5.5.3.1 Lectura resultado cálculo RP_EVALUATION_PERIODS
nómina
usando
Un empleado pertenece al área de cálculo de la nómina en la cual el cálculo de la nómina se realiza mensualmente. El día 15 de enero de 1994, cambia la persona jurídica asignada a este empleado (001P). Por lo tanto, se escriben dos registros de resultados del cálculo de la nómina para el mes de enero de 1994:
Agosto 2010 Spanish
54 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) •
Primer registro de resultados para 1/1.- 14/01/1994
• Segundo registro de resultados para 15/1.- 31/01/1994 De forma retroactiva, el sistema determina que este cambio tuvo lugar el día 20/1/1994 y no el día 15/1/1994. La retroactividad de febrero ejecutada el 1 de enero produce los siguientes resultados: •
1er período de 1/1 – 20/01/1994
•
2º período de 20/1 – 31/01/1994
•
3er período de 1/2 – 28/02/1994 Cuando se evalúe el período 02.1994, deberán procesarse estos cinco registros. A continuación el módulo de funciones RP_EVALUATION_PERIODS transfiere estos cinco registros a una tabla interna. Los dos primeros están marcados como resultados antiguos, los tres últimos como resultados nuevos.
5.5.4 Indicadores de control Los indicadores de control son los siguientes: Indicador de control
Significado
a
actual
p
anterior
o
antiguo
5.5.5 Acción Las acciones a ejecutar son:
Opción de entrada
Acción
r
leer
u
actualizar
i
insertar
d
borrar
s
buscar
l
última búsqueda
a
archivar
Agosto 2010 Spanish
55 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
5.5.6 Códigos de retorno Los códigos de retorno que el sistema puede retornar es: Código de retorno
Significado
0
Acceso con éxito (un registro encontrado)
4
Acceso con éxito parcial (varios registros encontrados)
6
Acceso sin éxito (ningún registro encontrado)
5.5.7 Lectura de un registro del cálculo de la nómina Registro almacenado: Nº sec
forbegda
fefinpara
iperm
peren
indc
001
01021991
28021991
01
199102
P
002
01021991
28021991
01
199103
A
feinpara
fefinpara
iperm
peren
indc
01021991
28021991
01
199102
A
feinpara
fefinpara
iperm
peren
indc
01021991
28021991
Nº sec
feinpara
fefinpara
iperm
peren
indc
002
01021991
28021991
01
199103
A
feinpara
fefinpara
iperm
peren
indc
01021991
28021991
01
199102
Nº sec
feinpara
fefinpara
iperm
peren
indc
001
01021991
28021991
01
199102
P
Orden incorrecta: Nº sec
Resultado: Sy-Subrc = 8. Orden correcta: Nº sec
A
Resultado:
u orden correcta Nº sec Resultado:
Agosto 2010 Spanish
56 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
5.5.8 Importar resultado cálculo nómina de cluster RX PERFORM CD_MANAGER USING '00003355' " Número de personal SPACE SPACE '19930501' "FOR periodo/fecha de inicio '19930531' "FOR periodo/fecha final" SPACE SPACE SPACE SPACE SPACE 'A' "Registro actual SPACE 'R' "Read record" SUBRC. "Return code En el campo SUBRC se configura un código de retorno, que indica si se han encontrado uno, varios o ningún registro de datos. Los resultados del cálculo de la nómina podrán importarse ahora mediante el módulo RPIMP-C2-Rx de RMAC.
6 Comandos específicos 6.1 Módulos de funciones en HR Los módulos de funciones son módulos de programas que tienen una interfase definida y permiten la verificación del tipo de parámetros. Se gestionan con la transacción SE37 y se combinan con grupos de funciones según criterios relevantes. Puede acceder a esta transacción seleccionando Herramientas → Workbench ABAP/4 → Biblioteca funciones. Los grupos de funciones de HR cumplen la convención para definición de nombres Rpxx o Hrxx; xx es un indicador que el usuario puede definir. Puede utilizar el comando de editor SHOW FUNCTION * para pasar del proceso de reports a la visualización del módulo de funciones.
6.2 Módulos de macroinstrucciones Al igual que los módulos de subprogramas y funciones, los módulos de macroinstrucciones son medios para la presentación de programas en forma modular. Los módulos de macroinstrucciones se utilizan con frecuencia en HR.
Agosto 2010 Spanish
57 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
6.2.1 Definición y llamada Se presentan dos opciones: •
Las macros pueden definirse en reports o includes mediante el comando "definir" de ABAP/4. Si un report utiliza una macroinstrucción que está definida en un include, este include deberá integrarse en el report. Si se modifica una macroinstrucción definida con el comando "definir", cada report que utilice esa macroinstrucción será generará de nuevo automáticamente la próxima vez que se ejecute. En el include DBPNPMAC están definidas las macros ha utilizar con la base de datos lógica PNP.
•
Las macroinstrucciones también pueden definirse como macroinstrucciones TRMAC. El código fuente de estos módulos se almacena en la sección de funciones de la tabla de control TRMAC. Este código se agrupa bajo un nombre específico en la clave de tabla. Según las convenciones, las dos primeras letras de la denominación han de hacer referencia a la aplicación. El resto de la denominación se puede definir libremente. Los módulos de macroinstrucciones específicas del cliente deberán empezar por un carácter especial. Las macroinstrucciones definidas en la tabla de control TRMAC pueden utilizarse por todos los reports Es importante: Cuando se modifica una macroinstrucción en la tabla TRMAC, los reports que utilizan esta macroinstrucción no se generan de nuevo automáticamente. Deberá generarlos de nuevo manualmente.
7 Módulos RMAC estándar en HR El mismo tipo de órdenes que pueden utilizarse en diversos reports puede programarse con las siguientes herramientas para desarrollo: •
Módulos de funciones (transacción SE37)
• Módulos RMAC (Tabla TRMAC) Los siguientes módulos RMAC se utilizan normalmente en los reports HR:
7.1 Definición de datos 7.1.1
RP-LOWDATE-HIGHDATE
Definición fecha anterior y posterior
7.1.1.1 Función La definición de las constantes: LOW-DATE TYPE D VALUE 18000101 y HIGH-DATE TYPE D VALUE 99991231
Agosto 2010 Spanish
58 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Representa la primera y/o la última fecha en HR. Representan los primeros y los últimos puntos en la línea de tiempo y no constituyen puntos reales en el tiempo. Estas fechas sólo pueden utilizarse en comparaciones, no en cálculos.
7.1.1.2 Parámetros Ninguno
7.1.1.3 Verificación Ninguna
7.1.1.4 Condiciones previas Ninguna
7.1.1.5 Utilización En programas HR, como constantes de lectura para comparaciones. RP-LOWDATE-HIGHDATE. ... GET PERNR. ... IF Pnnnn-ENDDA EQ HIGH-DATE. "'til the 12th of never
7.2 Evento INITIALIZATION 7.2.1 RP-SEL-EIN-AUS-INIT Sugerencia: Omisión de exempleados.
7.2.1.1 Función La pantalla propuesta de la orden informa al usuario del report que seleccione únicamente el personal actual. Es decir, el procesador de la base de datos no pasa a ningún empleado con un 0 en la tabla horaria (PN-BEGPS,PN-ENDPS) del campo P0000-STAT2, infotipo Medidas (0000), al report por medio del procesador de la base de datos.
7.2.1.2 Parámetros Ninguno.
Agosto 2010 Spanish
59 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
7.2.1.3 Verificación Ninguna.
7.2.1.4 Condiciones previas Ninguna.
7.2.1.5 Utilización En la sección INITIALIZATION de los programas de la base de datos PNP
INITIALIZATION. RP-SEL-EIN-AUS-INIT START-OF-SELECTION.
7.2.1.6 Observaciones •
RP-SEL-EIN-AUS-INIT RP sugiere un valor de propuesta que el usuario del report puede modificar en la pantalla de selección en la fecha de inicio del report, mientras RP-SEL-EIN-AUS no se puede seleccionar (como regla).
•
RP-SEL-EIN-AUS-INIT permite un tratamiento relativamente rápido por parte del procesador de la base de datos, mientras que en RP-SEL-EIN-AUS esto se realiza comparativamente tarde (rendimiento).
•
RP-SEL-EIN-AUS-INIT hace referencia al intervalo de tiempo (PN-BEGPS, PNENDPS), mientras que RP-SEL-EIN-AUS trabaja con un período de tiempo (PNBEGDA, PN-ENDDA). En la mayoría de los casos estos dos intervalos son idénticos, pero no siempre.
•
La selección que inicia RP-SEL-EIN-AUS-INIT a partir del procesador de la base de datos está simultáneamente enlazada con los otros criterios de selección de la base de datos, mientras que la selección RP-SEL-EIN-AUS vuelve a basarse en todo el intervalo de tiempo. Con esto pueden realizarse diferentes selecciones.
7.2.2 RP-INIT-WITH-SYDATUM Sugerencia: Período de selección = fecha actual
7.2.3 Función La pantalla propuesta de la orden informa al usuario del report que utilice la fecha del día (SY-DATUM,SY-DATUM) para los períodos de selección de fecha y de personas (PNPBEGDA, PNPENDDA) y (PNPBEGPS,PNPENDPS) respectivamente. No vuelva a utilizarlo. En lugar de esto, escriba lo siguiente en la sección INITIALIZATION del programa: PNPTIMED = D
Agosto 2010 Spanish
60 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) (por ejemplo, véase RPLMITOO)
7.3 Evento START-OF-SELECTION 7.3.1 RP-SET-NAME-FORMAT Formato del report para la edición de nombre HR.
7.3.1.1 Función La edición de la denominación HR se realiza utilizando el módulo de funciones DENOMINACIÓN-TRATAMIENTO-RP en la selección (GET PERNR). Esta rutina edita el nombre de acuerdo con las entradas de la tabla T522N (Edición de denominación HR). Así como cada edición de denominación HR puede depender del programa, el módulo RP-SET NAME-FORMAT está directamente enlazado con la edición de denominación HR en la sección START-OF-SELECTION. El módulo RMAC determina el formato de report correspondiente en la tabla T522F (Formato para edición de denominación HR). Si no se ha realizado ninguna entrada en esta tabla para el report HR correspondiente, el formato de report se configura en 01 (DEFAULT).
7.3.1.2 Parámetros Entrada
Ninguno
Salida
Formato de report de T522F (por defecto: 01) para T522N
7.3.1.3 Verificación Tabla T522F (Formato para edición de la denominación HR)
7.3.1.4 Utilización Este módulo RMAC se utiliza en cualquier report HR general con una cadena de caracteres del nombre de empleados en la salida, por ejemplo, en los reports estándares HR RPLMIT00, RPLTRF00, RPLTRF10 etc.
7.3.2 RP-FETCH-ALTER-PERID Verificación número de identificación personal desde P0002
7.3.2.1 Función Incluye los números de identificación de personal desde el infotipo Datos de personal (0002) (P0002-PERID) en todas las evaluaciones estándar HR generales. En algunas versiones nacionales HR (como por ejemplo, Dinamarca, Canadá, EE.UU....), el campo
Agosto 2010 Spanish
61 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) P0002-PERID contiene caracteres adicionales de identificación de personal imprescindibles para estos países. La transacción PE03 (características operativas/parámetros del sistema HR) activa o desactiva esta línea separada de salida (Característica: PERNO). Existen dos especificaciones disponibles: PERNR
La salida muestra únicamente el número de personal.
PERID
La salida del campo P0002-PERID también se muestra en una línea aparte (primera línea).
Para verificar el número de personal adicional del infotipo Datos personales (0002), utilice el módulo de funciones HR, RP_FETCH_ALTERNATE-PERNR (transacción: SE37).
7.3.2.2 Parámetros Entrada
1. PME04-MOLGA
Valor relacionado con el usuario de T531A
Salida
1. $$SW-ALTERPERID 2. $RETCODE
Marcador alternativo PERID (YES/NO) Código de retorno de RE549B
7.3.2.3 Verificación La transacción PE03 (características operativas/parámetros del sistema HR) Característica: PERNO Var. clave de tabla: MOLGA (valor referente al usuario de T513A)
7.3.2.4 Utilización Este módulo RMAC se utiliza en todos los reports HR generales que imprimen o muestran números de personal (PERNR). Sólo se utiliza con el módulo RMAC, RP-WRITE-ALTERPERID ! Los reports estándares HR, como RPLMIT00, RPLTRF00 RPLTRF10, etc. son ejemplos típicos.
7.3.3 RP-SET-KEY-DATE Configurar la fecha clave
7.3.3.1 Función Si el usuario no introduce un período de selección de datos en la pantalla de solicitud del banco de datos, las fechas de inicio y fin se configurar en LOW-DATE o HIGH-DATE, respectivamente. Si no se introduce ningún período de selección de datos, para facilitar la selección de datos del usuario, se configura la fecha del día como fecha clave. Para las evaluaciones basadas en fechas clave, deben coincidir las fechas de inicio y fin. Si no se introduce nada o si no se utiliza este módulo, la selección resultante será ilógica.
Agosto 2010 Spanish
62 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
7.3.3.2 Parámetros Ninguno.
7.3.3.3 Verificación Ninguna.
7.3.3.4 Condiciones previas El módulo RMAC RP-LOWDATE-HIGHDATE tiene que estar configurado en la sección de declaración de datos de un report.
7.3.3.5 Utilización Este módulo RMAC se utiliza en los reports HR que realizan evaluaciones de la base de datos de una fecha clave. Puede utilizarse en combinación con el módulo RMAC RPSTICHTAG. RP-LOWDATE-HIGHDATE. ... START-OF-SELECTION. RP-SET-KEY-DATE. ... END-OF-SELECTION. TOP-OF-PAGE. RP-STICHTAG.
7.4 Selección GET PERNR 7.4.1 RP-SEL-EIN-AUS Omisión de ex empleados.
7.4.1.1 Función Muchos reports no tienen en cuenta a los ex-empleados. Para RP SEL EIN AUS, un ex empleado es un empleado con un 0 en todos los registros del infotipo Medidas (0000) en el campo P0000-STAT2 y en el intervalo de tiempo (PN-BEGDA,PN-ENDDA). En GET PERNR, después de RP-SEL-EIN-AUS, estas personas ya no se incluyen en los procesamientos (declaración en lenguaje de programación ABAP: REJECT).
Agosto 2010 Spanish
63 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) No vuelva a utilizar más este módulo. En su lugar, debería utilizarse RP-SEL-EIN-AUS-INIT.
7.4.2 RP-SEL-CALC Selección de empleados a quienes se les ha calculado la nómina.
7.4.2.1 Función Este módulo sólo selecciona aquellos números de personal donde se ha terminado la nómina para el período de cálculo de nómina seleccionado. Por lo tanto debería utilizarse en todas las evaluaciones de nómina.
7.4.2.2 Parámetros Ninguno.
7.4.2.3 Verificación Ninguna.
7.4.2.4 Condiciones previas El módulo RMAC RP-READ-PAYROLL-DIR tiene que estar presente al final del programa.
7.4.2.5 Utilización El módulo RMAC se utiliza en todos los reports HR que calculan los resultados del cálculo de la nómina. Debe utilizarse en combinación con el módulo RMAC RP-READ-PAYROLLDIR. GET PERNR. RP-SEL-CALC. ... (rutinas) RP-READ-PAYROLL-DIR.
7.4.3 RP-WRITE-ALTER-PERID Número de identificación de personal P0002.
7.4.3.1 Función Inclusión de los números de identificación de personal desde el infotipo Datos personales (0002) (P0002-PERID) en todas las evaluaciones estándares HR generales. En algunas versiones nacionales de HR, el campo P0002-PERID contiene una identificación de personal extraordinaria (por ejemplo, Dinamarca, Canadá, EE.UU.), que resulta imprescindible para estos países. El "número de personal adicional" se muestra en la evaluación estándar HR correspondiente, en una línea de salida aparte (una línea antes del
Agosto 2010 Spanish
64 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) número de personal HR). Esta línea de salida separada puede activarse y desactivarse por medio de la transacción PE03 (características operativas/parámetros del sistema HR). (Característica: PERNO) Existen dos especificaciones disponibles: PERNR
La línea de salida está limitada al número de personal
PERID
El campo PERÍODO-P0002 se visualiza en una línea separada (primera línea).
El número de personal adicional del infotipo Datos personales (0002) puede verificarse llamando el módulo de funciones HR, RP-FETCH-ALTERNATE-PERNR (transacción: SE37).
7.4.3.2 Parámetros Entrada
Salida
1. $$SW-ALTER-PERID
Marcador alternativo PERÍODO (YES/NO)
2. P0002
Infotipo de datos personales (0002)
3. Opción de impresión
x directo en el módulo RMAC o SPACE indirecto en el report del usuario
1. PERID
Identificación de personal del infotipo de datos personales (0002)
2. $LENGTH
Longitud de identificación de personal
7.4.3.3 Verificación La transacción PE03 (características operativas/parámetros del sistema HR) Característica: PERNO Clave de tabla variantes: MOLGA (valor dependiente de usuario de T513A)
7.4.3.4 Utilización El módulo RMAC se utiliza en todos los reports HR generales que imprimen los números de personal (PERNR). Sólo se utiliza en combinación con el módulo RMAC RP-FETCH-ALTERPERID !. (por ejemplo, los reports estándar HR, como RPLMIT00, RPLTRF00, RPLTRF10, etc.)
7.4.4 RP-MAKE-ADDRESS Generación destino HR según reclamación regulación mailing.
7.4.5 Función La interfase HR trata la dirección de un empleado para cumplir con las reglamentaciones del mailing internacional Además de la dirección general, se dispone de una dirección breve fija en un string para propósitos especiales. Se compone de:
Agosto 2010 Spanish
65 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) •
Apellido, nombre de pila y título
•
/
• ZIP/código postal, ciudad En la edición de direcciones, el módulo de funciones de SAP (transacción: SE37) ADRESSAUFBEREITUNG. (SAP estándar)
7.4.5.1 Parámetros Entrada
1. Infotipo P0001
Asignación organizacional. (P0001-BUKRS para T001F)
2. Infotipo P0002
Datos personales (P0002-ANRED para tratamiento)
3. Infotipo P0006
Direcciones
4. EDIT-NAME
Nombre de acuerdo con las normativas nacionales (utilizando RP-EDIT-NAME)
5. Número de líneas en la ventana de direcciones Salida
1. ADRS-ZEIL0
Línea de dirección 1
...
...
10. ADRS-ZEIL9
Línea de dirección 10
11. ADRS-LINEK
Línea de dirección breve
7.4.5.2 Verificación Ninguno.
7.4.5.3 Utilización El módulo RMAC se utiliza en cualquier report HR en el que se necesita visualizar o imprimir la dirección completa o breve de un empleado (por ejemplo, el report de imprimir etiqueta RP RPLADR00).
7.4.6 RP-EDIT-ADDRESS Edición directa de HR según normativa de correo.
7.4.6.1 Función Salida de la dirección de un empleado de acuerdo con las normativas del correo internacional. Las coordenadas de la ventana de direcciones (línea y columna) pueden definirse en la tabla T001F (parámetros de la sociedad). •
ZEIVN ("línea de" en la ventana de direcciones)
•
SPLVN ("columna de" en la ventana de direcciones)
Agosto 2010 Spanish
66 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) •
ZEIBS ("línea a" en la ventana de direcciones)
• SPLBS ("columna a" en la ventana de direcciones) La salida de la ventana de direcciones puede determinarse también de forma individual en cada report (como parámetros de report, etc.). Además de la dirección general, se dispone de una dirección breve fija en un string para propósitos especiales. •
Apellido, nombre de pila y título
•
/
• ZIP/código postal, ciudad Al generar direcciones se utiliza el módulo HR RMAC, RP-MAKE-ADDRESS.
7.4.6.2 Parámetros Entrada
1. Infotipo P0001
Asignación organizacional (P0001-BUKRS para T001F)
2. Infotipo P0002
Datos personales (P0002-ANRED para tratamiento)
3. Infotipo P0006
Direcciones
4. EDIT-NAME
Nombre de acuerdo con las normativas nacionales (utilizando RP-EDIT-NAME)
5. Número de líneas en la ventana de direcciones 6. "Línea de" en una ventana de direcciones 7. "Columna de" en una ventana de direcciones 8. "Línea a" en una ventana de direcciones 9. "Columna a" en una ventana de direcciones Salida
1. ADRS-ZEIL0
Línea de dirección 1
...
...
10. ADRS-ZEIL9
Línea de dirección 10
11. ADRS-LINEK
Línea de dirección breve
7.4.6.3 Verificación Tabla 001F (parámetros de sociedad) para coordenadas.
7.4.6.4 Utilización Este módulo RMAC se utiliza en reports HR que imprimen una totalidad de empleado o una dirección breve. (por ejemplo, los reports de carta estándar de HR RPBDSG00, RPBTAR00, RPBLET*, etc.)
Agosto 2010 Spanish
67 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
7.4.7 RP-READ-ALL-TIME-ITY Lectura de todos los infotipos de tiempos en las tablas horarias.
7.4.7.1 Función Todos los registros de tiempos (infotipos 2000-2999) sobre la persona en procesamiento durante un período de tiempo determinado se introducen en las correspondientes tablas de infotipos internas (definidas con la ayuda de la palabra clave INFOTYPES).
7.4.7.2 Parámetros HR-READ-ALL-TIME-ITY ini fin Entrada
Salida
1. Inicio
Fecha de inicio de validez del intervalo de tiempo
2. Fin
Fecha final de la validez del intervalo de tiempo
1. PNP-SW-AUTH-SKIPPED-RECORD
0, si la verificación de autorización HR no puede guardar un registro por falta de autorización 1, si la verificación de autorización HR ha guardado al menos un registro por falta de autorización
2. Tablas internas de infotipos de tiempos con todos los registros del período de tiempo relevante para el que tiene autorización el usuario
7.4.7.3 Verificación Ninguna.
7.4.7.4 Condiciones previas •
La fecha de inicio de validez del período de tiempo debe coincidir o anteponerse a la fecha de fin de validez.
•
Las fechas de inicio y fin de validez constituyen especificaciones de fecha correctas (preferiblemente del tipo DATE).
7.4.7.5 Utilización Únicamente en reports de base de datos PNP, en GET PERNR, porque el número de personal para el que se leerán los datos procede del campo PERNR-PERNR, mientras que el campo que se utiliza es PNP-SW-AUTH-SKIPPED-RECORD.
DATA: BEGDA LIKE P2001-BEGDA, ENDDA LIKE P2001-ENDDA. INFOTYPES: 0000, 0001, 0002,... 2001 MODE N, 2002 MODE N,...
Agosto 2010 Spanish
68 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) GET PERNR. BEGDA = '19900101'. ENDDA = '19900131'. RP-READ-ALL-TIME-ITY BEGDA ENDDA. IF PNP-SW-AUTH-SKIPPED-RECORD NE '0'. WRITE: / 'Autorización por falta de datos de tiempos'. WRITE: / 'Por numero de personal', PERNR-PERNR. REJECT. ENDIF.
7.4.7.6 Observaciones Por ejemplo, el módulo RMAC puede utilizarse cuando los infotipos de tiempos se han definido originalmente en MODE N, ya que es posible que los datos de tiempos (de LOWDATE a HIGH-DATE) no se adapten a la memoria intermedia. Sin embargo, ahora se leen a intervalos más breves (como ocurre, por ejemplo, en RPCALCx0 con los períodos del cálculo de la nómina).
7.4.8 RP-EDIT-NAME Edición de nombre HR según normativa nacionales.
7.4.8.1 Función Este módulo RMAC trata nombres en todas las evaluaciones estándar HR según la normativa nacional de un determinado país. La edición de denominaciones se realiza de acuerdo con las entradas de la tabla T522N (edición de nombre HR). La edición de la denominación HR también depende de: •
MOLGA (sociedad, división de personal, subdivisión de personal) de T001P
•
El formato de report de la tabla 522F (por defecto: '01')
•
El origen de los datos • Infotipo Datos personales (0002) • Infotipo Familia/pers.refer. (0021)
•
El indicador para edición de nombre del infotipo Datos personales (0002) (KNZNM) (únicamente es válido si los datos provienen del infotipo Datos personales (0002)). Si la edición de la denominación de la evaluación estándar HR corresponde a la que se encuentra en los datos maestros (formato: 01), la cadena de caracteres del nombre almacenada en los datos maestros se utiliza en el infotipo P0001 (Asignación organiz./P0001-ENAME). El módulo de función RP_EDIT_NAME (transacción: SE37) se utiliza para editar nombres.
7.4.8.2 Parámetros Entrada
1.
Infotipo P0001
Asignación organiz. (P0001-ENAME)
2.
Infotipo P0002
Datos personales o
Infotipo P00021
Familia/pers.refer.
Agosto 2010 Spanish
69 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) 3.
MOLGA
(T001P-MOLGA)
4.
LANGU
Idioma para el modo de la dirección SPACE idioma de trabajo de SAP SY-LANGU x idioma del receptor P0002-SPRSL
Salida
5.
$$FORMAT
Formato de nombre para la edición
1.
$EDIT-NAME
String de la cadena de caracteres de la denominación editada para transferencia
2.
$RET-CODE
Código de retorno de edición de nombre
7.4.8.3 Verificación •
Tabla T522F (Formato para edición de la denominación HR)
•
Tabla T522F (Edición de nombre HR)
7.4.8.4 Utilización Este módulo RMAC se utiliza en todos los reports HR que imprimen el nombre completo de un empleado. Sólo se utiliza en combinación con el módulo RMAC RP-FETCH-ALTERPERID !. (por ejemplo, reports de cartas estándares de HR RPBDSG00, RPBTAR00, RPBLET* etc.)
7.4.9 RP-INIT-BUFFER Inicializa memoria intermedia para acceder a los ficheros PCL1 AL PCL4.
7.4.9.1 Función Inicializa la memoria intermedia de la memoria principal para acceder a los ficheros PCL1 a PCL4.
7.4.9.2 Parámetros Ninguno.
7.4.9.3 Verificación Ninguno.
7.4.9.4 Condiciones previas
Agosto 2010 Spanish
70 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) El siguiente include contiene la definición de datos para la memoria intermedia. Éstos deben incluirse en el report que escribe o lee los datos de la base de datos. • • •
RPPPXD00x RPPPXD10 RPPPXM00
7.4.9.5 Utilización Inicializa la memoria intermedia de la memoria principal para el acceso a los ficheros PCLn (n = 1, 2, 3, 4) y le permite utilizar los ficheros import/export RP-IMP-Cn-xx y RPEXP-Cn-xx.
7.4.10
RP-IMP-Cn-xx
Módulos import
7.4.10.1 Función Los ficheros PCLn (n = 1, 2, 3, 4) se utilizan mediante el comando IMPORT. Este comando permite leer cualquier objeto de la base de datos, como campos, strings de campos o tablas internas. La base de datos se lee utilizando una clave unívoca ( xx-KEY). Hay que tener en cuenta que las macroinstrucciones RP-IMP-Cn-xx (n = 1, 2, 3, 4, xx = cluster) pueden utilizarse para importar datos y deben utilizarse en este contexto. Cuando las macroinstrucciones se utilizan para importar datos, los registros de datos no se leen directamente desde el fichero PCLn. En su lugar, el sistema verifica el directorio de la memoria intermedia para ver si la memoria principal contiene ya un registro con la misma clave. Si ése no es el caso, el registro se lee de PCLn a la memoria intermedia y se recupera de la memoria intermedia al report. Si los datos se importan de forma satisfactoria, se fija el código de retorno RP-IMP-xySUBRC = 0 . Si se utiliza una memoria intermedia para leer los datos, el sistema verifica la autorización del cluster. Los programas import estándares siguen la convención para definir nombres RPCLSTxy (xy = nombre del cluster).
7.4.10.2 Parámetros: Este módulo no tiene parámetros. Sin embargo, se debe especificar la xx-Key apropiada antes de acceder al módulo.
7.4.10.3 Verificación: Ninguna.
7.4.10.4 Condiciones previas: La memoria intermedia principal se debe inicializar primero utilizando el módulo de RMAC RP-INIT-BUFFER.
Agosto 2010 Spanish
71 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) El módulo RP-IMP-C2-RA importa los resultados de la nómina almacenados en el fichero PCL2 (cluster RA).
7.4.11
RP-EXP-Cn-xx
Módulos export
7.4.11.1 Función Los ficheros PCLn se gestionan utilizando la sentencia EXPORT. Este comando permite almacenar cualquier objeto en la base de datos, como campos, strings de campos o tablas internas. La base de datos se lee utilizando una clave unívoca ( xx-KEY). Hay que tener en cuenta que las macroinstrucciones RP-EXP-Cn-xx (n = 1, 2, 3, 4, xx = cluster) pueden utilizarse para exportar datos y deben utilizarse en este contexto. Cuando se utilizan macroinstrucciones para exportar datos, los registros de datos no se registran directamente en la base de datos. En vez de eso, se registran en una memoria intermedia de la memoria principal. Al final del programa, los registros almacenados en la memoria intermedia se graban en la base de datos PCLn correspondiente. Con la rutina Update, también puede resultar obligatorio grabar los registros almacenados de una memoria intermedia.
7.4.11.2 Parámetros Este módulo no tiene parámetros. Sin embargo, se debe especificar la xx-Key apropiada antes de acceder al módulo.
7.4.11.3 Verificación Ninguna.
7.4.11.4 Condiciones previas: La memoria intermedia principal se debe inicializar primero utilizando el módulo de RMAC RP-INIT-BUFFER. El módulo RP-EXP-C2-RA registra los resultados de la nómina de la memoria a la memoria intermedia principal (fichero PCL2, cluster RA).
7.4.12
RP-REF-Cn-xx
Cómo borrar resultados nómina de memoria.
7.4.12.1 Función Esta función borra los datos almacenados en la memoria del cluster xx, fichero PCLn. La estructura se guarda en la memoria.
Agosto 2010 Spanish
72 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) Los datos no se borran de la memoria intermedia de la memoria principal ni de la base de datos.
7.4.12.2 Parámetros Este módulo no tiene parámetros. Sin embargo, se debe especificar la xx-Key apropiada, antes de acceder al módulo.
7.4.12.3 Verificación Ninguna.
7.4.12.4 Condiciones previas Ninguna. El módulo RP-REF-C2-RA borra los resultados de la nómina almacenados en la memoria del cluster RA, fichero PCL2.
7.5 Evento TOP-OF-PAGE 7.5.1
RP-STICHTAG
Salida de fecha clave en la lista TOP-OF-PAGE.
7.5.1.1 Función Visualiza la fecha clave (PN/ENDA) en la línea superior de cada página de una lista HR estándar.
7.5.1.2 Parámetros Ninguno.
7.5.1.3 Verificación Ninguna.
7.5.1.4 Condiciones previas Ninguna.
7.5.1.5 Utilización En cualquier programa de la base de datos lógica PNP, en TOP-OF-PAGE
Agosto 2010 Spanish
73 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) TOP-OF-PAGE. IF PN/BEGDA EQ PN/ENDDA. RP-STICHTAG. ELSE. RP-ZEITRAUM. ENDIF. 7.5.2
RP-ZEITRAUM
Salida tiempo en lista TOP-OF-PAGE.
7.5.2.1 Función Muestra el período de tiempo (PN/BEGDA,PN/ENDDA) en la línea superior de cada página en una lista HR estándar.
7.5.2.2 Parámetros Ninguno.
7.5.2.3 Verificación Ninguna.
7.5.2.4 Condiciones previas Ninguna.
7.5.2.5 Utilización En cualquier programa de la base de datos lógica PNP en TOP-OF-PAGE. ...
TOP-OF-PAGE. IF PN/BEGDA EQ PN/ENDDA. RP-STICHTAG. ELSE. RP-ZEITRAUM. ENDIF.
7.6 En cualquier punto 7.6.1 Obtención de datos 7.6.1.1 RP-READ-INFOTYPE Lectura infotipo persona en un período de tiempo.
Agosto 2010 Spanish
74 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
7.6.1.1.1
Función
Se introducen todos los registros de infotipos de una persona durante un período de tiempo determinado en una tabla de infotipos interna (definida mediante la declaración del lenguaje de programación INFOTYPES).
7.6.1.1.2 Entrada
Salida
Parámetros
1.
Número de personal de la persona solicitada
2.
Número del infotipo solicitado
3.
Nombre de la tabla de infotipos interna
4.
Fecha de inicio de validez del intervalo de tiempo
5.
Fecha de fin de validez del intervalo de tiempo
1.
PNP-SW-FOUND = 0, si no existe ningún registro en el set de datos que sea adecuado PNP-SW-FOUND = 1, si existe como mínimo un registro en el set de datos que sea adecuado
2.
PNP-SW-AUTH-SKIPPED-RECORD = 0, si la verificación de autorización de HR no ha retenido ningún registro por falta de autorización PNP-SW-AUTH-SKIPPED-RECORD = 1, si la verificación de autorización HR ha retenido, como mínimo, un registro por falta de autorización
3.
Tabla de infotipos interna, con todos los registros que coincidan con aquéllos para los que el usuario tiene autorización (también puede darse el caso de que esta tabla esté vacía).
7.6.1.1.3
Verificación
Ninguna.
7.6.1.1.4
Condición previa
•
Es preciso que la fecha de inicio de validez de la tabla horaria sea anterior o coincida con la fecha de fin de validez.
•
El inicio y el fin de validez constituyen datos de fecha correctos (preferiblemente del tipo DATE).
•
La tabla de infotipos debe coincidir con el número de infotipo.
•
El programa que utiliza el módulo RMAC debe contener el elemento de INCLUDE, DBPNPCOM (esto es lo que ocurre automáticamente con todos los reports LDP PNP).
7.6.1.1.5
Utilización
•
En cualquier punto de cualquier programa (inclusive la base de datos PNP).
•
También puede utilizarse en módulos de funciones.
Agosto 2010 Spanish
75 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
INFOTYPES: 0001. RP-LOWDATE-HIGHDATE. DATA: PERNR LIKE P0001-PERNR. DATA: BEGDA LIKE P0001-BEGDA, ENDDA LIKE P0001-ENDDA. A. PERNR = '12345678'. BEGDA = LOW-DATE + 15. ENDDA = HIGH-DATE - 5. RP-READ-INFOTYPE PERNR 0001 P0001 BEGDA ENDDA. IF PNP-SW-AUT-SKIPPED-RECORD EQ '1'. WRITE: / 'Insufficient authorization'. STOP. ENDIF. IF PNP-SW-FOUND EQ '0'. WRITE: / 'Infotype 0001 lacking'. STOP. ENDIF.
7.6.1.1.6
Observaciones
En la base de datos PNP, los infotipos deberían leerse por lo general utilizando GET PERNR. La excepción es utilizar RP-READ-INFOTYPE.
7.6.1.2 RP-READ-T001P Lectura de la tabla T001P.
7.6.1.3 Función Mediante la clave completa, se accede a la tabla T001P. El acceso se graba en la memoria intermedia. El resultado se visualiza en el título de la tabla (interna) T001P.
7.6.1.4 Parámetros RP-READ-T001P WERKS BTRTL message Entrada
1.
División de personal
2.
Subdivisión de personal
3.
Mensaje: reacción si no existe ninguna entrada: X el report finaliza con el mensaje D001: Ninguna entrada en la clave de tabla
T001P... SPACE SY-SUBRC se fija en 4. Salida
1.
Título en la tabla (interna) T001P
2.
SY-SUBRC
Agosto 2010 Spanish
76 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) 0 se ha leído con éxito 4 el registro no existe
7.6.1.5 Utilización En cualquier punto de cualquier programa (inclusive la base de datos PNP).
PROVIDE * FROM P0001.... RP-READ-T001P P0001-WERKS P0001-BTRTL SPACE. IF SY-SUBRC NE 0. own error handling ENDIF. ENDPROVIDE.
7.6.1.6 RP-READ-T5D0P Lectura de la tabla T5D0P.
7.6.1.6.1
Función
Se accede a la tabla T5D0P escribiendo la clave completa. El acceso se graba en la memoria intermedia. El resultado se visualiza en el título de la tabla (interna) T5D0P.
7.6.1.6.2
Parámetros
RP-READ-T5D0P WERKS BTRTL message Entrada
1.
División de personal
2.
Subdivisión de personal
3.
Mensaje: reacción si no existe ninguna entrada: X el report finaliza con el mensaje D001: Ninguna entrada en la clave de tabla
T5D0P... SPACE SY-SUBRC se fija en 4. Salida
1.
Título en la tabla (interna) T5D0P
2.
SY-SUBRC 0 se ha leído con éxito 4 el registro no existe
7.6.1.6.3
Utilización
En cualquier punto de cualquier programa (inclusive la base de datos PNP).
PROVIDE * FROM P0001.... RP-READ-T5D0P P0001-WERKS P0001-BTRTL SPACE. IF SY-SUBRC NE 0. own error handling
Agosto 2010 Spanish
77 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) ENDIF. ENDPROVIDE.
7.6.1.7 RP-READ-PAYROLL-DIR Rutinas CD para leer cluster lectura y verificación nómina de empleado.
7.6.1.7.1
Función
Este módulo contiene las siguientes rutinas: •
READ-PAYROLL-DIRECTORY
•
IN_PERIOD-IN-RGDIR
IN_PERIOD-IN-RGDIR
Entrada
Salida
1. PERNR-PERNR
Número de personal
2. PN/PERMO
Modificador de período
3. PN/PAPER
Período utilizando YYYYPP
1. RP-IMP-CD-SUBRC
0 registros encontrados 4 registros no encontrados
2. CD de clusters
Estructuras y tablas del CD de cluster
3. PNP-SW-FOUND
0 Nóminas de empleado no realizadas dentro del período 1 Nómina de empleado realizada dentro del período
4. RP-SEL-CALC-RRDAT
Cálculos retroactivos para empleado
Para ello, se llama la rutina READ-PAYROLL-DIR. READ-PAYROLL-DIR Entrada
1. PERNR-PERNR
Número de personal
Salida
1. RP-IMP-CD-SUBRC
0 registros encontrados 4 registros no encontrados
2. CD de cluster
Estructuras y tablas del CD de cluster
7.6.1.7.2
Parámetros
Ninguno.
7.6.1.7.3
Verificación
Ninguna.
Agosto 2010 Spanish
78 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
7.6.1.7.4
Condiciones previas
El miembro INCLUDE RPC2CD00 tiene que estar presente.
7.6.1.7.5
Utilización
La rutina IN_PERIOD-IN-RGDIR puede llamarse mediante GET PERNR. Esto se utiliza cuando usted no desea omitir ningún número de personal para el que no se ha realizado la nómina. Véase: Módulo RMAC RP-SEL-CALC .
GET PERNR. PERFORM IN_PERIOD-IN-RGDIR. IF PNP-SW-FOUND EQ '1'. "Encontrado ... "Si ELSE. ... "No ENDIF. ... (Rutinas) RP-READ-PAYROLL-DIR.
7.6.2 Procesamiento de datos 7.6.2.1 RP-PROVIDE-FROM-FRST Suministro 1ª entrada en período tiempo
7.6.2.1.1
Función
La primera entrada del período de tiempo (o subtipo) que desee realizar se toma de una tabla de infotipos interna (definida mediante la ayuda de la declaración del lenguaje de programación INFOTYPES) y se sitúa en la cabecera de la tabla.
7.6.2.1.2
Parámetros
RP-PROVIDE-FROM-FRST inftytab subty beg end Entrada
Salida
1.
Nombre de la tabla interna
2.
Subtipo deseado o SPACE si no se ha especificado ningún subtipo
3.
Fecha de inicio de validez del intervalo de tiempo
4.
Fecha de fin de validez del intervalo de tiempo
1.
PNP-SW-FOUND: si no existe ninguna entrada con la que coincida en la tabla de infotipos de un período de tiempo determinado, posee el valor 0. De lo contrario, adopta el valor 1.
2.
La entrada de la cabecera de la tabla que coincide si PNP-SW-OUND = 1 o la entrada de la cabecera de la tabla borrada, si PNP-SW-FOUND = 0
Agosto 2010 Spanish
79 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
7.6.2.1.3
Verificación
Ninguno.
7.6.2.1.4
Condiciones previas
•
Es preciso que la fecha de inicio de validez del período de tiempo sea anterior o coincida con la fecha de fin de validez.
•
El inicio y el fin de la validez constituyen fechas correctas (preferiblemente del tipo DATE).
•
La tabla de infotipos se clasifica en orden ascendente (si no se hace así, la primera entrada que coincida de entre las que se encontraron en la tabla no tiene por qué ser necesariamente la primera en orden cronológico).
7.6.2.1.5
Utilización
Se utiliza en aquellos programas que utilizan la base de datos PNP y en los que desea leer el primer registro de tiempos de un período (o de un subtipo) de una tabla de infotipos (que se ha completado anteriormente utilizando, por ejemplo, GET PERNR o RP-READINFOTYPE). Sólo merece la pena utilizarlo si la tabla de infotipos (o subtipos, en el caso de que se hayan especificado) contiene el enlace temporal 1 ó 2.
RP-PROVIDE-FROM-FRST P0021 '1' PN/BEGDA PN/ENDDA. IF PNP-SW-FOUND EQ '1'. “ Se ha encontrado ... ENDIF o RP-PROVIDE-FROM-FRST P0001 SPACE PN-BEGDA PN-ENDDA. IF PNP-SW-FOUND EQ '0'. WRITE: / 'Error '. REJECT. ENDIF.
7.6.2.1.6
Observaciones
El módulo (no implementado) PROVIDE-FROM-INITIAL es un caso especial de PROVIDEFROM-FIRST: PROVIDE-FROM-INITIAL inftytab subty beg end = RP-PROVIDE-FROM-FRST inftytab subty beg beg
7.6.2.2 RP-PROVIDE-FROM-LAST Suministra última entrada de período de tiempo.
7.6.2.2.1
Función
La última entrada del período de tiempo (o subtipo) que usted desee se toma de una tabla de infotipo interna (definida mediante la declaración del lenguaje de programación INFOTYPES) y se sitúa en la cabecera de la tabla.
Agosto 2010 Spanish
80 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
7.6.2.2.2
Parámetros
RP-PROVIDE-FROM-LAST inftytab subty beg end Entrada
Salida
1.
Nombre de la tabla interna
2.
Subtipo deseado o SPACE, si no se ha especificado ningún subtipo
3.
Fecha de inicio de validez del intervalo de tiempo
4.
Fecha de fin de validez del intervalo de tiempo
1.
PNP-SW-FOUND: si en la tabla de infotipos de un período de tiempo determinado no existe ninguna entrada con la que coincida, posee el valor 0. De lo contrario, adopta el valor 1.
2.
La entrada de la cabecera de la tabla que coincide si PNP-SW-OUND = 1 o la entrada de la cabecera de la tabla borrada, si PNP-SW-FOUND = 0
7.6.2.2.3
Verificación
Ninguna.
7.6.2.2.4
Condiciones previas
•
Es preciso que la fecha de inicio de validez del período de tiempo sea anterior o coincida con la fecha de fin de validez.
•
El inicio y el fin de la validez constituyen fechas correctas (preferiblemente del tipo DATE).
•
La tabla de infotipos se clasifica en orden ascendente (de lo contrario, la última entrada que coincida con las que existen en la tabla no tiene por qué ser la última en orden cronológico).
7.6.2.2.5
Utilización
Se utiliza en aquellos programas que utilizan la base de datos PNP y en los que desea leer el último registro de tiempos de un período (o de un subtipo) de una tabla de infotipos (que se ha completado anteriormente utilizando, por ejemplo, GET PERNR o RP-READINFOTYPE). Sólo merece la pena utilizarlo si la tabla de infotipos (o subtipo, en caso de que se hayan especificado) contiene el enlace temporal 1 ó 2.
RP-PROVIDE-FROM-LAST P0021 '1' PN/BEGDA PN/ENDDA. IF PNP-SW-FOUND EQ '1'. "spouse data? ... ENDIF. o RP-PROVIDE-FROM-LAST P0001 SPACE PN/BEGDA PN/ENDDA. IF PNP-SW-FOUND EQ '0'. WRITE: / 'Error: Organizational assignment lacking'. REJECT. ENDIF.
Agosto 2010 Spanish
81 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
7.6.2.2.6
Observaciones
El módulo (no implementado) PROVIDE-FROM-FINAL es un caso especial de PROVIDE-
FROM-LAST: PROVIDE-FROM-FINAL inftytab subty beg end = RP-PROVIDE-FROM-LAST inftytab subty beg beg
7.6.3 Modicación de datos 7.6.3.1 RP-UPDATE 7.6.3.1.1
Función
Interfases entre los reports que actualizan datos del fichero PREL y tareas de actualización. Los registros sólo pueden actualizarse, pero no añadirse o borrarse.
7.6.3.1.2
Parámetros
RP-UPDATE old-table new-table Entrada
1.
Nombre de la tabla interna con registros de infotipo antes de la actualización.
2.
Nombre de la tabla interna con registros de infotipo después de la actualización.
7.6.3.1.3
Verificación
Ninguna.
7.6.3.1.4
Condiciones previas
•
Todos los registros que se actualicen también se incluyen en una tabla con su forma original.
•
Las claves no se modifican, es decir, ni se añaden ni se borran datos.
7.6.3.1.5
Utilización
En programas de actualización de datos.
RP-UPDATE OLD-P0003 P0003.
8 Utilidades en HR Utilidades que tenemos en HR
Agosto 2010 Spanish
82 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
8.1 Utilidades generales Report
Significado
RPUACG00
Generación de código para autorización de datos maestros de HR
RPUAUD00
Auditoría de infotipo
8.2 Utilidades de programación Report
Significado
RPINCL10
Búsqueda de string en reports
8.3 Utilidades de cluster Report
Meaning
RPCLSTyy
Visualizar clusters en PCLx (yy = Relid)
RPUPxD00
Borrar cluster de PCLx (registros individuales)
RPUPxD10
Borrar cluster de PCLx (varios registros)
Agosto 2010 Spanish
83 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9 Ejemplos Programación en Modulo HR WebSite: http://globalsap.cl/globalwiki/index.php/HR
9.1 Transacciones en HR Master Data PA10 Personnel File PA20 Display HR Master Data PA30 Maintain HR Master Data PA40 Personnel Events PA41 Change Hiring Data PA42 Fast Data Entry for Events PRMD Maintain HR Master Data PRMF Travel Expenses: Feature TRVFD PRML Set Country Grouping via Popup PRMM Personnel Events PRMO Travel Expenses: Feature TRVCO PRMP Travel Expenses: Feature TRVPA PRMS Display HR Master Data PRMT Update Matchcode PSO3 Infotype overview PSO4 Individual maintenance of infotypes
Time Management PA51 PA53 PA61 PA62 PA63 PA64 PA70 PA71 PBAB PT01 PT02 PT03
Display Time Data Display Time Data Maintain Time Data List Entry of Additional Data Maintain Time Data Calendar Entry Fast Data Entry Fast Entry of Time Data Maintain vacancy assignments Create Work Schedule Change Work Schedule Display Work Schedules
Payroll PC_PAYRESULT visualizar resultados de nómina PC00 Run Payroll PC10 Payroll menu USA PE00 Starts Transactions PE01,PE02,PE03 PE01 Schemas PE02 Calculation Rules PE03 Features PE04 Create functions and operations PE51 HR form editor PRCA Payroll calendar
Agosto 2010 Spanish
84 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) PRCT Current Settings PRCU Printing Checks USA PRD1 Create DME SM31 Maintain Tables SM12 Locked Secessions TSTC Table lookup SPR0 IMG SE16 Data Browser (Table reports) PP03 PD Tables PP0M Change Org Unit P013 Maintain Positions PO03 Maintain Jobs
Benefits PA85 PA86 PA87 PA89 PA90 PA91 PA92 PA93 PA94 PA95 PA96 PA97 PA98 PA99 PACP
Benefits - Call RPLBEN11 Benefits - Call RPLBEN07 Benefits - Call RPLBEN09 COBRA Administration Benefits Enrollment – Individual Benefits - Forms Benefits Tables - Maintain Benefits Tables - Display Benefits - Access Reporting Tree Benefits IMG - Jump to Views Benefits reporting Salary Administration - Matrix Salary Administration Compensation Admin. - rel.changes HR-CH: Pension fund, interface
General/Reporting PM00 Menu for HR Reports PM01 Dialogs in HR - Create custom infotypes PRF0 Standard Form PSVT Dynamic Tools Menu PAR1 Flexible employee data PAR2 Employee list H99CWTR0 : Reporte de CCNominas h99_display_payresult : Ver resultados nomina
PD - Organizational Management PP0M Change Org Unit PO03 Maintain Jobs PO13 Maintain Position PO10 Maintain Organizational Unit PP01 Maintain Plan Data (menu-guided) PP02 Maintain Plan Data (Open) PP03 Maintain Plan Data (event-guided) PP05 Number Ranges PP06 Number Range Maintenance: HRADATA PP07 Tasks/Descriptions PP69 Choose Text for Organizational Unit
Agosto 2010 Spanish
85 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) PP90 Set Up Organization PPO1 Change Cost Center Assignment PPO2 Display Cost Center Assignment PPO3 Change Reporting Structure PPO4 Display Reporting Structure PPO5 Change Object Indicators (O/S) PPO6 Change Object Indicators O/S PPOA Display Menu Interface (with dyn.) PPOC Create Organizational Unit PPOM Maintain Organizational Plan PPOS Display Organizational Plan PQ01 Events for Work Center PQ02 Events for Training Program PQ03 Events for Job PQ04 Events for Business Event Type PQ06 Location Events PQ07 Resource Events PQ08 Events for External Person PQ09 Events for Business Event Group PQ10 Events for Organizational Unit PQ11 Events for Qualification PQ12 Resource Type Events PQ13 Events for Position PQ14 Events for Task PQ15 Events for Company PSO5 PD: Administration Tools PSOA Work Center Reporting PSOC Job Reporting PSOG OrgManagement General Reporting PSOI Tools Integration PA-PD PSOO Organizational Unit Reporting PSOS Position Reporting PSOT Task Reporting
Recruitment PB10 PB20 PB30 PB40 PB50 PB60 PB80 PBA0 PBA1 PBA2 PBA3 PBA4
Init.entry of applicant master data Display applicant master data Maintain applicant master data Applicant events Display applicant actions Maintain applicant actions Evaluate vacancies Evaluate advertisements Applicant index List of applications Applicant vacancy assignment list Receipt of application
Agosto 2010 Spanish
86 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9.2 SAP HR HR INFOTYPE OPERATION 9.2.1
Funcion para crear, modificar o borrar infotipos
*---------------------------------------------------------------------* * FORM insert_0014 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM insert_0014. DATA r_p0014 LIKE p0014. DATA l_bapireturn LIKE bapireturn1. DATA: bapipakey_tab LIKE bapipakey OCCURS 0 WITH HEADER LINE. DATA : s_importe(20) TYPE c. DATA: m_text LIKE l_bapireturn-message_v1. DATA: m_text2 LIKE l_bapireturn-message_v1. DATA m_len TYPE i. DATA: importe_avo LIKE p0014-betrg. DATA importe_avo_e LIKE bapicurr-bapicurr. DATA importe_avo2 LIKE p0014-betrg. DATA: num_meses(2) TYPE n. DATA aux_date_begda TYPE d. DATA aux_date_endda TYPE d. * Create the IT0014 records LOOP AT tb_bonus INTO wa_bonus. * enqueue the employye CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE' EXPORTING number = wa_bonus-pernr IMPORTING return = l_bapireturn. IF l_bapireturn-id NE space. WRITE: / wa_bonus-pernr, 'Enqueue failed'(003). PERFORM applog_msg_add USING '1' wa_bonus-pernr 'E' '5A' '198' wa_bonus-pernr . CONTINUE. ENDIF. IF wa_bonus-fecha_alta > wa_bonus-begda. * si fecha alta > inicio de IT0014, se asume begda = fecha de alta * empleado r_p0014-begda = wa_bonus-fecha_alta. * wa_bonus-begda = wa_bonus-fecha_alta. ELSE. r_p0014-begda = wa_bonus-begda.
Agosto 2010 Spanish
87 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) ENDIF.
* *
* * * * * * *
*
*
IF flag_flag <> 'X'. IF pa_rbp1 = 'X'. num_meses = wa_bonus-endda+4(2) - wa_bonus-begda+4(2) + 1. num_meses = so_febon-high+4(2) - so_febon-low+4(2) + 1. PERFORM months_between_dates USING so_febon-low so_febon-high CHANGING num_meses. ELSE. if wa_bonus-fecha_alta > wa_bonus-begda. num_meses = wa_bonus-endda+4(2) - wa_bonus-fecha_alta+4(2) + 1. else. num_meses = wa_bonus-endda+4(2) - wa_bonus-begda+4(2) + 1. endif. IF wa_bonus-fecha_alta > so_febon-low. num_meses = so_febon-high+4(2) wa_bonus-fecha_alta+4(2) + 1. PERFORM months_between_dates USING wa_bonus-fecha_alta so_febon-high CHANGING num_meses. ELSE. num_meses = so_febon-high+4(2) - so_febon-low+4(2) + 1. PERFORM months_between_dates USING so_febon-low so_febon-high CHANGING num_meses. ENDIF. ENDIF. IF num_meses = 0. num_meses = 1. ENDIF. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL' EXPORTING currency = wa_bonus-waers amount_internal = wa_bonus-betrg IMPORTING amount_external = importe_avo_e. importe_avo_e = importe_avo_e / num_meses. importe_avo_e = floor( importe_avo_e ). CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' EXPORTING currency = wa_bonus-waers amount_external = importe_avo_e max_number_of_digits = '17' IMPORTING amount_internal = importe_avo RETURN = . importe_avo2 = wa_bonus-betrg - ( importe_avo * num_meses ).
Agosto 2010 Spanish
88 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) wa_bonus-betrg = importe_avo. ENDIF. IF importe_avo2 > 0. aux_date_endda = wa_bonus-endda. PERFORM add_month_to_date USING wa_bonus-endda '-' '1' CHANGING aux_date_begda. r_p0014-endda = aux_date_begda. wa_bonus-endda = aux_date_begda. importe_avo2 = importe_avo2 + importe_avo. ENDIF. DO. IF sy-index > 2. EXIT. ENDIF. CHECK wa_bonus-betrg > 0 OR flag_flag = 'X' OR NOT pa_infty IS INITIAL. * fill the IT0014 data IF flag_flag = 'X'. * tratamiento special r_p0014-infty = '0014'. r_p0014-pernr = wa_bonus-pernr. r_p0014-subty = wa_bonus-lgart. r_p0014-anzhl = '1'. r_p0014-zeinh = cod_unidad_flag. r_p0014-endda = wa_bonus-endda. r_p0014-lgart = wa_bonus-lgart. ELSEIF NOT pa_infty IS INITIAL. r_p0014-infty = '0014'. r_p0014-pernr = wa_bonus-pernr. r_p0014-subty = pa_lgart. r_p0014-endda = wa_bonus-endda. r_p0014-anzhl = wa_bonus-anzhl. r_p0014-zeinh = wa_bonus-zeinh. r_p0014-betrg = wa_bonus-betrg. r_p0014-waers = wa_bonus-waers. ELSE. r_p0014-infty = '0014'. r_p0014-pernr = wa_bonus-pernr. r_p0014-subty = wa_bonus-lgart. * r_p0014-begda = wa_bonus-begda. * r_p0014-begda = wa_bonus-fecha_alta. r_p0014-endda = wa_bonus-endda. r_p0014-lgart = wa_bonus-lgart. r_p0014-betrg = wa_bonus-betrg. r_p0014-waers = wa_bonus-waers.
Agosto 2010 Spanish
89 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) ENDIF. * create the IT0014 record CALL FUNCTION 'HR_INFOTYPE_OPERATION' EXPORTING infty = r_p0014-infty number = r_p0014-pernr subtype = r_p0014-subty * OBJECTID = OBJECTID * LOCKINDICATOR = LOCKINDICATOR validityend = r_p0014-endda validitybegin = r_p0014-begda * RECORDNUMBER = RECORDNUMBER record = r_p0014 operation = 'INS' nocommit = pa_test IMPORTING return = l_bapireturn key = bapipakey_tab EXCEPTIONS OTHERS = 0. IF NOT l_bapireturn IS INITIAL. * error WRITE:/ wa_bonus-pernr, 'Error crear IT0014'(004), l_bapireturn-message+0(120). PERFORM applog_msg_add USING '1' wa_bonus-pernr l_bapireturn-type l_bapireturn-id l_bapireturn-number l_bapireturn-message_v1 l_bapireturn-message_v2 l_bapireturn-message_v3 l_bapireturn-message_v4. ELSE. WRITE wa_bonus-betrg TO s_importe CURRENCY wa_bonus-waers. CONDENSE s_importe NO-GAPS. CONCATENATE s_importe wa_bonus-waers INTO s_importe SEPARATED BY space. m_text = 'IT0014 creado con exito.'. m_text2 = 'CCNom: &1 Monto: &2'. REPLACE '&1' WITH pa_lgart INTO m_text2. REPLACE '&2' WITH s_importe INTO m_text2. m_len = strlen( m_text ). WRITE:/ wa_bonus-pernr, m_text(m_len), m_text2. PERFORM applog_msg_add USING '4' wa_bonus-pernr
Agosto 2010 Spanish
90 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) 'S' 'ZPPY_INT' '000' wa_bonus-pernr m_text m_text2 . ENDIF. IF flag_flag = 'X' OR NOT pa_infty IS INITIAL. EXIT. ENDIF. * asignamos importe 2 para siguiente "vuelta" del Do wa_bonus-betrg = importe_avo2. r_p0014-begda = aux_date_begda + 1. wa_bonus-endda = aux_date_endda. * wa_bonus-begda = wa_bonus-endda. * wa_bonus-begda+6(2) = '01'. ENDDO. * Use 'BAPI_EMPLOYEE_DEQUEUE' to un-lock the employee before updating CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE' EXPORTING number = wa_bonus-pernr IMPORTING return = l_bapireturn. ENDLOOP. ENDFORM.
9.2.2
Ejemplo 2 carga Infotipo 0171
*---------------------------------------------------------------------* * FORM carga_it0171 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM carga_it0171. DATA: BEGIN OF entry_dates OCCURS 5. INCLUDE STRUCTURE hida. DATA: END OF entry_dates. DATA: "JPMSSL0K002845 lv_barea TYPE p0171-barea, "JPMSSL0K002845 lv_bengr TYPE p0171-bengr, "JPMSSL0K002845 lv_bstat TYPE p0171-bstat, "JPMSSL0K002845 ld_begda TYPE d. DATA ls_p0171 LIKE p0171. DATA ls_bapireturn LIKE bapireturn1. DATA:lt_bapipakey_tab LIKE bapipakey OCCURS 0 WITH HEADER LINE. * REFRESH bdcdata. * CLEAR bdcdata.
Agosto 2010 Spanish
91 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) * enqueue the employye CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE' EXPORTING number = current_sapno IMPORTING return = ls_bapireturn. IF ls_bapireturn-id NE space. WRITE: / current_sapno, 'Enqueue failed'(003). EXIT. ENDIF. ld_begda(4) = data_in-from_date+6(4). ld_begda+4(2) = data_in-from_date+3(2). ld_begda+6(2) = data_in-from_date(2). CALL FUNCTION 'HR_ENTRY_DATE' EXPORTING persnr = current_sapno IMPORTING entrydate = ld_begda TABLES entry_dates = entry_dates EXCEPTIONS entry_date_not_found = 1 pernr_not_assigned = 2. IF sy-subrc <> 0. MESSAGE i016(pn) WITH text-028 current_sapno text-026. EXIT. ENDIF. PERFORM get_default_values_for_p0171 "JPMSSL0K002845 USING "JPMSSL0K002845 current_sapno "JPMSSL0K002845 ld_begda "JPMSSL0K002845 CHANGING "JPMSSL0K002845 lv_barea "JPMSSL0K002845 lv_bengr "JPMSSL0K002845 lv_bstat. "JPMSSL0K002845 ls_p0171-infty = '0171'. ls_p0171-pernr = current_sapno. ls_p0171-begda = ld_begda. ls_p0171-endda = '99991231'. ls_p0171-barea = lv_barea. ls_p0171-bengr = lv_bengr. ls_p0171-bstat = lv_bstat. CALL FUNCTION 'HR_INFOTYPE_OPERATION' EXPORTING infty = ls_p0171-infty number = ls_p0171-pernr
Agosto 2010 Spanish
92 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) subtype = ls_p0171-subty OBJECTID = OBJECTID LOCKINDICATOR = LOCKINDICATOR validityend = ls_p0171-endda validitybegin = ls_p0171-begda * RECORDNUMBER = RECORDNUMBER record = ls_p0171 operation = 'INS' nocommit = testrun IMPORTING return = ls_bapireturn key = lt_bapipakey_tab EXCEPTIONS OTHERS = 0. IF NOT ls_bapireturn IS INITIAL. * error WRITE:/ ls_p0171-pernr, 'Error crear IT0171'(004), ls_bapireturn-message+0(120). ELSE. WRITE:/ ls_p0171-pernr, 'Registro creado con exito'(001). ENDIF. * Use 'BAPI_EMPLOYEE_DEQUEUE' to un-lock the employee before updating CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE' EXPORTING number = current_sapno IMPORTING return = ls_bapireturn. ENDFORM. * *
Agosto 2010 Spanish
93 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9.3 SAP HR ABAP LECTURA CLUSTER 9.3.1
Ejemplo 1 lectura de estructura ARRS
*&---------------------------------------------------------------------* *& Form get_pay_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM get_pay_data CHANGING p_subrc. DATA ld_msg(100). DATA ld_relid LIKE t500l-relid. DATA: BEGIN OF it_rgdir OCCURS 0. INCLUDE STRUCTURE pc261. DATA: END OF it_rgdir. DATA ls_arrrs LIKE pc22z. CLEAR gt_rgdir[]. CALL FUNCTION 'CA_CU_READ_RGDIR_NEW' EXPORTING persnr = pernr-pernr IMPORTING molga = gd_molga TABLES cu_ca_rgdir = gt_rgdir EXCEPTIONS import_mismatch_error_cu = 1 import_mismatch_error_ca = 2 no_read_authority_ca = 3 no_read_authority_cu = 4 error_reading_cu =5 error_reading_ca =6 no_record_found =7 OTHERS = 8. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO ld_msg. p_subrc = 4. EXIT. ENDIF. DELETE gt_rgdir WHERE NOT ( fpend BETWEEN pn-begda AND pn-endda ). PERFORM read_relid USING gd_molga ld_relid. * read payroll results LOOP AT gt_rgdir INTO gs_rgdir WHERE srtza = 'A'. CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT' EXPORTING
Agosto 2010 Spanish
94 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) clusterid = ld_relid employeenumber = pernr-pernr sequencenumber = gs_rgdir-seqnr read_only_international = 'X' CHANGING payroll_result = gt_result EXCEPTIONS illegal_isocode_or_clusterid = 1 error_generating_import =2 import_mismatch_error =3 subpool_dir_full =4 no_read_authority =5 no_record_found =6 versions_do_not_match =7 OTHERS = 8. IF sy-subrc <> 0. IF sy-subrc = 5. p_subrc = 4. ENDIF. EXIT. ENDIF. gt_alv_data-fpper = gs_rgdir-fpper. gt_alv_data-waers = gt_result-inter-versc-waers. LOOP AT gt_result-inter-arrrs INTO ls_arrrs. MOVE-CORRESPONDING ls_arrrs TO gt_alv_data. APPEND gt_alv_data. ENDLOOP. ENDLOOP. ENDFORM.
Agosto 2010 Spanish
" get_pay_data
95 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9.4 SAP HR ABAP BAPI BASICPAY GETDETAIL 9.4.1
Ejemplo de BAPI 'BAPI_BASICPAY_GETDETAIL' para leer el IT0008
Ojo que esta BAPI calcula los conceptos indirectos :-) *---------------------------------------------------------------------* * FORM get_p0008_detail * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> GT_BAPI_WAGETYPES * * --> P0008 * *---------------------------------------------------------------------* FORM get_p0008_detail TABLES gt_bapi_wagetypes STRUCTURE bapip0008p USING p0008 LIKE p0008. DATA ld_amount_external LIKE bapicurr-bapicurr. DATA lt_return LIKE TABLE OF bapireturn1 WITH HEADER LINE. CLEAR gt_bapi_wagetypes[]. CALL FUNCTION 'BAPI_BASICPAY_GETDETAIL' EXPORTING employeenumber = p0008-pernr subtype = p0008-subty objectid = p0008-objps lockindicator = p0008-sprps validitybegin = p0008-begda validityend = p0008-endda recordnumber = p0008-seqnr IMPORTING return = lt_return TABLES wagetypes = gt_bapi_wagetypes. ENDFORM.
9.4.2
Ejemplo 2, Aca soluciona problema con autorizacion en IT0008
*&---------------------------------------------------------------------* *& Form get_basicpay_detail *&---------------------------------------------------------------------* * copied from BAPI_BASICPAY_GETDETAIL *----------------------------------------------------------------------* * -->GT_BAPI_WAGETYPES text
Agosto 2010 Spanish
96 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) * -->VALUE(P0008) text * -->P_SUMBB text *----------------------------------------------------------------------* FORM get_basicpay_detail TABLES gt_bapi_wagetypes STRUCTURE bapip0008p USING value(p0008) LIKE p0008 CHANGING p_sumbb. DATA ld_amount_external LIKE bapicurr-bapicurr. DATA lt_return LIKE TABLE OF bapireturn1 WITH HEADER LINE. DATA lt_p0008 LIKE TABLE OF p0008 WITH HEADER LINE. DATA ld_number_of_lgart_in_p0008 TYPE i. DATA fname LIKE pprop-fname. FIELD-SYMBOLS . DATA: molga LIKE t001p-molga, * WAGETYPENO LIKE T539S-LGANR, "N0334353 wagetypeno(2) TYPE n, "N0334353 amount LIKE gt_bapi_wagetypes-amount, number LIKE gt_bapi_wagetypes-number, indvaluation LIKE gt_bapi_wagetypes-indvaluat, addtotalamount LIKE gt_bapi_wagetypes-addtotamnt, number_of_lgart_in_p0008 TYPE i VALUE 20, "HCMOPS2737 currencyexpstring LIKE sy-msgv1. CLEAR gt_bapi_wagetypes[]. CLEAR p_sumbb. CHECK p0008 IS NOT INITIAL. CALL FUNCTION 'RP_NUMBER_OF_WAGETYPES_0008' "HCMOPS2737 IMPORTING wt_count = ld_number_of_lgart_in_p0008. "HCMOPS2737 REFRESH gt_bapi_wagetypes. * DO 20 TIMES. "HCMOPS2737 DO number_of_lgart_in_p0008 TIMES. "HCMOPS2737 CLEAR gt_bapi_wagetypes. MOVE sy-index TO wagetypeno. CONCATENATE 'P0008-LGA' wagetypeno INTO fname. ASSIGN (fname) TO . MOVE TO gt_bapi_wagetypes-wagetype. CONCATENATE 'P0008-IND' wagetypeno INTO fname. ASSIGN (fname) TO . MOVE TO gt_bapi_wagetypes-indvaluat. CONCATENATE 'P0008-BET' wagetypeno INTO fname. ASSIGN (fname) TO . * move to wagetypes-amount. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL' EXPORTING currency = p0008-waers amount_internal = IMPORTING amount_external = gt_bapi_wagetypes-amount EXCEPTIONS OTHERS = 0. IF sy-subrc NE 0.
Agosto 2010 Spanish
97 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) * * * * * * * ** ** ** ** ** * * * * **
write p0008-waers to currencyexpstring. call function 'BALW_BAPIRETURN_GET1' exporting type = 'E' cl = 'RP' number = '042' par1 = currencyexpstring par2 ='' PAR3 ='' PAR4 ='' LOG_NO = ' ' LOG_MSG_NO = ' ' importing bapireturn = return exceptions others = 0. EXIT. ENDIF. CONCATENATE 'P0008-ANZ' wagetypeno INTO fname. ASSIGN (fname) TO . MOVE TO gt_bapi_wagetypes-number. CONCATENATE 'P0008-EIN' wagetypeno INTO fname. ASSIGN (fname) TO . MOVE TO gt_bapi_wagetypes-timeunit. CONCATENATE 'P0008-OPK' wagetypeno INTO fname. ASSIGN (fname) TO . MOVE TO gt_bapi_wagetypes-operindic. * PERFORM get_addtotalamount USING molga * wagetypes-wagetype * validityend * CHANGING wagetypes-addtotamnt * return. *** wird in BAPI_BASICPAYEVALUATEWAGETYPES gefüllt PERFORM re512t USING gt_bapi_wagetypes-wagetype '99' CHANGING gt_bapi_wagetypes-nameofwagetype. IF NOT gt_bapi_wagetypes-wagetype IS INITIAL. "no wagetype, no entry APPEND gt_bapi_wagetypes. ENDIF. ENDDO. CALL FUNCTION 'HR_READ_INFOTYPE_AUTHC_DISABLE' EXCEPTIONS OTHERS = 1. CALL FUNCTION 'BAPI_BASICPAYEVALUATEWAGETYPES' EXPORTING employeenumber = pernr-pernr startindvaluation = pn-endda countrygrouping = '99'
Agosto 2010 Spanish
98 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) payscaletype = p0008-trfar payscalearea = p0008-trfgb payscalegroup = p0008-trfgr payscalelevel = p0008-trfst currencyimp = p0008-waers capacityutilization = p0008-bsgrd hoursworked = p0008-divgv IMPORTING * CURRENCYEXP = return = lt_return TABLES wagetypes = gt_bapi_wagetypes EXCEPTIONS OTHERS = 0. IF NOT lt_return IS INITIAL. IF lt_return-type = 'S'. "Success CLEAR lt_return. ENDIF. ENDIF. * calculate agreed salary LOOP AT gt_bapi_wagetypes WHERE addtotamnt = 'X'. ADD gt_bapi_wagetypes-amount TO ld_amount_external. ENDLOOP. IF p0008-waers IS INITIAL. p0008-waers = 'CLP'. ENDIF. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' EXPORTING currency = p0008-waers amount_external = ld_amount_external max_number_of_digits = 15 IMPORTING amount_internal = p_sumbb * RETURN = . ENDFORM. "get_basicpay_detail
Agosto 2010 Spanish
99 /138
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9.5 SAP HR ABAP HR READ INFOTYPE 9.5.1
FUNCION HR_READ_INFOTYPE PARA LEER DATOS INFOTIPO
FUNCTION z_rfc_zhrcbbrp051. *"---------------------------------------------------------------------*"*"Interfase local *" IMPORTING *" VALUE(PERNR) TYPE PERNR-PERNR *" VALUE(FPPER) TYPE FPPER *" EXPORTING *" VALUE(E_PERDATA) LIKE ZST_CERT_RENTA STRUCTURE ZST_CERT_RENTA *" VALUE(RETORNO1) LIKE SY-MSGTY *" VALUE(RETORNO2) LIKE T100-TEXT *" VALUE(RETORNO3) LIKE SY-MSGV1 *" TABLES *" WAGETYPES STRUCTURE BAPIP0008P *"---------------------------------------------------------------------DATA ld_subrc LIKE sy-subrc. DATA lt_0001 LIKE TABLE OF p0001 WITH HEADER LINE. DATA lt_0002 LIKE TABLE OF p0002 WITH HEADER LINE. DATA lt_0041 LIKE TABLE OF p0041 WITH HEADER LINE. DATA lt_9003 LIKE TABLE OF p9003 WITH HEADER LINE. DATA lt_9007 LIKE TABLE OF p9007 WITH HEADER LINE. DATA lt_0008 LIKE TABLE OF p0008 WITH HEADER LINE. DATA lt_0014 LIKE TABLE OF p0014 WITH HEADER LINE. DATA ld_fec_con TYPE d. DATA ld_molga LIKE t500p-molga. DATA ld_auxtabix LIKE sy-tabix. DATA: ld_begda TYPE d, ld_endda TYPE d. * cc nominas de infotipo 0008 PERFORM init_lgart_0008. * * cc nominas de infotipo 0014 PERFORM init_lgart_0014. * * fecha de certificado * perform spell_fecha using fecha * changing e_perdata-FECer_TXT. e_perdata-pernr = pernr. e_perdata-fecer = sy-datlo. *CALL FUNCTION 'HR_READ_INFOTYPE_AUTHC_DISABLE' ld_begda = fpper. ld_begda+6(2) = '01'. PERFORM last_day_in_month(sapfp500) USING ld_begda ld_endda. *----------------------------------------------------------------------*
Agosto 2010 Spanish /138
100
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) * leer datos infotipo 0001 *----------------------------------------------------------------------* CALL FUNCTION 'HR_READ_INFOTYPE' EXPORTING * TCLAS = 'A' pernr = pernr infty = '0001' begda = ld_begda endda = ld_endda IMPORTING subrc = ld_subrc TABLES infty_tab = lt_0001. LOOP AT lt_0001. ENDLOOP. IF sy-subrc = 0. SELECT SINGLE butxt INTO e_perdata-butxt FROM t001 WHERE bukrs = lt_0001-bukrs. SELECT SINGLE ptext INTO e_perdata-ptext FROM t501t WHERE sprsl = sy-langu AND persg = lt_0001-persg . IF sy-subrc NE 0. SELECT SINGLE ptext INTO e_perdata-ptext FROM t501t WHERE sprsl = 'S' AND persg = lt_0001-persg . ENDIF. ELSE. * sin datos MOVE: 'E' TO retorno1, 'SIN DATOS' TO retorno2, TO retorno3. EXIT. ENDIF. *----------------------------------------------------------------------* * Leer datos Infotipo 0002 *----------------------------------------------------------------------* CALL FUNCTION 'HR_READ_INFOTYPE' EXPORTING * TCLAS = 'A' pernr = pernr infty = '0002' begda = ld_begda endda = ld_endda IMPORTING subrc = ld_subrc TABLES infty_tab = lt_0002. LOOP AT lt_0002.
Agosto 2010 Spanish /138
101
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) ENDLOOP. IF sy-subrc = 0. * tratamiento SELECT SINGLE atext INTO e_perdata-atext FROM t522t WHERE sprsl = sy-langu AND anred = lt_0002-anred. IF sy-subrc NE 0. SELECT SINGLE atext INTO e_perdata-atext FROM t522t WHERE sprsl = 'S' AND anred = lt_0002-anred. ENDIF. e_perdata-vorna = lt_0002-vorna. "Nombres e_perdata-nachn = lt_0002-nachn. "1er apellido e_perdata-name2 = lt_0002-name2. "2do apellido e_perdata-zzhr_rut = lt_0002-zzhr_rut. "rut ENDIF. *----------------------------------------------------------------------* * Leer datos Infotipo 0041 *----------------------------------------------------------------------* CALL FUNCTION 'HR_READ_INFOTYPE' EXPORTING * TCLAS = 'A' pernr = pernr infty = '0041' begda = ld_begda endda = ld_endda IMPORTING subrc = ld_subrc TABLES infty_tab = lt_0041. LOOP AT lt_0041. ENDLOOP. IF sy-subrc EQ 0. * leer fecha de contratacion PERFORM leer_fecha_i0041 USING lt_0041 '02' CHANGING ld_fec_con. e_perdata-fecon = ld_fec_con. * perform spell_fecha using ld_fec_con * changing e_perdata-FECON_TXT. ENDIF. *--------------------------------------------------------------------* * leer datos afp *--------------------------------------------------------------------* CALL FUNCTION 'HR_READ_INFOTYPE' EXPORTING * TCLAS = 'A' pernr = pernr infty = '9003'
Agosto 2010 Spanish /138
102
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) begda = ld_begda endda = ld_endda IMPORTING subrc = ld_subrc TABLES infty_tab = lt_9003. LOOP AT lt_9003. ENDLOOP. IF sy-subrc = 0. DATA ld_f_pens LIKE z7cl_afp0-f_pens. DATA ld_seg_inval LIKE z7cl_afp0-seg_inval. SELECT SINGLE glosa_afp f_pens seg_inval INTO (e_perdata-glosa_afp,ld_f_pens, ld_seg_inval) FROM z7cl_afp0 WHERE cod_afp = lt_9003-cod_afp AND endda >= ld_begda AND begda <= ld_endda. IF sy-subrc = 0. e_perdata-porafp = ld_f_pens + ld_seg_inval . ENDIF. ENDIF. *--------------------------------------------------------------------* * leer datos isapre *--------------------------------------------------------------------* CALL FUNCTION 'HR_READ_INFOTYPE' EXPORTING * TCLAS = 'A' pernr = pernr infty = '9007' begda = ld_begda endda = ld_endda IMPORTING subrc = ld_subrc TABLES infty_tab = lt_9007. LOOP AT lt_9007. ENDLOOP. IF sy-subrc = 0. SELECT SINGLE molga INTO ld_molga FROM t500p WHERE persa = lt_0001-werks. SELECT SINGLE isapre porcentaje INTO (e_perdata-isapre,e_perdata-porisa) FROM z7cl_isa0 WHERE codigo = lt_9007-codigo AND zplan = lt_9007-zplan AND molga = ld_molga AND hasta >= ld_begda AND desde <= ld_endda. ENDIF.
Agosto 2010 Spanish /138
103
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) *--------------------------------------------------------------------* * leer datos de infotipo 0008 *--------------------------------------------------------------------* CALL FUNCTION 'HR_READ_INFOTYPE' EXPORTING * TCLAS = 'A' pernr = pernr infty = '0008' begda = ld_begda endda = ld_endda IMPORTING subrc = ld_subrc TABLES infty_tab = lt_0008. LOOP AT lt_0008. ENDLOOP. IF sy-subrc = 0. PERFORM get_p0008_detail TABLES gt_bapi_wagetypes USING lt_0008 . LOOP AT gt_bapi_wagetypes. IF NOT gt_bapi_wagetypes-wagetype IN ra_lgart_0008. DELETE gt_bapi_wagetypes. ELSE. IF gt_bapi_wagetypes-amount < 0. gt_bapi_wagetypes-amount = gt_bapi_wagetypes-amount * -1. MODIFY gt_bapi_wagetypes. ENDIF. ENDIF. ENDLOOP. ENDIF. *----------------------------------------------------------------------* * Leer datos Infotipo 0014 *----------------------------------------------------------------------* CALL FUNCTION 'HR_READ_INFOTYPE' EXPORTING * TCLAS = 'A' pernr = pernr infty = '0014' begda = ld_begda endda = ld_endda IMPORTING subrc = ld_subrc TABLES infty_tab = lt_0014. LOOP AT lt_0014. ld_auxtabix = sy-tabix. IF NOT lt_0014-lgart IN ra_lgart_0014. DELETE lt_0014 INDEX ld_auxtabix. ELSE.
Agosto 2010 Spanish /138
104
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) CLEAR gt_bapi_wagetypes. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL' EXPORTING currency = lt_0014-waers amount_internal = lt_0014-betrg IMPORTING amount_external = gt_bapi_wagetypes-amount. gt_bapi_wagetypes-wagetype = lt_0014-lgart. *gt_bapi_wagetypes-NAMEOFWAGETYPE * Texto CC Nómina SELECT SINGLE lgtxt INTO gt_bapi_wagetypes-nameofwagetype FROM t512t WHERE sprsl = sy-langu AND molga = ld_molga AND lgart = lt_0014-lgart. APPEND gt_bapi_wagetypes. ENDIF. ENDLOOP. LOOP AT gt_bapi_wagetypes. IF gt_bapi_wagetypes-amount = 0. DELETE gt_bapi_wagetypes. ELSE. ADD gt_bapi_wagetypes-amount TO e_perdata-total_bruto. ENDIF. ENDLOOP. wagetypes[] = gt_bapi_wagetypes[]. ENDFUNCTION. *&---------------------------------------------------------------------* *& Form leer_fecha_i0041 *&---------------------------------------------------------------------* * *----------------------------------------------------------------------* * -->P0041 I0041 record * -->id_date class of date * <--date output date *----------------------------------------------------------------------* FORM leer_fecha_i0041 USING p0041 LIKE p0041 value(id_date) TYPE datar CHANGING date. FIELD-SYMBOLS . DATA cont(2) TYPE n. DATA campo1(11) VALUE 'P0041-DARXX'. DATA campo2(11) VALUE 'P0041-DATXX'. cont = 1. * search from the fields p0041-darxx one who have a value * of id_date, then the date is the corresponding P0041-datxx field DO 12 TIMES. campo1+9(2) = cont.
Agosto 2010 Spanish /138
105
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) campo2+9(2) = cont. ASSIGN (campo1) TO . IF = id_date. ASSIGN (campo2) TO . date = . EXIT. ENDIF. ADD 1 TO cont. ENDDO. ENDFORM. *&---------------------------------------------------------------------* *& Form get_p0008_detail *&---------------------------------------------------------------------* FORM get_p0008_detail TABLES gt_bapi_wagetypes STRUCTURE bapip0008p USING p0008 LIKE p0008. DATA ld_amount_external LIKE bapicurr-bapicurr. DATA lt_return LIKE TABLE OF bapireturn1 WITH HEADER LINE. CLEAR gt_bapi_wagetypes[]. CALL FUNCTION 'BAPI_BASICPAY_GETDETAIL' EXPORTING employeenumber = p0008-pernr subtype = p0008-subty objectid = p0008-objps lockindicator = p0008-sprps validitybegin = p0008-begda validityend = p0008-endda recordnumber = p0008-seqnr IMPORTING return = lt_return TABLES wagetypes = gt_bapi_wagetypes. ENDFORM.
Agosto 2010 Spanish /138
106
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9.6 SAP HR ABAP ORG 9.6.1
Ejemplo 1
Obtiene estructura organizacional de "arriba hacia abajo", dado un codigo de organizacion inicial. Ojo que es recursiva. REPORT ytes_hr_org. TABLES hrp1001. DATA: BEGIN OF gt_org OCCURS 0, orgid_sup LIKE hrp1001-objid, "Org superior orgid LIKE hrp1001-objid, "Org pos TYPE i, "jerarquia dentro de Org. END OF gt_org. PARAMETERS p_orgid LIKE hrp1001-objid. START-OF-SELECTION. PERFORM get_org USING space p_orgid 0. *&---------------------------------------------------------------------* *& Form get_org *&---------------------------------------------------------------------* FORM get_org USING p_orgid_sup p_orgid value(p_pos). DATA: BEGIN OF lt_org OCCURS 0, sobid LIKE hrp1001-sobid, END OF lt_org. DATA ld_objid LIKE hrp1001-objid. gt_org-orgid_sup = p_orgid_sup. gt_org-orgid = p_orgid. gt_org-pos = p_pos. APPEND gt_org. ADD 1 TO p_pos. SELECT sobid INTO TABLE lt_org FROM hrp1001 WHERE otype = 'O' AND objid = p_orgid AND plvar = '01' AND rsign = 'B' AND relat = '002' AND sclas = 'O' AND istat EQ '1' AND begda LE sy-datum AND endda GE sy-datum.
Agosto 2010 Spanish /138
107
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) IF sy-subrc NE 0. EXIT. ELSE. LOOP AT lt_org. MOVE lt_org-sobid TO ld_objid. PERFORM get_org USING p_orgid ld_objid p_pos. ENDLOOP. ENDIF. ENDFORM.
Agosto 2010 Spanish /138
"get_org
108
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9.7 SAP HR ABAP CLUSTER TIEMPO 9.7.1 •
Ejemplo 1 OJO usar base de datos PNP
TABLES: pernr. INFOTYPES : 0001, 0002, 0007, 0008, 2001. *&---------------------------------------------------------------------* * time managment related *&---------------------------------------------------------------------* TABLES: pcl1, pcl2. INCLUDE rpppxd00. "data for PCL1/2 buffer *include rpppxm00. "standard routines for buffering the data in macros data: begin of common part buffer. INCLUDE rpppxd10. DATA: END OF COMMON PART. INCLUDE rpc2b200. START-OF-SELECTION. GET pernr. PERFORM read_time. END-OF-SELECTION. INCLUDE rpppxm00. *&---------------------------------------------------------------------* *& Form read_time *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM read_time. b2-key-pernr = pernr-pernr. "Personnel number b2-key-pabrp = pn-begda+4(2). "payroll period b2-key-pabrj = pn-begda(4). "payroll year b2-key-cltyp = '1'. "original rp-imp-c2-b2. IF sy-subrc = 0. * theorically bonus by time concept LOOP AT zl WHERE lgart IN rt_lgart_bono AND lgart IN so_lgart.
Agosto 2010 Spanish /138
109
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) ADD zl-anzhl TO gs_rec-ntubo. ENDLOOP. LOOP AT so_lgart. LOOP AT zl WHERE lgart = so_lgart-low. gs_rec-cctpo = zl-lgart. ADD 1 TO gs_rec-nutpo. ENDLOOP. ENDLOOP. ENDIF. ENDFORM. "read_time
9.7.2
Ejemplo 2
usar funcion 'HR_TIME_RESULTS_IN_INTERVAL' ejemplo CALL FUNCTION 'HR_TIME_RESULTS_IN_INTERVAL' EXPORTING int_pernr = work_pernr int_begda = levp-fpbeg int_endda = in_period_end TABLES int_time_results = time_results EXCEPTIONS wrong_cluster_version = 1 no_read_authority = 2 cluster_archived =3 technical_error =4 OTHERS = 5. REFRESH complete_zl. REFRESH summary_zl. LOOP AT time_results INTO time_result. APPEND LINES OF time_result-zl TO complete_zl. APPEND LINES OF time_result-qtacc TO qtacctab. APPEND LINES OF time_result-psp TO psptab. APPEND LINES OF time_result-qttrans TO qttranstab. * Build up a ZL table that is based on the date and wagetype * Everything else is cleared. This will achieve a hour total * on a day by day basis per wagetype. LOOP AT time_result-zl INTO zl. CLEAR zl-beguz. CLEAR zl-enduz. CLEAR zl-alznr. CLEAR zl-c1znr. CLEAR zl-abznr. CLEAR zl-iftyp. CLEAR zl-prznr. COLLECT zl INTO summary_zl. ENDLOOP. ENDLOOP.
Agosto 2010 Spanish /138
110
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
Agosto 2010 Spanish /138
111
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9.8 SAP HR ABAP LEER ACUMULADORES DATA: char96(96), "char-feld fuer 96 char 0/1 hexin(12) TYPE x, "hex feld fuer 96 bit 0/1 x128 TYPE x VALUE '80', hex TYPE x, hextm TYPE x, ps TYPE p, pc TYPE p. DATA: pack TYPE p,pack1 TYPE p,pack2 TYPE p. DATA gd_num TYPE i. DATA gd_res(1) TYPE c. gd_num = '85'. "acummulates in /185 PERFORM get_kumul USING gd_num gs_t512w-lgart gs_t512w-kumul CHANGING gd_res. IF gd_res EQ 'X'. * acumula => do something ENDIF. *---------------------------------------------------------------------* * FORM HEXINCHAR * *---------------------------------------------------------------------* FORM hexinchar USING anzahl. "und Feld HEXIN. IF NOT hexin IS INITIAL. * maximale Laenge HEXINPUT ist 12 = L'HEXIN bzw. L'CHAR96/8 s. a. MAX do anzahl times varying hex from hexin(1) next hexin+1(1) range hexin."UC XMS SHIFT char96 BY 8 PLACES. ps = 0. "set sum pc = 10000000. "set char hextm = x128. "set hex DO 8 TIMES. IF hex O hextm. ps = ps + pc. ENDIF. hextm = hextm / 2. pc = pc / 10. ENDDO. UNPACK ps TO char96+88(8). ENDDO. ps = ( 12 - anzahl ) * 8. "MAX = 12, maximale Laenge HEXINPUT SHIFT char96 BY ps PLACES. "linksbuendig nach CHAR96 ENDIF. ENDFORM. "END OF HEXINCHAR *---------------------------------------------------------------------* * FORM GET_KUMUL * *---------------------------------------------------------------------* FORM get_kumul USING gc_num TYPE i gc_lgart TYPE lgart p_kumul CHANGING gc_acum TYPE c.
Agosto 2010 Spanish /138
112
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) DATA gc_kumula LIKE char96. CLEAR: char96, hexin. CLEAR gc_acum. hexin = p_kumul. PERFORM hexinchar USING 12. gc_kumula = char96. IF gc_kumula IS NOT INITIAL. pack = gc_num - 1. "vklas-kl - 1. SHIFT gc_kumula BY pack PLACES. IF gc_kumula(1) EQ '1'. gc_acum = 'X'. ELSE. gc_acum = space. ENDIF. ENDIF. ENDFORM. "get_kumul
Agosto 2010 Spanish /138
113
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9.9 SAP HR PRESTAMOS ABAP 9.9.1
FUNCIONES UTILES MODULO PRESTAMOS
cl_hrpa_loan_computations=>compute_estimated_end_of_loan cl_hrpa_loan_computations=>read_payments_for_loan_id cl_hrpa_loan_computations=>compute_repayment_plan
9.9.1.1
EJEMPLO
*&---------------------------------------------------------------------* *& Report Y_TEST_LOAN *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT y_test_loan. TABLES pernr. INFOTYPES: 0045. DATA instance TYPE REF TO cl_hrpa_loan_computations. DATA gd_pclo_id TYPE pclo_id. DATA gd_estimated_end_of_loan TYPE d. DATA data_ref TYPE REF TO data. DATA gd_message_handler TYPE REF TO if_hrpa_message_handler. DATA gt_pagos TYPE pclo_payments_tab. DATA gt_p0078_tab TYPE p0078_tab. DATA: gt_pclo_repay_tab TYPE pclo_repay_tab, gt_pclo_loan_changes_tab TYPE pclo_loan_changes_tab. * create dummy message handler DATA dummy_handler TYPE REF TO cl_hrpa_dummy_message_handler. CREATE OBJECT dummy_handler. message_handler = dummy_handler. START-OF-SELECTION. GET pernr. PROVIDE * FROM p0045 BETWEEN pn-begda AND pn-endda. CALL METHOD cl_hrpa_loan_computations=>get_loan_id_from_p0045 EXPORTING p0045 = p0045 RECEIVING loan_id = gd_pclo_id. * CALCULO DE FECHA FINAL PRESTAMO try. CALL METHOD cl_hrpa_loan_computations=>compute_estimated_end_of_loan EXPORTING
Agosto 2010 Spanish /138
114
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) tclas = 'A' loan_id = gd_pclo_id message_handler = dummy_handler RECEIVING estimated_end_of_loan = gd_estimated_end_of_loan. endtry. * PAGOS DE PRESTAMO try. CALL METHOD cl_hrpa_loan_computations=>read_payments_for_loan_id EXPORTING tclas = 'A' loan_id = gd_pclo_id * ZAHLA = '*' * SPRPS = '*' * BEGDA = LOW_DATE * ENDDA = HIGH_DATE * NO_AUTH_CHECK = FALSE IMPORTING payments_tab = gt_pagos * DATA_EXISTS = * MISSING_AUTH = . catch cx_hrpa_violated_assertion . endtry. try. CALL METHOD cl_hrpa_loan_computations=>read_p0078_for_loan_id EXPORTING tclas = 'A' loan_id = gd_pclo_id * ZAHLA = '*' * SPRPS = '*' * BEGDA = LOW_DATE * ENDDA = HIGH_DATE * NO_AUTH_CHECK = FALSE IMPORTING p0078_tab = gt_p0078_tab * DATA_EXISTS = * MISSING_AUTH = . catch cx_hrpa_violated_assertion . endtry. * GENERAR PLAN DE AMORTIZACION try. CALL METHOD cl_hrpa_loan_computations=>compute_repayment_plan EXPORTING tclas = 'A' loan_id = gd_pclo_id * NEW_CURRENCY =
Agosto 2010 Spanish /138
115
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
*
message_handler = dummy_handler IMPORTING repayment_plan = gt_pclo_repay_tab loan_changes = gt_pclo_loan_changes_tab IS_OK = . catch cx_hrpa_violated_assertion . endtry. ENDPROVIDE.
END-OF-SELECTION.
Agosto 2010 Spanish /138
116
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR)
9.10 SAP HR TABLAS INFOTIPOS CATSCO Cross-Application Time Sheet (CATS)- Transfer
T554C Absence Valuation
to CO
T554S Attendance and Absence Types
CATSDB CATS- Database Table for Time Sheet
T554T Attendance and Absence Texts
CATSHR Cross-Application Time Sheet (CATS)- Transfer
T558B Payroll Account Transfer- Payroll Periods
to HR
T569V Control Records
CATSMM Cross-Application Time Sheet (CATS)- Transfer
T5K8C Transfer ext. payroll results into Canadian
to MM
specific tables
CATSPM Cross-Application Time Sheet (CATS)- Transfer
T74FA Benefit insurance plan
to PM/CS
T74FC Benefits Insurance Coverage Rule
CATSPS Cross-Application Time Sheet (CATS)- Transfer
HRP1000 Infotype 1000 DB Table (Objects)
to PS
HRP1001 Infotype 1001 DB Table (Relationships)
CSKS Cost Center Master Data
HRP1002 Infotype 1002 DB Table
CSKT Cost Center Texts
HRP1003 Infotype 1003 DB Table
PCL1 HR Cluster 1
HRP1004 Infotype 1004 DB table
PCL2 HR Cluster 2
HRP1005 DB Table for Infotype 1005 (Planned
T001P Personnel Area/Subarea
Compensation)
T001T Company code-dependent texts
HRP1006 Infotype 1006 DB table
T500L Personnel Country Grouping
HRP1007 Infotype 1007 DB Table
T500P Personnel Areas
HRP1008 Infotype 1008 DB Table
T502T Marital Status Designators
HRP1009 Infotype 1009 DB table
T503 Employee Group/Subgroup
HRP1010 Infotype 1010 DB table
T503T Employee Subgroup Names
HRP1011 Infotype 1011 DB Table
T508A Work Schedule Rules
HRP1013 Infotype 1013 DB Table
T510 Pay Scale Groups
HRP1014 Infotype 1014 DB Table
T510A Pay Scale Types
HRP1015 Infotype 1015 DB table
T510F Assign Pay Scale --- Currency
HRP1016 Infotype 1016 DB Table
T510W Pay Scale - Period Parameter Assignment
HRP1017 Infotype 1016 DB Table
T511 Wage Types
HRP1018 DB Table for Infotype 1018 Cost Distribution
T512T Wage Type Texts
HRP1019 DB Table for Infotype 1019 Required Positions
T512W Wage Type Valuation
HRP1020 Infotype 1020 DB table
T512Z Permissibility of Wage Types per Infotype
HRP1021 INFOTYPE 1021 DB TABLE
T527X Organizational Units
HRP1023 Infotype 1023 DB table
T528T Position Texts
HRP1024 INFOTYPE 1024 DB TABLE
T529T Personnel Action Texts
HRP1025 INFOTYPE 1025 DB TABLE
T529U Status Values
HRP1026 Infotype 1026 DB table
T530 Reasons for Actions
HRP1027 Infotype 1027 DB table
T530T Reason for Action Texts
HRP1028 Infotype 1028 DB Table
T549A Payroll Accounting Areas
HRP1029 Infotype 1029 DB table
T549Q Payroll Periods
HRP1030 Infotype 1030 DB table
T550A Daily Work Schedule
HRP1031 Infotype 1031 DB table
T550S Daily Work Schedule Texts
HRP1032 Infotype 1032 DB Table
T551S Period Work Schedule Texts
HRP1033 DB table for infotype 1033
T552A Monthly Work Schedule
HRP1034 Infotype 1034 DB table
Agosto 2010 Spanish /138
117
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) HRP1035 Infotype 1035 DB Table
HRP1270 DB Table for Info Type 1270
HRP1036 Infotype 1036 DB table
HRP1403 DB table for infotype 1403
HRP1037 Infotype 1037 DB Table
HRP1404 DB table for infotype 1404
HRP1038 Infotype 1038 DB table
HRP1500 DB Table for Infotype 1500
HRP1039 Database Table for Infotype 1039
HRP1501 DB Table for Infotype 1501
HRP1040 Database Table for Infotype 1040
HRP1502 DB Table for Infotype 1502
HRP1041 DB Table for Infotype 1041
HRP1503 DB Table for Infotype 1503
HRP1042 Infotype 1042 DB Table
HRP1504 DB Table for Infotype 1504
HRP1043 DB Table for Infotype 1043
HRP1505 DB Table for Infotype 1505
HRP1044 DB Table for Infotype 1044
HRP1506 DB Table for Infotype 1506
HRP1045 DB Table for Infotype 1045
HRP1507 DB Table for Infotype 1507
HRP1046 Database Table for Infotype 1046
HRP1518 DB Table for Infotype 1518
HRP1047 DB Table for Infotype 1047
HRP1519 DB Table for Infotype 1519
HRP1048 DB Table for Infotype 1048
HRP1520 DB Table for Infotype 1520
HRP1049 Database Tables for Infotype 1049
HRP1600 Database Table for Infotype 1600
HRP1050 DB Table for Infotype 1050 (Job Evaluation
HRP1601 Database Table for Infotype 1601
Results)
HRPAD21 Additional data PAD21
HRP1051 DB Table for Infotype 1051 (Survey Results)
HRPAD22 Additional data PAD22
HRP1060 DB Table for Infotype 1060
HRPAD23 Additional data PAD23
HRP1061 DB Table for Infotype 1061
HRPAD25 Additional data PAD25
HRP1062 DB Table for Infotype 1062
HRPAD27 Additional data PAD27
HRP1063 DB Table for Infotype 1063
HRPAD31 Additional data PAD31
HRP1201 Infotype 1201 DB Table
HRPAD34 Additional Data for Relationship 'has attended'
HRP1205 Infotype 1205 DB Table
HRPAD44 PAD44 Additional Data
HRP1206 Infotype 1206 DB Table
HRPAD47 PAD47 Additional Data
HRP1208 Infotype 1208 DB Table
HRPAD48 Additional Data PAD48
HRP1209 Infotype 1209 DB Table
HRPAD50 Additional Data PAD50
HRP1210 Infotype 1210 DB Table
HRPAD51 Additional data PAD51
HRP1211 Infotype 1211 DB Table
HRPAD53 Additional Data PAD53
HRP1212 Infotype 1212 DB Table
HRPAD63 PAD63 Additional Data
HRP1213 Infotype 1213 DB Table
HRPAD77 Additional data for PAD77
HRP1214 Infotype 1214 DB Table
HRPADBLIST Additional Data Databases
HRP1215 Infotype 1215 DB Table
HRPADD2 Additional Data PADD2
HRP1216 Infotype 1216 DB Table
HRPADD3 Additional Data PADD3
HRP1217 Infotype 1217 DB Table
HRPADIC Additional Data PADD2
HRP1218 DB Table for Infotype 1218
HRPADNLIST Additional Data Number List
HRP1220 DB Table for Infotype 1220 Activity Profile
HRPADNN General Additional Data Table
HRP1221 DB Table for Infotype 1221 Excluded Activities
HRPADP1 Additional Data PADP1
HRP1222 Infotype 1222- General attribute maintenance
HRPADP2 Additional Data PADP2
HRP1230 DB Table for Infotype 1230
HRPADPM Additional Data PADPM
HRP1240 DB Table for Infotype 1240
HRPADTI PADTI Additional Data
HRP1250 DB table for infotype 1250
HRPADUZ PADUZ Additional Data- Requirements
HRP1251 DB table for infotype 1251
Assignment of Persons
HRP1252 DB table for infotype 1252
HRPADXN Additional Data PADXN
HRP1253 DB table for infotype 1253
HRPS_T012K For Decoupled Access to T012K (House
HRP1254 DB Table for Infotype 1254
Bank and Account)
HRP1260 DB Table for Infotype 1260
HRPVAC List of vacant positions
Agosto 2010 Spanish /138
118
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) HRPXXXX DB Table for Infotype XXXX
PA0015 HR Master Record- Infotype 0015 (Additional
HRPYYYY DB Table for Infotype YYYY
Payments)
PA2001 HR Time Record- Infotype 2001 (Absences)
PA0016 HR Master Record- Infotype 0016 (Contract
PA2001_UGR Generated Table for View PA2001_UGR
Elements)
PA2002 HR Time Record- Infotype 2002 (Attendances)
PA0017 HR master record- Infotype 0017 (Travel
PA2002_UGR Generated Table for View PA2002_UGR
Privileges)
PA2003 HR Time Record- Infotype 2003 (Substitutions)
PA0019 HR Master Record- Infotype 0019 (Monitoring of
PA2004 HR Time Record- Infotype 2004 (Availability)
Dates)
PA2005 HR Time Record- Infotype 2005 (Overtime)
PA0020 HR Master Record- Infotype 0020 (DUEVO)
PA2006 HR Time Record- Infotype 2006 (Absence
PA0021 HR Master Record- Infotype 0021 (Family)
Quotas)
PA0022 HR Master Record- Infotype 0022 (Education)
PA2006_UGR Generated Table for View PA2006_UGR
PA0023 HR Master Record- Infotype 0023
PA2007 HR Time Record- Infotype 2007 (Attendance
(Other/Previous Employers)
Quotas)
PA0024 HR Master Record- Infotype 0024
PA2007_UGR Generated Table for View PA2007_UGR
(Qualifications)
PA2010 HR Time Record- Infotype 2010 (Employee
PA0025 HR Master Record- Infotype 0025 (Appraisals)
Remuneration Info.)
PA0026 HR Master Record- Infotype 0026 (Company
PA2012 HR Time Record- Infotype 2012 (Time Transfer
Insurance)
Specifications)
PA0027 HR Master Record- Infotype 0027 (Cost
PA2013 HR Time Record- Infotype 2013 (Quota
Distribution)
Corrections)
PA0028 HR Master Record- Infotype 0028 (Int. Medical
PA2500 HR Master Record for Infotype 2500
Service)
PA2501 HR Master Record for Infotype 2501
PA0029 HR Master Record- Infotype 0029 (Workers'
PA2502 HR Master Record for Infotype 2502
Compensation)
PA0000 HR Master Record- Infotype 0000 (Actions)
PA0030 HR Master Record- Infotype 0030 (Powers of
PA0001 HR Master Record- Infotype 0001 (Org.
Attorney)
Assignment)
PA0031 HR Master Record- Infotype 0031 (Reference
PA0002 HR Master Record- Infotype 0002 (Personal
Pers.Nos.)
Data)
PA0032 HR Master Record- Infotype 0032 (Internal
PA0003 HR Master Record- Infotype 0003 (Payroll Status)
Data)
PA0004 HR Master Record- Infotype 0004 (Challenge)
PA0033 International Infotype 0033- Statistics
PA0005 HR Master Record- Infotype 0005 (Leave
Exceptions
Entitlement)
PA0034 HR Master Record- Infotype 0034 (Corporate
PA0006 HR Master Record- Infotype 0006 (Addresses)
Functions)
PA0007 HR Master Record- Infotype 0007 (Planned
PA0035 HR Master Record- Infotype 0035 (Comp.Instr.)
Working Time)
PA0036 HR Master Record- Infotype 0036 (Social
PA0008 HR Master Record- Infotype 0008 (Basic Pay)
Insurance CH)
PA0009 HR Master Record- Infotype 0009 (Bank Details)
PA0037 HR Master Record- Infotype 0037 (Insurance)
PA0010 HR Master Record- Infotype 0010 (Capital
PA0038 HR Master Record- Infotype 0038 (Fiscal Data
Formation)
CH)
PA0011 HR Master Record- Infotype 0011 (Ext.Bank
PA0039 HR Master Record- Infotype 0039 (Add. Org.
Transfers)
Assignment CH)
PA0012 HR Master Record- Infotype 0012 (Fiscal Data -
PA0040 HR Master Record- Infotype 0040 (Objects on
Germany)
Loan)
PA0013 Infotype Social Insurance - Germany
PA0041 HR Master Record- Infotype 0041 (Date
PA0014 HR Master Record- Infotype 0014 (Recur.
Specifications)
Payments/Deds.)
Agosto 2010 Spanish /138
119
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) PA0042 HR Master Record- Infotype 0042 (Fiscal Data -
PA0067 HR master data infotype 0067 - Canadian
Austria)
garnishment- debt
PA0043 HR Master Record- Infotype 0043 (Family
PA0068 HR master data infotype 0068 - Canadian
Allowance - A)
garnishment- adjust
PA0044 HR Master Record- Infotype 0044 (Social
PA0069 HR Master Record- Infotype 0069 (Nat.
Insurance - A)
Insurance - GB)
PA0045 HR Master Record- Infotype 0045 (Company
PA0070 HR Master Record- Infotype 0070 (Court Orders
Loans)
- GB)
PA0046 HR Master Record- Infotype 0046 (Company
PA0071 HR Master Record- Infotype 0071 (Pension
Pension Fund CH)
Funds - GB)
PA0048 HR Master Record- Infotype 0048 (Residence
PA0072 HR Master Record- Infotype 0072 (Fiscal Data -
Status - CH)
DK)
PA0049 HR Master Record- Infotype 0049 (Red.Hrs./Bad
PA0073 HR Master Record- Infotype 0073 (Private
Weather)
Pensions - DK)
PA0050 HR Master Record- Infotype 0050 (Time
PA0074 HR Master Record- Infotype 0074 (Leave
Recording)
Processing - DK)
PA0051 HR Master Record- Infotype 0051 (ASB/SPI
PA0075 HR Master Record- Infotype 0075 (ATP Pension
Data)
- DK)
PA0052 HR Master Record- Infotype 0052 (Wage
PA0076 HR Master Record- Infotype 0076 (Workers
Maintenance)
Compensation NA)
PA0053 HR Master Record- Infotype 0053 (Company
PA0077 HR Master Record- Infotype 0077 (Additional
Pension)
Personal Data)
PA0054 HR Master Record- Infotype 0054 (Works Council
PA0078 HR Master Record- Infotype 0078 (Loan
Pay)
Payments)
PA0055 HR Master Record- Infotype 0055 (Previous
PA0079 Infotype SI Additional Insurance - D
Employer - A)
PA0080 HR Master Record- Infotype 0080 (Maternity
PA0056 HR Master Record- Infotype 0056 (Sick
Protection)
Certificates-A)
PA0081 HR Master Record- Infotype 0081 (Military
PA0057 HR Master Record- Infotype 0057 (Membership
Service)
Fees)
PA0082 HR Master Record- Infotype 0082 (Additional
PA0058 HR Master Record- Infotype 0058 (Commuter
Absence Data)
Rate - Austria)
PA0083 HR Master Record- Infotype 0083 (Leave
PA0059 HR Master Record- Infotype 0059 (Social
Compensation)
Insurances - NL)
PA0084 HR Master Record- Infotype 0084 (Sickness Pay
PA0060 HR Master Record- Infotype 0060 (Fiscal Data -
Control - GB)
NL)
PA0085 HR Master Record- Infotype 0085 (Work
PA0061 HR Master Record- Infotype 0061 (Social
Incapacity Periods GB)
Insurance - ES)
PA0086 HR Master Record- Infotype 0086 (SSP/SMP
PA0062 HR master record- Infotype 0062 Fiscal data (ES)
Exclusions GB)
PA0063 HR Master Record- Infotype 0063 (Social Fund -
PA0087 HR Master Record- Infotype 0087 (WFTC/DPTC
NL)
GB)
PA0064 HR Master Record- Infotype 0064 (Social
PA0088 HR Master Record- Infotype 0088 (SMP Record
Insurance - F)
- GB)
PA0065 HR Master Record- Infotype 0065 (Tax - GB)
PA0090 HR Master Record- Infotype 0090 (Additional
PA0066 HR Master data infotype 0066 - Canadian
Income)
garnishment- order
PA0092 HR master record- Infotype 0092 Seniority (ES)
Agosto 2010 Spanish /138
120
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) PA0093 HR Master Record- Infotype 0093 (Previous
PA0121 HR Master Record- Infotype 0121 (RefPerNo
Employers - D)
Priority)
PA0094 HR Master Record- Infotype 0094 (Residence
PA0122 HR Master Record- Infotype 0122 (Child
Status - NA)
Allowance Bonus D)
PA0095 HR Master Record- Infotype 0095 (Tax Canada)
PA0125 HR Master Record- Infotype 0125 (Garnishment
PA0096 HR Master Record- Infotype 0096 (Tax - USA)
B)
PA0098 HR Master Record- Infotype 0098 (Profit Sharing
PA0126 Infotype- Supplementary Pension Germany
- F)
PA0127 HR Master Record- Infotype 0127 (Commuter
PA0100 HR Master Record- Infotype 0100 (SI B)
Traffic NL)
PA0101 HR Master Record- Infotype 0101 (Tax B)
PA0128 HR Master Record- Infotype 0128 (Notifications)
PA0102 HR Master Record- Infotype 0102 (Grievances
PA0129 HR Master Record- Infotype 0129 (Text Number
NA)
Assign.)
PA0103 HR Master Record- Infotype 0103 (Bond
PA0130 HR Master Record- Infotpye 0130 (Checking
Purchases NA)
Procedures)
PA0104 HR Master Record- Infotype 0104 (Bond
PA0131 HR Master Record- Infotype 0131
Denominations NA)
(Garnishment/Cession A)
PA0105 HR Master Record- Infotype 0105
PA0132 HR Master Record- Infotype 0132 (Garnishment
(Communications)
Claim A)
PA0106 HR Master Record- Infotype 0106 (Related
PA0133 HR Master Record- Infotype 0133 (Garn.
Persons NA)
Interest A)
PA0107 HR Master Record- Infotype 0107 (Work
PA0134 HR Master Record- Infotype 0134 (Garnishment
Schedule B)
Amount A)
PA0108 HR Master Record- Infotype 0108 (Personal Data
PA0135 HR Master Record- Infotype 0135 (Spec. Garn.
B)
Cond. A)
PA0109 HR Master Record- Infotype 0109 (Contract
PA0136 HR Master Record- Infotype 0136 (Garn.
Elements B)
Transfer A)
PA0110 HR Master Record- Infotype 0110 (Pensions NL)
PA0137 HR Master Record- Infotype 0137 (Garn.
PA0111 HR Master Record- Infotype 0111
Compensation A)
(Garnishment/Cession - D)
PA0138 HR Master Record- Infotype 0138
PA0112 HR Master Record- Infotype 0112 (Garnishment
(Family/Ref.Pers B)
Claim - D)
PA0139 HR Master Record- Infotype 0139 (Employees
PA0113 HR Master Record- Infotype 0113 (Garnish.
Appl.No)
Interest - D)
PA0140 HR Master Record- Infotype 0140 (SI Basic
PA0114 HR Master Record- Infotype 0114 (Garnishment
Data JP)
Amount D)
PA0141 HR Master Record- Infotype 0141 (SI Premium
PA0115 HR Master Record- Infotype 0115 (Garnishment
Data JP)
Wages D )
PA0142 HR Master Record- Infotype 0142 (Residence
PA0116 HR Master Record- Infotype 0116 (Garn. Transfer
Tax JP)
D)
PA0143 HR Master Record- Infotype 0143 (Life
PA0117 HR Master Record- Infotype 0117 (Garn.
Insurance JP)
Compensation D)
PA0144 HR Master Record- Infotype 0144 (Property
PA0118 HR Master Record- Infotype 0118 (Child
Accum. JP)
Allowance D)
PA0145 HR Master Record- Infotype 0145 (Personnel
PA0119 HR Master Record- Infotype 0119 (Annual
Tax Status JP)
Income CA D)
PA0146 HR Master Record- Infotype 0146 (Y.E.A. Data
PA0120 HR Master Record- Infotype 0120 (Pension Fund
JP)
Trans. CH)
PA0147 HR Master Record- Infotype 0147
Agosto 2010 Spanish /138
121
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) PA0148 HR Master Record- Infotype 0148 (Family JP)
PA0186 HR Master Record- Infotype 0186 [Social
PA0149 HR Master Record Infotype 0149 (Tax Data
Insurance] (SG)
South Africa)
PA0187 Additional family data
PA0150 HR Master Record Infotype 0150 (Social
PA0188 Tax (Australia)
Insurance SA)
PA0189 HR Master Record- Infotype 0189 (Construction
PA0151 HR Master Record Infotype 0151 (Ext.Insurance
Pay- Funds)
South Africa)
PA0190 HR Master Data Record Infotype 0190
PA0154 HR master record, infotype 0154 (social security
(BuildingTradePrevERDat)
data)
PA0191 HR Master Record Infotype 0191
PA0155 HR master record, infotype 0155
(BuildingTradeReimbursExpens)
(Suppl.admin.data)
PA0192 Personnel Master Record Infotype 0192
PA0156 HR master data, infotype 0156 (Tax deduction)
(BuildingTrade Attrib)
PA0157 HR master record, infotype 0157 (User
PA0194 HR Master Record Infotype 0194 (Garnishment
admin.data)
Document)
PA0158 HR mater record, infotype 0158 (Amounts paid by
PA0195 HR Master Record Infotype 0195 (Garnishment
3rd party)
Order)
PA0159 HR master record, infotype 0159 (Seniority)
PA0196 HR Master Record-Infotype 0196 (Employee
PA0160 HR master record, infotype 0160 (Family
Provident Fund MY)
allowance)
PA0197 HR Master Record-Infotype 0197 (SOCSO
PA0161 HR Master Record- Infotype 0161 (Limits IRS)
Contributions MY)
PA0162 HR Master Record- Infotype 0162 (Ins. Y.E.T.A
PA0198 Sheduled Tax Deductuion Malaysia
Data JP)
PA0199 Tax deduction CP38 / Additional amt / Bonus -
PA0165 HR Master Record- Infotype 0165 (Limits
Malaysia
Deductions)
PA0200 HR Master Record, Infotype 0200
PA0167 HR Master Record- Infotype 0167 (Health Plans)
(Garnishments DK)
PA0168 HR Master Record- Infotype 0168 (Insurance
PA0201 Personnel master record infotype 0201 (basic
Plans)
pension amnts)
PA0169 HR Master Record- Infotype 0169 (Savings Plan)
PA0202 HR master data infotype 0202 (Entitlements)
PA0170 HR Master Record- Infotype 0170 (Flexible
PA0203 HR master record infotype 0203
Spending Accounts)
(Pension/Reserve Status)
PA0171 HR Master Record- Infotype 0171 (Gen. Benefits
PA0204 HR Master Record, Infotype 0204 (DA/DS
Information)
Statistics DK)
PA0172 HR Master Record- Infotype 0172 (FSA Claims)
PA0205 HR Master Record- Infotype 0205
PA0173 Tax card information
PA0206 HR Master Record- Infotype 0206, SI Finland
PA0177 HR Master Record- Infotype 0177 (Reg. Country
PA0207 HR Master Record- Infotype 0207 (Residence
of Birth NL)
Tax Area)
PA0179 HR Master Record- Infotype 0179 (Tax SG)
PA0208 HR Master Record- Infotype 0208 (Work Tax
PA0180 Alternative Address Data (Thailand)
Area - USA)
PA0181 HR Master Record- Infotype 0181 [Add. Funds]
PA0209 HR Master Record- Infotype 0209
(SG)
(Unemployment Insurance USA)
PA0182 HR Master Record- Infotype 0182 [Alternative
PA0210 HR Master Record- Infotype 0210 (W4 USA)
Names] (SG)
PA0211 HR Master Record- Infotype 0211 (COBRA
PA0183 HR Master Record- Infotype 0183 [Awards] (SG)
Beneficiaries)
PA0184 HR Master Record- Infotype 0184 [Resume text]
PA0212 HR Master Record- Infotpye 0212 (COBRA
(SG)
Health Plan)
PA0185 HR Master Record- Infotype 0185 [Identification]
PA0213 Additional family information - Malaysia
(SG)
PA0214 HR Master Record Infotype 0214
Agosto 2010 Spanish /138
122
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) PA0215 Building Trade Transaction Data
PA0269 HR Master Record- Infotype 0269 (ADP
PA0216 Garnishment Adjustment
Information USA)
PA0217 HR Master Record Infotype 0217 (INSEE code)
PA0270 HR Master Data Record- Infotype 0270 (COBRA
PA0218 HR Master Record- Infotype 0218 (Pensioner
Payments)
Fund No. - F)
PA0271 HR master data infotype 0271 (Public Sector
PA0219 HR Master Record- Infotype 0219 (External
statistics)
Organizations)
PA0272 HR Master Record Infotype 0272 (Garnishment
PA0220 Superannuation (Australia)
FR)
PA0221 HR Master Record- Infotype 0221 (Manual
PA0273 HR Master Record- Infotype 0273 (Tax - SE)
Checks)
PA0274 HR Master Record- Infotype 0274 (Insurance -
PA0222 HR Master Record for Infotype 0222 (Company
SE)
Cars GB)
PA0275 HR Master Record- Infotype 0275 (Garnishment
PA0224 Tax information - infotype 0224 - Canada
- SE)
PA0225 HR Master Record for Infotype 0225 (Company
PA0276 HR Master Record- Infotype 0276 (OPIS - SE)
Cars GB 2)
PA0277 HR Master Record- Infotype 0277 (Exceptions -
PA0227 Tax file number (Australia)
SE)
PA0228 HR Master Record- Infotype 0228
PA0278 HR Master Record- Infotype 0278 (Basic Data
PA0230 HR Master Record- Infotype 0230 / View 0008
PF [CH])
(PSG)
PA0279 HR Master Record- Infotype 0279 (Individual
PA0231 HR Master Record- Infotype 0231 / View 0001
Values PF [CH])
(PSG)
PA0280 HR Master Record Infotype 0280/View for 0016
PA0232 Personal-master record infotype 0232 (Child
PA0281 HR Master Record Infotype 0281/View for 0045
Allowance) (D)
PA0283 HR Master Record for Infotype 0283 (Archiving)
PA0233 HR Master Record Infotype 0233 ('Bilan Social'
PA0288 HR CH- HR Master Record Infotype 0021
FR)
(Suppl. Switzerland)
PA0234 HR Master Record Infotype 0234 (Add. Withh.
PA0302 HR Master Record- Infotype 0302 (Additional
Inform. - USA)
Actions)
PA0235 HR Master Record- Infotype 0235 (Other Taxes -
PA0303 HR Master Record- Infotype 303 (reductn
USA)
tax/soc.ins.contrNL)
PA0236 HR Master Record- Infotype 0236 (Credit Plans)
PA0304 Basic pay - additional information
PA0237 HR Master Record- Infotype 0237 / View for 0052
PA0305 HR master record, infotype 0305 (previous
(PSG)
employer)
PA0241 Indonesian Tax Data
PA0306 HR master record, infotype 0306 (Family data)
PA0242 JAMSOSTEK Details, Indonesia
PA0309 IRD Number Infotype NZ
PA0261 Leave Accrual Australia
PA0310 Superannuation NZ
PA0263 HR Master Record for Infotype 0263
PA0311 Leave Adjustments - NZ
PA0264 HR Master Record- Infotype 0264/view for
PA0312 Leave History Adjustments NZ
Infotype 0021
PA0313 Employee Taxation Detail Infotype NZ
PA0265 HR Master Record- Infotype 0265 / Special
PA0314 I0314- Days for Vacation Bonus and Sal.
Regulations (PSG)
Deducs (DK/N)
PA0266 HR Master Record- Infotype 0266 / View 0027
PA0315 CATS- Sender Information
(PSG)
PA0317 HR Master Record- Infotype 0317 (special
PA0267 HR Master Record- Infotype 0267 (One time
arrangements)
Payment off-cycle)
PA0318 HR Master Record- Infotype Family data for
PA0268 HR Master Record Infortype view 0045 and 0268
Indonesia (0318)
(Loan JPN)
PA0319 Indonesia Private Insurances PA0320 Official housing
Agosto 2010 Spanish /138
123
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) PA0321 Employee accommodations
PA0361 HR Master Record - Infotype 0361 (Pensions
PA0322 HR Master Data Record Infotype 0322 (Pensions
Admin. - IE)
and Rel. Ben.)
PA0362 HR Master Record- Infotype Membership for
PA0323 HR Master Record Infotype 0323 (Pension Plan)
Indonesia (0362)
PA0326 HR Master Record IT 0326 (Imputation to
PA0363 Previous employment period
Pension Payments)
PA0364 Infotype Tax TH
PA0329 HR master record infotype 0329 ( Sideline Job)
PA0365 Social Security TH
PA0330 Infotype 0330 (Non-monetary remuneration)
PA0366 Provident Fund THAILAND
PA0331 HR Master Record- Infotype 0331 (Tax - PT)
PA0367 HR Master Record- Infotype 0367 (SI
PA0332 HR Master Record- Infotype 0332 (Social
Notification Suppl. A)
Security - PT)
PA0368 Rehabilitants
PA0333 HR Master Record- Infotype 0333 (Disability - P)
PA0369 Master data- Infotype 0369 (IMSS data)
PA0334 HR Master Record- Infotype 0334
PA0370 Master data- Infotype 0370 (INFONAVIT credit
PA0335 HR Master Data- Infotype 0335 (view of infotype
data)
21 - PT)
PA0371 Master Data- Infotype 0371 (Tax on previous
PA0336 HR Master Data- Infotype 0336 (view of infotype
employment)
2 - PT)
PA0372 Master data- Infotype 0372 (Integrated daily
PA0337 HR Master Record- Infotype 0337 (Prof.
wage)
Classifications - PT)
PA0373 HR loan repayment plan JP (for P0268)
PA0338 HR Master record- Infotype 0338 (Absence pay.
PA0374 Infortype 0374- General Eligibility
clearing - PT)
PA0375 HR Master Data Record- Infotype 0375 (Add.
PA0341 HR - master record infotype 341 (DUEVO start)
Benefits Inform.)
PA0342 HR Master Record- Infotype 0342 (HK Extension
PA0376 HR Master Data Record- Infotype 0376 (Medical
to I0002)
Benefits Info)
PA0344 HR Master Record- Infotype 0344 (Familiy
PA0377 HR Master Record- Infotype 0377
members HK)
(Miscellaneous Plans)
PA0345 HR Master Record- Infotype 0345 (Hong Kong
PA0378 HR Master Data Record- Infotype 0378 (Benefit
Tax)
Adj. Reason)
PA0346 HR Master Record- Infotype 0346 (Contribution
PA0379 HR Master Record- Infotype 0379 (Stock
plan)
Purchase Plans)
PA0347 HR Master Record- Infotype 0347 (Entitlement
PA0380 HR Master Data Record Infotype 0380 (Comp.
plan)
Adjustment)
PA0348 HR Master Record- Infotype 0348 (HK Appraisal
PA0381 HR Master Record Infotype 0381 (Comp. Plan
and bonus)
Eligibility)
PA0349 HR Master Record- Infotype 0349 (Eligibility
PA0382 HR Master Data Record Infotype 0382 (Stock)
grouping)
PA0383 HR Master Data Record Infotype 0383
PA0351 HR Master Record- Infotype 0351 (Country
(Compensation Package)
Information)
PA0384 HR Master Data Record Infotype 0384
PA0352 NHI for Family member (TW)
PA0386 HR Master Record- Infotype 0386 (VHI Scheme)
PA0353 Income Tax Taiwan
PA0387 HR Master Record - Infotype 0387 (Starter's
PA0354 Labor Insurance Taiwan
Details)
PA0355 National Health Insurance Taiwan
PA0388 HR Master Record- Infotype 0388 (Union JP)
PA0356 Employment Stabilization Fund (TW)
PA0389 Income Tax- General indicators
PA0357 Saving Plan (TW)
PA0390 Income Tax- Deductions
PA0358 Employee Welfare Fund (TW)
PA0391 Income Tax- Information on other employers
PA0359 HR Master Record - Infotype 0359 (PRSI Ireland)
PA0392 Social Security- General data
PA0360 HR Master Record - Infotype 0360 (PRSI Ireland)
PA0393 Family data- Calendar year schooling assistance
Agosto 2010 Spanish /138
124
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) PA0394 Family data- Additional information
PA0438 HR Master Record- Infotype 0438
PA0395 HR Master Record- Infotype 0395 (External
PA0439 HR Master Record for Infotype 0439 (Data
Org.Assignment)
Transfer)
PA0396 HR Master Record- Infotype 0396 (Expatriate
PA0440 HR Master Record- Infotype 0440 (Receipts)
Attributes)
PA0442 HR Master Record- Infotype 0442
PA0397 Infotype 0021 Family
PA0447 US Federal Tax MTD
PA0398 Infotype 0016 - Corporation and contract
PA0448 US Federal Tax QTD
agreements
PA0449 HR Master Record- Infotype 0449
PA0399 HRMS-VE- Table for Income Tax Infotype
PA0450 HR Master Record- Infotype 0450
(IT0399)
PA0451 HR Master Record- Infotype 0451
PA0400 HRMS-VE- Table for SSO Infotype (IT0400)
PA0452 HR Master Record- Infotype 0452
PA0401 HRMS-VE- Table for Benefits Infotype (IT401)
PA0453 HR Master Record- Infotype 0453
PA0402 HR Master Data Infotype 0402
PA0454 HR Master Record- Infotype 0454
PA0403 HR Master Record for Infotype 0403
PA0455 HR Master Record- Infotype 0455
PA0404 HR Master Record- Infotype 0404 (Military
PA0456 HR Master Record- Infotype 0456
Service Taiwan)
PA0457 HR Master Record- Infotype 0457
PA0405 HR Master Record- Infotype 0405 (Absence
PA0458 HR Master Record for Infotype 0458
Event)
PA0459 HR Master Record for Infotype 0459
PA0406 HR-PSG- Infotype 0406 (Pension information)
PA0460 HR Master Record for Infotype 0460
PA0407 HR master record, infotype 0407 (Abs.addit.inf.)
PA0467 Personnel master data Infotype 0467 (SI
PA0408 HR Master Record- Infotype 0408 (CBS NL)
addit.notif. pl.c.A)
PA0409 HR Master Record- Infotype 0409 (External
PA0468 HR master record for infotype 0468
Agencies NL)
PA0469 HR master record for infotype 0469
PA0410 Infotype 0410 - Transportation ticket
PA0470 HR master record infotype 0470 (travel profiles)
PA0411 Taxation Philippines - infotype
PA0471 HR master record infotype 0471 (flight
PA0412 HR Master Record- Infotype 0412 [View to I0021]
preferences)
(SG)
PA0472 HR master record infotype 0472 (hotel
PA0415 HR Master Record- Infotype 0415
preferences)
PA0416 Time Quota Compensation Infotype- Database
PA0473 HR master record infotype 0473 (rental car
Table
preferences)
PA0419 HR Master record- Manual tax reporting
PA0474 HR master record infotype 0474 (train
information - Norway
preferences)
PA0421 HR master record, infotype 0421 (spec.remuner.)
PA0475 HR master record infotype 0475 (customer
PA0422 SSS Philippines infotype
programs)
PA0423 HR Master Record- Infotype 0423
PA0476 Personnel Master Record for Infotype 0476
PA0424 Industrial Accident / Maternity / Sickness
(Garnishments)
Statement (FR)
PA0477 Personnel Master Record Infotype 0477- Debt
PA0425 Data Entry of Per Diem Sick Pay Summary
(Garnishments)
PA0426 Garnishment
PA0478 Personnel Master Record Infotype 0478-
PA0427 Debts by garnishment
Adjustment (Garnish)
PA0428 Beneficiary data (Additional information)
PA0480 HR master record for infotype 0480
PA0433 HR Master Record Infotype 0433/View for 0009
PA0482 HRMS-VE- Additional Data from Family/N. of
PA0434 HR Master Record Infotype 0434/View for 0011
Kin Inftp(IT0021)
(GB Version)
PA0483 Infotype 0483 - Data entry by CAAF - Italy only
PA0435 HR Master Record for Infotype 0435
PA0486 HR-SG-PS- Master Data (National Service)
PA0436 HR Master Record for Infotype 0436
PA0487 HR-SG-PS- Security / medical Clearance
PA0437 Multiple employment (BR)
PA0488 HR-SG-PS- Leave scheme
Agosto 2010 Spanish /138
125
SAP Best Practices Manual de Programación ABAP Módulo de Recursos Humanos (HR) PA0489 HR-SG-PS- Voluntary Service / ECA
PA0595 HR Master Data Record for Infotype 0595
PA0490 HR-PS-SG- Employee Suggestion Scheme
PA0596 PhilHealth Philippines Infotype
PA0491 HR Master Record- Infotype 491
PA0602 HR Master Record- Infotype 0602 (Retirement
PA0493 HR-SG-PS- Extension of infotype 0022
Plan Cumulation)
PA0494 HR-PS-SG- Employee Suggestion Scheme -
PA0611 HR Master Record- Infotype 0611
Evaluation Results
PA0612 HR Master Record- Infotype 0612
PA0495 HR-PS-SG- Pensions Scheme
PA0625 Infotype 0002 - Race/complexion
PA0502 Letter of appointment
PA0628 HR Master Record for Infotype 0628
PA0503 Pensioner's Definition
PA0629 HR Master Record for Infotype 0629
PA0504 Pensioner's Advantage B
PA0630 HR Master Record for Infotype 0630
PA0505 HR Master Record- Infotype 0505
PA0631 HR Master Record for Infotype 0631
PA0506 Tip Indicators
PA0634 Philippines Previous Employer Information Info-
PA0510 HR Master Record- Infotype 0510 (Tax-sheltered
type
annuity)
PA0645 Contract termination- General data
PA0511 Infotype Cost-of-Living Allowance/Office (0511)
PA0900 HR Master Record- Infotype 0900 (Sales Data)
PA0512 Personnel Master Record Infotype 0512
PA0901 HR Master Record- Infotype 0901 (Purchasing
PA0521 HR Master Record- Infotype 0521
Data)
(Semiretirement D) PA0525 Child Care PA0526 HR Master Data Record Infotype 0526 PA0527 HR Master Data Record Infotype 0527 PA0546 HR-SG- Master Record- Infotype 0546 [Termination Data) PA0547 BIK Infotype for Malaysia PA0548 Infotype 0548 - Suppl.social security funds - Italy only PA0551 Termination of contract- General data PA0552 HR Master Data Record for Infotype 0552 PA0553 HR Master Data Record for Infotype 0553 PA0554 HR Master Record- Infotype 0554 PA0559 HR Master Record- Infotype 0559 (Commuting allowance Info.) PA0560 HR Master Record- Infotype 0560 PA0561 Data for tax PA0565 HR Master Record- Infotype 0565 (Retirement Plan Val. Res.) PA0566 HR Master Record- Infotype 0566 PA0569 HR Master Record- Infotype 0569 PA0570 HR Master Record- Infotype 0570 PA0571 HR Master Record- Infotype 0571 PA0572 HR Master Record- Infotype 0572 PA0578 HR Master Record- Infotype 0578 PA0579 HR Master Record Infotype 0579 (Ext. Salary Elements) PA0592 HR Master Data Record Infotype 0592 (Foreign Public Sector) PA0593 Rehabilitants
Agosto 2010 Spanish /138
126
SAP Best Practices
BEx Reporting (132): BPD
9.11 SAP HR ABAP PERFORMANCE 9.11.1 •
Ejemplo lectura tablas HRP1001 y HRP1000
En vez de utilizar select * from HRP1001, etc., usar funcion 'RH_READ_INFTY_1001' , ejemplo
CALL FUNCTION 'RH_READ_INFTY_1001' EXPORTING plvar = cc_plvar otype = 'O' objid = i_orgid istat = '1' subty = 'B002' begda = pn-begda endda = pn-endda TABLES i1001 = gtb_1001 EXCEPTIONS nothing_found = 1 wrong_condition = 2 wrong_parameters = 3 OTHERS = 4. LOOP AT gtb_1001 WHERE sclas = 'O'. ltb_org-sobid = gtb_1001-sobid. APPEND ltb_org. ENDLOOP. IF sy-subrc NE 0. ENDIF.
•
PARA HRP1000 usar 'RH_READ_INFTY_1000'
*---------------------------------------------------------------------* * FORM is_tech * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> I_POS * * --> I_ORG * * --> O_TECH * *---------------------------------------------------------------------* FORM is_tech USING i_pos i_org
Agosto 2010 Spanish
127 /138
SAP Best Practices
BEx Reporting (132): BPD
CHANGING o_tech. CLEAR o_tech. CALL FUNCTION 'RH_READ_INFTY_1001' EXPORTING plvar = cc_plvar otype = 'S' objid = i_pos istat = '1' subty = 'B007' begda = p0001-begda endda = p0001-endda TABLES i1001 = gtb_1001 EXCEPTIONS nothing_found = 1 wrong_condition = 2 wrong_parameters = 3 OTHERS = 4. LOOP AT gtb_1001 TRANSPORTING NO FIELDS WHERE sclas = '1S'. ENDLOOP. IF sy-subrc = 0. CALL FUNCTION 'RH_READ_INFTY_1000' EXPORTING plvar = cc_plvar otype = '1S' objid = gtb_1001-objid istat = '1' begda = gtb_1001-begda endda = gtb_1001-endda TABLES i1000 = gtb_1000 EXCEPTIONS nothing_found = 1 wrong_condition = 2 wrong_parameters = 3 OTHERS = 4. IF sy-subrc = 0. LOOP AT gtb_1000 WHERE langu = sy-langu. ENDLOOP. IF sy-subrc NE 0. LOOP AT gtb_1000. ENDLOOP. ENDIF. IF gtb_1000-short = 'PT US TECHNI'.
Agosto 2010 Spanish
128 /138
SAP Best Practices
BEx Reporting (132): BPD
o_tech = 'T'. ELSEIF gtb_1000-short = 'PT US NON-TE'. o_tech = 'N'. ELSE. o_tech = space. ENDIF. ENDIF. ENDIF. ENDFORM. "read_p1051
9.11.2 •
EJEMPLO HR_READ_INFOTYPE
si tenemos el siguiente reporte HR
INFOTYPES: 0001, 0008, 2001. START-OF-SELECTION. GET pernr. * basic pay data rp_provide_from_last p0008 space pn-begda pn-endda. CHECK p0008-trfar IN so_trfar . CHECK p0008-trfgb IN so_trfgb . CHECK p0008-trfgr IN so_trfgr . CHECK p0008-trfst IN so_trfst . LOOP AT p2001. PERFORM do_something. ENDLOOP. END-OF-SELECTION.
•
es mas optimo de la siguiente forma
INFOTYPES: 0001, 0008, 2001 MODE n. START-OF-SELECTION. GET pernr. * Basic Pay Data rp_provide_from_last p0008 space pn-begda pn-endda. CHECK p0008-trfar IN so_trfar .
Agosto 2010 Spanish
129 /138
SAP Best Practices
BEx Reporting (132): BPD
CHECK p0008-trfgb IN so_trfgb . CHECK p0008-trfgr IN so_trfgr . CHECK p0008-trfst IN so_trfst . PERFORM leer_2001. LOOP AT p2001. PERFORM do_something. ENDLOOP. END-OF-SELECTION. *---------------------------------------------------------------------* * FORM leer_2001 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM leer_2001. CLEAR p2001. REFRESH p2001. CALL FUNCTION 'HR_READ_INFOTYPE' EXPORTING * TCLAS = 'A' pernr = pernr-pernr infty = '2001' TABLES infty_tab = p2001 EXCEPTIONS infty_not_found =1 OTHERS =2 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM.
Agosto 2010 Spanish
130 /138
SAP Best Practices
BEx Reporting (132): BPD
9.12 SAP HR DRIVER SIMULACION 9.12.1
Simular existencia de Infotipos en driver nomina RPCALCX0
* Tables for intermediate memory mngmt. TYPES: BEGIN OF hroct_iprel, pernr LIKE p0001-pernr, infty LIKE p0001-infty, idata LIKE prelp OCCURS 0, END OF hroct_iprel. DATA: BEGIN OF mem_id_iprel, pernr LIKE p0001-pernr, value(5) VALUE 'IPREL', END OF mem_id_iprel.
"Memory ID for infotypes
DATA: obj_iprel TYPE REF TO cl_hrpay99_fill_infotypes. * objects for infotype simulation DATA: send_it TYPE REF TO cl_hrpay99_send_infotypes, iprel TYPE hrpay99_iprel_table. *............ *............ *............ IF p_flag = 'X'. * read & send infotype 0014 to memory for the process of simulation * of the payroll driver RPCALCX0 PERFORM fill_iperl_i0014. ELSE. "M19 CLEAR retro_date. "M19 ENDIF. IF NOT obj_iprel IS INITIAL. * create object for infotype simulation CREATE OBJECT send_it. * fill iprel from importing parameter iprel = obj_iprel->get_iprel( ). * fill send_it from table iprel CALL METHOD send_it->set_iprel( iprel ). * send infotype object to memory CALL METHOD send_it->send_all. ENDIF. *... *... *... SUBMIT rpcalcx0
Agosto 2010 Spanish
131 /138
SAP Best Practices
* *
* *
* *
*
*
* * *
BEx Reporting (132): BPD
USING SELECTION-SET variant_calc using selection-sets of program 'HARCALC0' using selection-sets of program 'RPCALCX0' USING SELECTION-SETS OF PROGRAM 'ZPPY_INT_RPCALCX0' WITH pnppernr eq fired_employees_line-pernr WITH pnpxabkr eq fired_employees_line-abkrs WITH pnpabkrs eq fired_employees_line-abkrs WITH pnptimr9 eq space WITH pnptimra eq 'X' WITH pnppabrp EQ fired_employees_line-pabrp "M29 WITH pnppabrj EQ fired_employees_line-pabrj "M29 WITH pnppabrp eq gd_pabrp "M29 WITH pnppabrj eq gd_pabrj "M29 WITH payty eq fired_employees_line-payty WITH bondt EQ fired_employees_line-bondt "M29 WITH ocrsn EQ fired_employees_line-ocrsn "M29 WITH bondt eq gd_bondt "M29 WITH ocrsn eq gd_ocrsn "M29 with test_on eq ' ' WITH tst_on eq 'X' WITH prt_prot eq 'X' WITH sw_spool eq space " Print to spool with edt_vari eq variant_cedt " Show payslip WITH edt_vari eq variant_cedt " Show payslip WITH ecalled eq 'X' WITH set_nib eq 'X' WITH set_odc eq 'X' WITH upd_ps eq space WITH exp_buff eq 'X' WITH imp_buff eq space with brk_on eq ' ' with brk_sc eq ' ' with brk_off eq 'X' WITH plgmemky eq memo_key WITH rueck-ab = retro_date "M19 EXPORTING LIST TO MEMORY AND RETURN.
*---------------------------------------------------------------------* * FORM fill_iperl_i0014 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM fill_iperl_i0014.
Agosto 2010 Spanish
132 /138
SAP Best Practices
BEx Reporting (132): BPD
DATA: BEGIN OF help_i0014 OCCURS 5. INCLUDE STRUCTURE p0014. DATA: END OF help_i0014. * fill iprel with all infotypes CLEAR iprel. * refresh iprel. IF p9902-zzbasetri > 0. **************************************** * RP-READ-INFOTYPE * **************************************** * PARAMETERS: * * PERNR REQUESTED PERSONALNUMBER* * INFTY REQUESTED INFOTYPNUMBER * * INFTY-TABLE OUTPUT-TABLE LIKE PNNNN* * BEGDA REQUESTED INTERVAL-BEGIN* * ENDDA REQUESTED INTERVAL-END * **************************************** * read all the 0014 records for put in memory PERFORM read-infotype(sapdbpnp) TABLES help_i0014 USING p9902-pernr '0014' '18000101' '99991231'. * distribution of the p9902-zzbasetri ammount in IT0014 records PERFORM create_i0014 TABLES help_i0014 USING p9902 p9902-zzbasetri p9902-waers. * Put the IT0014 records in internal object for send it * to memory CALL METHOD obj_iprel->insert( help_i0014[] ). ENDIF. ENDFORM. "fill_iperl_i0014 • ojo en driver rpcalcx0 los infotipos simulados se procesan en include rpchrt09 get pernr. IF ecalled = 'X'. "XAIAHRK001447 * read infotypes from memory (for infotype simulation) PERFORM get_iprel USING pernr-pernr. "XAIAHRK001447
Agosto 2010 Spanish
133 /138
SAP Best Practices
BEx Reporting (132): BPD
9.13 HR NOTAS 9.13.1
DUMP CX_HRPA_INVALID_PARAMETER
Si se topan con este dump(>= 4.7), aca va nota ad-hoc Solution consists in calling the subroutine DO_NOTHING in order to initialize the old master data framework. To apply this note manually, follow the instructions listed in the next section.
Ejemplo, *--- load-of-program -------------------------------------------------* * The load-of-program event is useful for the time of transition * from the old to the new master data frame work. LOAD-OF-PROGRAM. * to initialise the old master data framework PERFORM do_nothing(sapfp50p). " INITIALIZATION. * select only active employees rp-sel-ein-aus-init.
Weird!!!, pero me paso un par de veces. Obtenido de "http://globalsap.cl/globalwiki/index.php/CX_HRPA_INVALID_PARAMETER_DUMP"
Agosto 2010 Spanish
134 /138
SAP Best Practices
BEx Reporting (132): BPD
9.14 SAP HR FAQ 9.14.1
Cómo leer el molga de un empleado
CALL FUNCTION 'HR_COUNTRYGROUPING_GET' EXPORTING pernr = gd_pernr begda = datum endda = datum IMPORTING molga = gd_molga EXCEPTIONS not_found = 1 OTHERS = 2.
9.14.2
Detalle compañia ( campo bukrs )
CALL FUNCTION 'FI_COMPANYCODE_GETDETAIL' EXPORTING bukrs_int = pnpbukrs-low authority_check = space IMPORTING t001_int = comp_det TABLES t001z_int = appendix EXCEPTIONS bukrs_not_found =1 no_authority_display_bukrs = 2 OTHERS = 3.
9.14.3
Nombres de mes ( util en formularios )
CALL FUNCTION 'MONTH_NAMES_GET' * EXPORTING * LANGUAGE = SY-LANGU * IMPORTING * RETURN_CODE = TABLES month_names = names EXCEPTIONS month_names_not_found =1 OTHERS = 2.
Agosto 2010 Spanish
135 /138
SAP Best Practices
9.14.4
BEx Reporting (132): BPD
Sumar / restar meses a fecha
CALL FUNCTION 'HR_BR_ADD_MONTH_TO_DATE' EXPORTING dmm_datin = first_day dmm_count = '1' dmm_oper = '-' dmm_pos = ' ' IMPORTING dmm_daout = aux_date.
9.14.5
Último dia del mes
CALL FUNCTION 'LAST_DAY_OF_MONTHS' EXPORTING day_in = pnpbegda IMPORTING last_day_of_month = pnpendda EXCEPTIONS day_in_no_date = 1 OTHERS = 2.
9.14.6
Leer horario de trabajo de empleado
wa_pernr-pernr = p_pernr. APPEND wa_pernr TO tb_pernr. CALL FUNCTION 'HR_PERSON_READ_WORK_SCHEDULE' EXPORTING begin_date = p_begda end_date = p_endda * GROUPING_DWS = * GROUPING_ATTENDENCE = * GROUPING_SUBSTITUTE = * READ_FROM_DATABASE ='' TABLES pernr_tab = tb_pernr psp = tb_psp day_psp = tb_day_psp EXCEPTIONS error_in_build_psp =1 OTHERS =2 .
Agosto 2010 Spanish
136 /138
SAP Best Practices
9.14.7
BEx Reporting (132): BPD
Leer caracteristica ( feature ) hr , transaccion pe03
DATA pben0 LIKE zben0. DATA l_back(5). * fill feature structure CLEAR pben0. pben0-barea = p_barea. pben0-bplan = p_bplan. pben0-depcv = 'DEP0'. "Dummy CLEAR p_val. * get value of from feature (PE03 transaction) CALL FUNCTION 'HR_FEATURE_BACKFIELD' EXPORTING feature = 'ZBEN0' struc_content = pben0 IMPORTING back = l_back EXCEPTIONS dummy =1 error_operation =2 no_backvalue =3 feature_not_generated =4 invalid_sign_in_funid =5 field_in_report_tab_in_pe03 = 6 OTHERS = 7. IF sy-subrc NE 0. p_val = space. ELSE. IF l_back <> space. p_val = 'X'. ELSE. p_val = space. ENDIF. ENDIF.
9.14.8
Verificar nif ( rut )
CALL FUNCTION 'TAX_NUMBER_CHECK' EXPORTING country = p_land1 tax_code_1 = p_stcd1.
9.14.9
Leer clase de fecha de infotipo p0041
Agosto 2010 Spanish
137 /138
SAP Best Practices
BEx Reporting (132): BPD
FORM get_fecha USING p0041 LIKE p0041 p_dar LIKE p0041-dar01 CHANGING p_fecha. DATA ld_dat LIKE p0041-dat01. DATA ld_dar LIKE p0041-dar01. CLEAR p_fecha. DO 12 TIMES VARYING ld_dat FROM p0041-dat01 NEXT p0041-dat02 VARYING ld_dar FROM p0041-dar01 NEXT p0041-dar02. IF ld_dar = p_dar. p_fecha = ld_dat. ENDIF. ENDDO. ENDFORM.
Agosto 2010 Spanish
138 /138