Desarrollo e integración · talla L

Aplicación de punta a punta con Fiori Elements y RAP

Problema
Un proceso de aprobación de pedidos que vivía en correos, planillas y transacciones de SAP GUI.
Solución
Modelo CDS, comportamiento en ABAP RAP, servicio OData V4 y app Fiori Elements, con las autorizaciones en el servicio y no en la pantalla.
Alcance
  • Fiori Elements
  • RAP managed
  • OData V4
  • 3 a 4 semanas
zr_pedido.bdef
managed implementation in class zbp_r_pedido unique;
strict ( 2 );

define behavior for ZR_Pedido alias Pedido
persistent table zpedido
lock master
authorization master ( instance )
{
  update;
  action aprobar result [1] $self;
  validation validarImporte on save { create; update; }
}

Consultoría y arquitectura · talla S

Habilitación de la cuenta global de SAP BTP

Problema
Una cuenta global recién contratada, sin estructura, sin SSO corporativo y con cada equipo creando subcuentas a su manera.
Solución
Directorios y subcuentas por entorno, entitlements asignados de forma explícita, IAS federado con el directorio corporativo y role collections por perfil.
Alcance
  • Directorios y subcuentas
  • Entitlements
  • IAS y SSO
  • 1 a 2 semanas
habilitacion.sh
# Un directorio por proyecto y una subcuenta por entorno
btp create accounts/directory --display-name "Proyecto Pedidos"
btp create accounts/subaccount --display-name "pedidos-dev" \
  --region us10 --subdomain pedidos-dev --directory "$DIR_ID"

# Cuotas explícitas y acceso por role collection
btp assign accounts/entitlement --to-subaccount "$SUBACCOUNT_ID" \
  --for-service cloudfoundry --plan standard --enable true
btp assign security/role-collection "Subaccount Viewer" \
  --to-user ana@empresa.cl --subaccount "$SUBACCOUNT_ID"

Consultoría y arquitectura · talla XL

Migración de ECC a S/4HANA con clean core

Problema
Un ECC con cientos de desarrollos Z y modificaciones al estándar, y una migración que no podía arrastrarlos tal cual.
Solución
Inventario del código propio con ATC, decisión caso a caso (eliminar, volver al estándar, in-app o side-by-side) y reescritura de lo necesario en ABAP Cloud sobre APIs liberadas.
Alcance
  • Análisis de código propio
  • ABAP Cloud
  • Extensiones a BTP
  • Más de 1 mes
zcl_pedidos_abiertos.clas.abap
" Antes: lectura directa de tablas del estándar
" SELECT * FROM vbak INTO TABLE @lt_vbak WHERE ...

" Después: vista CDS liberada, estable entre versiones
SELECT FROM I_SalesOrder
  FIELDS SalesOrder, SoldToParty, TotalNetAmount
  WHERE SalesOrderDate >= @lv_desde
  INTO TABLE @DATA(lt_pedidos).

Desarrollo e integración · talla M

Extensión side-by-side de un proceso estándar

Problema
El negocio necesitaba un paso de aprobación que el estándar no tiene, y la primera propuesta era modificar el core.
Solución
Extensión en SAP BTP que escucha los eventos de S/4HANA, aplica la lógica nueva en CAP y consulta el pedido por API, sin tocar el estándar.
Alcance
  • Eventos de S/4HANA
  • CAP · Node.js
  • Sin modificaciones al core
  • 2 a 3 semanas
srv/aprobaciones.js
const cds = require('@sap/cds');

module.exports = async () => {
  const s4 = await cds.connect.to('API_SALES_ORDER_SRV');
  const messaging = await cds.connect.to('messaging');

  messaging.on('sap.s4.beh.salesorder.v1.SalesOrder.Created.v1', async (msg) => {
    const pedido = await s4.read('A_SalesOrder', msg.data.SalesOrder);
    if (pedido.TotalNetAmount > 10000) {
      await INSERT.into('Aprobaciones').entries({ pedido: pedido.SalesOrder });
    }
  });
};

Desarrollo e integración · talla M

App Fiori sobre CAP en Cloud Foundry

Problema
El área comercial necesitaba registrar visitas a clientes desde el móvil, con datos que no pertenecen a S/4HANA.
Solución
Servicio CAP con su propio modelo en SAP HANA Cloud, app Fiori Elements desplegada en Cloud Foundry y acceso con IAS.
Alcance
  • CAP · Node.js
  • SAP HANA Cloud
  • Fiori Elements
  • 2 a 3 semanas
db/schema.cds
namespace comercial;
using { cuid, managed } from '@sap/cds/common';

entity Visitas : cuid, managed {
  cliente   : String(80) @mandatory;
  fecha     : Date;
  resultado : String enum { interesado; seguimiento; descartado };
  notas     : LargeString;
}

¿Tu proyecto se parece a alguno?

Cuéntanos el caso y te respondemos con el enfoque, el tamaño estimado y una propuesta.