SAP ofrece dos plataformas principales para el desarrollo ABAP: el clásico On-Premise y el moderno SAP BTP ABAP Environment. Este artículo compara ambas opciones.
Resumen de la comparación
| Aspecto | On-Premise | SAP BTP |
|---|---|---|
| Infraestructura | Propia/Data Center | Cloud SAP |
| Mantenimiento | Cliente | SAP |
| Actualizaciones | Manual | Automáticas |
| Modelo de desarrollo | Clásico + Cloud | Solo Cloud |
| APIs | Todas | Solo liberadas |
| Costes | CAPEX | OPEX |
| Escalabilidad | Manual | Automática |
Diferencias técnicas
1. Modelo de desarrollo
On-Premise
" On-Premise: Acceso completo a todas las APIsCALL FUNCTION 'BAPI_MATERIAL_GETLIST'.SELECT * FROM mara.CALL FUNCTION 'POPUP_TO_CONFIRM'.SAP BTP
" BTP: Solo APIs liberadas (ABAP Cloud)SELECT * FROM I_Product. " CDS View liberada" BAPI_MATERIAL_GETLIST no disponible" POPUP_TO_CONFIRM no disponible2. Arquitectura de sistema
On-Premise
┌─────────────────────────────────────┐│ Sistema SAP ERP ││ ┌─────────┐ ┌─────────┐ ┌───────┐ ││ │ Dynpro │ │ ALV │ │ BAPI │ ││ └─────────┘ └─────────┘ └───────┘ ││ ┌─────────────────────────────────┐││ │ ABAP Stack completo │││ └─────────────────────────────────┘││ ┌─────────────────────────────────┐││ │ Base de datos │││ └─────────────────────────────────┘│└─────────────────────────────────────┘SAP BTP
┌─────────────────────────────────────┐│ Fiori Launchpad │└───────────────┬─────────────────────┘ │┌───────────────▼─────────────────────┐│ OData Services │└───────────────┬─────────────────────┘ │┌───────────────▼─────────────────────┐│ ABAP Environment (RAP) ││ ┌─────────┐ ┌─────────┐ ┌───────┐ ││ │ CDS │ │Behavior │ │Service│ ││ └─────────┘ └─────────┘ └───────┘ │└───────────────┬─────────────────────┘ │┌───────────────▼─────────────────────┐│ SAP HANA Cloud │└─────────────────────────────────────┘3. Ciclo de vida de desarrollo
On-Premise
DEV -> QA -> PRD (Transporte clásico) │ ▼ SE09/STMSSAP BTP
Git Repository │ ▼┌───────────────────┐│ abapGit Push │└───────┬───────────┘ │ ▼┌───────────────────┐│ Software ││ Components │└───────┬───────────┘ │ ▼┌───────────────────┐│ Pull to ││ Target System │└───────────────────┘Casos de uso
Cuándo usar On-Premise
| Escenario | Razón |
|---|---|
| Código legacy extenso | Migración gradual |
| Requisitos regulatorios estrictos | Control de datos |
| Integraciones complejas existentes | BAPIs/RFCs |
| Modificaciones del estándar | Acceso completo |
Cuándo usar SAP BTP
| Escenario | Razón |
|---|---|
| Nuevos desarrollos (greenfield) | Clean Core |
| Side-by-Side Extensions | Sin impacto en ERP |
| Aplicaciones Fiori modernas | RAP + Fiori Elements |
| Escalabilidad requerida | Auto-scaling |
| Sin infraestructura propia | SaaS |
Comparación de costes
On-Premise (CAPEX)
Inversión inicial:├── Hardware $$$$$├── Licencias SAP $$$$├── Instalación $$├── Personal IT $$$└── Mantenimiento anual $$ ─────Total primer año $$$$$$$Años siguientes $$$SAP BTP (OPEX)
Costes recurrentes:├── Suscripción BTP $$├── ABAP Environment $$├── Usuarios (por mes) $├── Almacenamiento $└── Tráfico de red $ ─────Por mes $$$Por año $$$$Diferencias en desarrollo
Creación de objetos
On-Premise (SE80/ADT)
" Crear tabla en SE11" Crear clase en SE24" Crear módulo de función en SE37SAP BTP (Solo ADT)
" Todo en ADT con DDL" Tabla como DDL Source" Solo clases (no FM clásicos)Debugging
On-Premise
- Debugger clásico (SE80)
- ADT Debugger
- ST05 SQL Trace
- SAT Runtime Analysis
SAP BTP
- Solo ADT Debugger
- ABAP Profiler
- SQL Trace (limitado)
Transporte
On-Premise
" ClásicoOrden de transporte -> QA -> PRD STMSSAP BTP
" Git-basedgit commit -> Software Component -> Pull gCTSMigración entre plataformas
De On-Premise a BTP
-
Análisis de compatibilidad
" Ejecutar ATC con perfil ABAP_CLOUD" Identificar APIs no liberadas -
Refactorización
" Antes (On-Premise)CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'." Después (BTP compatible)DATA(lv_month) = EXTRACT( MONTH FROM lv_date ). -
Migración de datos
- Exportar como archivo
- APIs de migración
- Replicación
De BTP a On-Premise
Generalmente no necesario, pero posible:
- El código ABAP Cloud funciona en On-Premise (7.50+)
- CDS Views son compatibles
- Solo se necesitan ajustes mínimos
Integración entre sistemas
Llamada desde On-Premise a BTP
" On-Premise: Consumir OData de BTPDATA(lo_client) = cl_http_client=>create_by_destination( 'BTP_SYSTEM' ).lo_client->request->set_uri( '/sap/opu/odata/sap/ZSB_SERVICE' ).lo_client->send( ).Llamada desde BTP a On-Premise
" BTP: Usando Cloud ConnectorDATA(lo_destination) = cl_http_destination_provider=>create_by_cloud_destination( i_name = 'ON_PREMISE_ERP').DATA(lo_client) = cl_web_http_client_manager=>create_by_http_destination( lo_destination ).Notas importantes / Mejores prácticas
- Nuevos proyectos: Considera SAP BTP para Clean Core.
- Código existente: Evalúa el esfuerzo de migración con ATC.
- Estrategia híbrida: On-Premise para core, BTP para extensiones.
- Costes: Calcula TCO (Total Cost of Ownership) a 5 años.
- Skills: BTP requiere conocimientos de RAP, CDS, Fiori.
- Roadmap SAP: SAP impulsa la adopción de BTP y ABAP Cloud.
- Usa abapGit para gestión de código en ambas plataformas.