10 conocimientos de ABAP que todo Funcional SAP debería tener

Si algo no funciona, aprenda ABAP
Hace unos 4 años, Balaji Parsewar explicó estos 10 conocimientos que todo funcional SAP debería tener de acuerdo a su experiencia en su blog oficial en la comunidad de SAP SCN que he recopilado en Español y he comentado. Si quieren leer el artículo original, pueden hacerlo en el siguiente link:

El mercado de la consultoría ha evolucionado de tal manera que los perfiles que se están solicitando hoy día son perfiles autónomos e independientes, con la capacidad de analizar, diseñar, construir, depurar y realizar una entrega de calidad al cliente. Atrás quedó la separación de responsabilidades, porque hoy día, lo que se valora es que el consultor se maneje funcio-técnicamente con igual competencia y eficacia.

Me gustaría añadir a esta información en orden de importancia porque a mi entender un consultor funcional debe saber sobre todo analizar y diseñar funcionalmente los procesos antes que saber crear una transacción Z o conocer los smartforms o interfaces & EDI. 





Un buen consultor funcional sobre todo debe saber recopilar los requerimientos de usuario, trabajar sobre ellos y componer un análisis y diseño funcional que de solución al cliente. 


A continuación una recopilación de los conocimientos y herramientas que todo consultor funcional debe saber hacer:



Especificaciones funcionales.


   Siembre habrá cosas que el cliente exigirá o procesos que el cliente tiene que no podrán ser rediseñados, ni sufrir una re-ingeniería de procesos, en los cuales habrá que "tocar" o desarrollar las funcionalidades de SAP para adaptar el estándar a las necesidades de dicho cliente. 

      En estos casos, los consultores funcionales necesitarán el conocimiento necesario para recopilar y preparar los requerimientos del cliente así como realiar el análisis y diseño funcional donde plasmar la necesidad. Lo que SAP hace por estándar y lo que hará después a través de un desarrollo ABAP que amplíe el estándar para lograr satisfacer las necesidades de la empresa.
            
      Si bien la tarea de la "especificación funcional" debe ser realizada íntegramente por el  "consultor funcional" y no es tarea de un programador (o consultor) ABAP, debería proveer las tablas necesarias, el nombre de los campos, la lógica del desarrollo, las condiciones, y loops (por ejemplo) para el desarrollo del Zeta.

     Si bien parece una tarea simple, las especificaciones funcionales requieren de un montón de conocimientos. Extraer las especificaciones funcionales es todo un arte y consiste en saber hacer las preguntas correctas en el momento adecuado (esto es clave) para componer y construir el detalle de la funcionalidad y transmitirlo correctamente al desarrollador.
Requiere de un conocimiento profundo de la herramienta en sí, de lo que proporciona el estándar y de un conocimiento exhaustivo de la casuística del cliente. Así como de una metodología de trabajo que nos permite recopilar la información necesaria en el momento para adecuado para ir incorporándola al diseño. Normalmente el usuario en primera instancia no sabe entregarte todo lo que quiere pero a través de reuniones de trabajo se extrae los requerimientos más deseables para a continuación ir trabajando sobre ello.


Competencias ABAP que todo buen consultor funcional debe manejar (deseable). En el artículo original el verbo que se usa es : "Must" (debería).



Tablas de SAP.


    Es importante tener idea de dónde buscar los datos cada vez que se ejecuta una transacción funcional de SAP. Este conocimiento nos ayudará a crear mejores especificaciones funcionales cuando tengamos que crear desarrollos nuevos en conjunto con los desarrolladores ABAP. También es importante para saber de dónde viene la información y cómo cruzarla para hacer otros análisis.

Conocer las tablas transparentes así como las transacciones que nos permiten visualizarlas y analizar su contenido permite al consultor realizar un análisis más específico de las casuísticas con las que está trabajando y depurar si fuera posible la funcionalidad en función de los datos esperados.



