Su Plantilla de Datos para el Procesamiento de Devoluciones y Reembolsos
Su Plantilla de Datos para el Procesamiento de Devoluciones y Reembolsos
- Atributos recomendados para recopilar
- Actividades clave para el seguimiento
- Guía de Extracción
Atributos de Gestión de Devoluciones y Reembolsos
| Nombre | Descripción | ||
|---|---|---|---|
| Hora del Evento EventTime | La marca de tiempo precisa que indica cuándo ocurrió una actividad específica. | ||
| Descripción La hora del evento (Event Time) captura la fecha y hora en que se registró un evento de negocio en el sistema. Esta marca de tiempo es crucial para ordenar las actividades cronológicamente y para todo análisis basado en el tiempo. En Process Mining, este atributo se utiliza para calcular los tiempos de ciclo entre actividades, identificar la duración de cada paso y analizar el rendimiento del proceso a lo largo del tiempo. Es la base para descubrir cuellos de botella, monitorear el cumplimiento de los SLA y comprender la dinámica temporal del proceso de devoluciones. Por qué es importante Esta marca de tiempo es esencial para ordenar eventos, calcular todas las duraciones y tiempos de ciclo, e identificar retrasos en el proceso. Dónde obtener Típicamente obtenido de campos de fecha y hora asociados con la creación de documentos o cambios de estado, como ERDAT (Fecha de Creación) y ERZET (Hora de Creación) en tablas como VBAK, LIKP y BKPF, o la fecha de contabilización (BUDAT) en documentos contables. Ejemplos 2023-10-26T10:05:00Z2023-10-27T14:30:15Z2023-10-28T09:00:00Z | |||
| ID de Caso de Devolución ReturnCaseId | El identificador único para un único proceso de devolución de cliente, vinculando todas las actividades relacionadas desde el inicio hasta el cierre. | ||
| Descripción El ID de Caso de Devolución sirve como identificador principal que agrupa todos los eventos y actividades pertenecientes a una única instancia de devolución. A cada solicitud de devolución de cliente se le asigna un ID único, lo que permite un seguimiento de principio a fin de todo el proceso. En Process Mining, este atributo es fundamental para reconstruir el flujo del proceso. Permite el análisis de las duraciones de los casos, las variantes del proceso y los cuellos de botella conectando eventos dispares como 'Solicitud de Devolución Iniciada', 'Mercancía Recibida' y 'Reembolso Procesado' en una línea de tiempo coherente para cada devolución específica. Por qué es importante Esta es la clave esencial para rastrear una devolución de principio a fin, permitiendo todos los análisis a nivel de caso, incluyendo el tiempo de ciclo y el descubrimiento de variantes de proceso. Dónde obtener Este es típicamente el número de documento de ventas (VBELN) de la tabla de cabecera de orden de devoluciones VBAK, donde la categoría del documento (VBTYP) indica una devolución. Ejemplos 600001896000019060000191 | |||
| Nombre de la Actividad ActivityName | El nombre de una actividad o evento de negocio específico que ocurrió dentro del proceso de devolución y reembolso. | ||
| Descripción Este atributo describe un solo paso o hito en el ciclo de vida de las devoluciones. Las actividades representan el trabajo que se está realizando, como 'Orden de Devolución Aprobada' o 'Inspección de Artículo Completada'. Estos se derivan de cambios de estado, creación de documentos o acciones de usuario específicas registradas en SAP S/4HANA. Analizar la secuencia y frecuencia de estas actividades es el núcleo de Process Mining. Ayuda a visualizar el mapa de procesos, identificar rutas de proceso comunes y raras, y señalar actividades que se repiten con frecuencia, indicando retrabajo o ineficiencias. Por qué es importante Las actividades forman la columna vertebral del mapa de procesos, permitiendo la visualización y el análisis del flujo del proceso, los cuellos de botella y las variaciones. Dónde obtener Los nombres de las actividades suelen derivarse de una combinación de datos, como los cambios de estado de documentos en tablas como VBUK/VBUP, los eventos de creación en tablas de cabecera como VBAK (documentos de ventas) y BKPF (documentos contables), y los estados de movimiento de mercancías en MSEG. Ejemplos Solicitud de Devolución IniciadaMercancía Recibida en AlmacénNota de Crédito CreadaReembolso Procesado | |||
| ID del Sistema de Origen SourceSystemId | Identificador del sistema de origen del que se extrajeron los datos. | ||
| Descripción Este atributo especifica el sistema de registro donde se originaron los datos del evento. Para este proceso, típicamente sería el ID de instancia de SAP S/4HANA. En entornos con múltiples sistemas, este campo es crítico para la trazabilidad de los datos, la resolución de problemas y la garantía de la integridad de los datos. Ayuda a diferenciar los datos si las devoluciones se procesan en diferentes instancias de ERP o se integran con sistemas externos como un sistema de gestión de almacenes. Por qué es importante Proporciona un contexto crucial para el origen y la trazabilidad de los datos, especialmente en entornos multisistema, asegurando la trazabilidad y la confianza de los datos. Dónde obtener Este valor es generalmente estático y se configura durante la extracción de datos. Puede recuperarse de la información administrativa del sistema SAP, como el ID del Sistema (SID). Ejemplos S4H_PROD_100S4Q_DEV_200 | |||
| Última actualización de datos LastDataUpdateTimestamp | La marca de tiempo que indica la última vez que se actualizaron o extrajeron los datos de este evento. | ||
| Descripción Este atributo registra la fecha y hora de la última extracción o actualización de datos. Proporciona metadatos sobre la actualidad del conjunto de datos que se está analizando. Es importante para comprender la oportunidad del análisis de Process Mining. Los usuarios pueden ver cuán actuales son los datos, lo cual es especialmente relevante para el monitoreo operativo y los paneles de control que rastrean casos en curso. Por qué es importante Indica la frescura de los Dónde obtener Esto se genera y se estampa típicamente en el conjunto de datos en el momento de la extracción de datos por la herramienta ETL o de pipeline de datos. Ejemplos 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Hora Fin del Evento EventEndTime | La marca de tiempo que indica la finalización de una actividad, utilizada para calcular su duración. | ||
| Descripción Mientras que StartTime (EventTime) marca el inicio de una actividad, EventEndTime marca su conclusión. Para muchos eventos generados por el sistema, los tiempos de inicio y fin son idénticos, lo que representa una ocurrencia instantánea. Sin embargo, para actividades que tienen una duración medible, como 'Inspección de Artículo', este atributo es crucial. Este atributo permite el cálculo directo del tiempo de procesamiento de la actividad. Esto es fundamental para el análisis de rendimiento, ayudando a identificar cuáles pasos específicos, y no solo los intervalos entre ellos, están consumiendo más tiempo. Por qué es importante Permite el cálculo preciso de la duración de las actividades individuales, lo cual es clave para identificar ineficiencias dentro de pasos de proceso específicos. Dónde obtener Esto se deriva a menudo. Para algunas actividades, podría ser un campo separado. Más comúnmente, es el StartTime de la actividad subsiguiente en el caso. Ejemplos 2023-10-26T11:25:30Z2023-10-27T15:00:00Z2023-10-28T09:10:45Z | |||
| ID de cliente CustomerId | El identificador único del cliente que inicia la devolución. | ||
| Descripción Este atributo identifica al cliente que solicitó la devolución. Vincula la instancia del proceso a una parte específica en los datos maestros del cliente. Analizar las devoluciones por cliente ayuda a identificar patrones, como clientes con tasas de devolución inusualmente altas, lo que podría indicar un comportamiento fraudulento o insatisfacción. También permite la segmentación del proceso de devoluciones según el tipo de cliente, valor o historial, lo que permite niveles de servicio personalizados. Por qué es importante Conecta las devoluciones con clientes específicos, permitiendo el análisis del comportamiento del cliente, la segmentación y la identificación de clientes que realizan devoluciones frecuentes. Dónde obtener Encontrado en el campo de número de cliente (KUNNR) en la tabla de cabecera de pedido de devolución (VBAK). Ejemplos CUST-001234CUST-005678CUST-009012 | |||
| ID de Producto ProductId | El identificador único del artículo que se devuelve. | ||
| Descripción Este atributo especifica el material o producto que es objeto de la devolución. Vincula el proceso de devolución a un artículo específico en el catálogo de productos. Analizar las devoluciones por producto es fundamental para identificar artículos con altas tasas de devolución, lo que puede indicar defectos de calidad, descripciones de productos deficientes o problemas de fabricación. Estos datos ayudan a las empresas a tomar decisiones informadas sobre el diseño del producto, la gestión de proveedores y la estrategia de inventario. Por qué es importante Vincula el proceso de devolución a productos específicos, permitiendo el análisis de las tasas de devolución a nivel de artículo y la identificación de problemas de calidad o descripción. Dónde obtener Encontrado en el campo de número de material (MATNR) en la tabla de posición de pedido de devolución (VBAP) o en la tabla de posición de entrega de devolución (LIPS). Ejemplos FG-10023HW-45981SW-LICENSE-PREM | |||
| Importe de Reembolso RefundAmount | El valor monetario final del reembolso emitido al cliente. | ||
| Descripción Este atributo representa el importe real acreditado o reembolsado al cliente al finalizar el proceso de devolución. Este valor se registra en documentos financieros como las notas de crédito. Esta es una métrica financiera clave utilizada en varios análisis. Es esencial para el panel de control de 'Análisis de Discrepancias en el Importe de Reembolso' para comparar con el importe solicitado. También permite segmentar las devoluciones por valor para identificar si las devoluciones de alto valor siguen un proceso diferente o tardan más en resolverse. Por qué es importante Rastrea el impacto financiero de las devoluciones y es esencial para analizar la precisión del reembolso, identificar casos de alto valor y comprender los costos generales. Dónde obtener Obtenido del campo de valor neto (NETWR) del documento de nota de crédito, encontrado en tablas como VBRK (Cabecera de Documento de Facturación) o BSEG (Segmento de Documento Contable). Ejemplos 125.50999.0049.99 | |||
| Motivo de Devolución ReturnReason | El motivo proporcionado por el cliente para la devolución del artículo. | ||
| Descripción Este atributo captura el motivo declarado por el cliente para la devolución, como 'Artículo Defectuoso', 'Talla Incorrecta' o 'Ya No Necesitado'. Esto se selecciona típicamente de una lista predefinida de códigos de motivo durante el proceso de inicio de la devolución. Analizar los motivos de devolución es crucial para identificar problemas de calidad del producto, mejorar las descripciones del producto o refinar los procesos de venta. Proporciona una visión directa de la insatisfacción del cliente y ayuda a priorizar áreas de mejora empresarial para reducir la tasa general de devoluciones. Por qué es importante Proporciona una visión crítica sobre por qué ocurren las devoluciones, permitiendo un análisis de causa raíz para abordar la calidad del producto, los errores de cumplimiento o las brechas en las expectativas del cliente. Dónde obtener Típicamente almacenado en la tabla de posiciones de la orden de venta de devolución (VBAP) en el campo ABGRU (Motivo de rechazo de documentos de ventas). Ejemplos 001 - Baja Calidad002 - Dañado en Tránsito005 - Artículo Incorrecto Enviado | |||
| Nombre de Usuario UserName | El ID de usuario del empleado que ejecutó la actividad. | ||
| Descripción Este atributo identifica al usuario o agente del sistema específico responsable de completar una tarea, como aprobar una devolución o crear una nota de crédito. En SAP, esto se captura a menudo en campos que registran al usuario que creó o modificó un documento. Analizar por usuario ayuda a identificar individuos o equipos de alto rendimiento, necesidades de capacitación y distribución de la carga de trabajo. También es esencial para investigar desviaciones, ya que vincula las acciones del proceso a individuos específicos, apoyando los esfuerzos de cumplimiento y auditoría. Por qué es importante Atribuye las actividades del proceso a usuarios específicos, permitiendo el análisis del rendimiento del equipo, la carga de trabajo y el cumplimiento. Dónde obtener Comúnmente encontrado en tablas de cabecera de documentos, como ERNAM (Creado por) en VBAK (Pedidos de Ventas), LIKP (Entregas) y BKPF (Documentos Contables). Los detalles del usuario se pueden enriquecer a partir de la tabla maestra de usuarios USR21. Ejemplos CBROWNASMITHWF_BATCH | |||
| ¿Es Retrabajo? IsRework | Un indicador que señala si una actividad en un caso es una repetición de una actividad anterior. | ||
| Descripción Este atributo booleano calculado identifica instancias de retrabajo, donde una actividad se realiza más de una vez dentro del mismo caso. Por ejemplo, si una inspección de artículo debe repetirse o una nota de crédito se crea, cancela y luego se vuelve a crear. Este atributo es esencial para el panel de control de 'Análisis de Retrabajo del Procesamiento de Reembolsos' y el KPI de 'Tasa de Retrabajo de Reembolso'. Ayuda a cuantificar la ineficiencia del proceso al resaltar actividades que son propensas a errores o requieren múltiples intentos, señalando áreas que necesitan mejores controles o capacitación. Por qué es importante Destaca ineficiencias y errores del proceso al señalar trabajos repetidos, lo que permite mejoras dirigidas para reducir el despilfarro y los retrasos. Dónde obtener Este indicador es típicamente calculado por la propia herramienta de Process Mining o puede ser precalculado en la transformación de datos. Verifica si el mismo nombre de actividad ya apareció anteriormente en el mismo caso. Ejemplos truefalse | |||
| Adherencia a la Política de Devolución ReturnPolicyAdherence | Un indicador que señala si el caso de devolución cumple con la política de devolución definida. | ||
| Descripción Este atributo booleano calculado indica si una devolución cumple con los criterios establecidos en la política de devolución aplicable. La lógica podría verificar, por ejemplo, si la devolución se inició dentro del plazo permitido o si el motivo de la devolución es válido para el producto. Este atributo apoya directamente el panel de control de 'Visión General de Cumplimiento de la Política de Devoluciones'. Cuantifica las tasas de cumplimiento y permite profundizar en los casos de incumplimiento para comprender las razones de las desviaciones, ayudando a hacer cumplir las políticas de manera más efectiva. Por qué es importante Cuantifica el cumplimiento de las reglas de negocio, ayudando a identificar y reducir las infracciones de políticas que pueden afectar la rentabilidad o crear excepciones en el proceso. Dónde obtener Calculado según las reglas de negocio. Por ejemplo, (Fecha de Inicio de Devolución - Fecha de Compra Original) <= [Días de Devolución Permitidos]. Esto requiere la Fecha de Compra Original y las reglas de la política. Ejemplos truefalse | |||
| Agente de Procesamiento ProcessingAgent | El agente o grupo de recursos específico responsable de manejar una actividad manual. | ||
| Descripción Este atributo identifica a la persona o equipo que realizó una tarea determinada. Puede ser más específico que el 'Nombre de Usuario' al referirse a un rol o un equipo, especialmente en un entorno de servicios compartidos. Esto es valioso para el panel de control de 'Eficiencia de Aprobación de Reembolsos' para analizar el rendimiento de diferentes agentes o equipos. Ayuda a comprender la distribución de la carga de trabajo, identificar necesidades de capacitación y reconocer a los mejores colaboradores o equipos que pueden compartir las mejores prácticas. Por qué es importante Permite el análisis de rendimiento a nivel de agente o equipo, ayudando a gestionar la carga de trabajo, identificar oportunidades de capacitación y mejorar la eficiencia. Dónde obtener Esta información podría estar disponible a través de las funciones de Socio de Negocio de SAP si se asignan agentes, o podría derivarse del departamento o rol del usuario en la estructura organizativa de RRHH. Ejemplos Soporte Nivel 1Equipo de Inspección de AlmacénDepartamento de Finanzas - Cuentas por Pagar | |||
| Automatizado IsAutomated | Un indicador que señala si una actividad fue realizada por un sistema o por un humano. | ||
| Descripción Este atributo booleano distingue entre actividades ejecutadas automáticamente por un sistema, como un flujo de trabajo o un trabajo en segundo plano, y aquellas realizadas manualmente por un usuario. Es esencial para calcular el KPI de 'Tasa de Aprobación de Reembolso Automatizada' e identificar oportunidades para aumentar la automatización. Al filtrar por tareas manuales, las empresas pueden enfocar sus esfuerzos de mejora de procesos en áreas donde la automatización podría ofrecer los beneficios más significativos en términos de velocidad, costo y precisión. Por qué es importante Distingue entre tareas manuales y automatizadas, lo cual es crucial para identificar oportunidades de automatización y medir el impacto de la transformación digital. Dónde obtener Esto se deriva típicamente en función del Nombre de Usuario. Por ejemplo, si el usuario es 'WF_BATCH' u otro ID de sistema, la actividad se marca como automatizada. Ejemplos truefalse | |||
| Cumplimiento de SLA de Reembolso RefundSlaAdherence | Un indicador que señala si el reembolso fue procesado dentro del objetivo del Acuerdo de Nivel de Servicio (SLA). | ||
| Descripción Este atributo calculado verifica si la actividad 'Reembolso Procesado' ocurrió en o antes de la 'Fecha Objetivo de SLA de Reembolso'. Proporciona un simple indicador de verdadero o falso de cumplimiento del SLA para cada caso. Esta es la métrica principal para el panel de control de 'Monitoreo de Cumplimiento de SLA de Reembolso' y el KPI de 'Tasa de Cumplimiento de SLA de Reembolso'. Ayuda a medir el rendimiento en relación con los compromisos del cliente e identifica los casos que no cumplieron con las expectativas, permitiendo el análisis de causa raíz de los retrasos. Por qué es importante Mide directamente el rendimiento frente a los compromisos con el cliente, lo que lo convierte en un indicador crítico de la calidad del servicio y la satisfacción del cliente. Dónde obtener Calculado comparando el EventTime de la actividad 'Reembolso Procesado' con la 'RefundSlaTargetDate' para cada caso. Ejemplos truefalse | |||
| Estado de Orden de Devolución ReturnOrderStatus | El estado general actual del caso de devolución. | ||
| Descripción Este atributo proporciona un estado de alto nivel del caso de devolución en un momento dado, como 'Abierto', 'En Proceso' o 'Cerrado'. Este es a menudo un estado agregado derivado del último hito principal completado. Esto es esencial para el 'Panel de Estado Actual de Casos de Devolución', que proporciona una vista operativa de la carga de trabajo actual y la distribución de casos. Ayuda a los gerentes a comprender cuántos casos hay en cada etapa del proceso, permitiendo una mejor asignación de recursos y gestión de la carga de trabajo. Por qué es importante Ofrece una instantánea de dónde se encuentra cada caso en el proceso, lo cual es esencial para los paneles de control operativos que rastrean la carga de trabajo y el estado actuales. Dónde obtener Derivado de los campos de estado en los documentos relevantes. Por ejemplo, del estado de la cabecera (GBSTK) o del estado del artículo (LFSTK) en el pedido de ventas relacionado (VBUK/VBUP) o documentos de entrega. Ejemplos En Espera de Recepción de MercancíasInspección PendienteReembolso PendienteCerrado | |||
| Fecha Objetivo de SLA de Reembolso RefundSlaTargetDate | La fecha objetivo para la cual el reembolso del caso de devolución debe ser procesado. | ||
| Descripción Este atributo define la fecha límite del Acuerdo de Nivel de Servicio (SLA) para procesar el reembolso. Esta fecha se calcula generalmente en función de las reglas de negocio, por ejemplo, un cierto número de días después de que la devolución sea aprobada o los bienes sean recibidos. Este campo es la base para el panel de control de 'Monitoreo de Cumplimiento de SLA de Reembolso' y el KPI asociado. Permite el seguimiento proactivo de los casos en riesgo de incumplir su SLA y el análisis de las causas raíz de los retrasos, lo que en última instancia ayuda a mejorar la satisfacción del cliente. Por qué es importante Proporciona la base para medir el cumplimiento del SLA, ayudando a monitorear el rendimiento, priorizar los casos atrasados y mejorar la satisfacción del cliente. Dónde obtener Este es casi siempre un campo derivado. La lógica se basaría en una fecha clave (por ejemplo, fecha de creación de la solicitud de devolución) más una duración definida por reglas de negocio, que podría depender de factores como el tipo de cliente o el motivo de la devolución. Ejemplos 2023-11-10T23:59:59Z2023-11-15T23:59:59Z2023-11-20T23:59:59Z | |||
| ID de Política de Devolución ReturnPolicyId | El identificador de la política de devolución que se aplica a este caso de devolución específico. | ||
| Descripción Este atributo indica qué política de devolución específica o conjunto de reglas es aplicable a la transacción. Las políticas pueden variar según el tipo de producto, el segmento de cliente o el tiempo transcurrido desde la compra. Estos datos son esenciales para la 'Visión General de Cumplimiento de la Política de Devoluciones'. Al asociar cada caso con una política, el sistema puede verificar automáticamente el cumplimiento de las reglas, como los plazos de devolución o los requisitos de condición del artículo, y marcar las desviaciones para su análisis. Por qué es importante Permite la verificación automatizada del cumplimiento de las reglas de negocio, ayudando a asegurar que las devoluciones se procesen de manera consistente y de acuerdo con la política. Dónde obtener Este no es a menudo un campo estándar de SAP y puede necesitar ser derivado basado en lógica de negocio usando datos como tipo de producto, cliente y fecha de venta. Podría almacenarse en un campo personalizado si se implementa. Ejemplos STD-30DAYELEC-90DAY-WARRANTYFINAL-SALE-DEFECT | |||
| Importe de Reembolso Solicitado RequestedRefundAmount | El importe del reembolso inicialmente solicitado o esperado al inicio del proceso. | ||
| Descripción Este atributo captura el valor de los bienes devueltos según la solicitud inicial de devolución. Sirve como línea base contra la cual se puede comparar el importe final reembolsado. Este campo es específicamente requerido para el panel de control de 'Análisis de Discrepancias en el Importe de Reembolso'. Comparar el importe solicitado con el importe real del reembolso ayuda a identificar problemas como reembolsos parciales debido a daños en el artículo, tarifas de reabastecimiento u otros ajustes, asegurando la precisión financiera y la transparencia. Por qué es importante Sirve como línea base para medir la precisión del reembolso, ayudando a identificar y analizar discrepancias entre los valores de reembolso esperados y reales. Dónde obtener Típicamente obtenido del valor neto de los artículos en la orden de venta de devolución inicial. Este sería el valor neto (NETWR) de las posiciones correspondientes en la tabla VBAP. Ejemplos 125.501050.0049.99 | |||
| Número de Entrega de Devolución ReturnDeliveryNumber | El identificador único del documento de entrega de devolución. | ||
| Descripción Cuando un cliente devuelve mercancías físicamente, se crea un documento de entrega de devolución en SAP para gestionar la logística de entrada. Este atributo es el número único de ese documento. Este ID es importante para el seguimiento del movimiento físico de los bienes devueltos. Conecta los aspectos financieros y logísticos de la devolución, permitiendo un análisis detallado de las fases de recepción de mercancías e inspección del proceso. Por qué es importante Proporciona un enlace clave entre la orden de devolución y la recepción física de los bienes, crucial para analizar los tiempos de procesamiento de logística y almacén. Dónde obtener Este es el número de documento de entrega (VBELN) de la tabla de cabecera de entrega (LIKP), donde la categoría del documento indica una entrega de devolución. Ejemplos 840000128400001384000014 | |||
| Número de Nota de Crédito CreditMemoNumber | El identificador único para el documento de nota de crédito que autoriza el reembolso. | ||
| Descripción Una nota de crédito es el documento de facturación que acredita oficialmente la cuenta del cliente por los artículos devueltos. Este atributo es el número único de ese documento financiero. El seguimiento del Número de Nota de Crédito es esencial para analizar la parte de liquidación financiera del proceso de devoluciones. Marca un hito crítico, a menudo desencadenando el pago real del reembolso, y es necesario para la conciliación financiera y la auditoría. Por qué es importante Representa la transacción financiera oficial para el reembolso, crítica para el seguimiento de las etapas finales del proceso y para la auditoría financiera. Dónde obtener Este es el número de documento de facturación (VBELN) de la tabla de cabecera de documento de facturación (VBRK), donde la categoría del documento indica una nota de crédito. Ejemplos 900003459000034690000347 | |||
| Organización de Ventas SalesOrganization | La unidad organizativa responsable de la venta original y la devolución. | ||
| Descripción La Organización de Ventas es un elemento clave de la estructura organizativa en SAP que representa una unidad responsable de la venta y distribución de productos y servicios. Se asigna a la transacción de devolución. Este atributo permite filtrar y comparar el proceso de devoluciones entre diferentes unidades de negocio, regiones o divisiones. Ayuda a identificar si ciertas organizaciones de ventas tienen tasas de devolución más altas o procesos de gestión de devoluciones menos eficientes, proporcionando una base para el análisis del rendimiento organizacional. Por qué es importante Permite la comparación del rendimiento y las tasas del proceso de devolución en diferentes unidades de negocio, regiones o canales de venta. Dónde obtener Encontrado en el campo de organización de ventas (VKORG) en la tabla de cabecera de pedido de devolución (VBAK). Ejemplos 10002100US01 | |||
| Resultado de Inspección de Artículo ItemInspectionOutcome | El resultado de la inspección física del artículo devuelto. | ||
| Descripción Este atributo registra el resultado del proceso de inspección realizado después de que los bienes son recibidos en el almacén. Los resultados comunes incluyen 'Aceptado', 'Rechazado - Dañado' o 'Aceptado - Revendible'. Estos datos proporcionan un contexto crucial para los pasos subsiguientes del proceso. Determina si se emite un reembolso total, parcial o ningún reembolso. Analizar este resultado ayuda a identificar las razones de los rechazos y puede proporcionar retroalimentación sobre el embalaje del producto o los socios de envío si los artículos se dañan con frecuencia en tránsito. Por qué es importante Explica el proceso de toma de decisiones detrás de las aprobaciones o rechazos de reembolso, proporcionando datos valiosos sobre la condición del artículo y las razones de los ajustes de reembolso. Dónde obtener Esta información puede registrarse en un lote de inspección del módulo de gestión de calidad (QM), o como un código de estado o motivo en la posición de entrega de devolución (LIPS). También puede existir en un campo personalizado. Ejemplos Aceptado - RevendibleAceptado - Para ser reacondicionadoRechazado - Daño causado por el clienteRechazado - Artículo incorrecto devuelto | |||
| Tiempo de Ciclo del Caso CycleTime | El tiempo total transcurrido desde el inicio hasta el cierre de un caso de devolución. | ||
| Descripción Esta métrica calculada mide la duración de principio a fin de todo el proceso de devoluciones para un solo caso. Se calcula típicamente como la diferencia de tiempo entre el primer y el último evento, como de 'Solicitud de Devolución Iniciada' a 'Caso de Devolución Cerrado'. El Tiempo de Ciclo es un KPI principal para la eficiencia del proceso. Se utiliza en el panel de control de 'Tiempo de Ciclo Total de Devoluciones' para monitorear el rendimiento, establecer puntos de referencia e identificar tendencias. Analizar los factores que se correlacionan con tiempos de ciclo más largos, como el tipo de producto o el motivo de la devolución, puede revelar ineficiencias sistémicas. Por qué es importante Este es un KPI fundamental para medir la eficiencia general del proceso y que impacta directamente la satisfacción del cliente y los costos operativos. Dónde obtener Este es un campo calculado. Se calcula tomando la diferencia entre el EventTime máximo y mínimo para cada ReturnCaseId único. Ejemplos 5d 4h 30m12d 2h 15m2d 8h 0m | |||
Actividades de Gestión de Devoluciones y Reembolsos
| Actividad | Descripción | ||
|---|---|---|---|
| Caso de Devolución Cerrado | Esta es la actividad final, indicando que el proceso de devoluciones está completo y no se esperan más acciones para el caso. Esto se infiere típicamente cuando el documento de orden de devolución alcanza un estado final, cerrado en el sistema. | ||
| Por qué es importante Este evento define el final del ciclo de vida del proceso, permitiendo el cálculo del tiempo de ciclo total de principio a fin. Confirma que el caso ha sido completamente resuelto. Dónde obtener Inferido del estado general del pedido de devolución en la tabla VBAK o de sus posiciones en VBAP, que alcanzan un estado 'Completado' o 'Cerrado'. Esto se determina por la configuración de gestión de estado del sistema. Capturar Inferido del estado del documento de pedido de devolución que cambia a 'Completado'. Tipo de evento inferred | |||
| Inspección de Artículo Completada | Representa la finalización de la evaluación de calidad y condición de los bienes devueltos. En la Gestión Avanzada de Devoluciones, este es a menudo un paso explícito que registra el resultado de la inspección y determina la acción subsiguiente, como el reembolso o la baja. | ||
| Por qué es importante La duración y el resultado de la inspección impactan directamente el tiempo de procesamiento del reembolso y la gestión de inventario. Esta actividad es vital para analizar la eficiencia de la inspección y el retrabajo. Dónde obtener En SAP Advanced Returns Management (ARM), este puede ser un evento explícito de la transacción de inspección. También se puede inferir de un cambio de estado en la posición del pedido de devolución que indica el resultado de la inspección. Capturar Capturado de registros de transacciones o cambios de estado relacionados con las actividades de seguimiento logístico en ARM. Tipo de evento explicit | |||
| Mercancía Recibida en Almacén | Este evento marca la recepción física del artículo devuelto en el almacén o centro de procesamiento. Se captura explícitamente cuando se ejecuta una Entrada de Mercancías (PGR) contra la entrega de devolución, creando un documento de material. | ||
| Por qué es importante Este es un hito crítico que inicia la cuenta regresiva para la inspección y disposición. Los retrasos anteriores a este punto son impulsados por el cliente, mientras que los retrasos posteriores son internos. Dónde obtener Capturado de las tablas de documentos de material MSEG y MKPF para el tipo de movimiento de entrada de mercancías asociado a las devoluciones. La fecha de contabilización (MKPF-BUDAT) indica la hora del evento. Capturar El evento corresponde a la contabilización de una entrada de mercancías para la entrega de devolución. Tipo de evento explicit | |||
| Nota de Crédito Creada | Esta es la creación del documento de facturación oficial que acredita la cuenta del cliente por el artículo devuelto. Este es un evento explícito capturado cuando la nota de crédito se genera a partir de la solicitud de nota de crédito. | ||
| Por qué es importante La creación de la nota de crédito es un hito financiero crítico. Confirma el importe a reembolsar y autoriza el inicio del proceso de pago. Dónde obtener Capturado a partir de la creación de un documento de facturación en la tabla VBRK con una categoría de documento que indica una nota de crédito. Esto se vincula a la solicitud de nota de crédito en la tabla VBFA. Capturar El evento se registra al guardar un nuevo documento de facturación de nota de crédito (por ejemplo, usando la transacción VF01). Tipo de evento explicit | |||
| Reembolso Procesado | Esta actividad marca el paso final del proceso de reembolso, donde se liquida el crédito financiero, lo que significa que el pago ha sido enviado al cliente. Esto se infiere de la creación de un documento de compensación en el módulo de finanzas que liquida el crédito abierto en la cuenta del cliente. | ||
| Por qué es importante Este es el momento en que el cliente es realmente pagado. El tiempo que se tarda en llegar a este paso desde el inicio de la devolución es un factor principal de satisfacción del cliente y es clave para medir la adherencia al SLA. Dónde obtener Inferido de la información del documento de compensación en la tabla de partidas individuales de contabilidad financiera BSEG. La fecha de compensación (BSEG-AUGDT) en la partida individual del cliente asociada a la nota de crédito indica cuándo se procesó el reembolso. Capturar Inferido del campo de fecha de compensación que se rellena para el documento contable asociado a la nota de crédito. Tipo de evento inferred | |||
| Solicitud de Devolución Iniciada | Este es el punto de partida del proceso de devoluciones, donde se crea formalmente una orden de devolución en el sistema. Este evento se captura explícitamente cuando un nuevo documento de ventas del tipo de orden de devolución se guarda en SAP S/4HANA. | ||
| Por qué es importante Esta actividad marca el inicio oficial del ciclo de vida del caso de devolución. Analizar el tiempo desde este evento hasta el cierre es crucial para medir el tiempo de ciclo total de la devolución y la experiencia del cliente. Dónde obtener Este es un evento explícito capturado de la creación de un documento de ventas en la tabla VBAK donde la categoría del documento (VBAK-VBTYP) indica una orden de devolución. La marca de tiempo de creación es VBAK-ERDAT. Capturar El evento se registra al guardar un nuevo pedido de ventas de devolución (por ejemplo, usando la transacción VA01). Tipo de evento explicit | |||
| Solicitud de Nota de Crédito Creada | Tras una inspección exitosa, esta actividad marca la creación de una solicitud para emitir un crédito al cliente. Esto se registra como un nuevo documento de ventas, una solicitud de nota de crédito, que hace referencia al pedido de devolución original. | ||
| Por qué es importante Este es el disparador para la parte de liquidación financiera del proceso de devoluciones. Analizar el tiempo desde la inspección hasta este paso revela la eficiencia en la transferencia de logística a finanzas. Dónde obtener Capturado a partir de la creación de un documento de ventas en la tabla VBAK con una categoría de documento para Solicitud de Nota de Crédito. El vínculo con la devolución se mantiene en la tabla de flujo de documentos VBFA. Capturar El evento se registra al guardar un nuevo documento de solicitud de nota de crédito. Tipo de evento explicit | |||
| Devolución Rechazada | Indica que el artículo devuelto no cumplió con los criterios de la política de devolución y la solicitud de reembolso o crédito ha sido denegada. Esto se captura típicamente mediante un estado o código de motivo específico aplicado a la posición del pedido de devolución después de la inspección. | ||
| Por qué es importante El seguimiento de los rechazos ayuda a analizar el cumplimiento de las políticas de devolución e identificar las razones comunes de denegación. Es una ruta de excepción clave en el proceso. Dónde obtener Inferido de una razón de rechazo (VBAP-ABGRU) establecida en la posición del pedido de devolución o de un estado específico asignado durante el proceso de inspección en Advanced Returns Management. Capturar Inferido de la configuración de un motivo de rechazo o un estado específico de "rechazado" en el elemento del documento de devolución. Tipo de evento inferred | |||
| Documento Contable Creado | Este evento ocurre cuando la nota de crédito se contabiliza con éxito en el módulo de contabilidad financiera. Crea entradas correspondientes en el libro mayor, haciendo oficial el crédito desde una perspectiva contable. | ||
| Por qué es importante Esta actividad confirma que el crédito ha sido integrado en el sistema financiero. El tiempo entre la creación de la nota de crédito y la contabilización contable puede resaltar problemas en la interfaz de facturación a finanzas. Dónde obtener Capturado a partir de la creación de una cabecera de documento en la tabla contable BKPF, que está vinculada a la nota de crédito en VBRK (VBRK-BELNR). Capturar El evento se registra tras la contabilización exitosa del documento de facturación en Contabilidad Financiera. Tipo de evento explicit | |||
| Entrega de Devolución Creada | Esta actividad significa la creación de un documento de entrega de entrada, que se utiliza para gestionar la recepción física de los bienes devueltos. El sistema lo captura como un evento de creación explícito para un documento de entrega que referencia la orden de devolución. | ||
| Por qué es importante Este paso es un hito logístico clave. El tiempo entre la aprobación de la devolución y la creación de la entrega resalta la eficiencia de la comunicación de la información de devolución al almacén o al departamento de recepción. Dónde obtener Capturado a partir de la creación de una cabecera de entrega en la tabla LIKP, vinculada al pedido de devolución precedente a través de la tabla de flujo de documentos VBFA. Capturar El evento se registra al guardar un nuevo documento de entrega de devolución (por ejemplo, usando la transacción VL01N). Tipo de evento explicit | |||
| Orden de Devolución Aprobada | Representa la aprobación o liberación formal de la orden de devolución, permitiéndole avanzar a la siguiente etapa. Esto se infiere típicamente de un cambio de estado en la cabecera o el elemento del documento de ventas, indicando que ha sido liberado de cualquier bloqueo. | ||
| Por qué es importante Los pasos de aprobación pueden ser una fuente significativa de retraso. El seguimiento de esta actividad ayuda a identificar cuellos de botella en la fase inicial de autorización del proceso de devoluciones. Dónde obtener Inferido de tablas de gestión de estado o campos de estado directamente dentro de las tablas VBAK o VBAP. Un cambio en un estado de liberación o la eliminación de un bloqueo de entrega (VBAP-LIFSP) puede significar aprobación. Capturar Inferido de un cambio en los campos de estado de cabecera o posición del pedido de devolución que indica liberación o aprobación. Tipo de evento inferred | |||
| Pedido de Cambio Creado | Esta actividad representa una resolución alternativa donde, en lugar de un reembolso, se crea una nueva orden de venta para enviar un artículo de reemplazo al cliente. Esto se captura cuando se crea una nueva orden de venta con una referencia a la devolución original. | ||
| Por qué es importante Esta actividad ayuda a diferenciar entre devoluciones para reembolso y devoluciones para intercambio, que tienen diferentes rutas de proceso y resultados para el cliente. Es clave para el análisis de variantes. Dónde obtener Capturado a partir de la creación de un nuevo documento de ventas en VBAK que está vinculado al pedido de devolución en la tabla de flujo de documentos (VBFA). Capturar El evento se registra al guardar un nuevo documento de pedido de ventas designado como reemplazo. Tipo de evento explicit | |||
Guías de Extracción
Pasos
- Verificación de requisitos previos: Asegúrese de que la cuenta de usuario que ejecuta la extracción tenga las autorizaciones necesarias en SAP S/4HANA para acceder a las vistas de servicios de datos básicos (CDS) requeridas. Las vistas clave incluyen I_SalesDocument, I_SalesDocumentItem, I_SDDocumentFlow, I_DeliveryDocument, I_MaterialDocumentHeader, I_BillingDocument, I_JournalEntry e I_ClearedItem.
- Acceso a la herramienta de consulta: Inicie sesión en su cliente SQL o herramienta de integración de datos preferida que tenga una conexión establecida con la base de datos de SAP S/4HANA. Esto podría ser herramientas propias de SAP como SAP Analytics Cloud o una plataforma ETL de terceros.
- Establecer parámetros de consulta: Antes de ejecutar, debe modificar la consulta SQL proporcionada. Localice los valores de los marcadores de posición y reemplácelos con los parámetros correctos para su entorno. Esto incluye establecer la
[Fecha de Inicio],[Fecha de Fin],[ID de su Sistema de Origen],[Tipo de Pedido de Devolución]y otros filtros de tipo de documento o código de empresa. - Ejecutar la consulta de extracción: Copie la consulta SQL completa y ejecútela en su herramienta. La consulta está diseñada para recopilar todas las actividades especificadas en un único conjunto de datos uniendo los resultados de múltiples declaraciones SELECT.
- Comprender la lógica de la consulta: Cada bloque
SELECTen la estructuraUNION ALLes responsable de extraer una actividad específica. Une múltiples vistas CDS para recopilar los atributos requeridos, asigna una cadena fija comoActivityNamey selecciona la marca de tiempo relevante paraEventTime. - Revisar los datos brutos: Una vez completada la consulta, realice una breve revisión de la salida. Verifique un número razonable de filas y asegúrese de que las columnas clave como
ReturnCaseId,ActivityNameyEventTimeestén pobladas como se espera. - Transformación de datos: La consulta está estructurada para producir un formato de registro de eventos plano. Normalmente no se necesitan transformaciones estructurales significativas. Sin embargo, es posible que deba ajustar los formatos de marca de tiempo o los tipos de datos según los requisitos de su sistema de destino.
- Exportar el registro de eventos: Exporte el conjunto de resultados de la consulta como un archivo CSV. Asegúrese de que el archivo use codificación UTF-8 para evitar problemas de caracteres, especialmente con nombres de usuario o descripciones de productos.
- Cargar a la herramienta de Process Mining: El archivo CSV resultante ahora está listo para ser cargado en su plataforma de Process Mining, como ProcessMind. Mapee las columnas del archivo a los campos correspondientes en la herramienta, por ejemplo,
ReturnCaseIda ID de caso,ActivityNamea Actividad yEventTimea Marca de tiempo.
Configuración
- Requisitos Previos: El usuario que ejecuta la extracción necesita autorizaciones de visualización para objetos relacionados con documentos de ventas (VBAK), entregas (LIKP), facturación (VBRK) y contabilidad (BSEG, BKPF). El acceso a las vistas CDS subyacentes es esencial.
- Filtros de Alcance de Datos: Es fundamental filtrar la consulta por tipos de documento específicos para aislar el proceso de devoluciones. Configure los marcadores de posición para tipos de pedido de devolución (por ejemplo, 'RE'), tipos de solicitud de nota de crédito (por ejemplo, 'G2') y tipos de pedido de cambio (por ejemplo, 'SO'). También se recomienda encarecidamente filtrar por
CompanyCodeuSalesOrganizationpara limitar el alcance de los datos. - Filtrado por Rango de Fechas: Para gestionar el rendimiento y el volumen de datos, aplique siempre un filtro de rango de fechas. Comience con un período reciente de 3 a 6 meses de datos. La consulta utiliza la fecha de creación del pedido de devolución inicial (
I_SalesDocument.CreationDate) como condición de filtro principal. - Consideraciones de Rendimiento: Esta es una consulta exhaustiva que une múltiples vistas CDS grandes. Su ejecución puede consumir muchos recursos en el sistema S/4HANA de origen. Programe la extracción durante las horas de menor actividad empresarial para minimizar el impacto. Para conjuntos de datos muy grandes, considere estrategias de carga incremental.
a Consulta de ejemplo sql
WITH ReturnOrders AS (
SELECT
SalesDocument AS ReturnCaseId,
CreationDate,
CreationDateTime,
CreatedByUser,
OrderReason,
SoldToParty
FROM I_SalesDocument
WHERE SalesDocumentType = '[Your Return Order Type]' -- e.g., 'RE'
AND CreationDate BETWEEN '[Start Date]' AND '[End Date]'
AND CompanyCode = '[Your Company Code]'
)
-- 1. Return Request Initiated
SELECT
RO.ReturnCaseId AS "ReturnCaseId",
'Return Request Initiated' AS "ActivityName",
RO.CreationDateTime AS "EventTime",
RO.CreationDateTime AS "EventEndTime",
RO.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM ReturnOrders RO
JOIN I_SalesDocumentItem I ON RO.ReturnCaseId = I.SalesDocument
UNION ALL
-- 2. Return Order Approved
SELECT
SD.SalesDocument AS "ReturnCaseId",
'Return Order Approved' AS "ActivityName",
SD.LastChangeDateTime AS "EventTime",
SD.LastChangeDateTime AS "EventEndTime",
SD.LastChangedByUser AS "UserName",
SD.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
SD.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SalesDocument AS SD
JOIN ReturnOrders RO ON SD.SalesDocument = RO.ReturnCaseId
JOIN I_SalesDocumentItem I ON SD.SalesDocument = I.SalesDocument
WHERE SD.OverallSDProcessStatus <> 'A' -- Not Open, implying it has been processed/approved
AND I.SDProcessStatus <> 'A'
UNION ALL
-- 3. Return Delivery Created
SELECT
DF.PrecedingDocument AS "ReturnCaseId",
'Return Delivery Created' AS "ActivityName",
LH.CreationDateTime AS "EventTime",
LH.CreationDateTime AS "EventEndTime",
LH.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
LI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
JOIN I_DeliveryDocument AS LH ON DF.SubsequentDocument = LH.DeliveryDocument
JOIN I_DeliveryDocumentItem AS LI ON LH.DeliveryDocument = LI.DeliveryDocument
WHERE DF.PrecedingDocumentCategory = 'C' AND DF.SubsequentDocumentCategory = 'J'
UNION ALL
-- 4. Goods Received at Warehouse
SELECT
DF.PrecedingDocument AS "ReturnCaseId",
'Goods Received at Warehouse' AS "ActivityName",
MH.CreationDateTime AS "EventTime",
MH.CreationDateTime AS "EventEndTime",
MH.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
MI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
JOIN I_DeliveryDocumentItem AS LI ON DF.SubsequentDocument = LI.DeliveryDocument AND DF.SubsequentDocumentItem = LI.DeliveryDocumentItem
JOIN I_MaterialDocumentItem AS MI ON LI.DeliveryDocument = MI.DeliveryDocument AND LI.DeliveryDocumentItem = MI.DeliveryDocumentItem
JOIN I_MaterialDocumentHeader AS MH ON MI.MaterialDocument = MH.MaterialDocument AND MI.MaterialDocumentYear = MH.MaterialDocumentYear
WHERE DF.SubsequentDocumentCategory = 'J' AND MH.GoodsMovementType = '[Your Return Goods Receipt MVT]' -- e.g., '651', '653'
UNION ALL
-- 5. Item Inspection Completed
SELECT
SDI.SalesDocument AS "ReturnCaseId",
'Item Inspection Completed' AS "ActivityName",
SDI.LastChangeDateTime AS "EventTime",
SDI.LastChangeDateTime AS "EventEndTime",
SDI.LastChangedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
SDI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SalesDocumentItem AS SDI
JOIN ReturnOrders RO ON SDI.SalesDocument = RO.ReturnCaseId
WHERE SDI.ReturnsInspectionStatus = '4' -- 'Inspection Completed', adjust value based on your config
UNION ALL
-- 6. Return Rejected
SELECT
SDI.SalesDocument AS "ReturnCaseId",
'Return Rejected' AS "ActivityName",
SDI.LastChangeDateTime AS "EventTime",
SDI.LastChangeDateTime AS "EventEndTime",
SDI.LastChangedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
SDI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SalesDocumentItem AS SDI
JOIN ReturnOrders RO ON SDI.SalesDocument = RO.ReturnCaseId
WHERE SDI.SalesDocumentItemRejectionReason <> ''
UNION ALL
-- 7. Credit Memo Request Created
SELECT
DF.PrecedingDocument AS "ReturnCaseId",
'Credit Memo Request Created' AS "ActivityName",
CM_REQ.CreationDateTime AS "EventTime",
CM_REQ.CreationDateTime AS "EventEndTime",
CM_REQ.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
JOIN I_SalesDocument AS CM_REQ ON DF.SubsequentDocument = CM_REQ.SalesDocument
JOIN I_SalesDocumentItem I ON CM_REQ.SalesDocument = I.SalesDocument
WHERE CM_REQ.SalesDocumentType = '[Your Credit Memo Request Type]' -- e.g., 'CR'
UNION ALL
-- 8. Exchange Order Created
SELECT
DF.PrecedingDocument AS "ReturnCaseId",
'Exchange Order Created' AS "ActivityName",
EX_ORD.CreationDateTime AS "EventTime",
EX_ORD.CreationDateTime AS "EventEndTime",
EX_ORD.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
JOIN I_SalesDocument AS EX_ORD ON DF.SubsequentDocument = EX_ORD.SalesDocument
JOIN I_SalesDocumentItem I ON EX_ORD.SalesDocument = I.SalesDocument
WHERE EX_ORD.SalesDocumentType = '[Your Exchange Order Type]' -- e.g., 'OR'
UNION ALL
-- 9. Credit Memo Created
SELECT
DF_CM.PrecedingDocument AS "ReturnCaseId",
'Credit Memo Created' AS "ActivityName",
BD.CreationDateTime AS "EventTime",
BD.CreationDateTime AS "EventEndTime",
BD.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
BD.TotalNetAmount AS "RefundAmount",
BDI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN I_SalesDocument AS CM_REQ ON DF.SubsequentDocument = CM_REQ.SalesDocument AND CM_REQ.SalesDocumentType = '[Your Credit Memo Request Type]'
JOIN I_SDDocumentFlow AS DF_CM ON CM_REQ.SalesDocument = DF_CM.PrecedingDocument
JOIN I_BillingDocument AS BD ON DF_CM.SubsequentDocument = BD.BillingDocument
JOIN I_BillingDocumentItem AS BDI ON BD.BillingDocument = BDI.BillingDocument
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
WHERE DF.PrecedingDocumentCategory = 'C'
UNION ALL
-- 10. Accounting Document Created
SELECT
RO.ReturnCaseId AS "ReturnCaseId",
'Accounting Document Created' AS "ActivityName",
JE.CreationDateTime AS "EventTime",
JE.CreationDateTime AS "EventEndTime",
JE.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
JE.AmountInCompanyCodeCurrency AS "RefundAmount",
JRI.ProductName AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_JournalEntry AS JE
JOIN I_JournalEntryItem JRI ON JE.AccountingDocument = JRI.AccountingDocument
JOIN I_BillingDocument BD ON JE.ReferenceDocument = BD.BillingDocument
JOIN I_SDDocumentFlow DF_CM ON BD.BillingDocument = DF_CM.SubsequentDocument
JOIN I_SalesDocument CM_REQ ON DF_CM.PrecedingDocument = CM_REQ.SalesDocument AND CM_REQ.SalesDocumentType = '[Your Credit Memo Request Type]'
JOIN I_SDDocumentFlow DF ON CM_REQ.SalesDocument = DF.SubsequentDocument
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
WHERE JE.OriginalReferenceDocumentType = 'VBRK'
UNION ALL
-- 11. Refund Processed
SELECT
RO.ReturnCaseId AS "ReturnCaseId",
'Refund Processed' AS "ActivityName",
CI.ClearingDate AS "EventTime",
CI.ClearingDate AS "EventEndTime",
CI.LastChangedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CI.AmountInCompanyCodeCurrency AS "RefundAmount",
JRI.ProductName AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_ClearedItem AS CI
JOIN I_JournalEntryItem JRI ON CI.AccountingDocument = JRI.AccountingDocument AND CI.FiscalYear = JRI.FiscalYear AND CI.LedgerGLLineItem = JRI.LedgerGLLineItem
JOIN I_JournalEntry JE ON JRI.AccountingDocument = JE.AccountingDocument
JOIN I_BillingDocument BD ON JE.ReferenceDocument = BD.BillingDocument
JOIN I_SDDocumentFlow DF_CM ON BD.BillingDocument = DF_CM.SubsequentDocument
JOIN I_SalesDocument CM_REQ ON DF_CM.PrecedingDocument = CM_REQ.SalesDocument AND CM_REQ.SalesDocumentType = '[Your Credit Memo Request Type]'
JOIN I_SDDocumentFlow DF ON CM_REQ.SalesDocument = DF.SubsequentDocument
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
WHERE JE.OriginalReferenceDocumentType = 'VBRK' AND CI.ClearingDate IS NOT NULL
UNION ALL
-- 12. Return Case Closed
SELECT
SD.SalesDocument AS "ReturnCaseId",
'Return Case Closed' AS "ActivityName",
SD.LastChangeDateTime AS "EventTime",
SD.LastChangeDateTime AS "EventEndTime",
SD.LastChangedByUser AS "UserName",
SD.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
SD.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SalesDocument AS SD
JOIN ReturnOrders RO ON SD.SalesDocument = RO.ReturnCaseId
JOIN I_SalesDocumentItem I ON SD.SalesDocument = I.SalesDocument
WHERE SD.OverallSDProcessStatus = 'C' -- 'Completed' Pasos
- Verificación de requisitos previos: Asegúrese de que la cuenta de usuario que ejecuta la extracción tenga las autorizaciones necesarias en SAP S/4HANA para acceder a las vistas de servicios de datos básicos (CDS) requeridas. Las vistas clave incluyen I_SalesDocument, I_SalesDocumentItem, I_SDDocumentFlow, I_DeliveryDocument, I_MaterialDocumentHeader, I_BillingDocument, I_JournalEntry e I_ClearedItem.
- Acceso a la herramienta de consulta: Inicie sesión en su cliente SQL o herramienta de integración de datos preferida que tenga una conexión establecida con la base de datos de SAP S/4HANA. Esto podría ser herramientas propias de SAP como SAP Analytics Cloud o una plataforma ETL de terceros.
- Establecer parámetros de consulta: Antes de ejecutar, debe modificar la consulta SQL proporcionada. Localice los valores de los marcadores de posición y reemplácelos con los parámetros correctos para su entorno. Esto incluye establecer la
[Fecha de Inicio],[Fecha de Fin],[ID de su Sistema de Origen],[Tipo de Pedido de Devolución]y otros filtros de tipo de documento o código de empresa. - Ejecutar la consulta de extracción: Copie la consulta SQL completa y ejecútela en su herramienta. La consulta está diseñada para recopilar todas las actividades especificadas en un único conjunto de datos uniendo los resultados de múltiples declaraciones SELECT.
- Comprender la lógica de la consulta: Cada bloque
SELECTen la estructuraUNION ALLes responsable de extraer una actividad específica. Une múltiples vistas CDS para recopilar los atributos requeridos, asigna una cadena fija comoActivityNamey selecciona la marca de tiempo relevante paraEventTime. - Revisar los datos brutos: Una vez completada la consulta, realice una breve revisión de la salida. Verifique un número razonable de filas y asegúrese de que las columnas clave como
ReturnCaseId,ActivityNameyEventTimeestén pobladas como se espera. - Transformación de datos: La consulta está estructurada para producir un formato de registro de eventos plano. Normalmente no se necesitan transformaciones estructurales significativas. Sin embargo, es posible que deba ajustar los formatos de marca de tiempo o los tipos de datos según los requisitos de su sistema de destino.
- Exportar el registro de eventos: Exporte el conjunto de resultados de la consulta como un archivo CSV. Asegúrese de que el archivo use codificación UTF-8 para evitar problemas de caracteres, especialmente con nombres de usuario o descripciones de productos.
- Cargar a la herramienta de Process Mining: El archivo CSV resultante ahora está listo para ser cargado en su plataforma de Process Mining, como ProcessMind. Mapee las columnas del archivo a los campos correspondientes en la herramienta, por ejemplo,
ReturnCaseIda ID de caso,ActivityNamea Actividad yEventTimea Marca de tiempo.
Configuración
- Requisitos Previos: El usuario que ejecuta la extracción necesita autorizaciones de visualización para objetos relacionados con documentos de ventas (VBAK), entregas (LIKP), facturación (VBRK) y contabilidad (BSEG, BKPF). El acceso a las vistas CDS subyacentes es esencial.
- Filtros de Alcance de Datos: Es fundamental filtrar la consulta por tipos de documento específicos para aislar el proceso de devoluciones. Configure los marcadores de posición para tipos de pedido de devolución (por ejemplo, 'RE'), tipos de solicitud de nota de crédito (por ejemplo, 'G2') y tipos de pedido de cambio (por ejemplo, 'SO'). También se recomienda encarecidamente filtrar por
CompanyCodeuSalesOrganizationpara limitar el alcance de los datos. - Filtrado por Rango de Fechas: Para gestionar el rendimiento y el volumen de datos, aplique siempre un filtro de rango de fechas. Comience con un período reciente de 3 a 6 meses de datos. La consulta utiliza la fecha de creación del pedido de devolución inicial (
I_SalesDocument.CreationDate) como condición de filtro principal. - Consideraciones de Rendimiento: Esta es una consulta exhaustiva que une múltiples vistas CDS grandes. Su ejecución puede consumir muchos recursos en el sistema S/4HANA de origen. Programe la extracción durante las horas de menor actividad empresarial para minimizar el impacto. Para conjuntos de datos muy grandes, considere estrategias de carga incremental.
a Consulta de ejemplo sql
WITH ReturnOrders AS (
SELECT
SalesDocument AS ReturnCaseId,
CreationDate,
CreationDateTime,
CreatedByUser,
OrderReason,
SoldToParty
FROM I_SalesDocument
WHERE SalesDocumentType = '[Your Return Order Type]' -- e.g., 'RE'
AND CreationDate BETWEEN '[Start Date]' AND '[End Date]'
AND CompanyCode = '[Your Company Code]'
)
-- 1. Return Request Initiated
SELECT
RO.ReturnCaseId AS "ReturnCaseId",
'Return Request Initiated' AS "ActivityName",
RO.CreationDateTime AS "EventTime",
RO.CreationDateTime AS "EventEndTime",
RO.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM ReturnOrders RO
JOIN I_SalesDocumentItem I ON RO.ReturnCaseId = I.SalesDocument
UNION ALL
-- 2. Return Order Approved
SELECT
SD.SalesDocument AS "ReturnCaseId",
'Return Order Approved' AS "ActivityName",
SD.LastChangeDateTime AS "EventTime",
SD.LastChangeDateTime AS "EventEndTime",
SD.LastChangedByUser AS "UserName",
SD.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
SD.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SalesDocument AS SD
JOIN ReturnOrders RO ON SD.SalesDocument = RO.ReturnCaseId
JOIN I_SalesDocumentItem I ON SD.SalesDocument = I.SalesDocument
WHERE SD.OverallSDProcessStatus <> 'A' -- Not Open, implying it has been processed/approved
AND I.SDProcessStatus <> 'A'
UNION ALL
-- 3. Return Delivery Created
SELECT
DF.PrecedingDocument AS "ReturnCaseId",
'Return Delivery Created' AS "ActivityName",
LH.CreationDateTime AS "EventTime",
LH.CreationDateTime AS "EventEndTime",
LH.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
LI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
JOIN I_DeliveryDocument AS LH ON DF.SubsequentDocument = LH.DeliveryDocument
JOIN I_DeliveryDocumentItem AS LI ON LH.DeliveryDocument = LI.DeliveryDocument
WHERE DF.PrecedingDocumentCategory = 'C' AND DF.SubsequentDocumentCategory = 'J'
UNION ALL
-- 4. Goods Received at Warehouse
SELECT
DF.PrecedingDocument AS "ReturnCaseId",
'Goods Received at Warehouse' AS "ActivityName",
MH.CreationDateTime AS "EventTime",
MH.CreationDateTime AS "EventEndTime",
MH.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
MI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
JOIN I_DeliveryDocumentItem AS LI ON DF.SubsequentDocument = LI.DeliveryDocument AND DF.SubsequentDocumentItem = LI.DeliveryDocumentItem
JOIN I_MaterialDocumentItem AS MI ON LI.DeliveryDocument = MI.DeliveryDocument AND LI.DeliveryDocumentItem = MI.DeliveryDocumentItem
JOIN I_MaterialDocumentHeader AS MH ON MI.MaterialDocument = MH.MaterialDocument AND MI.MaterialDocumentYear = MH.MaterialDocumentYear
WHERE DF.SubsequentDocumentCategory = 'J' AND MH.GoodsMovementType = '[Your Return Goods Receipt MVT]' -- e.g., '651', '653'
UNION ALL
-- 5. Item Inspection Completed
SELECT
SDI.SalesDocument AS "ReturnCaseId",
'Item Inspection Completed' AS "ActivityName",
SDI.LastChangeDateTime AS "EventTime",
SDI.LastChangeDateTime AS "EventEndTime",
SDI.LastChangedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
SDI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SalesDocumentItem AS SDI
JOIN ReturnOrders RO ON SDI.SalesDocument = RO.ReturnCaseId
WHERE SDI.ReturnsInspectionStatus = '4' -- 'Inspection Completed', adjust value based on your config
UNION ALL
-- 6. Return Rejected
SELECT
SDI.SalesDocument AS "ReturnCaseId",
'Return Rejected' AS "ActivityName",
SDI.LastChangeDateTime AS "EventTime",
SDI.LastChangeDateTime AS "EventEndTime",
SDI.LastChangedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
SDI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SalesDocumentItem AS SDI
JOIN ReturnOrders RO ON SDI.SalesDocument = RO.ReturnCaseId
WHERE SDI.SalesDocumentItemRejectionReason <> ''
UNION ALL
-- 7. Credit Memo Request Created
SELECT
DF.PrecedingDocument AS "ReturnCaseId",
'Credit Memo Request Created' AS "ActivityName",
CM_REQ.CreationDateTime AS "EventTime",
CM_REQ.CreationDateTime AS "EventEndTime",
CM_REQ.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
JOIN I_SalesDocument AS CM_REQ ON DF.SubsequentDocument = CM_REQ.SalesDocument
JOIN I_SalesDocumentItem I ON CM_REQ.SalesDocument = I.SalesDocument
WHERE CM_REQ.SalesDocumentType = '[Your Credit Memo Request Type]' -- e.g., 'CR'
UNION ALL
-- 8. Exchange Order Created
SELECT
DF.PrecedingDocument AS "ReturnCaseId",
'Exchange Order Created' AS "ActivityName",
EX_ORD.CreationDateTime AS "EventTime",
EX_ORD.CreationDateTime AS "EventEndTime",
EX_ORD.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
JOIN I_SalesDocument AS EX_ORD ON DF.SubsequentDocument = EX_ORD.SalesDocument
JOIN I_SalesDocumentItem I ON EX_ORD.SalesDocument = I.SalesDocument
WHERE EX_ORD.SalesDocumentType = '[Your Exchange Order Type]' -- e.g., 'OR'
UNION ALL
-- 9. Credit Memo Created
SELECT
DF_CM.PrecedingDocument AS "ReturnCaseId",
'Credit Memo Created' AS "ActivityName",
BD.CreationDateTime AS "EventTime",
BD.CreationDateTime AS "EventEndTime",
BD.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
BD.TotalNetAmount AS "RefundAmount",
BDI.Material AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SDDocumentFlow AS DF
JOIN I_SalesDocument AS CM_REQ ON DF.SubsequentDocument = CM_REQ.SalesDocument AND CM_REQ.SalesDocumentType = '[Your Credit Memo Request Type]'
JOIN I_SDDocumentFlow AS DF_CM ON CM_REQ.SalesDocument = DF_CM.PrecedingDocument
JOIN I_BillingDocument AS BD ON DF_CM.SubsequentDocument = BD.BillingDocument
JOIN I_BillingDocumentItem AS BDI ON BD.BillingDocument = BDI.BillingDocument
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
WHERE DF.PrecedingDocumentCategory = 'C'
UNION ALL
-- 10. Accounting Document Created
SELECT
RO.ReturnCaseId AS "ReturnCaseId",
'Accounting Document Created' AS "ActivityName",
JE.CreationDateTime AS "EventTime",
JE.CreationDateTime AS "EventEndTime",
JE.CreatedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
JE.AmountInCompanyCodeCurrency AS "RefundAmount",
JRI.ProductName AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_JournalEntry AS JE
JOIN I_JournalEntryItem JRI ON JE.AccountingDocument = JRI.AccountingDocument
JOIN I_BillingDocument BD ON JE.ReferenceDocument = BD.BillingDocument
JOIN I_SDDocumentFlow DF_CM ON BD.BillingDocument = DF_CM.SubsequentDocument
JOIN I_SalesDocument CM_REQ ON DF_CM.PrecedingDocument = CM_REQ.SalesDocument AND CM_REQ.SalesDocumentType = '[Your Credit Memo Request Type]'
JOIN I_SDDocumentFlow DF ON CM_REQ.SalesDocument = DF.SubsequentDocument
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
WHERE JE.OriginalReferenceDocumentType = 'VBRK'
UNION ALL
-- 11. Refund Processed
SELECT
RO.ReturnCaseId AS "ReturnCaseId",
'Refund Processed' AS "ActivityName",
CI.ClearingDate AS "EventTime",
CI.ClearingDate AS "EventEndTime",
CI.LastChangedByUser AS "UserName",
RO.OrderReason AS "ReturnReason",
CI.AmountInCompanyCodeCurrency AS "RefundAmount",
JRI.ProductName AS "ProductId",
RO.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_ClearedItem AS CI
JOIN I_JournalEntryItem JRI ON CI.AccountingDocument = JRI.AccountingDocument AND CI.FiscalYear = JRI.FiscalYear AND CI.LedgerGLLineItem = JRI.LedgerGLLineItem
JOIN I_JournalEntry JE ON JRI.AccountingDocument = JE.AccountingDocument
JOIN I_BillingDocument BD ON JE.ReferenceDocument = BD.BillingDocument
JOIN I_SDDocumentFlow DF_CM ON BD.BillingDocument = DF_CM.SubsequentDocument
JOIN I_SalesDocument CM_REQ ON DF_CM.PrecedingDocument = CM_REQ.SalesDocument AND CM_REQ.SalesDocumentType = '[Your Credit Memo Request Type]'
JOIN I_SDDocumentFlow DF ON CM_REQ.SalesDocument = DF.SubsequentDocument
JOIN ReturnOrders RO ON DF.PrecedingDocument = RO.ReturnCaseId
WHERE JE.OriginalReferenceDocumentType = 'VBRK' AND CI.ClearingDate IS NOT NULL
UNION ALL
-- 12. Return Case Closed
SELECT
SD.SalesDocument AS "ReturnCaseId",
'Return Case Closed' AS "ActivityName",
SD.LastChangeDateTime AS "EventTime",
SD.LastChangeDateTime AS "EventEndTime",
SD.LastChangedByUser AS "UserName",
SD.OrderReason AS "ReturnReason",
CAST(NULL AS DECIMAL(17, 2)) AS "RefundAmount",
I.Material AS "ProductId",
SD.SoldToParty AS "CustomerId",
'[Your Source System ID]' AS "SourceSystemId",
CURRENT_UTCTIMESTAMP AS "LastDataUpdateTimestamp"
FROM I_SalesDocument AS SD
JOIN ReturnOrders RO ON SD.SalesDocument = RO.ReturnCaseId
JOIN I_SalesDocumentItem I ON SD.SalesDocument = I.SalesDocument
WHERE SD.OverallSDProcessStatus = 'C' -- 'Completed'