abapGit: Integración de Git para Desarrollo ABAP en SAP

En otros lenguajes de programación que no están tan ligados al núcleo de un aplicativo empresarial, es común y casi obligatorio ver el uso de control de versiones y repositorios como GitHub, GitLab, etc. para gestionar y colaborar en el desarrollo del código. Sin embargo, en el caso de ABAP, un lenguaje que está profundamente arraigado dentro del framework SAP Netweaver, que tiene su propio repositorio y gestor de versiones, la adopción de herramientas modernas como Git para ABAP ha sido más lenta.

Es aquí donde abapGit entra en escena, proporcionando una solución clave para los desarrolladores ABAP que quieren aprovechar las ventajas del control de versiones distribuido. Pero antes de nada, veamos el escenario habitual en otros lenguajes y en entorno de desarrollo conjunto distribuido. Lo primero que tenemos que saber es qué es eso de Git.

¿Qué es Git?

Git es un sistema de control de versiones distribuido diseñado para rastrear los cambios en archivos de código fuente y facilitar la colaboración entre múltiples desarrolladores en un proyecto. Fue creado por Linus Torvalds en 2005, inicialmente para el desarrollo del Kernel de Linux. Es utilizado principalmente en el desarrollo de software, pero también puede aplicarse a otros tipos de proyectos donde se necesita llevar un control detallado de cambios en archivos.

Características Claves de Git

Las características que hacen de Git una tecnología tan potente son:

  • Control de versiones distribuido: A diferencia de los sistemas centralizados de control de versiones, en Git cada desarrollador tiene una copia completa del historial del proyecto en su máquina local, lo que permite trabajar de manera independiente y sin conexión.
  • Snapshots: En lugar de registrar diferencias entre versiones de los archivos, Git toma «instantáneas» del estado de los archivos en cada commit. Si no hay cambios en un archivo, Git solo referencia la versión anterior.
  • Integración y colaboración: Git facilita la integración continua y la colaboración mediante ramas (branches), que permiten que varios desarrolladores trabajen en diferentes características de un proyecto sin interferir con el trabajo de otros. Posteriormente, las ramas pueden fusionarse (merge) de manera segura.
  • Rendimiento eficiente: Dado que Git opera de manera distribuida y guarda versiones localmente, la mayoría de las operaciones (como commits, comparaciones y creación de ramas) son extremadamente rápidas, ya que no dependen de un servidor remoto.
  • Compatibilidad con plataformas como GitHub: Git es la tecnología subyacente que soporta plataformas populares como GitHub, GitLab, Bitbucket, las cuales añaden características adicionales como la gestión de proyectos, seguimiento de errores y funciones de revisión de código.

Beneficios de usar Git

Seré breve, os podéis imaginar los beneficios, viendo las características clave.

  • Seguridad: El historial de cambios en Git está protegido contra alteraciones accidentales o malintencionadas.
  • Flexibilidad: Git es útil para proyectos de cualquier tamaño y es compatible con numerosos flujos de trabajo.
  • Desarrollo paralelo: Facilita el trabajo simultáneo de varios desarrolladores en diferentes partes de un proyecto, permitiendo integraciones y fusiones de código (Merge) sin perder la coherencia del proyecto.

Ya sabemos lo que es Git y sus características, pero nos falta saber que es eso de Github o GitLab.

¿Qué es GitHub?

GitHub es una plataforma de desarrollo colaborativo que permite a los programadores y equipos gestionar proyectos de software utilizando el sistema de control de versiones Git. GitHub proporciona un entorno basado en la web donde los desarrolladores pueden alojar y compartir sus proyectos de código, colaborar en equipo, y realizar un seguimiento de los cambios mediante el uso de repositorios.

No vamos a profundizar más en GitHub, puesto que esta basado en Git (ya lo hemos explicado) aportando una capa por encima con más funcionalidades de gestión de Proyectos.

Vamos ahora, una vez sabemos lo que es Git y lo que es GitHub (o similares), vamos a ver qué es abapGit.

¿Qué es abapGit?

Como podemos ver en la Help de SAP:

abapGit es un cliente Git desarrollado por código abierto para que el servidor ABAP importe y exporte objetos ABAP entre sistemas ABAP.

Con abapGit, puede exportar sus objetos ABAP de cualquier sistema a otro, normalmente de local a en la nube o de un sistema en la nube a otro.

SAP Help – Trabajar con abapGit

Esta entrada de la Help de SAP se centra, o está englobada, en SAP BTP – Business Technology Platform.

Pero en SAP BTP es un framework donde desplegar aplicaciones de muchos tipos ya sea SAP Build Apps, Fiori, CPI, Python, Go, Ruby, etc. Digamos que en el framework de trabajo de SAP BTP usar una solución Git es practicamente obligatorio.

Pero nosotros vamos a algo más mundano, queremos integrar la tecnología Git dentro de nuestros proyectos ABAP de toda la vida, con su SE80, SE38, sus paquetes de desarrollo, etc.

Por lo tanto, podemos decir que abapGit es un cliente de Git específico para ABAP, que permite a los desarrolladores trabajar con un control de versiones distribuido externo dentro del entorno SAP. Desarrollado como un proyecto de código abierto por la comunidad, abapGit permite exportar e importar objetos ABAP a repositorios externos como GitHub, GitLab o Bitbucket, lo que hace posible integrar flujos de trabajo modernos en sistemas SAP.


¿Qué puedo hacer con abapGit?

Pues SAP tiene varios tutoriales que nos pueden ayudar con esto:

