Problema
O serviço do Pós-processador SAP não funciona corretamente ao tentar processar um arquivo de retorno e no log são apresentado algumas exceções.
Solução/Procedimento
Ao tentar iniciar o serviço do Pós-processador SAP, ocorre o seguinte erro “Cuidado, o offset do Timezone na maquina local parece estar incorreto“.
1207 16:03:40,648 [PosProcessadorRetornoMain-3] DEBUG Data - <strong>Timezone offset: -8</strong> 1207 16:03:40,659 [PosProcessadorRetornoMain-3] ERROR Data - <strong>Cuidado, o offset do Timezone na maquina local parece estar incorreto: -8. Assumindo '-3'</strong> java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at com.sap.conn.jco.rt.DefaultJCoRuntime.loadLibrary(DefaultJCoRuntime.java:441) at com.sap.conn.jco.rt.DefaultJCoRuntime.registerNativeMethods(DefaultJCoRuntime.java:307) at com.sap.conn.jco.rt.JCoRuntime.registerNatives(JCoRuntime.java:969) at com.sap.conn.rfc.driver.CpicDriver.<clinit>(CpicDriver.java:955) at com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:43) at com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:261) at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:200) at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:73) at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.sap.conn.jco.JCo.createJCo(JCo.java:52) at com.sap.conn.jco.JCo.<clinit>(JCo.java:26) at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:61) at br.com.oobj.util.sap.RetornoNFeSAP.J_1B_NFE_XML_IN(RetornoNFeSAP.java:135) at br.com.oobj.util.sap.RetornoNFeSAP.registrarRetornoEnvio(RetornoNFeSAP.java:58) at br.com.oobj.util.sap.SAPR3RFCNFeAdapter.registrarRetornoEnvio(SAPR3RFCNFeAdapter.java:95) at br.com.oobj.processador.sap.PosProcessadorRetornoSAP.processarRetornoEnvio(PosProcessadorRetornoSAP.java:59) at br.com.oobj.processador.AbstractPosProcessadorRetorno.processar(AbstractPosProcessadorRetorno.java:134) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.processar(ProcessadorDiretorioEntradaSaidaDaemon.java:830) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.varrerDiretorioUsingStrategy(ProcessadorDiretorioEntradaSaidaDaemon.java:799) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.iniciarVarreduraInfinitaPastaEntrada(ProcessadorDiretorioEntradaSaidaDaemon.java:1042) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.run(ProcessadorDiretorioEntradaSaidaDaemon.java:602) at java.lang.Thread.run(Unknown Source)
Para corrigir o problema, acesse as configurações de data e hora do sistema operacional e altere o fuso horário para UTC-03:00 – Brasília.
Se não for possível alterar o fuso horário do servidor, uma alternativa é setar o time zone diretamente no serviço.
Para setar o Timezone, basta adicionar o seguinte parâmetro no .conf do serviço em “Java Options”
-Duser.Timezone=GMT-2
Ao tentar processar um arquivo de retorno ocorre a seguinte execeção.
Exception in thread "PosProcessadorRetornoMain-3" Exception in thread "PosProcessadorRetornoMain-1" java.lang.ExceptionInInitializerError: Error getting the version of the native layer: java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:212) at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:73) at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.sap.conn.jco.JCo.createJCo(JCo.java:52) at com.sap.conn.jco.JCo.<clinit>(JCo.java:26) at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:61) at br.com.oobj.util.sap.RetornoNFeSAP.J_1B_NFE_XML_IN(RetornoNFeSAP.java:135) at br.com.oobj.util.sap.RetornoNFeSAP.registrarRetornoEnvio(RetornoNFeSAP.java:58) at br.com.oobj.util.sap.SAPR3RFCNFeAdapter.registrarRetornoEnvio(SAPR3RFCNFeAdapter.java:95) at br.com.oobj.processador.sap.PosProcessadorRetornoSAP.processarRetornoEnvio(PosProcessadorRetornoSAP.java:59) at br.com.oobj.processador.AbstractPosProcessadorRetorno.processar(AbstractPosProcessadorRetorno.java:134) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.processar(ProcessadorDiretorioEntradaSaidaDaemon.java:830) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.varrerDiretorioUsingStrategy(ProcessadorDiretorioEntradaSaidaDaemon.java:799) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.iniciarVarreduraInfinitaPastaEntrada(ProcessadorDiretorioEntradaSaidaDaemon.java:1042) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.run(ProcessadorDiretorioEntradaSaidaDaemon.java:602) at java.lang.Thread.run(Unknown Source) java.lang.NoClassDefFoundError: <strong>Could not initialize class com.sap.conn.jco.JCo</strong> at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:61) at br.com.oobj.util.sap.RetornoNFeSAP.J_1B_NFE_XML_IN(RetornoNFeSAP.java:135) at br.com.oobj.util.sap.RetornoNFeSAP.registrarRetornoEnvio(RetornoNFeSAP.java:58) at br.com.oobj.util.sap.SAPR3RFCNFeAdapter.registrarRetornoEnvio(SAPR3RFCNFeAdapter.java:95) at br.com.oobj.processador.sap.PosProcessadorRetornoSAP.processarRetornoEnvio(PosProcessadorRetornoSAP.java:59) at br.com.oobj.processador.AbstractPosProcessadorRetorno.processar(AbstractPosProcessadorRetorno.java:134) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.processar(ProcessadorDiretorioEntradaSaidaDaemon.java:830) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.varrerDiretorioUsingStrategy(ProcessadorDiretorioEntradaSaidaDaemon.java:799) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.iniciarVarreduraInfinitaPastaEntrada(ProcessadorDiretorioEntradaSaidaDaemon.java:1042) at gov.sefaz.util.pdes.ProcessadorDiretorioEntradaSaidaDaemon.run(ProcessadorDiretorioEntradaSaidaDaemon.java:602) at java.lang.Thread.run(Unknown Source)
Esse problema ocorre quando a dll do SAP não está mapeada na pasta bin do serviço.
Para corrigir o serviço basta executar o seguinte procedimento.
1 – Copie a dll sapjco3.dll
- C:\Oobj\Aplicativos\Oobj\oobj-pos-processador-sap\lib\x64
- Copie a dll sapjco3.dll que está na pasta para o seguinte diretório: C:\Oobj\Aplicativos\Oobj\oobj-pos-processador-sap\bin
Em seguida reinicie o serviço e mande reentregar o retorno novamente.