Hasta ahora, diría que 'no se puede hacer de manera elegante' con las herramientas actuales de SAP (a menos que construyas todo tú mismo).
Tuve esta tarea una vez también, y la única forma en que pude resolverla fue creando una entrada XSLT DDIC para ambos archivos XML (o un archivo 'de texto') con
cl_o2_api_xsltdesc=>create_new( ) "API: Programa XSLT -> Crear nueva entrada en el sistema de almacenamiento"
y luego comparándolos con
SUBMIT rsvrsfu3 "Comparación de versiones: Módulos de función (fuentes)"
. (Y eliminando los objetos XSLT DDIC después de la comparación, por supuesto)
El problema con esto es que solo puedes usarlo en el sistema de Desarrollo, a menos que tu sistema de Pruebas/Calidad o incluso Productivo esté abierto para crear entradas DDIC
😉
(de lo contrario, recibirás el mensaje "No se permiten cambios en el Repositorio o en la Customización entre clientes").
O bien, puedes conectar desde tu Sistema de Desarrollo a Producción, extraer los datos que necesitas y hacer la comparación en el Sistema de Desarrollo para los datos productivos. Como dije, esto no se hace 'de manera elegante'.
Todavía hay inconvenientes en la función de comparación de código con
rsvrsfu3
, ya que los dos archivos deben ser muy similares, de lo contrario, a veces no es posible que el programa realmente encuentre filas 'coincidentes' (sin cambios o ligeramente cambiadas), y más bien afirma que una fue eliminada y la otra insertada, cuando en realidad es la misma o solo ligeramente cambiada. Y también debes pensar en cuál archivo debería ser el 'nuevo' y cuál es el 'viejo', para que la categorización del informe en 'insertado' y 'eliminado' no sea demasiado confusa.
Por lo tanto, en este momento, obtendrás mejores resultados con editores de texto modernos (como notepad++, bbEdit, TextWrangler), que incluyen comparaciones de archivos y carpetas, o donde hay un complemento disponible.
Solo tomé este camino en SAP en mi caso, porque siempre había varios 'archivos' para comparar y no quería descargarlos, nombrarlos, compararlos, sacar mis conclusiones, etc.
(Mostrar el XML funciona perfectamente con CALL FUNCTION 'SDIXML_DOM_TO_SCREEN'.)
1. Ejemplo de XML serializado que se puede ver como XML o comparar con otra XML con una función 'COMPARAR':
2. Ejemplo de extraer datos de customizing de otro cliente/sistema (por ejemplo, de productivo a sistema de desarrollo) para comparar diferentes 'versiones' (por ejemplo, Customizing para Cálculos de Precios)