martedì 16 ottobre 2018

Workaround per carico cambi ECB in SAP.

Tramite il report RFIMPNBS è possibile caricare i cambi della Banca Centrale Europea direttamente in un sistema SAP.

Tale metodo, spiegato per bene nella nota 1286897, utilizza una pagina pubblicata dalla BCE con i cambi del giorno.

Da inizio settembre però è stato modificato l'url della pagina che viene spostata su protocollo HTTPS. Infatti i nostri caricamenti automatici dei cambi sono terminati il giorno 5 di settembre, quando sono stati caricati i cambi con validità il giorno successivo (quindi il 6 settembre) e poi, evidentemente, non è più stata trovata la pagina HTTP.

In queste note un metodo alternativo al caricamento alla chiamata diretta HTTPS dal report.
Nella nota sopra indicata c'è un aggiornamento di settembre che spiega:

Update 27-SEP-2018

Around 14-SEP-2018, the European Central Bank has installed a server-side redirect from insecure plaintext http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml to https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml, and the SAP http client (icm as well as saphttp) will automatically follow that redirect.

La connessione di tipo G definita nella SM59:




deve essere modificata indicando di usare il servizio 443 (porta https), la connessione però non funziona solamente modificando la porta ma si deve:
  • caricare un certificato con la STRUST
  • attivare il servizio HTTPS nella SMICM 
  • modificare il profilo con la RZ10 per attivare il servizio HTTPS
  • propedeutico a tutto è però installare la SAPCRYPTOLIB aggiornata (vedi nota 510007 Setting up SSL on Application Server ABAP)
Per fare una cosa semplice ho pensato a questo giro:
  • un programmino in python lanciato ogni giorno che salva il file XML della pagina con i cambi.
  • schedulare il report RFIMPNBS affinchè usi un file sull'application server.
Il programma in python è semplicissimo:

#-----------------------------------------
#           Import moduli 
#-----------------------------------------
import requests

#-- Definizione variabili globali - Costanti fisse --
URL      = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml"
FILE_ECB = r"<file>"        

#------------------------------------------------------------------------------
# INIZIO PROGRAMMA
#------------------------------------------------------------------------------
if __name__=='__main__':

    try:

        resp = requests.get(URL)

        with open(FILE_ECB, 'wb') as foutput:
            foutput.write(resp.content)    

    except Exception as errore:

        print("ERRORE GET URL:", URL, str(errore))

ho poi integrato il programma con la solita scrittura log, gestione errori con invio mail, etc., ma questo esula dall'argomento del post.

Per il report RFIMPNBS ho dovuto definire il nome del file FI_RFIMPNBS_FILE con la transazione FILE:



precedentemente avevo creato il percorso logico ZECB con destinazione una share nel nostro file server aziendale.

Questa la pagina di lancio del report:


Si indica il percorso del file che deve corrispondere al nome logico FI_RFIMPNBS_FILE.

Per la data ho definito, nella variante di lancio, la data dinamica del giorno in modo da poter schedulare l'esecuzione giornaliera.

Nessun commento:

Posta un commento