Até agora, eu diria que 'não pode ser feito de forma elegante' com as ferramentas atuais da SAP (a menos que você construa tudo sozinho).
Eu tive essa tarefa uma vez também, e a única maneira que encontrei para resolvê-la foi criando uma entrada XSLT DDIC para ambos os arquivos XML (ou um arquivo 'de texto') com
cl_o2_api_xsltdesc=>create_new( ) "API: Programa XSLT -> Criar nova entrada no sistema de armazenamento"
e então comparando-os com
SUBMIT rsvrsfu3 "Comparação de versões: Módulos de função (fontes)"
. (E excluindo os objetos XSLT DDIC após a comparação, é claro)
O problema com isso é que você só pode usá-lo no sistema de Desenvolvimento, a menos que seu sistema de Teste/Qualidade ou até mesmo de Produção esteja aberto para criar entradas DDIC
?
(caso contrário, você receberá a mensagem "Não são permitidas alterações no Repositório ou na Customização entre clientes").
Ou então, você pode conectar seu Sistema de Desenvolvimento à Produção, extrair os dados necessários e fazer a comparação no Sistema de Desenvolvimento para os dados produtivos. Como mencionei, isso não é feito 'de forma elegante'.
Ainda há inconvenientes na função de comparação de código com
rsvrsfu3
, já que os dois arquivos devem ser muito semelhantes, caso contrário, às vezes o programa pode não encontrar linhas 'coincidentes' (sem alterações ou ligeiramente alteradas) e, em vez disso, afirmar que uma foi excluída e a outra inserida, quando na realidade é a mesma ou apenas ligeiramente alterada. E você também deve pensar em qual arquivo deve ser o 'novo' e qual é o 'antigo', para que a categorização do relatório em 'inserido' e 'excluído' não fique muito confusa.
Portanto, neste momento, você obterá melhores resultados com editores de texto modernos (como notepad++, bbEdit, TextWrangler), que incluem comparações de arquivos e pastas, ou onde há um plugin disponível.
Eu só segui esse caminho na SAP no meu caso, porque sempre havia vários 'arquivos' para comparar e eu não queria baixá-los, nomeá-los, compará-los, tirar minhas conclusões, etc.
(Exibir o XML funciona perfeitamente com CALL FUNCTION 'SDIXML_DOM_TO_SCREEN'.)
1. Exemplo de XML serializado que pode ser visualizado como XML ou comparado com outro XML com uma função 'COMPARAR':
2. Exemplo de extração de dados de customização de outro cliente/sistema (por exemplo, de produção para sistema de desenvolvimento) para comparar diferentes 'versões' (por exemplo, Customização para Cálculos de Preços)