Boa tarde a todos,
Estou trabalhando em uma aplicação que faz conexão com SAP usando a lib JCO, neste momento estou tentando implementar uma função que aparentemente não está recebendo informação do SAP, gostaria de saber se alguém trabalhou ou trabalha com isso que possa me dar uma ajuda, os passos que fiz até o momento foram: criar a classe que importa os parâmetros:
public class J_1BNFE_EVENT_OUT {
public J_1BNFE_EVENT_OUT() {
}
public static String getFunctionName(){
return ("J_1BNFE_EVENT_OUT");
}
public static JCO.MetaData createFunction(){
JCO.MetaData fMeta = new JCO.MetaData(getFunctionName());
fMeta.addInfo("IV_NFE_ACCESS_KEY", JCO.TYPE_STRING, 255, 0, 0, JCO.IMPORT_PARAMETER,null);
fMeta.addInfo("IV_EVENT_TYPE", JCO.TYPE_STRING,255, 0, 0, JCO.IMPORT_PARAMETER,null);
fMeta.addInfo("IV_INTERNAL_SEQUENCE_NUMBER", JCO.TYPE_STRING, 255, 0, 0, JCO.IMPORT_PARAMETER,null);
fMeta.addInfo("IV_TIMESTAMP", JCO.TYPE_STRING,255, 0, 0, JCO.IMPORT_PARAMETER, null);
fMeta.addInfo("IV_TIMEZONE", JCO.TYPE_STRING, 255, 0, 0, JCO.IMPORT_PARAMETER, null);
fMeta.addInfo("IV_TEXT", JCO.TYPE_STRING, 255, 0, 0, JCO.IMPORT_PARAMETER, null);
fMeta.addInfo("IV_RESEND", JCO.TYPE_STRING, 255, 0, 0, JCO.IMPORT_PARAMETER, null);
fMeta.addInfo("IV_DOCNUM", JCO.TYPE_STRING, 255, 0, 0, JCO.IMPORT_PARAMETER, null);
System.out.println("FMETA>>>>: " + fMeta.toString());
return fMeta;
}
}
E depois criar as classes que vão manipular a nota, para envio do cancelamento, porém o que acontece quando debugo é que quando chega no ponto onde a função é chamada as informações vem como null, abaixo o trecho da classe que manipula a função:
protected void handleRequest(JCO.Function function) throws RemoteException {//Aqui o parâmetro function já deveria vir com as informações preenchidas
if (log == null) log = new LoggerSystem();
//Util.executaLimpaLog(logCleaner, log);
log.info("INICIO DO HANDLE REQUEST");
log.info("Funcao recebida do SAP: " + function.getName());
if (function.getName().equals(J_1BNFE_CCE_OUT.getFunctionName())){
ServidorCCE.handleRequest(function, config.getValor("cce.versao"), config.getValor("msf.ipServidorNFE"), log);
return;
}else if (function.getName().equals(J_1BNFE_EVENT_OUT.getFunctionName())) {
ServidorCancelamento.handleRequest(function, config.getValor("msf.ipServidorNFE"), log);
return;
}
Na linha comentada, se não vier nada preenchido quando chegar na classe que cria a nota para enviar:
public static void handleRequest(JCO.Function function, String ipServer, LogUtil log) {
System.out.println("CAMPOS DA FUNÇAO: " + function.toString());
String versao = "1.0";
log.info("Versão do Cancelamento por Evento: " + versao);
nf = createNFECancelamento(function,log); //aqui dá o erro, porque function está com valores null
CancelarNFE nfCancel = new CancelarNFE(nf);
Util.enviaNFparaMastersaf(new EnviarCancEvent(nfCancel.getNF(), null, ipServer, log), "Cancelar", log);
}
Por favor, quem puder me dar uma ajuda agradeço muito. Abraço.