Lsmw / Bdc.


        Donde quiera que haya un consultor SAP funcional, seguramente habrá necesidad de subir datos de forma masiva al sistema. Es importante que el consultor funcional sepa cómo ejecutar esta tarea, o al menos, tenga idea porque el conocimiento en LSMW se gana únicamente con PACIENCIA, práctica y -repitamos- mucha pero mucha práctica.


1.       La utilidad de Legacy es una herramienta del consultor funcional que se utiliza para realizar cargas masivas de datos sin tener conocimientos de ABAP y sin programar. Permite migrar grandes cantidades de datos de un sistema Legacy (no-SAP) a otro SAP y en su procesamiento ofrece varias opciones (batch-input, direct-input, BAPis o iDocs. El formato de los datos puede venir en forma de hoja Excel o fichero csv. Se pueden escribir subrutinas para realizar alguna transformación del valor, reglas de conversión. Más sobre LSMW en el post siguiente pinchando aquí.
2.  La utilidad BDC así como su transacción asociada (SM35) permite procesar juegos de datos masivos en el sistema así como registros de procesamiento erróneos paso a paso. Envuelve bastante código fuente que hay que construir teniendo en cuenta.



Interfaces & EDI.

    Si SAP interactuara con otro sistema, u otro programa, necesitaremos interfaces y EDI. Las siglas EDI significan: Electronic Data Interchange; es el intercambio electrónico de computadora a computadora de documentos de negocios, procesables en un formato estándar. El conocimiento de tecnologías sobre interfaces, como los IDOCs y ALE pasa a ser muy importante para poder satisfacer las necesidades de conexión entre SAP y otros sistemas NO-SAP.



Queries.


     Es una herramienta simple si se quiere generar un reporte pequeño que necesite una tabla, o bien hasta dos tablas para sacar información que satisfaga las necesidades del cliente. Si tenemos conocimiento de esta herramienta, podremos realizar un reporte rápidamente sin necesidad de un completo desarrollo ABAP.


     En este sentido para construir queries potentes es fundamental conocer las tablas e infotipos así como los campos de cada infotipo. Adicionalmente también se puede introducir código para realizar algunas búsquedas en tablas secundarias y extraer la información.



Debugging. 


       En el día a día, cuando ocurre un error no deseado en el sistema y se requiere localizar el problema dentro de un proceso complejo, o un desarrollo zeta. Si fuese el caso, contar con los conocimientos necesarios para hacer debug, es mágico. El debug ayudará a encontrar el eslabón perdido en aquel proceso que esté dando dolores de cabeza en el sistema. Es un conocimiento que nos ayudará muchísimo, es muy útil, pero no es fácil de adquirir, requiere tiempo y compromiso con el crecimiento como consultor.


      El debugging además de ser una herramienta de depuración de código fuente muy útil para el desarrollador, es una herramienta que nos permite investigar y analizar una problemática funcional concreta de los procesos en los que estamos involucrados.


       El funcional debe conocer las sentencias básicas de código ABAP para entender el proceso de debugging y saber dónde está el bug o la lógica que no se corresponde con la funcionalidad requerida.

         


Notas SAP. 

     Las notas SAP, en general son provistas por el mismo SAP como una corrección a su propio código estándar. Muchas notas SAP contienen correcciones para remover errores de los programas de SAP, las notas pueden ser encontradas por un número que las identifica e implementadas por consultores que deberán analizar el impacto de las mismas. Estos conocimientos son deseables en la mayoría de los consultores, la transacción idónea para la implementación de notas a través del sistema es la transacción: SNOTE.

      El conocimiento de la transacción SNOTE al igual que de las transacciones SPAU y SPDD son un valioso activo para un equipo donde se exige que la herramienta en sí debe estar actualizada para cambios legales.



Variantes.

      Las variantes son datos de entrada que se llenan en la pantalla de selección y luego se guardan para que en tiempo de ejecución de la variante puede ser seleccionado y, a continuación la pantalla de selección se llena con los valores deseados.

      Crear y modificar variantes de ejecución es una tarea que no sólo deben conocer los funcionales sino también los usuarios que usan los procesos. Es una forma eficiente de centrarse en lo que importa y ahorrar tiempo en la introducción de información repetida.



Transacciones de cliente. 


     Para cualquier operación, reporte o transacción, se puede generar una transacción Z.

Una transacción es la unidad lógica de proceso básica en SAP R/3. Crear una transacción básica de reporte es básico para entregar una buena solución al cliente y se utiliza la transacción SE93 para ello.


     En última posición he colocado este punto porque me parece que es menos importante y que requiere de una base técnica profunda:



Smartforms.


     Donde quiera que el cliente necesite imprimir algo, habrá necesidad de un SmartForm. Los smartforms tienen tres componentes: Programa de manejo de impresión, configurar la presentación y el módulo de función. El conocimiento de estos le ayudarán a resolver el asunto rápidamente, al menos nos permitirá explicar rápidamente la cuestión al programador ABAP. Desde mi punto de vista lo que un funcional debería saber acerca de este tema es conocer conceptualmente cada tipo de formulario y las diferencias entre un formulario RRHH, un sapscript, un smartform y un adobe form para enfocar el diseño funcional correctamente. Más sobre Adobe Forms en nuestro post pinchando aquí.






     Si quieres compartir el artículo en LinkedIn u otras redes sociales te lo agradecería. Y si quieres contactar conmigo para conseguir más información sobre manuales o cursos de introducción a Abap, debugging para funcionales o queries para usuarios, sólo tienes que contactar conmigo a través del correo electrónico en la sección de "Contacto".

Aspectos diferenciales de la programación RRHH



Los aspectos diferenciales entre la programación en el módulo de RRHH (HCM) y el resto de módulos se basa principalmente en que manejamos diferente información como el maestro de personal o candidatos o datos de nómina y esta información es peculiar, porque se trata de datos personales del empleado y datos económicos. Es crítico proteger la información almacenada en los infotipos y de saber manejarla y mostrarla, así como, de saber "salvaguardarla", teniendo en cuenta la legislación vigente acerca de protección de datos: LOPD.

Para manejar dicha información disponemos de herramientas o utilidades técnicas que facilitan nuestra labor ....

Todo esto y mucho más próximamente en la nueva guía "Cómo ser consultor técnico SAP fácil"...

Mi proyecto vital

Mi sitio
Ésta es una entrada atípica en un blog no típico de Abap y Sap, escrito por una atípica consultora Sap, con lo cuál, todo es porque tiene que ser así y se crece porque se está vivo y se está vivo porque se nace cada día.

Soy informática vocacional, no soy maestra ni soy cirujana ni soy pastora de la iglesia evangélica, pero me formé en ésta profesión durante 4 años con la ilusión de ejercer mi profesión y hacerme un hueco entre la multitud de empresas de consultoría y entre los clientes ávidos de innovación y calidad. Busco mi sitio en un mundo de negocios donde el más fuerte se come al débil, donde las etapas o ciclos se suceden, donde los ciclos más bajos nos permiten tener los pies en el suelo y afrontar las dificultades con creatividad. Utilizo las herramientas que están a mi alcance para marcar la diferencia y ocupar un lugar en vuestro mundo, creo un sello diferenciador del resto porque mi "informática", mi trabajo, está claramente ligado a la satisfacción que en mi día a día supone, entregarme a la vocación de hacer de la tecnología un mundo más humano.

Mi experiencia como informática en España desde que me hicieron aquella foto de la orla horrorosa donde me río de mi misma porque parezco Harry Potter, es que hay una gran diferencia entre el trabajo de campo en cliente y los negocios. Se intenta mejorar los procesos, ahorrar costes, optimizar recursos, se intenta vender y se intenta hacer de la consultoría un negocio en auge desde hace bastantes años, pero... la informática es y será siempre cuestión de unos y ceros, de ceros y unos, cuestión simple!!! Es un yin y yan donde lo importante para alcanzar las nubes está en "crear equilibrio".

Renovación

Los que estamos aún en pañales como yo, creemos que en éste momento acaba de empezar todo, que no nos podemos quitar los pañales todavía para ocuparnos de andar, con lo cuál, mi día a día actualmente se centra en crecer, en empezar, borro todas las creencias no útiles del pasado y empiezo cada día de nuevo porque el avance se encuentra en la renovación. Como en la fábula del águila que cerca de los 40 años se arranca el pico en un proceso muy doloroso que dura semanas, cuando le crece el pequeño pico de nuevo se arranca las uñas con dolor y cuando tiene pequeñas uñas se arranca las plumas para... desde una renovación completa volar durante 30 años más.

Estoy actualmente en éste proceso tan creativo de diseñar mi marca personal, de trabajar para mí y por mí, de creer más que nunca en el ciclo de la vida donde una experiencia como la que estoy viviendo yo y muchos compañeros de profesión están incorporando a su memoria vital para aprender y crecer y seguir volando donde los sueños de ceros y unos se hacen realidad sobre las nubes de algodón de SAP, de Java, de Html, de C++, de Cobol, de llámese X y despéjala mañana cuando tenga claro que en éste mundo, sobrevive quien innove y entienda que los nuevos paradigmas que se están creando actualmente gracias a la legislación laboral española permiten una nueva visión para quienes quieran verla y trabajar con el mundo a sus pies.

Las personas que han formado parte de mi historia laboral y las que forman parte en éste presente y que formarán un futuro a mi lado, están dentro de mi circuitería informática, con amor, porque donde se pone amor se recibe amor y no cejaré en mi empeño de poner alma en ésta profesión donde la procrastinación está a la orden del día y ... otras cosas.

Gracias por leer ésta última línea y las previas. Gracias por formar parte de mi historia vitalaboral, la que escribo con ceros y unos todos los días desde hace cerca de 20 años.

¿Me compras?

P.D.: Procrastinación: (del latínpro, adelante, y crastinus, referente al futuro) o posposición, es la acción o hábito de postergar actividades o situaciones que deben atenderse, sustituyéndolas por otras situaciones más irrelevantes y agradables.


Los 8 reports más útiles en AM - HCM

A continuación os presento una lista de los reports más utilizados en el área de mantenimiento del módulo de PY-ES nómina española Sap. Alguno que otro abarca también el módulo de PT (tiempos) y TV (viajes).

1) El report por excelencia RPDASC00. Nos permite desglosar esquemas de nómina/tiempos, ciclos/reglas.... por tipo de programa, es decir, puedes elegir nómina con valor C en clase de programa y también gestión de tiempos con valor T en clase de programa. Si quieres desglosar todo poner asteriscos en los campos esquemas a desglosar y ciclos a desglosar, marcando además los dos checkboxs Desgl.reglas y subreglas. Entre otras cosas es muy útil para buscar concretamente la funcionalidad de un determinado aspecto de la nómina, por ejemplo, quiero saber dónde aparece el concepto 9NNN que se que se utiliza para calcular el complemento IT, muestro todo el esquema de nómina desglosado y busco éste concepto a lo largo de todo el resultado, de ésta manera puedo averiguar en qué subesquemas y reglas aparece usado y cómo se usa.

