Notas técnicas, sin marketing
ABAP Cloud, S/4HANA y el ecosistema SAP moderno, contados desde proyecto.
Lo más leído
SAP Integration Suite: activar el runtime de API Management
API Management activado en SAP Integration Suite, pero sin Configure > APIs. Por qué falta el runtime y cómo activarlo en un trial y en un tenant productivo.
23 oct 2026
SAP CAP y MCP: autenticación y roles con @requires y @restrict
Cómo restringir por rol qué consulta y qué escribe un agente de IA en un servicio SAP CAP publicado por MCP, y los tres huecos que aparecieron al probarlo.
23 oct 2026
SAP Build Work Zone advanced: configurar CIS e IPS en BTP
Cómo habilitar SAP Build Work Zone, advanced edition en SAP BTP con autenticación SAML 2.0 y aprovisionamiento automático de usuarios y grupos con Identity Provisioning.
23 oct 2026
El único ajuste de SAP Mobile Services que no puedes cambiar
Al crear una aplicación en SAP Mobile Services eliges entre XSUAA e IAS, y esa elección no se puede cambiar. Qué implica cada opción y cuándo elegir IAS.
20 oct 2026
Habilitar Extensibility (Key User) en SAP S/4HANA 2025
Pasos para habilitar las apps de extensibilidad key user en SAP S/4HANA 2025: nota SAP, ATO, catálogo SAP_BASIS_BC_EXT, nodos ICF, servicios OData y rol.
17 oct 2026
SAP GUI for Java en macOS: conexión SNC y certificados
Conexión SNC con SAP GUI for Java en un Mac: cómo adaptar la configuración pensada para Windows y hacer que macOS confíe en el certificado del servidor.
17 oct 2026
SAP CAP y MCP: escritura controlada con acciones CDS
Cómo dejar que un agente de IA modifique datos de un servicio SAP CAP por MCP con una acción CDS, qué controla cada capa y qué fallos aparecieron al probarlo.
14 oct 2026
SAP MDK en VS Code: una alternativa mejor a BAS
Cómo montar en un VS Code local el entorno para desarrollar aplicaciones con SAP MDK sin Business Application Studio, y trabajar en ellas con agentes de IA.
14 oct 2026
SAP GUI for Java en macOS: instalación y primera conexión
SAP GUI for Java 8.10 en un Mac con procesador M: el Java que ya trae, las tres formas de conectarse y por qué la pestaña Sistema no sirve con solo un host.
9 oct 2026
SAP API Management: así cambian los cifrados TLS
SAP API Management retira dos cipher suites TLS 1.2 para conexiones inbound. Cómo afecta a tus integraciones y qué revisar antes de octubre de 2026.
8 oct 2026
SAP Document AI: cuando el score de confianza no es confiable
Matching de materiales con SAP Document AI en pedidos multiproveedor: por qué el score de confianza no sirvió para decidir y qué solución sí funcionó.
8 oct 2026
SAP CAP como servidor MCP: una anotación y tres sorpresas
Cómo exponer un servicio SAP CAP como servidor MCP con el plugin @cap-js/mcp, qué herramientas recibe el agente de IA y qué límites aparecen al probarlo.
7 oct 2026
SAP RAP de cero a experto: serie gratuita de ABAP Cloud
Serie gratuita de YouTube sobre SAP RAP con ABAP Cloud: más de 6 horas de vídeo en español, desde la cuenta trial de SAP BTP hasta la Behavior Definition.
6 oct 2026
Desarrollo SAP Fiori con IA: monta tu entorno profesional
Clase 1 del Máster en Fiori SAPUI5, con el vídeo completo: SAP BTP trial, Business Application Studio, VS Code, TypeScript y asistentes de IA con MCP.
1 oct 2026
Ledger o SourceLedger en S/4HANA: filtrar ledgers de extensión
Un asiento ocupa 4 filas en ACDOCA y 8 en I_JournalEntryItem. Cómo filtrar Ledger y SourceLedger para no perder ni multiplicar importes, con resultados medidos.
1 oct 2026
¿Qué es SAP Document AI? El vocabulario de la serie
Ciclo de vida de un documento, schemas, plantillas, métodos de extracción, score de confianza y lo que hay que montar en SAP BAIP para usar SAP Document AI.
1 oct 2026
S/4HANA sin ACDOCA: las vistas CDS liberadas del Journal Entry
SAP marca ACDOCA como no liberable y propone tres vistas CDS liberadas como sucesoras. Cuál usar para partidas, saldos, cabecera y análisis, y con qué límites.
30 sept 2026
Paginación en ABAP SQL: offset frente a keyset, medidos
Por qué OFFSET se degrada con la profundidad de la página y keyset mantiene un coste constante: curva medida sobre 2,4 millones de filas y criterio de elección.
29 sept 2026
Salarios de consultor SAP en 2026: lo que nadie te cuenta
Por qué las cifras de salario consultor SAP que ves en LinkedIn no sirven para decidir nada, y qué factores mueven de verdad el número: especialización, país y si trabajas por cuenta propia o para una consultora.
23 sept 2026
Tu primer objeto de negocio con RAP, paso a paso
Una tabla, una vista de interfaz y una behavior definition managed, en un solo recorrido de principio a fin: tu primer objeto de negocio RAP, paso a paso.
21 sept 2026
¿Cuándo contratar consultoría SAP BTP externa (y cuándo no)?
Consultoría SAP BTP: cuándo conviene traer ayuda externa senior, qué preguntar antes de firmar, y cuándo el problema se resuelve mejor por dentro.
17 sept 2026
Clean Core para developers: extender S/4HANA sin romper el core
Modificar el standard no es gratis: se paga en cada upgrade. Guía práctica para elegir, como developer, el camino de extensión Clean Core correcto.
15 sept 2026
Lo que un consultor funcional debería entender de ABAP Cloud
No necesitas programar para defender bien un proyecto SAP. Lo mínimo de ABAP Cloud que un consultor funcional necesita para no depender del criterio ajeno.
11 sept 2026
De ABAP procedural a ABAP Cloud: checklist de migración
Migrar a ABAP Cloud no es traducir sintaxis: cambia el acceso a datos, la lógica de negocio y cómo se modela con RAP. Checklist paso a paso, con ejemplos reales.
9 sept 2026
¿Por qué tu CDS view está mal estructurada?
Cómo estructurar una CDS view en capas Basic, Composite y Consumption, y por qué mezclarlas rompe tus apps Fiori y tus informes.
7 sept 2026
ABAP Cloud no es Cobol: para desarrolladores que vienen de fuera
Aprender ABAP viniendo de Java no es empezar de cero. Mira el código que se escribe hoy en S/4HANA y por qué el mercado lo paga.
2 sept 2026
EML: manipular entidades de negocio en RAP sin un solo SELECT
En la Behavior Pool no se usa SELECT ni COMMIT: se usa el Entity Manipulation Language. READ ENTITIES, MODIFY ENTITIES y las claves técnicas %tky, con el código real.
13 ago 2026
Autorizaciones en RAP: global vs instancia sin morir en el intento
Bloquear una operación para todos es una cosa; bloquearla según el contenido del registro es otra muy distinta. Los dos niveles de autorización de RAP y cuándo necesitas cada uno.
12 ago 2026
Validaciones y determinaciones en RAP: dónde vive cada regla de negocio
Una validación veta el guardado; una determinación rellena un campo sola. Confundirlas es meter lógica en el sitio equivocado. Cuándo usar cada una, con la behavior definition real.
10 ago 2026
Draft en RAP: el borrador que evita que tus usuarios pierdan el trabajo
El modo Draft deja guardar a medias sin ensuciar la base de datos. Cómo se activa en la behavior definition, qué acciones exige y por qué necesita el total ETag.
8 ago 2026
El modelo de datos de un business object RAP: persistencia activa, draft y auditoría
En ABAP Cloud ya no defines tablas en modo gráfico: las escribes con anotaciones. Las columnas de auditoría, el UUID y la tabla draft que el framework RAP espera, con el DDL real.
5 ago 2026
Managed vs Unmanaged en RAP: cuándo dejar que el framework persista por ti
El escenario managed te regala create, update y delete; el unmanaged te obliga a escribirlos. Cuándo usar cada uno en el RESTful ABAP Programming Model, con la behavior definition real.
4 ago 2026
VCAP_SERVICES: por qué tus credenciales nunca van en el código
En Cloud Foundry las credenciales de HANA o XSUAA no se escriben: se inyectan. El service binding las pone en la variable de entorno VCAP_SERVICES en tiempo de ejecución. Entenderlo cambia cómo diseñas la app.
2 ago 2026
cf CLI de verdad: push, bind y logs, las tres que usas cada día
La cf CLI tiene decenas de comandos, pero el 90% de tu trabajo diario cabe en tres verbos: desplegar, enlazar servicios y leer logs. Con la sintaxis real y los flags que importan.
31 jul 2026
mta.yaml: por qué la unidad de despliegue no es la app, es el MTA
Una Multi-Target Application empaqueta servicio, base de datos y UI en un solo artefacto versionado. Desplegar app por app con cf push es cómodo hasta que tienes tres módulos que dependen entre sí.
30 jul 2026
El modelo de Cloud Foundry: orgs, spaces y apps sin misterio
Antes de escribir un cf push tienes que entender la jerarquía: cuenta global, subcuenta, organización, espacio y aplicación. Quien la ignora acaba con cuotas mal repartidas y despliegues en el sitio equivocado.
27 jul 2026
Desplegar una app CAP full-stack en Cloud Foundry, de punta a punta
Junta todo: proyecto CAP con HANA y XSUAA, build del MTA, login en CF y despliegue. El recorrido completo desde File New Project hasta la app respondiendo con su token, con los comandos reales.
25 jul 2026
Buildpacks y staging: qué pasa entre tu cf push y una app corriendo
Entre el cf push y la app en verde hay una fase que casi nadie mira: el staging. El buildpack detecta tu lenguaje, instala el runtime y monta el droplet. Cuando falla el arranque, casi siempre falla aquí.
23 jul 2026
Destinations y Cloud Connector: conectar BTP sin abrir el firewall
El puente entre la nube de BTP y tus sistemas on-premise no es abrir puertos. Es Cloud Connector más destinations bien tipados. Lo desmontamos con las propiedades reales.
20 jul 2026
Role collections, role templates y usuarios sombra en SAP BTP
El modelo de autorizaciones de BTP no es un checkbox. Plantillas de rol, colecciones y usuarios sombra: entenderlo bien es la diferencia entre un acceso auditable y un caos de permisos.
19 jul 2026
Entitlements y cuotas en SAP BTP: el presupuesto que no se desborda
Derechos de servicio y derechos de cuota. Es donde de verdad se controla el gasto en BTP. Repartir mal aquí es firmar una factura sorpresa a fin de mes.
17 jul 2026
La jerarquía de cuentas en SAP BTP: gobernanza desde el día 1
Global account, directorios, subcuentas. No es un organigrama decorativo: es la frontera de facturación, seguridad y regiones. Quien la improvisa, la paga en cada auditoría.
15 jul 2026
Subscriptions vs service instances en SAP BTP: no son lo mismo
Aplicaciones que se suscriben y servicios que se instancian. Confundirlos lleva a plan de servicio equivocado, cuota mal gastada y una arquitectura que no escala. Lo aclaramos.
12 jul 2026
Administrar SAP BTP desde la terminal: btp CLI y cf CLI
El Cockpit esta bien para explorar. Para gobernar de verdad, automatizar y auditar, necesitas la linea de comandos. btp CLI para la cuenta, cf CLI para el runtime.
11 jul 2026
Handlers en CAP: escribe menos JavaScript, no más
El runtime genérico de CAP ya resuelve el CRUD. Los handlers en Node.js son para la lógica que el modelo no puede expresar: acciones, funciones y validaciones. Con un cancelOrder real.
9 jul 2026
Released APIs: consumir el estándar sin acoplarte a lo que no debes
Consumir una API liberada de SAP está bien; consumirla mal te acopla al core igual que una modificación. La diferencia está en el patrón de acceso. Guía práctica en ABAP Cloud.
9 jul 2026
CDS bien estructuradas: la capa VDM que no te avergüenza en tres años
Basic, Composite, Consumption. El Virtual Data Model no es burocracia: es lo que separa un modelo que escala de un plato de espaguetis. Con ejemplo de código ABAP CDS real.
8 jul 2026
El modelo CDS en CAP: entidades y servicios que no se pisan
En CAP el modelo de datos vive en db y los servicios en srv, y esa separación no es capricho: es lo que te deja cambiar el esquema sin tocar la API. Con schema.cds y catalog-service.cds reales.
7 jul 2026
Clean Core sin humo: qué significa de verdad en ABAP Cloud
Clean Core no es una etiqueta de marketing ni prohibir modificaciones. Es una disciplina de extensibilidad basada en APIs liberadas y puntos de extensión estables. Lo desmontamos con ejemplos.
7 jul 2026
Autorización en CAP con XSUAA: cuando una anotación se vuelve permiso
En CAP la seguridad se declara en el modelo con @requires y @restrict, no se programa en cada handler. Cómo XSUAA convierte roles en scopes y el xs-security.json que lo ata todo.
6 jul 2026
Servicios remotos en CAP: consumir S/4HANA sin copiarte el ERP
Importar un servicio OData externo, proyectarlo como si fuera propio y delegar la query al backend. Cómo CAP integra S/4HANA sin replicar datos, con cds import y una proyección real.
3 jul 2026
Desplegar CAP en BTP: del cds watch al mta.yaml sin sustos
En local corre con SQLite en memoria. En BTP necesitas HANA, un contenedor HDI y un mta.yaml que ate los módulos. Lo que cambia entre tu portátil y Cloud Foundry, sin humo.
1 jul 2026
CAP vs RAP: no es religión, es dónde vive tu lógica de negocio
CAP corre en Node.js o Java sobre BTP; RAP corre en ABAP dentro de S/4HANA. La elección no es de gusto: depende de dónde están tus datos y tu equipo. Sin bandos.
29 jun 2026
Qué son los Fiori Elements y por qué deberías usarlos
Fiori Elements no es un framework más: es cambiar código UI5 escrito a mano por anotaciones sobre el servicio OData. Menos JavaScript, más metadatos, UX consistente. Con ejemplo real de anotaciones CDS.
26 jun 2026
Floorplans de Fiori Elements: List Report, Object Page, Worklist y Analytical
No todos los patrones sirven para todo. Cuándo elegir List Report Object Page, cuándo un Worklist y cuándo una List Report analítica. Con el arranque real del asistente en Business Application Studio.
25 jun 2026
Fiori tools en VS Code: el tooling que hace productivo Fiori Elements
Las anotaciones son el lenguaje, pero sin buen tooling escribirlas a mano es un suplicio. Los Fiori tools (asistente, guided development, cds watch) convierten metadatos en productividad. Con el flujo real de arranque.
23 jun 2026
Extension points en Fiori Elements: cuándo está justificado salir del carril
Fiori Elements te da mucho gratis, pero a veces necesitas algo que la plantilla no cubre. Los extension points son la salida controlada. Cuándo usarlos, cuándo no, y por qué las metadata extensions son la primera opción.
21 jun 2026
Draft y acciones en Fiori Elements: cuando la pantalla hace algo más que mostrar
El borrador y las acciones son lo que convierte una app de solo lectura en una aplicación de negocio. Cómo el draft de RAP y las acciones enlazadas a métodos ABAP se declaran, no se programan a mano.
18 jun 2026
Anotaciones UI: lineItem, facets y headerInfo, el lenguaje de Fiori Elements
La pantalla de una app Fiori Elements se dibuja con anotaciones, no con XML. LineItem para la tabla, HeaderInfo para la cabecera, Facets para organizar el detalle. Con anotaciones CDS reales.
17 jun 2026
TypeScript en SAPUI5: del @ts-nocheck a tipos que te avisan antes de romper
Los proyectos UI5 llevan años simulando tipos con JSDoc. TypeScript los hace de verdad: eventos tipados, imports ES6 y errores en tiempo de compilación. Cómo dar el salto sin reescribir la app entera.
15 jun 2026
Routing en SAPUI5: navegación con URL, no con setVisible
Rutas, patrones y parámetros en el manifest, y un router que sincroniza el hash con la vista. Cómo pasar de una lista a un detalle sin ocultar controles a mano, con navegación de regreso que respeta el historial.
13 jun 2026
El manifest.json: la única fuente de verdad de tu app UI5
Modelos, rutas, dependencias, i18n y versión mínima de UI5 declarados en un solo fichero. Deja de instanciar modelos a mano en el componente y describe la app en el descriptor. Con JSON real.
12 jun 2026
sap.ui.define y carga asíncrona: el fin de las variables globales en UI5
AMD, dependencias explícitas, async:true y ComponentSupport en lugar de scripts inline. Por qué sap.ui.require sustituye a los globales y cómo esto encaja con la CSP. Con código real de bootstrap.
9 jun 2026
Data binding en SAPUI5: deja de mover datos a mano
JSONModel para lo local, ODataModel para el backend, y un binding que refresca la UI solo. Property, aggregation, expression y formateadores personalizados, con código real de una lista de facturas.
7 jun 2026
Arquitectura MVC en SAPUI5: por qué el controlador no es el cubo de basura
Vista, modelo y controlador tienen fronteras claras. Cuando las respetas, la app se mantiene sola; cuando no, el controlador acaba con 800 líneas de todo. Lo vemos con código XML y JavaScript real.
5 jun 2026
Wrappers para código legacy: consumir lo viejo sin contaminar lo nuevo
No puedes reescribir veinte años de ABAP clásico de golpe, pero tampoco puedes dejar que ensucie tu capa cloud. La estrategia de wrappers y el Tier 2 son el puente. Con patrón y código real.
2 jun 2026
ABAP SQL en ABAP Cloud: qué cambia respecto al clásico (y por qué es mejor)
En ABAP Cloud el SQL sigue siendo SQL, pero el lenguaje te quita las muletas: nada de acceso directo a tablas del core, nada de CLIENT SPECIFIED a lo loco, WHERE siempre. Repasamos los cambios con código real.
1 jun 2026
La usage list: cómo saber, en frío, si una clase está liberada
Antes de llamar a un objeto estándar en ABAP Cloud, la pregunta no es si existe, sino si está liberado para tu uso. Te enseñamos a comprobarlo de verdad: contract check, usage list y estado de release.
30 may 2026
Los tres niveles de extensibilidad en ABAP Cloud: elige antes de programar
Key user, developer, side-by-side. Antes de escribir la primera línea, decide en qué nivel vive tu extensión. Elegir mal no es un detalle: condena el código al próximo upgrade. Con árbol de decisión y ejemplo.
28 may 2026
ATC: qué es y por qué jubila al Code Inspector
El ABAP Test Cockpit no es un Code Inspector con otro nombre. Es un motor de calidad integrado en ADT, con exenciones gobernadas y ejecución masiva sobre paquetes y transportes. Lo explicamos sin humo.
25 may 2026
ATC en CI: que la calidad no dependa de la memoria de nadie
Ejecución en background, Result Browser y la puerta de calidad en la liberación de transportes convierten al ATC en un control continuo. Así se lleva la calidad al pipeline, no al final del sprint.
24 may 2026
Rojos, amarillos y azules: cómo priorizar hallazgos del ATC sin ahogarte
Un ATC con tres mil findings no es información: es ruido. Prioridades, agrupaciones y baseline convierten esa lista imposible en una cola de trabajo real. Con criterio, no con fuerza bruta.
22 may 2026
ATC como radar de readiness a ABAP Cloud
Antes de migrar a ABAP Cloud, la variante ABAP_CLOUD_READINESS te dice exactamente qué de tu código sobrevive y qué no. Es el mapa que convierte una migración a ciegas en un plan.
20 may 2026
ATC en el flujo: exenciones y pragmas sin barrer bajo la alfombra
Pragmas, pseudocomentarios y exemptions son las tres formas de decirle al ATC que un hallazgo es intencionado. Usadas bien, mantienen limpio el flujo. Usadas mal, esconden bombas. La diferencia.
19 may 2026
Check variants y baseline: el ATC no mide igual para todos
ABAP_CLOUD_DEVELOPMENT_DEFAULT, ABAP_CLOUD_READINESS, ABAP_CLOUD_DEVELOPMENT_PARTNER. Elegir variante y fijar una baseline es lo que separa un ATC útil de un mar de warnings que nadie lee.
16 may 2026
Mover código entre sistemas con abapGit, sin STMS de por medio
abapGit puede llevar tu desarrollo de un sistema a otro sin una sola orden de transporte. Es potente y peligroso a partes iguales. Aquí está cómo funciona, cuándo tiene sentido y dónde NO deberías usarlo.
14 may 2026
abapGit: qué es y por qué deberías versionar tu ABAP de una vez
abapGit es un cliente Git escrito en ABAP que corre dentro del propio sistema. No es un capricho de la comunidad: es la forma de sacar tu código del ostracismo del transporte y ponerlo bajo control de versiones real.
12 may 2026
Repos online vs offline en abapGit: cuándo conecta y cuándo no
abapGit tiene dos modos de repositorio: online, atado a un GitHub remoto, y offline, un ZIP que llevas a mano. No son lo mismo ni sirven para lo mismo. Elegir mal te cuesta un flujo de trabajo entero.
9 may 2026
abapGit en producción: buenas prácticas y los errores que verás sí o sí
Objetos no soportados, dependencias fantasma, tokens caducados, master language mal fijado. abapGit funciona de maravilla hasta que te muerde uno de estos. Aquí está la lista de lo que sale mal y cómo evitarlo.
8 may 2026
Flujo de trabajo en abapGit: staging, commit, push, pull y ramas sin dramas
El ciclo diario de abapGit no es magia: es git add, git commit y git push traducidos a ADT. Aquí está el flujo real, con la vista Staging, los mensajes de commit que sirven y por qué las ramas te salvan.
6 may 2026
El .abapgit.xml y el mapeo de paquetes: la pieza que casi nadie mira
Ese fichero pequeño en la raíz del repo decide cómo se traducen los paquetes ABAP a carpetas y viceversa. Folder logic FULL o PREFIX, master language, starting folder. Aquí está lo que hace y por qué importa.
4 may 2026
SOAMANAGER y la configuración de endpoints: la transacción que separa definir un servicio de publicarlo
Activar la definición de un servicio no lo hace accesible. SOAMANAGER genera el WSDL y el binding; y el fichero hosts, ese gran olvidado, puede tumbar un servicio impecable. Guía sin humo del despliegue SOAP.
1 may 2026
Seguridad en Web Services ABAP: usuarios de comunicación, perfiles de autenticación y el error de usar un diálogo
Un servicio expuesto sin usuario de comunicación y sin perfil de seguridad es una puerta abierta al ERP. Repasamos los cuatro perfiles de SAP, por qué el usuario tipo C existe y qué rol darle sin pasarte.
30 abr 2026
Errores y faults en Web Services ABAP: el SOAP Fault, el código HTTP y por qué un 200 no significa que fue bien
El envelope SOAP tiene un cuarto elemento que casi nadie usa: el fault. En REST el error viaja en el código HTTP. Gestionar bien ambos es lo que separa una integración robusta de una que falla en silencio.
28 abr 2026
Consumir un servicio externo desde ABAP: consumer proxy, puerto lógico y cuándo bajar a HTTP
Dos formas de llamar a un servicio desde SAP: el proxy generado por wizard con su puerto lógico, o CL_HTTP_CLIENT a pelo. Cuándo usar cada una y por qué el puerto lógico es la pieza que todos olvidan.
26 abr 2026
Crear un Web Service Provider en ABAP: de la BAPI al servicio publicado sin humo
RFC, BAPI o clase proxy: tres puertas para exponer lógica SAP como servicio SOAP. Te enseñamos cuál elegir, el flujo real con Enterprise Service y SOAMANAGER, y el error de formato que rompe integraciones.
25 abr 2026
SOAP vs REST en ABAP: cuándo cada uno y por qué el debate suele estar mal planteado
SOAP no es viejo ni REST es moderno: son un protocolo y un patrón. En ABAP conviven, y elegir bien te ahorra WSDLs innecesarios o parsers escritos a mano. Con ejemplos reales de payload.
22 abr 2026
SEGW frente a CDS: el SAP Gateway no ha muerto, ha cambiado de sitio
El modelo clásico del SAP Gateway con SEGW, clases MPC y DPC, sigue vivo en muchos sistemas. El enfoque CDS moderno es más limpio, pero no siempre es el que toca. Cuándo cada uno, sin dogma.
20 abr 2026
OData desde CDS: @OData.publish o Service Definition, no es lo mismo
Publicar un servicio OData desde una vista CDS con una sola anotación es tentador. Pero @OData.publish y el par Service Definition + Service Binding resuelven problemas distintos. Cuándo usar cada uno, con código real.
18 abr 2026
Rendimiento en OData: $filter, $select y paginación o el servicio se arrastra
Un servicio OData que devuelve todas las columnas de todas las filas es una bomba de relojería. $select recorta lo ancho, $filter recorta lo alto y la paginación evita traer el mundo. Las tres teclas del rendimiento, con ejemplos reales.
15 abr 2026
$expand y navegación en OData: una llamada, no diez
Traer un cliente y después, en otra petición, sus pedidos, es el patrón que mata el rendimiento de una app Fiori. $expand y las navegaciones por asociación resuelven en una sola llamada lo que muchos hacen en N. Con detalle real.
14 abr 2026
CRUD y Function Imports en OData: cuando el CRUD no basta
Create, Read, Update, Delete cubren el 90 por ciento de un servicio OData. El otro 10 por ciento son acciones que no son ni crear ni leer: ahí entran los Function Imports. Cómo distinguirlos y no meter lógica donde no toca.
12 abr 2026
OData V2 o V4 en ABAP: cuál elegir sin engañarte
V2 lleva una década en producción; V4 es el futuro y lo que pide Fiori moderno. Cuándo va cada uno, qué te aporta V4 de verdad y por qué migrar por moda es un error. Con ejemplo real de proyecto SEGW.
10 abr 2026
Las reglas de oro del SELECT en HANA: nada de SELECT * ni bucles anidados
HANA es rápida, pero no perdona el SELECT dentro de un LOOP ni el SELECT *. Las cinco reglas que separan un acceso a datos que vuela de uno que arrastra todo el sistema.
7 abr 2026
Analizar rendimiento en HANA: mide con ST05, SQLM, SAT, ATC y SWLT
Optimizar sin medir es superstición. Un recorrido honesto por las herramientas que HANA y ABAP te dan para encontrar el SQL lento de verdad: cada una sirve para algo distinto.
6 abr 2026
Code pushdown en la práctica: qué empujar y hasta dónde
El pushdown no es magia del optimizador: es una decisión tuya. CASE, funciones SQL, WITH, UNION y hints. Repasamos qué se puede empujar a HANA con ABAP SQL y cuándo NO deberías.
4 abr 2026
Code-to-data: deja de traer la base de datos al ABAP
El paradigma code-to-data no es una moda de HANA: es admitir que mover millones de filas al servidor de aplicaciones para sumarlas en un LOOP fue siempre un error. Lo explicamos con ejemplos reales.
2 abr 2026
CDS Table Functions: cuando una vista CDS no basta y necesitas SQLScript
Las Table Functions unen lo mejor de CDS y AMDP: modelas como una entidad CDS pero la implementas en SQLScript. Cuándo usarlas, cómo se cablean las dos piezas y el truco de los SELECT-OPTIONS.
1 abr 2026
AMDP: SQLScript dentro de una clase ABAP (sin usuario de base de datos)
Las ABAP Managed Database Procedures te dejan escribir SQLScript de HANA como un método de clase, transportado como código ABAP. Cuándo tiene sentido, cómo se declara y por qué no es la primera opción.
29 mar 2026
Parámetros en CDS: deja de clonar la misma vista doce veces
Una vista con el año y la sociedad hardcodeados en el WHERE no es reutilizable, ensucia el plan cache y te obliga a mantener copias. Los parámetros tipados resuelven las tres cosas. Con DDL real y la trampa de la recompilación.
27 mar 2026
Asociaciones vs joins en CDS: el detalle que cambia el plan de HANA
Un JOIN siempre se ejecuta; una asociación solo cuando alguien navega. En vistas reutilizadas eso reduce entre un 30 y un 80 por ciento la transferencia. Con DDL real y la trampa de la cardinalidad.
25 mar 2026
Las seis anotaciones de CDS que deberías declarar siempre (y una que puede mentirte)
compareFilter, authorizationCheck, clientHandling, preserveKey. No son adorno: su ausencia cuesta entre un 15 y un 30 por ciento en vistas con joins, y una de ellas mal puesta devuelve resultados incorrectos sin avisar.
22 mar 2026
Rendimiento en CDS: la lógica va donde están los datos, no al revés
El LOOP con SELECT SINGLE dentro era normal en ECC. En S/4HANA es el pecado capital. Code pushdown, por qué el join nativo gana a FOR ALL ENTRIES y la función de string que convierte 1 segundo en 60.
21 mar 2026
Anotaciones analíticas y semánticas: la CDS que Fiori y SAC entienden solas
Un decimal sin @Semantics es solo un número. Con las anotaciones correctas, Fiori formatea la moneda, SAC convierte divisas y el drill-down temporal funciona sin una línea de código de UI. Con DDL real de cubo y dimensión.
19 mar 2026
El patrón MVC de Web Dynpro ABAP: por qué separar no es opcional
Modelo, Vista, Controlador. Web Dynpro no te sugiere MVC: te lo impone. Entender esa arquitectura es la diferencia entre una app que sobrevive al mantenimiento y un dynpro clásico disfrazado de web.
17 mar 2026
Floorplan Manager frente a Web Dynpro clásico: cuándo estandarizar y cuándo migrar
FPM no reemplaza a Web Dynpro: lo estandariza. UIBB, floorplans y configuración frente a vistas hechas a mano. Y la pregunta incómoda: cuándo tiene sentido seguir en WD y cuándo saltar a Fiori.
14 mar 2026
Componentes reutilizables en Web Dynpro: component usage sin acoplamiento
Reutilizar un componente Web Dynpro no es copiar y pegar. Es declarar el uso, instanciar el component usage y mapear contextos. Bien hecho, escala; mal hecho, acopla todo con todo.
13 mar 2026
Eventos, acciones y navegación en Web Dynpro: el flujo que hay que ver
De un clic a un cambio de vista. Acciones, plugs de entrada y salida, enlaces de navegación y el modelo de fase. Si entiendes este flujo, dejas de programar a ciegas.
11 mar 2026
Controladores y componentes en Web Dynpro: quien manda y quien expone
Controlador de vista, controlador global, controlador de interfaz. Entender los tres tipos y los metodos hook es lo que separa a quien copia snippets de quien disena componentes reutilizables.
9 mar 2026
El context de Web Dynpro: nodos, atributos y binding sin dramas
El context es la memoria de tu aplicación Web Dynpro. Nodos, cardinalidad y binding automático. Domina esto y la mitad de los bugs de una app WD desaparecen antes de nacer.
8 mar 2026
Catálogo de campos, layout y variantes: lo que sostiene el ALV
Columnas, textos, visibilidad, layout y variantes que el usuario guarda. Con SALV se hace con objetos tipados, no con estructuras planas. Cierre de la serie ALV con código ABAP real.
5 mar 2026
ALV editable: edición y validación sin dramas
Cuando el usuario escribe en la celda, empieza tu responsabilidad. data_changed para validar, F4 para ayudas, y persistir con user command. El grid editable con código ABAP real.
3 mar 2026
Toolbar y funciones propias en ALV: botones que hacen tu trabajo
La barra estándar es solo el principio. Con SALV añades funciones propias con add_function; con ALV Grid, botones en el evento toolbar. Vemos ambos caminos con código ABAP real.
1 mar 2026
Eventos y hotspots en ALV: cuando el listado empieza a responder
Hotspot, double-click, user command. La interacción en ALV Grid va por eventos y handlers, no por callbacks sueltos. Vemos el patrón con SET HANDLER y código ABAP real de un evento hotspot.
26 feb 2026
Un ALV en diez líneas con CL_SALV_TABLE
El listado más rápido que puedes escribir en ABAP clásico: factory, display y poco más. Vemos el mínimo real con CL_SALV_TABLE, en pantalla completa y dentro de un container, con código ABAP real.
25 feb 2026
SALV vs REUSE_ALV: por qué CL_SALV_TABLE es el camino
El zoo de funciones REUSE_ALV_* funciona, pero envejece mal. Comparamos la familia clásica con CL_SALV_TABLE y explicamos por qué la clase es el estándar moderno. Con código ABAP real.
23 feb 2026
Host expressions y la @: tu primera defensa contra la inyección en ABAP SQL
Variables host, host expressions con @( ... ) y SQL dinámico. La diferencia entre pasar un valor y concatenar una cadena es la diferencia entre un sistema seguro y uno con una puerta abierta. Con código real.
21 feb 2026
CTEs con WITH y subconsultas: consultas por pasos sin vistas de usar y tirar
La Common Table Expression (WITH +cte AS ...) descompone una consulta compleja en pasos legibles que viven dentro de la sentencia. Con código real, el prefijo + obligatorio y el cierre ENDWITH que se olvida.
18 feb 2026
Agregaciones y GROUP BY: que la base te devuelva los totales, no las lineas
SUM, COUNT, MAX y GROUP BY en la sentencia. Sumar en un LOOP es traer diez mil lineas para producir tres. Con código real sobre las tablas de vuelos y el filtro HAVING que muchos olvidan.
17 feb 2026
Expresiones SQL en ABAP: deja que la base calcule por ti
CASE, aritmética y funciones dentro del SELECT. Todo lo que resuelvas en la sentencia es cálculo que no sube a ABAP. Con código real de CASE, CAST, DIVISION, ROUND y funciones de cadena.
15 feb 2026
JOIN en la base o bucle anidado: el patrón que decide tu rendimiento
El SELECT dentro de un LOOP sigue apareciendo en cada revisión de código. Un JOIN resuelve en un viaje lo que un bucle anidado resuelve en miles. Lo vemos con código real sobre las tablas de vuelos.
13 feb 2026
ABAP SQL moderno: por qué la sintaxis con comas y @ no es cosmética
Comas entre columnas, INTO al final, declaraciones en línea con @DATA y variables host con @. La nueva sintaxis de Open SQL no es azúcar: es lo que activa el modo estricto y te salva de errores silenciosos.
12 feb 2026
Eventos en ABAP OO: el emisor no sabe quién escucha, y así debe ser
EVENTS, RAISE EVENT y SET HANDLER permiten desacoplar quien provoca una acción de quien reacciona. El modelo emisor-manejador de ABAP, con sus trampas de orden y registro. Con ABAP OO real.
9 feb 2026
Excepciones basadas en clases en ABAP: deja de mirar sy-subrc
TRY CATCH, la jerarquia de CX_ROOT y el encadenamiento con PREVIOUS. Por que las excepciones de clase le ganan a sy-subrc y como no perder la causa raiz de un error. Con ABAP OO real.
7 feb 2026
Polimorfismo y casting en ABAP: la referencia del padre, el método del hijo
El polimorfismo permite tratar objetos distintos por un único punto de acceso. Narrowing y widening cast, cuándo son seguros y cuándo lanzan CX_SY_MOVE_CAST_ERROR. Con ABAP OO real.
5 feb 2026
Interfaces frente a herencia en ABAP: elige contrato, no árbol genealógico
ABAP solo admite herencia simple y resuelve la herencia múltiple con interfaces. Cuándo heredar, cuándo implementar una interfaz y por qué casi siempre gana la interfaz. Con ABAP OO real.
2 feb 2026
Encapsulación en ABAP: cada atributo público es una deuda
PUBLIC, PROTECTED, PRIVATE y READ-ONLY no son burocracia. Son el contrato de tu clase con el resto del sistema, y declarar de más hoy se paga en cada evolución. Con ejemplos de ABAP OO real.
1 feb 2026
Clases y objetos en ABAP: el molde no es el mueble
Una clase es una plantilla; un objeto es una instancia con estado propio. Entender esa diferencia, y el papel de NEW frente a CREATE OBJECT, es lo que separa el ABAP OO real del procedimental disfrazado.
30 ene 2026