Recentemente no projeto de migração do ECC 6 para o S4HANA que venho participando aqui na empresa nos deparamos com a seguinte situação. Atualmente temos muitas interfaces com sistemas não SAP sendo realizadas através de acessos DBLINK do Oracle. Até então isto era bem transparente, eram sistemas construídos internamente, ou de parceiros, cujo banco de dados é Oracle, e como o SAP ECC também era Oracle. Simplesmente fazíamos a conexão entre o SAP ECC e o banco de dados deste sistema via DBLInk e nos programas ABAP fazíamos a leitura dos dados das tabelas dos sistemas não SAP através de consultas SQL nativas, usando EXEC SQL.
Porém com a migração para o S4HANA nos deparamos com o seguinte questionamento. Como deverão ser tratadas as conexões feitas via DBLInk? Além disso no report de erros a serem remediados durante a conversão gerado pelo ATC. As instruções em questão são identificadas como consulta SQL Nativo. Embora seja de outro sistema não SAP.
A primeira opção sugerida seria migrar estas interfaces para o SAP PO (Process Orchestration), porém a grande maioria delas apenas faz pequenas consultas de forma síncrona e o esforço para isto seria muito grande. Pensamos ainda em utilizar o DBCO criando a conexão direta entre o sistema Netweaver e o banco Oracle. Mas neste caso nos deparamos com outro problema, nosso SAP Netweaver assim como banco SAP HANA estão instalados no Linux no IBM Power Little Endian, e a SAP não disponibiliza a biblioteca DBSL para esta versão de sistema operacional e hardware. Com isso tinhamos a opção do uso do SDA – SAP Hana Smart Data Access. Que inclusive seria a solução com menor impacto, uma vez que os programas não precisariam ser alterados para os casos de leitura de dados das tabelas do Oracle.
O que é o SAP Hana Smart Data Access?
O SAP Hana Smart Data Access foi introduzido no SP6 do Hana, e pode ser definido como uma técnica de virtualização, que permite ao banco SAP HANA acessar dados de base de dados heterógeneas. Onde estes dados serão consultados através de tabelas virtuais (Virtual Tables) criadas dentro do SAP HANA. Ele basicamente permite que o SAP HANA consulte dados armazenados em tabelas de outros banco de dados. A conexão é feita via driver ODBC para o banco destino. No nosso caso específico utilizamos o SAP HANA 2.0 SP4 e Oracle 12C.
Toda a configuração é realizada diretamente no banco SAP HANA. Mais informações neste link: https://help.sap.com/viewer/6b94445c94ae495c83a19646e7c3fd56/2.0.04/en-US/a07c7ff25997460bbcb73099fb59007d.html
Algumas notas importantes
SAP Note 1868209 – SAP HANA Smart Data Access: Central Note
KBA 2487438 – Oracle Database 12C ODBC Driver Setup – SAP HANA SDA
SAP Note 2501150 – HANA SDA connection to Oracle fails with ORA-12504
E como acesso estes dados no programa ABAP?
O acesso será feito da mesma forma que ocorreria no DBLInk, através da instrução EXEC SQL. Estas tabelas não ficam disponíveis no Dicionário de Dados a não ser que seja criado alguma external view do HANA para elas.
Outras informações importantes
É possível acessar apenas views e tabelas do Oracle com este método. No DB Link tínhamos chamadas de Stored Procedures do Oracle no programa ABAP isto não será possível com o SDA.
Uma coisa interessantes que as funções de conversão do Oracle (to_char, to_date) funcionam normalmente nas consultas. Pelo que é informado na documentação as funções equivalentes entre o HANA e o BD de fonte remota são encaminhadas para processamento no BD remoto.