2) El report para analizar la configuración de los cc-nóminas RPDLGA20. Es una listado que permite verificar la aplicación de las cc-nóminas en la nómina. Las posibilidades de selección son: subdivisiones de personal, clases de tratamiento y sus valores, clases de evaluación y sus valores, significado de cc-nóminas de acumulación, significado de bases de promedios, uso de las bases de valoración. Por ejemplo, queremos saber qué cc-nóminas estás parametrizadas de forma que afecte a ss-social, sabemos que si afecta a Seg. Social debe acumular en las bases de cotización, en éste caso la selección se orienta hacia "Significado de cc-nóminas de acumulación" y desde aquí seleccionar el /102 (el concepto de base cot.cont.comunes), nos saca un listado de las cc-nóminas configuradas para que acumulen en la base de cot.cont.comunes.

3) El report RPUTRBK0 nos permite actualizar masivamente el IT 0003 status de nómina. Para el caso de que se hayan quedado como erróneos sólo algunos empleados en el área de nómina podemos también borrar la marca desde la transacción PA30-Utilidades-Modif.status de nómina y pulsando el botón "Corrección cálculo de la nómina" a continuación grabar.

4) El report RPCDTFE0 permite borrar la marca de fecha y hora en la tabla BT de transferencia en el cluster de nómina.

