Si nos vamos a la RAE, extensibilidad se define como «cualidad de extensible», extensible a su vez se define como «que se puede extender» y extender tiene varias definiciones pero la primera es esta: «hacer que algo ocupe un espacio mayor que el que antes ocupaba».
Aunque no es una definición que cuadre con lo que quiero explicar, me importan más los sinónimos que indican, que son los siguientes: «dilatar, alargar, estirar, desplegar, prolongar, ampliar, expandir, acrecentar, aumentar, ensanchar, agrandar, expansionar».
¿Ves en algún sitio «modificar»?
Perfecto, pues una vez que tenemos claro que en S/4HANA no se puede modificar el estándar (ya sabes, lo del clean core), vamos a ver cómo lo podemos extender/ampliar.
Tenemos 3 opciones básicas:
- Key User Extensibility: algo que
SAP cree quepueden hacer los usuarios clave. - Developer Extensibility: para que los programadores hagan lo que no han podido hacer los usuarios clave (es decir, todo), utilizando el ABAP Cloud del propio S/4HANA.
- Side-By-Side Extensibility: si quiero construir una aplicación fuera de mi S/4HANA, aunque me comunique con el sistema, lo haré desde SAP BTP.

Sobre el tema de la extensibilidad de usuarios clave, dejé clara mi opinión en una serie de artículos anteriores.
ABAP para key users: ¿qué es? (I)
Las otras dos son para desarrolladores y aquí es importante tener claros conceptos como: ABAP Cloud, CAP, RAP, Fiori Elements, OData, de los que también he hablado alguna vez.
La gran diferencia entre las opciones de desarrollador y side-by-side es que unas las hago en el ABAP del propio sistema y las otras las hago fuera, en BTP, ya sea con ABAP o con otro lenguaje o herramienta.
Y aquí entra en juego, por supuesto, saber qué es SAP BTP y qué es eso del entorno ABAP en BTP.

Durante muchos años, nos han estado hablando de extensiones in-app y side-by-side, pero últimamente han decidido cambiar un término (¡qué raro!) y ahora hablamos de on-stack y side-by-side.
Extensiones en S/4HANA
Cambio de nombre, aparte, todo es más o menos lo mismo, y podemos ver cómo podemos extender cualquier cosa, a nivel de base de datos, aplicación o interfaz de usuario.
Tenéis muchos itinerarios en SAP Learning sobre este tema, pero en este podéis fijar ciertos conceptos básicos: Practicing Clean Core Extensibility For SAP S/4HANA Cloud
También os dejo como referencia un artículo, que es el que me ha llevado a escribir sobre esto: Why S/4HANA Extensibility Options are crucial
En este último artículo, por ejemplo, aparece la siguiente imagen:

Vamos de arriba abajo y de izquierda a derecha.
Lo de arriba, para desarrolladores profesionales:
- Classic Extensibility: lo de toda la vida, que tiene los días contados, sólo para Private Edition y on-premise (¡existe!).
- SAP S/4HANA Cloud Developer Extensibility: ABAP Cloud, con la ayuda de SAP Build Code y el Extensibility Wizard.
- SAP BTP Environment: entorno ABAP en BTP.
- SAP Build Code (CAP): aquí meten varios conceptos (CAP, Fiori) y el Mobile Services, porque no sabrían como pintarlo 😉
En medio, para que tengamos claro que nuestras aplicaciones side-by-side se van a poder comunicar con nuestros sistemas.
- SAP Integration Suite: mencionan varias de las capacidades que tiene el servicio de integración de BTP.
Vamos con la parte de abajo:
- SAP S/4HANA Key User Extensibility: me remito a lo dicho anteriormente.
- SAP Analytics Cloud: no termino de ver qué pinta aquí, la verdad, a no ser por la capacidad de diseñar aplicaciones analíticas.
- SAP Build: para meter el tema de automatizaciones (Process Automation), portales (Work Zone) y desarrollo de aplicaciones móviles (Apps).
En definitiva, que en S/4HANA vas a poder hacer muchas cosas, pero tienes que conocer qué opciones tienes y tener claro que no vas a poder a seguir haciendo las cosas como antes.
Olvídate de tus «zetas» y las aberraciones modificaciones al estándar, que ya sé que para ti son imprescindibles y que «llevamos toda la vida haciéndolo así», porque SAP ya nos está avisando desde hace tiempo de que hay cosas que, en el corto/medio plazo van a terminar en la papelera…

y yo no quiero que seas una de esas «cosas»… 😉
PD.- Amenazo con lanzar una newsletter; si quieres apuntarte, aquí te dejo el enlace: No Lo Sabemos Todo.
PD.- Lo de antes, da igual, lo importante es que te apuntes a esto: Ayuda emergencia DANA 😢

Interesante blog Antonio, que enfoque manejarías si tuvieras que extender una API estándar (sales order) para que sea consumido desde un sistema externo aplicando clean core? 🤔
Vería si la puedo ampliar con Custom Fields and Logic o con un Wrapper API.