Introducción
Dándose solo dos semanas, un grupo ambicioso de desarrolladores de SAP S/4HAHA Cloud trabajando en Facturación de Ventas recientemente se propuso mostrar qué tan rápido podían construir una solución empresarial personalizada simple (¡pero viable!) en un entorno de desarrollo en la nube de ABAP Cloud.
La idea era crear una aplicación simple con una interfaz de usuario altamente simplificada, basada en el Modelo de Programación de Aplicaciones Restful ABAP (RAP), que aprovechara las interfaces de objetos comerciales (BOIs) publicadas recientemente para Facturación de Ventas en SAP S/4HANA Cloud, edición pública.
Nuestra visión era permitir a los usuarios crear rápidamente y fácilmente facturas de clientes "manuales" (es decir, facturas sin un documento de venta o entrega previo) a pedido en SAP S/4HANA Cloud, edición pública, evitando las dependencias habituales que ralentizan comúnmente la creación de facturas. Ingresar solo el cliente y el producto vendido debería ser idealmente suficiente para crear la factura requerida.
Sigue leyendo a continuación para obtener un resumen de nuestras ideas y resultados.
Para una breve demostración de la aplicación en acción, consulta el siguiente video:
Motivación
La historia empresarial que impulsa nuestro caso de uso seleccionado proviene del escenario de ventas directas, que permite a las empresas vender bienes "espontáneamente" (por ejemplo, rechazos de fábrica con descuento) sin pasar por el proceso estándar de venta desde el stock y la cadena de documentos SD asociada, contabilización de inventario, etc. Este escenario exige la capacidad de crear rápidamente facturas de clientes a pedido, para que puedan ser presentadas a los clientes y contabilizadas en contabilidad financiera.
Nuestra visión técnica requería un nuevo objeto comercial personalizado que permitiera la persistencia flexible basada en borradores de los datos de facturación que el usuario ingresa para su factura. Buscando un nombre tanto para este nuevo objeto como para el proyecto en sí, nos decidimos por "Solicitud de Factura Manual" (MIR).
Implementación y Realización
Mientras que algunos desarrolladores del grupo tenían experiencia previa con el desarrollo en la nube de ABAP y la creación de nuevos objetos comerciales RAP, otros estaban entrando en un mundo completamente nuevo.
Guiados por
este tutorial oficial de RAP
, pudimos realizar la primera versión de nuestra interfaz de usuario en solo dos días. Aparte de la definición de tablas de base de datos para el encabezado y los ítems del nuevo objeto MIR, el resto fue básicamente proporcionado "listo para usar" por el modelo RAP predefinido, ¡incluido el manejo de borradores!
El siguiente gráfico proporciona una descripción general de los componentes requeridos para nuestra aplicación.
Para mantenerlo simple, nuestro nuevo objeto comercial consiste solo de dos entidades, que representan el nivel de encabezado y de ítems de la solicitud de factura manual. El nombre del cliente y la descripción del producto se obtuvieron de los datos maestros relevantes del sistema central a través de asociaciones.
Por supuesto, crear una factura de cliente requiere datos adicionales más allá de solo los ID del cliente y del producto vendido. Por lo tanto, introdujimos el concepto de una "unidad de facturación" para proporcionar esta información. La unidad de facturación comprende la unidad de venta y la planta, y, para simplificar, también la moneda del documento a utilizar. Las unidades de facturación se asignaron a cada empleado a través de una segunda tabla personalizada.
Para obtener datos comerciales como montos netos e impuestos desde el backend de SAP S/4HANA Cloud, elegimos implementar un paso obligatorio de "Preparar Factura" que el usuario activa manualmente. Este paso pasa los datos ingresados por el usuario de la solicitud de factura manual, junto con la tabla personalizada de la unidad de facturación, al
BOI Solicitud de Documento de Facturación
en forma de una solicitud de EML (Lenguaje de Manipulación de Entidades).
El sistema responde creando una solicitud de documento de facturación en segundo plano, que luego sirve como un documento previo (invisible para el usuario) de la factura de cliente. La respuesta inicial nos permite establecer (y luego actualizar) los datos comerciales y el estado de procesamiento de la solicitud de factura manual.
El siguiente fragmento de código proporciona un ejemplo de tal solicitud de EML al BOI Solicitud de Documento de Facturación:
MODIFY ENTITIES OF I_BillingDocumentRequestTP
ENTITY BillingDocumentRequest
EXECUTE CreateFromExternalData AUTO FILL CID
WITH