5) Acceso a datos del clúster: Para cada instalación necesitaremos acceder a datos diferentes, el report RPCLSTRE permite acceder a los datos de nómina, el report RPCLSTB2 permite acceder a los datos de la evaluación de tiempos y el report RPCLSTTE permite acceder a los datos del cluster de viajes.

Y por último, pero no menos importante, éste requiere de mucho tacto para su uso:

6) El report RPUDIR00, nos permite reestructurar el directorio de resultados de nómina en caso de una catástrofe y también verificar la consistencia de un directorio existente. Su uso se recomienda a verdaderos expertos en la materia.

Saludos, espero que ésta selección de reports les sea de utilidad.



Introducción a la programación ABAP - RRHH


En éste post intento resumir de forma sencilla qué es lo que diferencia la programación en el módulo de RRHH del resto de programación, se definen los 4 conceptos fundamentales de éste ámbito de trabajo y concluyo con un ejemplo ilustrativo para, en siguientes posts, desarrollar más el tema y profundizar.
Los aspectos diferenciales entre la programación en el módulo de RRHH (HCM) y el resto de módulos se basa principalmente en que manejamos diferente información que debe ser almacenada de manera especial, a saber: el maestro de personal o candidatos o los datos de nómina, tiempos, etc etc. Debido a la delicadeza de la información que se almacena (datos personales y económicos) éstos deben almacenarse y manejarse de manera concreta.

