Bueno, entonces combina las dos decodificaciones: carácter codificado -> caracteres -> base64, así:
form test. data: lv_xbase64 type xstring, lv_base64 type string, lv_decoded type string, lo_conv type ref to cl_abap_conv_in_ce. lv_xbase64 = '534756736247386756323979624751684953453D'. lo_conv = cl_abap_conv_in_ce=>create( ). lo_conv->convert( exporting input = lv_xbase64 importing data = lv_base64 ). lv_decoded = cl_http_utility=>decode_base64( lv_base64 ). write: / lv_decoded. " writes 'Hello World!!! endform.
La instancia del convertidor utiliza la codificación predeterminada de mi sistema SAP, que es ISO-8859-1. También podría ser UTF-8, ya que el conjunto de caracteres base64 tiene los mismos valores de código en estas dos codificaciones. Si estás en otra codificación, puedes pasar encoding = 'UTF-8' en el método create del convertidor.
Si tienes muchos xstrings para decodificar de esta manera, puedes reutilizar la instancia del convertidor.