Podemos ampliar esas dos tareas que propone el Learning de SAP por la siguiente lista:

  • Versionado del código ABAP: Permite realizar Commits del código ABAP en un repositorio Git (GitHub, GitLab, etc), creando un historial de cambios que facilita la colaboración entre múltiples desarrolladores.
  • Colaboración en equipo: Con la capacidad de clonar y fusionar repositorios, los equipos de desarrollo pueden trabajar en diferentes características del proyecto simultáneamente sin interferir entre sí, lo que mejora la productividad y reduce los errores.
  • Migración de código ABAP entre sistemas: abapGit facilita la migración de objetos ABAP de un sistema on-premise a la nube, o entre diferentes sistemas SAP. Esto es especialmente útil en proyectos de migración a SAP S/4HANA o SAP BTP. Esto es lo que comenta el enlace de SAP Learning que he puesto antes.
  • Integración con herramientas CI/CD: abapGit permite integrar proyectos ABAP en flujos de trabajo de integración y entrega continua (CI/CD), facilitando un enfoque ágil al desarrollo.
  • Exportación e importación de objetos: abapGit facilita la exportación de objetos ABAP, como clases, funciones, y programas, a repositorios Git. Desde allí, es posible importar estos objetos a otros sistemas SAP, lo que simplifica la colaboración entre diferentes entornos de desarrollo. Y esto es lo que comenta el otro enlace de SAP Learning que he puesto. Sobre este punto, quiero hacer una puntualización en el punto siguiente.
  • Importación de funcionalidad colaborativa: Existen proyectos de código abierto subidos a GitHub con funcionalidades concretas que están a nuestra disposición para importarlos en nuestro sistema SAP por medio de abapGit. Obviamente, con esto hay que tener cierto cuidado porque estamos importando código de otra persona. Tienen que ser fuentes contrastadas y validadas por la comunidad. Pero, para mi, es un aspecto fundamental ya que alimenta el conocimiento global y simplifica muchas tareas que alguien ya pensó e implementó. Ejemplos de esto pueden ser:
    • OpenAPI: El motivo de escribir esta entrada es básicamente poder explicar OpenAPI en SAP para nuestros servicios OData. Por lo tanto este punto lo explicaremos en la entrada correspondiente, cuando la publique actualizaré esta para poder el link.
    • ABAP2XLS: Proporciona un conjunto de opciones para el trabajo con excel desde ABAP, simplifica mucho el proceso de manejar Excel con muchas demos y muchas opciones.

¿Cómo instalar abapGit en mi sistema?

Pues es bastante sencillo, más que nada porque está perfectamente explicado en varios sitios. Por ejemplo:

Hay dos versiones de instalar el abapGit:

  • Standalone version: Se trata de un report que sirve para realizar la conexión de Importación (que puede ser desde un repositorio tipo GitHub) y Exportación a local.
  • Developer version: Es la versión que te permite trabajar con tus proyectos ABAP en un repositorio Git con toda la funcionalidad. Importar, Exportar, trabajar colaborativamente, etc. Para esta versión tienes que instalar primero la versión Standalone para descargarte el proyecto abapGit tal y como comenta el tutorial. Ten en cuenta que quizás tengas que instalar el certificado de GitHub en el sistema para poder establecer la conexión con GitHub, viene bien explicado en SSL Setup. También se puede instalar de forma offline descargándote el proyecto en Zip y subiéndolo al report de Standalone.
  • Versión para SAP BTP: Podéis verlo en el siguiente enlace de la Help de SAP SAP Help – Trabajar con abapGit o en SAP Learning – Install the abapGit Plugin donde te enseña a instalar el plugin para ADT.

Integración Continua/Entrega Continua (CI/CD)

Y es que Git no solo vale para la gestión de cambios y trabajo concurrente, como hemos visto aporta la funcionalidad de Integración con herramientas CI/CD, esto ¿Qué es?.

Integración Continua (CI)

La Integración Continua es una práctica en la que los desarrolladores integran su código en un repositorio compartido, como puede ser GitHub, varias veces al día. Cada vez que se hace una integración, se ejecuta una serie de pruebas automáticas para asegurarse de que el nuevo código no introduzca errores ni rompa las funcionalidades existentes. El objetivo es detectar y corregir problemas lo más rápido posible.

Entrega Continua (CD)

Ojo cuidado con esto. en la Entrega Continua, una vez que el código pasa las pruebas automáticas y es integrado, se prepara automáticamente para su despliegue en el entorno de producción.

Obviamente, en estas prácticas se puede llegar a la profundidad que se requiera, no es todo o nada. Hay mucho más que aprender de CI/CD pero yo no soy el más indicado para explicar más allá de la teoría. Para mi, viniendo del mundo SAP, con su cola de transportes, su paso a producción bajo ticket de Remedy o Service Now, y sus UATs, me parece complicado y peligroso. No obstante SAP ya está en ello, podemos ver la charla de SAP Teched 2020 «DevOps for ABAP? Try the Git-Enabled Change and Transport System | SAP TechEd in 2020«

Madre mía!

Podéis verlo en este video.

En Conclusión

El objetivo de esta entrada es servir de base a otras entradas en las que hago uso de ABAPGit para importar proyectos ABAP en el sistema. Es muy útil, ya no solo para tener un repositorio de tus desarrollo, si no también para utilizar proyectos ABAP de la comunidad que aporten valor inmediato a tu proyecto.

Un comentario sobre “abapGit: Integración de Git para Desarrollo ABAP en SAP

Deja un comentario