Los datos del maestros de personal o candidatos se almacenan en INFOTIPOS.

Definición
Los infotipos básicamente son una agrupación lógica de datos relacionados acerca de un mismo tema, cada infotipo tiene una tabla asociada donde se almacenará de forma física estos datos.

Utilización
Los infotipos se utilizan para agrupar campos de datos relacionados. Proporcionan información con una estructura, facilitan la entrada de datos y permiten almacenar datos para períodos específicos.
Desde el punto de vista del usuario, los infotipos son imágenes de entrada de datos. Contienen toda una serie de informaciones que hay que introducir en los campos de datos.
En términos de base de datos, los infotipos representan una estructura de datos o un set de registros de datos relacionados. Cuando se actualiza un infotipo, los datos anteriores no se pierden. En su lugar, se almacenan para la evaluación del historial.

Los datos de nómina, tiempos y gastos de viaje se almacenan en CLUSTERS.

Definición
Constitutuyen una base de datos para los programas de evaluación de tiempos, nómina y también para el área de gastos de viaje.

Utilización
El cluster de nómina española es el lugar donde se guardan los resultados de nómina calculados.


Desde el punto de vista técnico, para el acceso o el manejo de éstos 2 componentes (infotipos y clusters) existen una serie de herramientas o utilidades que las voy a resumir a continuación: Bases de datos lógicas (en administración de personal PNP o PNPCE, en desarrollo de personal PCH y en el maestro de candidatos PAP), macroinstrucciones (definidas en la tabla TRMAC) y lectura de clusters mediante el uso de Buffers (se verá en otro post más en detalle).

Si bien cada módulo dentro de SAP tiene sus peculiaridades y particularidades, quiero destacar que el módulo de RRHH o HCM es especialmente tratado debido a su compleja configuración y a que se ve afectado constantemente por mejoras en el ámbito legal, debido a nuevas funcionalidades o mejoras en el ámbito de nómina, de seguridad social y de impuestos (cada día se firman nuevos convenios, salen resoluciones o se firman acuerdos de mejora en el ámbito de la seguridad social). En éste sentido los cambios se realizan a nivel de cada país pues las regulaciones son locales y afectan de manera focalizada a cada convenio.

