Todo el que ha trabajado con SAP conoce la escena: un report Z de hace quince años, sin documentar, que alguien tiene que tocar mañana. Nadie sabe bien qué hace ni por qué, y da miedo abrirlo.
Aquí Claude es especialmente útil, y no tanto por escribir ABAP nuevo desde cero como por lo que viene antes y después: entender el código heredado, refactorizarlo en pasos pequeños y escribir los tests que casi nadie tiene tiempo de escribir. En esta lección vas a ver cómo hacerlo con cabeza, qué herramientas oficiales hay hoy y qué no debe salir nunca de tu sistema.
Primero entender: Claude como lector de código heredado
El mejor primer uso de Claude con ABAP no es pedirle que escriba, sino que lea. Toma este report clásico, un listado de posiciones de pedido de compra pendientes de entrega:
REPORT zpedidos_pendientes.
TABLES: ekko.
DATA: it_ekpo TYPE TABLE OF ekpo WITH HEADER LINE.
SELECT-OPTIONS: s_lifnr FOR ekko-lifnr.
START-OF-SELECTION.
SELECT * FROM ekko WHERE lifnr IN s_lifnr.
SELECT * FROM ekpo INTO TABLE it_ekpo WHERE ebeln = ekko-ebeln.
LOOP AT it_ekpo.
IF it_ekpo-elikz = space.
WRITE: / it_ekpo-ebeln, it_ekpo-ebelp, it_ekpo-matnr, it_ekpo-menge.
ENDIF.
ENDLOOP.
ENDSELECT.
Funciona, pero tiene todo lo que hoy se evita. Mira cómo puede ser la conversación:
ELIKZ vacío): número de pedido, posición, material y cantidad.
Problemas técnicos: 1) Hace una lectura de EKPO por cada pedido dentro de un bucle SELECT … ENDSELECT: con muchos pedidos, son miles de viajes a la base de datos. 2) Trae todas las columnas con SELECT * y luego filtra ELIKZ en memoria, en vez de filtrar en la base de datos. 3) Usa WITH HEADER LINE y TABLES, construcciones obsoletas. 4) La salida es una lista WRITE, difícil de reutilizar.Fíjate en el orden: primero qué hace para el negocio, luego los problemas y solo después las propuestas. Y en la última respuesta, Claude marca lo que debes verificar tú.
Dos cosas hacen que esto funcione. La primera, el contexto: quién eres, qué sistema es (ECC, S/4HANA, BTP ABAP Environment) y qué quieres exactamente. La segunda, pedir análisis antes que código. Es la forma más barata de entender un objeto y de descubrir, de paso, si Claude ha entendido bien lo que tiene delante.
Después refactorizar: pasos pequeños y comportamiento idéntico
Pedir «mejora este código» es la forma más rápida de acabar con un objeto que nadie reconoce. La refactorización buena es pequeña, verificable y con el comportamiento congelado. Compara:
Mejora este código ABAP y hazlo moderno. [código]
Carta blanca: Claude cambiará estructura, nombres y quizá lógica. Imposible de revisar en una tarde y con riesgo de cambiar el resultado.
Las claves del segundo prompt sirven para cualquier objeto: versión y entorno, un objetivo por vuelta, qué no se toca y cómo se comprueba. Si el objeto es grande, empieza pidiendo un plan de refactorización por pasos y luego ve pidiendo los pasos de uno en uno.
Y siempre testear: ABAP Unit con ayuda
La red de seguridad de cualquier refactorización son los tests. Aquí Claude ahorra mucho trabajo mecánico: le pasas una clase o un método y le pides tests de ABAP Unit (clases locales marcadas FOR TESTING, con aserciones de cl_abap_unit_assert) que cubran el caso normal, los límites y los errores.
Un buen prompt para tests pide tres cosas: los casos concretos que quieres cubrir (por ejemplo, cantidad cero, cantidad negativa, el tramo alto de un descuento), que el test no dependa de datos reales del sistema, y una línea que explique qué comprueba cada test. Si el código lee de base de datos, pídele que use dobles de prueba, como el entorno de test doubles de SQL de ABAP (cl_osql_test_environment), en lugar de datos del mandante.
Y la regla que no se negocia: los tests se ejecutan en tu sistema de desarrollo. Un test que Claude asegura que pasa no es un test que pasa.
Claude te propone refactorizar un report de facturación y generar sus tests. ¿Cuál es el orden más seguro?
Dónde trabajar: del chat al editor
Todo lo anterior se puede hacer pegando código en el chat, y para empezar está bien. Pero desde 2026 hay una vía oficial más potente: ADT for VS Code, la extensión de SAP que lleva el desarrollo ABAP a Visual Studio Code. Incluye un servidor MCP (viene desactivado; se activa en los ajustes) que permite a un agente como Claude Code trabajar directamente con los objetos del sistema, con tu usuario y tus autorizaciones.
Chat
copiar y pegar
- Pegas el código y las dependencias a mano
- Ideal para entender un objeto o preparar un prompt de refactorización
- Tú llevas los cambios al sistema y ejecutas los tests
- Cero configuración
Claude Code + ADT for VS Code
el agente trabaja en el editor
- Claude lee los objetos y sus dependencias por el servidor MCP de ADT
- Puede lanzar **ABAP Unit** y el **ATC** e iterar hasta que pasen
- Puede revisar el diff completo de una orden de transporte antes de liberarla
- Actúa con tu usuario SAP: aplican tus autorizaciones
Es el canal de desarrollo, contra un sistema de desarrollo. Nada de conectarlo a productivo ni de usarlo para leer datos de negocio.
La extensión cambia rápido. En nuestro seguimiento de ADT for VS Code tienes qué trae cada versión y qué puede hacer ya un agente con ella. Y si vas a escribir código nuevo, recuerda que el modelo recomendado por SAP es ABAP Cloud: solo APIs liberadas y extensiones que respetan el clean core. Pídele a Claude que respete esa restricción de forma explícita, porque si no, tenderá a usar lo que más ha visto, que es ABAP clásico.
Lo que nunca debe salir de tu sistema
El código ABAP se lee fácil y se pega aún más fácil. Antes de hacerlo, pasa este filtro:
Todo lo que lleves de vuelta al sistema sigue el camino de siempre: desarrollo, revisión de código por una persona, ATC, pruebas funcionales y transporte. Claude acelera cada paso, pero no se salta ninguno. Para prompts ya probados con código SAP, mira el recetario.
Para recordar
0 de 7 clarosMarca lo que ya tienes claro.
Próxima lección: Claude dentro de SAP BTP. Qué es el Generative AI Hub, cuándo usar la vía SAP frente a la API directa y qué cambió en 2026.