Cómo usar las BDL:
Aplicación: elegimos el tipo de aplicación, en este caso por ser de HR elegí Gestión de personal.
Base de datos lógica: completamos con el nombre de una BDL, las mismas se pueden visualizar desde la SE36. Para datos maestros de personal PNPCE (se indican en el párrafo de arriba).
Vers.imagen selecc: En este punto se elige el tipo de pantalla de selección que queremos para nuestro reporte.



Report basado en LDB PNP

A continuación se detalla un ejemplo de programa ABAP del módulo HCM basado en la BDL PNP, maestro de personal.

Requerimientos: En los atributos del report se establece como Base de datos Lógica, la PNP.
Descripción: Este report muestra los datos de empleados más importantes del IT 1.
Filtro: En el filtrado estándar en base a la BDL PNP marcamos año actual, ponemos status de ocupación 3 y un valor para nuestra sociedad. De ésta forma nos aseguramos que seleccionamos a los empleados activos del año actual para la sociedad definida.
Características: Uso de macroinstrucciones y base de datos lógica PNP.




REPORT ZEJEMPLO_PNP.

TABLES: PERNR.
INFOTYPES00000001.  "Definición de los infotipos a utilizar

DATA: L_NUM TYPE I.

START-OF-SELECTION.

GET PERNR.


 
* Lectura del infotipo 1 atendiendo a las fechas de selección
  RP-PROVIDE-FROM-LAST P0001 SPACE PN-BEGDA PN-ENDDA.

  IF PNP-SW-FOUND = '1'.


    ADD 1 TO L_NUM.
* Escribir datos del empleado seleccionado, a saber:
* Nr. de personal, nombre completo, código de sociedad, grupo de personal, área
* de personal y división de personal
    WRITE: / 'P0001', P0001-PERNR, P0001-ENAME, P0001-BUKRS, P0001-PERSG, 

              P0001-PERSK, P0001-WERKS.

  ELSE.
* Pasar al siguiente empleado
    REJECT.
  ENDIF.

END-OF-SELECTION.


 
* Detalle del número de empleados seleccionados
  WRITE: SY-ULINE.
  WRITE: / 'NR. DE EMPLEADOS SELECCIONADOS: ', L_NUM.

TOP-OF-PAGE.


 
* Escribir cabeceras
  WRITE: SY-ULINE.
  WRITE: / 'IT 1''PERNR''NOMBRE Y APEL.''SOCIEDAD''GRP.PERS.''ÁREA PERS.''DIV.PERS.'.
  WRITE: SY-ULINE.

Un programa ABAP

Para empezar con la sintaxis ABAP lo mejor es un ejemplo de lo sencillo que puede ser mostrar un texto, el clásico Hello World que se muestra siempre cuando aprendes un lenguaje de programación.

Este report muestra el texto "Hello World en la pantalla de seleccíón, en la dynpro (o pantalla) y en la lista o report plano.
Un pequeño inciso, en ABAP los comentarios en los programas se inician con el símbolo *



* Iniciamos siempre el report con la palabra reservada REPORT y luego un nombre
REPORT demo_hello_world.


* Definimos un parámetro de entrada y le asignamos un valor por defecto
* Selection Screen
PARAMETERS input(12) TYPE c DEFAULT 'Hello World!'.

* Llamamos a una dynpro (o pantalla)
* Dynpro
CALL SCREEN 100.

* Escribimos por pantalla el resultado
* Saltamos a la línea 10, nos posicionamos en la columna 40 y escribimos el parámetro
* de entrada
SKIP TO LINE 10.
POSITION 40.
WRITE input.





P.D.: 

Así de sencillo es nuestro primer report ABAP.
Este report está disponible en SAP bajo el nombre DEMO_HELLO_WORLD