Enviar parametros para tabela no SAP utilizando JCO

10 respostas
E

Bom dia pessoal,

Estou efetuando a integração de um sistema java com o SAP, porem não sei como faço para enviar dados para uma tabela no sap, utilizando o JCO.

Ja procurei no google e nao encontrei algo que pudesse ajudar, li tambem a documentação, tentei fazer algo mas nao houve sucesso…

Sendo assim se alguem ja passou por isso e puder ajudar eu agradeço…

Grato desde já
Elton C.

10 Respostas

E

alguem ?

E

Bom dia pessoal,

Alguem ja passou pelo problema acima ?

Grato desde ja Elton C.

R

Vc chegou a ler o pdf que vem junto com JCO?

Mais tarde posso passar um exemplo…

E

Obrigado desde ja pela resposta…

Entao eu li a documentação sim, pesquisei na net tambem, mas na hora de implementar nao consegui fazer funcionar… eu consigo exportar valores direto para uma variavel do SAP, mas nao consigo exportar para tabela, se for possivel um exemplo, seria melhor para esclarecer…

Segue o codigo:

static {
        repository = new Repository("Repository");
        JCO.MetaData fmeta = new JCO.MetaData("ZNFESRV_CONSULTA_CNPJ");
        fmeta.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_CONTRIBUINTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_NUM, 8, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("EMITE_NFE", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        repository.addFunctionInterfaceToCache(fmeta);
        
        repository = new Repository("Repository");
        JCO.MetaData fmeta2 = new JCO.MetaData("ZNFESRV_CONSULTA_INF_LOTE");
        fmeta2.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_NUM, 8, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta2.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("NUM_LOTE", JCO.TYPE_NUM, 8, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta2.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta2.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta2.addInfo("INFORMACOES_LOTE", JCO.TYPE_TABLE, 1, 0, 0, JCO.EXPORT_PARAMETER, null); // esse item é o nome da tabela...  mas a sintaxe provavelmente esta errada
        repository.addFunctionInterfaceToCache(fmeta2);

    }

Metodo que faz a cominação entre os sistemas…

protected void handleRequest(JCO.Function function) throws Exception {

            /*    
            String result = "";
            ConsultaCnpjWs consulta = new ConsultaCnpjWs();
            
            JCO.ParameterList input = function.getImportParameterList();
            JCO.ParameterList output = function.getExportParameterList();
            
            System.out.println("handleRequest(" + function.getName() + ")");
            System.out.println("documento:" + input.getString("CNPJ_CONTRIBUINTE"));
            
            result = "87456321";//consulta.getConsultaWS(input.getString("CNPJ_CONTRIBUINTE"));
            System.out.println("Incrição Municipal: " + result);
            output.setValue(result, "INSCRICAO_MUNICIPAL");
            */ 
           
            String result = "1";
            JCO.ParameterList input = function.getImportParameterList();
            JCO.ParameterList output = function.getExportParameterList();
            output.setValue(1, "VERSAO_UTILIZADA");
            output.setValue("X", "SUCESSO");  
            JCO.Table outputTab = function.getTableParameterList().getTable("INFORMACOES_LOTE");
            outputTab.setValue("08866633000199", "CPFCNPJ_REMET");
            

        }

Obrigado mais uma vez…

R

Bom normalmente qndo realizamos integração com SAP é definida uma RFC a qual tem parametros de entrada e retorno uma tabela

Por exemplo:

com.sap.mw.jco.IFunctionTemplate ft = mRepository.getFunctionTemplate("RFC_SAP");
JCO.Function function = ft.getFunction();

//Os parametros de entrada é uma tabela tbm
com.sap.mw.jco.JCO.Table paramsEntrada = function.getTableParameterList().getTable("TABELA PARAMETROS ENTRADA");
paramsEntrada.setValue("000000","MATNR"); //campos da tabela
paramsEntrada.setValue("000000","ABC");
paramsEntrada.setValue("0000000","XYZ");

com.sap.mw.jco.JCO.Client mConnection.execute(function);

//Retorno da RFC é uma tabela tbm:

JCO.Table retorno = function.getTableParameterList().getTable("TABELA  RETORNO");
while (retorno.nextRow())
{
     //Semelhante a um JDBC mas precisamente ResultSet
     System.out.println(retorno.getString("MATNR");
}

Para maiores detalhes procure o ABAPI que desenvolveu a RFC.

E

Obrigado Rafel ela resposta.

Vamos la, eu estou pegando o bonde andando... esse é um trabalho com web service.... o SAP envia alguns valores (nao e tabela) e eu retorno valores em algumas variaveis e tabela do SAP...

abaixo segue o bloco statico que contem as variaveis que recebe os dados do SAP (IMPORT_PARAMETER) e as que retornam os dados (EXPORT_PARAMETER)

Bloco statico
static {
        repository = new Repository("Repository");
        JCO.MetaData fmeta = new JCO.MetaData("ZNFESRV_CONSULTA_CNPJ");
        fmeta.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_CONTRIBUINTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_NUM, 8, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("EMITE_NFE", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        repository.addFunctionInterfaceToCache(fmeta);
        
        repository = new Repository("Repository");
        JCO.MetaData fmeta2 = new JCO.MetaData("ZNFESRV_CONSULTA_INF_LOTE");
        fmeta2.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_NUM, 8, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta2.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("NUM_LOTE", JCO.TYPE_NUM, 8, 0, 0, JCO.IMPORT_PARAMETER, null);
        
        fmeta2.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta2.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        //fmeta2.addInfo("INFORMACOES_LOTE", JCO.TYPE_TABLE, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        repository.addFunctionInterfaceToCache(fmeta2);

    }

esse e o metodo que faz a "ponte" entre o SAP e o java

protected void handleRequest(JCO.Function function) throws Exception {

            /*    
            String result = "";
            ConsultaCnpjWs consulta = new ConsultaCnpjWs();
            
            JCO.ParameterList input = function.getImportParameterList();
            JCO.ParameterList output = function.getExportParameterList();
            
            System.out.println("handleRequest(" + function.getName() + ")");
            System.out.println("documento:" + input.getString("CNPJ_CONTRIBUINTE"));
            
            result = "87456321";//consulta.getConsultaWS(input.getString("CNPJ_CONTRIBUINTE"));
            System.out.println("Incrição Municipal: " + result);
            output.setValue(result, "INSCRICAO_MUNICIPAL");
            */ // ate aki esta ok sao variaveis normais, ja consegui exportar os dados para o SAP
            
            // a partir daqui que nao estou conseguindo fazer, nao consigo enviar os dados de retorno para a tabela no SAP.
            JCO.MetaData meta= new JCO.MetaData("ZNFESRV_CONSULTA_INF_LOTE"); // essa e o nome da funcao do SAP, porem a funcao e passada por parametro... eu efetuei dessa forma so para tentar executar... 
            JCO.Table codes = new JCO.Table(meta);
            JCO.ParameterList input = function.getImportParameterList();
            JCO.ParameterList output = function.getExportParameterList();
            
            codes = function.getExportParameterList().getTable("INFORMACOES_LOTE"); // esse e o nome da tabela
            output.setValue(1, "VERSAO_UTILIZADA"); // variavel normal
            output.setValue("X", "SUCESSO"); // variavel normal
            codes.appendRow();
            codes.setValue("123456789123", "NUM_LOTE"); // esse e um campo da tabela
            codes.setValue(12345678, "INSCRICAO_PRESTADOR"); /// esse e um campo da tabela... 
            
            
        }

Sendo assim, saberia informar o que esta errado na sitax ???
ou tenho q fazer de outra forma ?

obs. como a função e passada por parametro para o metodo handleRequest(), nao deveria ter algo no bloco statico informando o nome da tabela :

exemplo: fmeta2.addInfo("INFORMACOES_LOTE", JCO.TYPE_TABLE, 1, 0, 0, JCO.EXPORT_PARAMETER, null);

R

Ola Elton nao entendi prq vc precisa exportar dados para tabela do SAP.
Vc tem a especificaçao da RFC em maos?, saberia me dizer qual os parametros de entrada.
Poderia explicar melhor onde entra webservices.
Desculpa pelo reply atrasado.

O exemplo acima seria suficiente para consumir uma RFC no SAP.

E

Ola Rafael, obrigado pela força, ainda nao consegui resolver este problema, vc tentar colocar o mais detalhado possivel, para ver se vc pode me ajudar…

Bom vamos la… o sistema que estou desenvolvendo e de Nota Fiscal Eletronica, o sistema SAP e um pouco amarrado para fazer comunicação por WEB Service, entao a empresa que estou trabalhando solicitou o desenvolvimento de um sistema em Java, que se conecta ao SAP, e faz “a ponte” entre o Server da prefeitura e o sistema SAP, ou seja, o SAP envia alguns dados para o JAVA o sistema em java faz a comunicação via Web Service com Sever da prefeitura. O Server da preitura, devolve a resposta na mesma conexao, o sistema Java pegas as informações passadas pela Server da prefeitura, e devolve para o SAP.

Em alguns casos a devolução dos dados e para variaveis, nao tenho nenhum problema em exportar dados para variaveis, mas em outros casos a quandidade de informações e exportada para uma tabela no SAP:

Exemplo: Preciso fazer uma consulta de lote NF, o sistema da prefeitura, ira devolver varias NF´s, por sua vez, cada NF sera armazena em uma linha na tabela do SAP.

Vou postar o codigo que tenho a te o momento, para ver se fica melhor de entender.
Obs. esse foi a ultima alteração, que eu tentei fazer de acordo com o codigo que vi em um site http://sap.technique.free.fr/static/jco/Example5.java.html

static {
        //--------------------------------------------------------------------------------------
        // Essa pate do codigo esta td certo, pois recebe um valor(IMPORT_PARAMETER) e exporta (EXPORT_PARAMETER) outro valor para uma variavel no SAP
        //--------------------------------------------------------------------------------------
        repository = new Repository("Repository");
        JCO.MetaData fmeta = new JCO.MetaData("ZNFESRV_CONSULTA_CNPJ");
        fmeta.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_CONTRIBUINTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_NUM, 8, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("EMITE_NFE", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        repository.addFunctionInterfaceToCache(fmeta);
        
        //--------------------------------------------------------------------------------------
        // Aqui começa o problema, as variaveis de importação dos dados estao OK, o problema e para exportar os dados para o SAP.
        // O envio de dados para as variaveis estao OK, porem o problema e o envio de dados para a tabela do SAP. 
      
        //--------------------------------------------------------------------------------------
        fmeta = new JCO.MetaData("ZNFESRV_CONSULTA_INF_LOTE");
        fmeta.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_CHAR, 8, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("NUM_LOTE", JCO.TYPE_CHAR, 8, 0, 0, JCO.IMPORT_PARAMETER, null);
      
        
        fmeta.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("INFORMACOES_LOTE", JCO.TYPE_TABLE, 1, 0, 0, 0,"RFCTEST");
        System.out.println("Executando os Exports"); 
        repository.addFunctionInterfaceToCache(fmeta);

        JCO.MetaData smeta  = new JCO.MetaData("RFCTEST");
        smeta.addInfo("NUM_LOTE",  JCO.TYPE_NUM,  12,  0, 0);
        smeta.addInfo("INSCRICAO_PRESTADOR",  JCO.TYPE_NUM,   8,  0, 0);
        smeta.addInfo("CPFCNPJ_REMET",   JCO.TYPE_CHAR,   14, 0, 0);
        smeta.addInfo("DT_ENVIO_LOTE",   JCO.TYPE_CHAR,   15, 0, 0);
        smeta.addInfo("QTD_NOTAS", JCO.TYPE_NUM,   15, 0, 0);
        smeta.addInfo("UNIT",   JCO.TYPE_INT,    3, 0, 0);
        smeta.addInfo("TMP_PROCESS",   JCO.TYPE_NUM,   15, 0, 0);
        smeta.addInfo("VL_TOT_SERV",  JCO.TYPE_FLOAT,   15, 0, 0);
        smeta.addInfo("VL_TOT_DEDUCOES",   JCO.TYPE_FLOAT,   15, 0, 0);
        smeta.addInfo("MOEDA",   JCO.TYPE_FLOAT,   5, 0, 0);
        repository.addStructureDefinitionToCache(smeta);


    }

Este metodo faz a ponte entre o java e o sistema da prefeitura

protected void handleRequest(JCO.Function function) throws Exception {

         //-----------------------------------------------------------------
         //Ate aqui nao tem nenhum problema, a comunicação esta perfeita.
         //-----------------------------------------------------------------
      
            String result = "";
            ConsultaCnpjWs consulta = new ConsultaCnpjWs();
            
            JCO.ParameterList input = function.getImportParameterList();
            JCO.ParameterList output = function.getExportParameterList();
            
            System.out.println("handleRequest(" + function.getName() + ")");
            System.out.println("documento:" + input.getString("CNPJ_CONTRIBUINTE"));
            
            result = consulta.getConsultaWS(input.getString("CNPJ_CONTRIBUINTE")); // esse metodo envia os dados para um metodo que ira fazera 
//comunicação via web service, o mesmo rece um retorno (apenas um valor
            System.out.println("Incrição Municipal: " + result);
            output.setValue(result, "INSCRICAO_MUNICIPAL");// aqui e exportado o valor recebido do Web Service a variavel no SAP
            
            
         //-----------------------------------------------------------------
         //O problema começa aqui, pois nao consigo exportar os dados para a tabela no SAP, so as variaveis. 
         // Obs. vide os comentarios ao lado das variaveis abaixo.
        //-----------------------------------------------------------------
       
            JCO.Table table = function.getTableParameterList().getTable("INFORMACOES_LOTE"); // esse e o nome da tabela no SAP

            System.out.println("handleRequest(" + function.getName() + ")");
            
            output.setValue(1, "VERSAO_UTILIZADA"); // essa e apenas uma variavel normal, o valor esta sendo exportado com sucesso
            output.setValue("X", "SUCESSO"); // essa e apenas uma variavel normal, o valor esta sendo exportado com sucesso
          
            // A partir daqui os valores sao da tabela no SAP
            // Obs. Neste caso nao esta havendo comunicação com o Web Service, os valores sao ficticios... apenas para teste. 
            table.appendRow(); // este coando seria para acrescentar uma linha na tabela
           
            table.setValue("12345678","NUM_LOTE"); // o valor informado "12345678" e apenas para teste, para que seja preenchido na tabela.
            table.setValue("12345678","INSCRICAO_PRESTADOR");// o valor informado "12345678" e apenas para teste, para que seja preenchido na tabela.
            table.setValue("12345678912345","CPFCNPJ_REMET");// o valor informado "12345678" e apenas para teste, para que seja preenchido na tabela.
            table.setValue("","DT_ENVIO_LOTE");// o valor informado "12345678" e apenas para teste, para que seja preenchido na tabela.
            table.setValue("000000000000001","QTD_NOTAS");// o valor informado "12345678" e apenas para teste, para que seja preenchido na tabela.
            table.setValue("000000000000002","TMP_PROCESS");// o valor informado "12345678" e apenas para teste, para que seja preenchido na tabela.
            table.setValue("000000000000100","VL_TOT_SERV");// o valor informado "12345678" e apenas para teste, para que seja preenchido na tabela.
            table.setValue("000000000000050","VL_TOT_DEDUCOES");// o valor informado "12345678" e apenas para teste, para que seja preenchido na tabela.
            table.setValue("","MOEDA");// o valor informado "12345678" e apenas para teste, para que seja preenchido na tabela.
            
          
            
        }

esse e o codigo completo da RFC

package br.com.cienci.nfe.rfc;

import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.IRepository;
import com.sap.mw.jco.JCO;

/**
 * RFCServer.java
 * Criado em 12/10/2008
 * @author Elton da Cunha Santana
 * @version 1.0
 *
 * Servidor RFC para conexões com o SAP 
 */
public class RFCServer implements JCO.ServerExceptionListener, JCO.ServerStateChangedListener {

    private static volatile RFCServer INSTANCE;
    private static String host = null;
    private static String gateway = null;
    private static String prog_id = null;
    private static String unicode = null;
    protected static IRepository repository;
    
    static JCO.Server srv[] = new JCO.Server[1];
    /**
     * Bloco estatico que registra os programas e variaveis a serem ouvidas pelo SAP.
     */
    

    static {
        repository = new Repository("Repository");
        JCO.MetaData fmeta = new JCO.MetaData("ZNFESRV_CONSULTA_CNPJ");
        fmeta.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_CONTRIBUINTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_NUM, 8, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("EMITE_NFE", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        repository.addFunctionInterfaceToCache(fmeta);
        
        //--------------------------------------------------------------------------------------
        // Meu codigo aqui
        //--------------------------------------------------------------------------------------
        fmeta = new JCO.MetaData("ZNFESRV_CONSULTA_INF_LOTE");
        fmeta.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_CHAR, 8, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("NUM_LOTE", JCO.TYPE_CHAR, 8, 0, 0, JCO.IMPORT_PARAMETER, null);
      
        
        fmeta.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("INFORMACOES_LOTE", JCO.TYPE_TABLE, 1, 0, 0, 0,"RFCTEST");
        System.out.println("Executando os Exports"); 
        repository.addFunctionInterfaceToCache(fmeta);

        JCO.MetaData smeta  = new JCO.MetaData("RFCTEST");
        smeta.addInfo("NUM_LOTE",  JCO.TYPE_NUM,  12,  0, 0);
        smeta.addInfo("INSCRICAO_PRESTADOR",  JCO.TYPE_NUM,   8,  0, 0);
        smeta.addInfo("CPFCNPJ_REMET",   JCO.TYPE_CHAR,   14, 0, 0);
        smeta.addInfo("DT_ENVIO_LOTE",   JCO.TYPE_CHAR,   15, 0, 0);
        smeta.addInfo("QTD_NOTAS", JCO.TYPE_NUM,   15, 0, 0);
        smeta.addInfo("UNIT",   JCO.TYPE_INT,    3, 0, 0);
        smeta.addInfo("TMP_PROCESS",   JCO.TYPE_NUM,   15, 0, 0);
        smeta.addInfo("VL_TOT_SERV",  JCO.TYPE_FLOAT,   15, 0, 0);
        smeta.addInfo("VL_TOT_DEDUCOES",   JCO.TYPE_FLOAT,   15, 0, 0);
        smeta.addInfo("MOEDA",   JCO.TYPE_FLOAT,   5, 0, 0);
        repository.addStructureDefinitionToCache(smeta);


    }

    public RFCServer() {
        JCO.addServerExceptionListener(this);
        JCO.addServerStateChangedListener(this);
    }

    public static RFCServer getInstance() {

        if (INSTANCE == null) {
            synchronized (RFCServer.class) {
                if (INSTANCE == null) {
                    INSTANCE = new RFCServer();
                }
            }
        }
        return INSTANCE;
    }

    /**
     * Inicia o servidor
     */
    public static void startServers() {

        srv[0] = new Server(host, gateway, prog_id, repository);

        for (int i = 0; i < srv.length; i++) {
            try {
                if (srv[i].isAlive()) {
                    System.out.println("Ja esta Conectado !!!");
                    break;
                } else {
                    srv[i].setTrace(true);
                    srv[i].start();
                }
            } catch (Exception ex) {
                System.out.println("Could not start server " + srv[i].getProgID() + ":\n" + ex);
            }
        }
    }

    /**
     * Para o servidor
     */
    public static void stopServers() {
        for (int i = 0; i < srv.length; i++) {
            srv[i].stop();
            srv[i].disconnect();
            System.out.println("Start system " + srv[i]);
        }
    }

    /**
     * Configura a conexão 
     * 
     * @param argv
     */
    public void connectServer(String[] argv) {
        host = argv[0];
        gateway = argv[1];
        prog_id = argv[2];
        unicode = argv[3];

        RFCServer.startServers();
    }

    /**
     * Configura a desconexão
     * 
     * @param argv
     */
    public void disconnectServer(String[] argv) {
        host = argv[0];
        gateway = argv[1];
        prog_id = argv[2];
        unicode = argv[3];

        RFCServer.stopServers();
    }

    public void serverExceptionOccurred(JCO.Server server, Exception ex) {
        System.out.println("Exception in server " + server.getProgID() + ":\n" + ex);
        ex.printStackTrace();
    }

    public void serverStateChangeOccurred(JCO.Server server, int old_state, int new_state) {
        System.out.print("Server " + server.getProgID() + " changed state from [");
        if ((old_state & JCO.STATE_STOPPED) != 0) {
            System.out.print(" STOPPED ");
        }
        if ((old_state & JCO.STATE_STARTED) != 0) {
            System.out.print(" STARTED ");
        }
        if ((old_state & JCO.STATE_LISTENING) != 0) {
            System.out.print(" LISTENING ");
        }
        if ((old_state & JCO.STATE_TRANSACTION) != 0) {
            System.out.print(" TRANSACTION ");
        }
        if ((old_state & JCO.STATE_BUSY) != 0) {
            System.out.print(" BUSY ");
        }

        System.out.print("] to [");
        if ((new_state & JCO.STATE_STOPPED) != 0) {
            System.out.print(" STOPPED ");
        }
        if ((new_state & JCO.STATE_STARTED) != 0) {
            System.out.print(" STARTED ");
        }
        if ((new_state & JCO.STATE_LISTENING) != 0) {
            System.out.print(" LISTENING ");
        }
        if ((new_state & JCO.STATE_TRANSACTION) != 0) {
            System.out.print(" TRANSACTION ");
        }
        if ((new_state & JCO.STATE_BUSY) != 0) {
            System.out.print(" BUSY ");
        }
        System.out.println("]");
    }

    static public class Repository extends JCO.BasicRepository implements IRepository {

        public Repository(String name) {
            super(name);
        }
    }

    static public class Server extends JCO.Server {

        public Server(String gwhost, String gwserv, String progid, IRepository repository) {
            super(gwhost, gwserv, progid, repository);
            super.setProperty("jco.server.unicode", unicode);
        }

        @Override
        protected JCO.Function getFunction(String function_name) {
            JCO.Function function = super.getFunction(function_name);
            return function;
        }

        @Override
        protected boolean checkAuthorization(String function_name,
                int authorization_mode, String authorization_partner,
                byte[] authorization_key) {
            return true;
        }

        /**
         * Ouvidor do SAP, aqui é feita as chamadas dos programas e são
         * distribuidas as variaveis de entrada e saida do SAP e tambem é feito
         * as chamadas ao WebService da parte do Java
         * 
         * @param function
         */
        @Override
        protected void handleRequest(JCO.Function function) throws Exception {

         
            /*    
            String result = "";
            ConsultaCnpjWs consulta = new ConsultaCnpjWs();
            
            JCO.ParameterList input = function.getImportParameterList();
            JCO.ParameterList output = function.getExportParameterList();
            
            System.out.println("handleRequest(" + function.getName() + ")");
            System.out.println("documento:" + input.getString("CNPJ_CONTRIBUINTE"));
            
            result = "87456321";//consulta.getConsultaWS(input.getString("CNPJ_CONTRIBUINTE"));
            System.out.println("Incrição Municipal: " + result);
            output.setValue(result, "INSCRICAO_MUNICIPAL");
             */
            
            
            JCO.ParameterList input = function.getImportParameterList();
            JCO.ParameterList output = function.getExportParameterList();
            JCO.Table table = function.getTableParameterList().getTable("INFORMACOES_LOTE");

            System.out.println("handleRequest(" + function.getName() + ")");

            System.out.println("Testando VERSAO VALOR"+input.getValue("VERSAO")); 
            System.out.println("Testando IM VALOR"+input.getValue("INSCRICAO_MUNICIPAL"));
            System.out.println("Testando CNPJ VALOR"+input.getString("CNPJ_REMETENTE"));
            System.out.println("Testando NUM_LOTE"+input.getValue("NUM_LOTE"));
            
            
            
            output.setValue(1, "VERSAO_UTILIZADA");
            output.setValue("X", "SUCESSO"); 
            table.appendRow();
            table.setValue("12345678","NUM_LOTE");
            
            table.setValue("000012345678","NUM_LOTE");
            table.setValue("12345678","INSCRICAO_PRESTADOR");
            table.setValue("12345678912345","CPFCNPJ_REMET");
            table.setValue("","DT_ENVIO_LOTE");
            table.setValue("000000000000001","QTD_NOTAS");
            table.setValue("000000000000002","TMP_PROCESS");
            table.setValue("000000000000100","VL_TOT_SERV");
            table.setValue("000000000000050","VL_TOT_DEDUCOES");
            table.setValue("","MOEDA");
            
          
            
        }
    }
}

Cara nao sei mais o que faço, para fazer funcionar este codigo (envio de dados para tabela), ja estou trabalhando nisso quase 3 semanas, e naos consigo a solução… se conseguir me ajudar, ficarei muito grato, nao tem dinheiro que pague… e se precisar com certeza estarei a disposição…

se preferir falar pelo msn, e so me adicionar… meu msn: [email removido]

Obrigado mais uma vez.

R

Olá
Elton,

Esse seu metodo handleRequest() , esta completo? , onde vc executa a Abapi?
Não faltou o metodo JCO.Client.execute(JCO.Function function) ?

E

Bom galera, consegui fazer o processo de envio de dados para tabela do SAP!!!

segue abaixo o codigo, de conexao com o SAP, importação e exportação de dados, e exportação de daods para tabela…

Obrigado a todos que me ajudaram…

package br.com.cienci.nfe.rfc;

import br.com.cienci.nfe.modelo.PedidoConsultaLote;
import br.com.cienci.nfe.modelo.PedidoInformacoesLote;
import br.com.cienci.nfe.parser.PedidoInformacoesLoteXML;
import br.com.cienci.ws.ConsultaCnpjWs;
import br.com.cienci.ws.PedidoConsultaLoteWS;
import br.com.cienci.ws.PedidoInformacoesLoteWS;
import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.IRepository;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;

/**
 * RFCServer.java
 * Criado em 12/10/2008
 * @author Ciro S. Santos
 * @version 1.0
 *
 * Servidor RFC para conexões com o SAP 
 */
public class RFCServer implements JCO.ServerExceptionListener, JCO.ServerStateChangedListener {

    private static volatile RFCServer INSTANCE;
    private static String host = null;
    private static String gateway = null;
    private static String prog_id = null;
    private static String unicode = null;
    protected static IRepository repository;
    static JCO.Server srv[] = new JCO.Server[1];
    /**
     * Bloco estatico que registra os programas e variaveis a serem ouvidas pelo SAP.
     */
    

    static {

        /*
         * Este item possui os parametros de importação e exportacao de dados, o mesmo recebe o 
         * numero do cnpj e retorna a Inscricao Municipal
         * */
        repository = new Repository("Repository");
        JCO.MetaData fmeta = new JCO.MetaData("ZNFESRV_CONSULTA_CNPJ");
        fmeta.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_CONTRIBUINTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_NUM, 8, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("EMITE_NFE", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        repository.addFunctionInterfaceToCache(fmeta);


        /*
         * Este item possui os parametros de importação e exportacao de dados, o mesmo recebe os 
         * (NUmero da Versao, Inscricao Municipal, CNPJ, Numero Lote) retorna as informações para as variaveis
         * Versao Utilizada, Sucesso e a tabela Informações Lote. 
         * */
        fmeta = new JCO.MetaData("ZNFESRV_CONSULTA_INF_LOTE");
        fmeta.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_NUM, 8, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("NUM_LOTE", JCO.TYPE_CHAR, 12, 0, 0, JCO.IMPORT_PARAMETER, null);


        fmeta.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("INFORMACOES_LOTE", JCO.TYPE_TABLE, 1, 0, 0, 0, "ZNFESRV_INFORMACOES_LOTE");
        repository.addFunctionInterfaceToCache(fmeta);

        JCO.MetaData smeta = new JCO.MetaData("ZNFESRV_INFORMACOES_LOTE");
        smeta.addInfo("NUM_LOTE", JCO.TYPE_STRING, 12, 0, 0);
        smeta.addInfo("INSCRICAO_PRESTADOR", JCO.TYPE_CHAR, 8, 0, 0);
        smeta.addInfo("CPFCNPJ_REMET", JCO.TYPE_CHAR, 14, 0, 0);
        smeta.addInfo("DT_ENVIO_LOTE", JCO.TYPE_CHAR, 15, 0, 0);
        smeta.addInfo("QTD_NOTAS", JCO.TYPE_CHAR, 15, 0, 0);
        smeta.addInfo("UNIT", JCO.TYPE_CHAR, 3, 0, 0);
        smeta.addInfo("TMP_PROCESS", JCO.TYPE_CHAR, 15, 0, 0);
        smeta.addInfo("VL_TOT_SERV", JCO.TYPE_CHAR, 15, 0, 0);
        smeta.addInfo("VL_TOT_DEDUCOES", JCO.TYPE_CHAR, 15, 0, 0);
        smeta.addInfo("MOEDA", JCO.TYPE_CHAR, 5, 0, 0);
        repository.addStructureDefinitionToCache(smeta);

        /*
         * Este item possui os parametros de importação e exportacao de dados, o mesmo recebe os 
         * (NUmero da Versao, Inscricao Municipal, CNPJ, Numero Lote) retorna as informações para as variaveis
         * Versao Utilizada, Sucesso e a tabela Informações Lote. 
         * */
        fmeta = new JCO.MetaData("ZNFESRV_CONSULTA_LOTE");
        fmeta.addInfo("VERSAO", JCO.TYPE_NUM, 3, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("CNPJ_REMETENTE", JCO.TYPE_CHAR, 14, 0, 0, JCO.IMPORT_PARAMETER, null);
        fmeta.addInfo("NUM_LOTE", JCO.TYPE_CHAR, 12, 0, 0, JCO.IMPORT_PARAMETER, null);


        fmeta.addInfo("VERSAO_UTILIZADA", JCO.TYPE_NUM, 3, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("SUCESSO", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("INSCRICAO_MUNICIPAL", JCO.TYPE_CHAR, 8, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("EMITE_NFE", JCO.TYPE_CHAR, 1, 0, 0, JCO.EXPORT_PARAMETER, null);
        fmeta.addInfo("NFE", JCO.TYPE_TABLE, 1, 0, 0, 0, "ZNFESRV_NFE");
        repository.addFunctionInterfaceToCache(fmeta);

        JCO.MetaData smetaConsultaLote = new JCO.MetaData("ZNFESRV_NFE");
        smetaConsultaLote.addInfo("ASSINATURA", JCO.TYPE_CHAR, 1, 0, 0);
        smetaConsultaLote.addInfo("INSCRICAO_PRESTADOR", JCO.TYPE_CHAR, 8, 0, 0);
        smetaConsultaLote.addInfo("NUMERO", JCO.TYPE_CHAR, 12, 0, 0);
        smetaConsultaLote.addInfo("COD_VERIFICACAO", JCO.TYPE_CHAR, 8, 0, 0);
        smetaConsultaLote.addInfo("DT_EMISSAO_NFE", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("NUM_LOTE", JCO.TYPE_CHAR, 12, 0, 0);
        smetaConsultaLote.addInfo("INSC_PRESTADOR_RPS", JCO.TYPE_CHAR, 8, 0, 0);
        smetaConsultaLote.addInfo("SERIE_RPS", JCO.TYPE_CHAR, 5, 0, 0);
        smetaConsultaLote.addInfo("NUM_RPS", JCO.TYPE_CHAR, 12, 0, 0);
        smetaConsultaLote.addInfo("TP_RPS", JCO.TYPE_CHAR, 1, 0, 0);
        smetaConsultaLote.addInfo("DT_EMISSAO_RPS", JCO.TYPE_CHAR, 8, 0, 0);
        smetaConsultaLote.addInfo("CPF_CNPJ_PRESTADOR", JCO.TYPE_CHAR, 14, 0, 0);
        smetaConsultaLote.addInfo("RAZ_SOC_PRESTADOR", JCO.TYPE_CHAR, 75, 0, 0);
        smetaConsultaLote.addInfo("TIPO_LOGRADOURO", JCO.TYPE_CHAR, 3, 0, 0);
        smetaConsultaLote.addInfo("LOGRADOURO", JCO.TYPE_CHAR, 50, 0, 0);
        smetaConsultaLote.addInfo("NUM_END", JCO.TYPE_CHAR, 10, 0, 0);
        smetaConsultaLote.addInfo("COMP_END", JCO.TYPE_CHAR, 30, 0, 0);
        smetaConsultaLote.addInfo("BAIRRO", JCO.TYPE_CHAR, 30, 0, 0);
        smetaConsultaLote.addInfo("CIDADE", JCO.TYPE_CHAR, 7, 0, 0);
        smetaConsultaLote.addInfo("UF", JCO.TYPE_CHAR, 2, 0, 0);
        smetaConsultaLote.addInfo("CEP", JCO.TYPE_CHAR, 8, 0, 0);
        smetaConsultaLote.addInfo("EMAIL_PRESTADOR", JCO.TYPE_CHAR, 75, 0, 0);
        smetaConsultaLote.addInfo("STS_NFE", JCO.TYPE_CHAR, 1, 0, 0);
        smetaConsultaLote.addInfo("DT_CANCEL", JCO.TYPE_CHAR, 8, 0, 0);
        smetaConsultaLote.addInfo("TRIB_NFE", JCO.TYPE_CHAR, 1, 0, 0);
        smetaConsultaLote.addInfo("OPC_SIMPLES", JCO.TYPE_CHAR, 1, 0, 0);
        smetaConsultaLote.addInfo("NUM_GUIA", JCO.TYPE_CHAR, 12, 0, 0);
        smetaConsultaLote.addInfo("DT_QUITACAO_GUIA", JCO.TYPE_CHAR, 8, 0, 0);
        smetaConsultaLote.addInfo("VL_SERVICOS", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("VL_DEDUCOES", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("VL_PIS", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("VL_COFINS", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("VL_INSS", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("VL_IR", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("VL_CSLL", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("COD_SERVICOS", JCO.TYPE_CHAR, 5, 0, 0);
        smetaConsultaLote.addInfo("ALIQUOTA_SERV", JCO.TYPE_CHAR, 5, 0, 0);
        smetaConsultaLote.addInfo("VL_ISS", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("VL_CREDITO", JCO.TYPE_CHAR, 15, 0, 0);
        smetaConsultaLote.addInfo("ISS_RETIDO", JCO.TYPE_CHAR, 1, 0, 0);
        smetaConsultaLote.addInfo("CPF_CNPJ_TOMADOR", JCO.TYPE_CHAR, 14, 0, 0);
        smetaConsultaLote.addInfo("IM_TOMADOR", JCO.TYPE_CHAR, 8, 0, 0);
        smetaConsultaLote.addInfo("IE_TOMADOR", JCO.TYPE_CHAR, 19, 0, 0);
        smetaConsultaLote.addInfo("RAZ_SOCIAL_TOMADOR", JCO.TYPE_CHAR, 75, 0, 0);
        smetaConsultaLote.addInfo("TIPO_LOGRADOURO_TOMADOR", JCO.TYPE_CHAR, 3, 0, 0);
        smetaConsultaLote.addInfo("LOGRADOURO_TOMADOR", JCO.TYPE_CHAR, 50, 0, 0);
        smetaConsultaLote.addInfo("NUM_END_TOMADOR", JCO.TYPE_CHAR, 10, 0, 0);
        smetaConsultaLote.addInfo("COMP_END_TOMADOR", JCO.TYPE_CHAR, 30, 0, 0);
        smetaConsultaLote.addInfo("BAIRRO_TOMADOR", JCO.TYPE_CHAR, 30, 0, 0);
        smetaConsultaLote.addInfo("CIDADE_TOMADOR", JCO.TYPE_CHAR, 7, 0, 0);
        smetaConsultaLote.addInfo("UF_TOMADOR", JCO.TYPE_CHAR, 2, 0, 0);
        smetaConsultaLote.addInfo("CEP_TOMADOR", JCO.TYPE_CHAR, 8, 0, 0);
        smetaConsultaLote.addInfo("EMAIL_TOMADOR", JCO.TYPE_CHAR, 75, 0, 0);
        smetaConsultaLote.addInfo("DISCRIMINACAO", JCO.TYPE_CHAR, 2000, 0, 0);
        smetaConsultaLote.addInfo("MOEDA", JCO.TYPE_CHAR, 5, 0, 0);
        repository.addStructureDefinitionToCache(smetaConsultaLote);

    }

    public RFCServer() {
        JCO.addServerExceptionListener(this);
        JCO.addServerStateChangedListener(this);
    }

    public static RFCServer getInstance() {

        if (INSTANCE == null) {
            synchronized (RFCServer.class) {
                if (INSTANCE == null) {
                    INSTANCE = new RFCServer();
                }
            }
        }
        return INSTANCE;
    }

    /**
     * Inicia o servidor
     */
    public static void startServers() {

        srv[0] = new Server(host, gateway, prog_id, repository);

        for (int i = 0; i < srv.length; i++) {
            try {
                if (srv[i].isAlive()) {
                    System.out.println("Ja esta Conectado !!!");
                    break;
                } else {
                    srv[i].setTrace(true);
                    srv[i].start();
                }
            } catch (Exception ex) {
                System.out.println("Could not start server " + srv[i].getProgID() + ":\n" + ex);
            }
        }
    }

    /**
     * Para o servidor
     */
    public static void stopServers() {
        for (int i = 0; i < srv.length; i++) {
            srv[i].stop();
            srv[i].disconnect();
            System.out.println("Start system " + srv[i]);
        }
    }

    /**
     * Configura a conexão 
     * 
     * @param argv
     */
    public void connectServer(String[] argv) {
        host = argv[0];
        gateway = argv[1];
        prog_id = argv[2];
        unicode = argv[3];

        RFCServer.startServers();
    }

    /**
     * Configura a desconexão
     * 
     * @param argv
     */
    public void disconnectServer(String[] argv) {
        host = argv[0];
        gateway = argv[1];
        prog_id = argv[2];
        unicode = argv[3];

        RFCServer.stopServers();
    }

    public void serverExceptionOccurred(JCO.Server server, Exception ex) {
        System.out.println("Exception in server " + server.getProgID() + ":\n" + ex);
        ex.printStackTrace();
    }

    public void serverStateChangeOccurred(JCO.Server server, int old_state, int new_state) {
        System.out.print("Server " + server.getProgID() + " changed state from [");
        if ((old_state & JCO.STATE_STOPPED) != 0) {
            System.out.print(" STOPPED ");
        }
        if ((old_state & JCO.STATE_STARTED) != 0) {
            System.out.print(" STARTED ");
        }
        if ((old_state & JCO.STATE_LISTENING) != 0) {
            System.out.print(" LISTENING ");
        }
        if ((old_state & JCO.STATE_TRANSACTION) != 0) {
            System.out.print(" TRANSACTION ");
        }
        if ((old_state & JCO.STATE_BUSY) != 0) {
            System.out.print(" BUSY ");
        }

        System.out.print("] to [");
        if ((new_state & JCO.STATE_STOPPED) != 0) {
            System.out.print(" STOPPED ");
        }
        if ((new_state & JCO.STATE_STARTED) != 0) {
            System.out.print(" STARTED ");
        }
        if ((new_state & JCO.STATE_LISTENING) != 0) {
            System.out.print(" LISTENING ");
        }
        if ((new_state & JCO.STATE_TRANSACTION) != 0) {
            System.out.print(" TRANSACTION ");
        }
        if ((new_state & JCO.STATE_BUSY) != 0) {
            System.out.print(" BUSY ");
        }
        System.out.println("]");
    }

    static public class Repository extends JCO.BasicRepository implements IRepository {

        public Repository(String name) {
            super(name);
        }
    }

    static public class Server extends JCO.Server {

        public Server(String gwhost, String gwserv, String progid, IRepository repository) {
            super(gwhost, gwserv, progid, repository);
            super.setProperty("jco.server.unicode", unicode);
        }

        @Override
        protected JCO.Function getFunction(String function_name) {
            JCO.Function function = super.getFunction(function_name);
            return function;
        }

        @Override
        protected boolean checkAuthorization(String function_name,
                int authorization_mode, String authorization_partner,
                byte[] authorization_key) {
            return true;
        }

        /**
         * Ouvidor do SAP, aqui é feita as chamadas dos programas e são
         * distribuidas as variaveis de entrada e saida do SAP e tambem é feito
         * as chamadas ao WebService da parte do Java
         * 
         * @param function
         */
        @Override
        protected void handleRequest(JCO.Function function) throws Exception {


            if (function.getName().equals("ZNFESRV_CONSULTA_CNPJ")) {
                String result = "";
                ConsultaCnpjWs consulta = new ConsultaCnpjWs();

                JCO.ParameterList input = function.getImportParameterList();
                JCO.ParameterList output = function.getExportParameterList();

                System.out.println("handleRequest(" + function.getName() + ")");
                System.out.println("documento:" + input.getString("CNPJ_CONTRIBUINTE"));

                result = consulta.getConsultaWS(input.getString("CNPJ_CONTRIBUINTE"));

                System.out.println("Incrição Municipal: " + result);
                output.setValue(result, "INSCRICAO_MUNICIPAL");


            } 
            
            
            else if (function.getName().equals("ZNFESRV_CONSULTA_INF_LOTE")) {

                //declarações das variaveis
                ArrayList<PedidoInformacoesLote> listPedidoInfLote = new ArrayList<PedidoInformacoesLote>();
                PedidoInformacoesLoteWS pedidoInfLoteWS = new PedidoInformacoesLoteWS();
                JCO.ParameterList input = function.getImportParameterList();
                JCO.ParameterList output = function.getExportParameterList();

                JCO.Table table = function.getTableParameterList().getTable("INFORMACOES_LOTE");
                String aux = "";

                //nome da função
                System.out.println("handleRequest(" + function.getName() + ")");

                //Envio de dados do SAP para o java
                listPedidoInfLote = pedidoInfLoteWS.getInformacoesLoteWS(input.getString("CNPJ_REMETENTE"), "12345678");

                System.out.println("Executando a partir do metodo getInformacoes Lote");
                //Exportacao dos dados para o SAP
                output.setValue("1", "VERSAO_UTILIZADA");
                System.out.println("Executando a partir dos dados informados em variavel normal");
                if (listPedidoInfLote.get(0).getSucesso().equals("true")) {
                    aux = "X";
                } else if (!listPedidoInfLote.get(0).getSucesso().equals("true")) {
                    aux = "";
                }
                output.setValue(aux, "SUCESSO");

                System.out.println("Iniciando o preenchimento das tabelas...");
                //preenchedo dados na tabela 
                for (int i = 0; i < listPedidoInfLote.size(); i++) {
                    table.appendRow();
                    table.setValue("BRL", "MOEDA");
                    table.setValue(listPedidoInfLote.get(i).getValorTotalDeducoes(), "VL_TOT_DEDUCOES");
                    table.setValue(listPedidoInfLote.get(i).getValorTotalServico(), "VL_TOT_SERV");
                    table.setValue(listPedidoInfLote.get(i).getTempoProcessamento(), "TMP_PROCESS");
                    table.setValue(listPedidoInfLote.get(i).getQuantidadeNotasProcessadas(), "QTD_NOTAS");
                    table.setValue(listPedidoInfLote.get(i).getDataEnvioLote(), "DT_ENVIO_LOTE");
                    table.setValue(listPedidoInfLote.get(i).getCnpjPrestador(), "CPFCNPJ_REMET");
                    table.setValue(listPedidoInfLote.get(i).getInscricaoPrestador(), "INSCRICAO_PRESTADOR");
                    table.setValue(listPedidoInfLote.get(i).getNumeroLote(),"NUM_LOTE");
                    
                }
            } 
            
            
            
            else if (function.getName().equals("ZNFESRV_CONSULTA_LOTE")) {
                //declarações das variaveis
                ArrayList<PedidoConsultaLote> listConsultaLote = new ArrayList<PedidoConsultaLote>();
                PedidoConsultaLoteWS pedidoConsultaLoteWS = new PedidoConsultaLoteWS();
                JCO.ParameterList input = function.getImportParameterList();
                JCO.ParameterList output = function.getExportParameterList();
                JCO.Table table = function.getTableParameterList().getTable("NFE");
                String aux = "";
                
                listConsultaLote = pedidoConsultaLoteWS.getConsultaLoteWS(input.getString("CNPJ_REMETENTE"),input.getString("NUM_LOTE") );

                if (listConsultaLote.get(0).getSucesso().equals("true")) {
                    aux = "X";
                } else if (!listConsultaLote.get(0).getSucesso().equals("true")) {
                    aux = "";
                }
                output.setValue(aux, "SUCESSO");

                for (int i = 0; i < listConsultaLote.size(); i++) {
                    //preenchimento da tabela
                    
                    table.previousRow();
                    table.setValue(listConsultaLote.get(i).getAssinatura(), "ASSINATURA");
                    table.setValue(listConsultaLote.get(i).getInscricaoDoPrestador(), "INSCRICAO_PRESTADOR");
                    table.setValue(listConsultaLote.get(i).getNumeroDaNFe(), "NUMERO");
                    table.setValue(listConsultaLote.get(i).getCodigoDeVerificacao(), "COD_VERIFICACAO");
                    table.setValue(listConsultaLote.get(i).getDataDeEmissaoNFE(), "DT_EMISSAO_NFE");
                    table.setValue(listConsultaLote.get(i).getNumeroDoLote(), "NUM_LOTE");
                    table.setValue(listConsultaLote.get(i).getInscricaoDoPrestador(), "INSC_PRESTADOR_RPS");
                    table.setValue(listConsultaLote.get(i).getSerieRps(), "SERIE_RPS");
                    table.setValue(listConsultaLote.get(i).getNumeroRps(), "NUM_RPS");
                    table.setValue(listConsultaLote.get(i).getTipoDoRps(), "TP_RPS");
                    table.setValue(listConsultaLote.get(i).getDataDoRps(), "DT_EMISSAO_RPS");
                    table.setValue(listConsultaLote.get(i).getCnpjPrestador(), "CPF_CNPJ_PRESTADOR");
                    table.setValue(listConsultaLote.get(i).getRazaoSocialDoPrestador(), "RAZ_SOC_PRESTADOR");
                    table.setValue(listConsultaLote.get(i).getTipoLogradouroPrestador(), "TIPO_LOGRADOURO");
                    table.setValue(listConsultaLote.get(i).getLogradouroPrestador(), "LOGRADOURO");
                    table.setValue(listConsultaLote.get(i).getNumeroDoEnderecoPrestador(), "NUM_END");
                    table.setValue(listConsultaLote.get(i).getComplementoDoEnderecoPrestador(), "COMP_END");
                    table.setValue(listConsultaLote.get(i).getBairroDoPrestador(), "BAIRRO");
                    table.setValue(listConsultaLote.get(i).getCidadePrestador(), "CIDADE");
                    table.setValue(listConsultaLote.get(i).getUfDoPrestador(), "UF");
                    table.setValue(listConsultaLote.get(i).getCepDoPrestador(), "CEP");
                    table.setValue("", "EMAIL_PRESTADOR");
                    table.setValue(listConsultaLote.get(i).getStatusDaNfePrestador(), "STS_NFE");
                    table.setValue("", "DT_CANCEL");
                    table.setValue(listConsultaLote.get(i).getTributacaoNFePrestador(), "TRIB_NFE");
                    table.setValue(listConsultaLote.get(i).getOpcaoSimplesPrestador(), "OPC_SIMPLES");
                    table.setValue("", "NUM_GUIA");
                    table.setValue("", "DT_QUITACAO_GUIA");
                    table.setValue(listConsultaLote.get(i).getValorDeServicoPrestador(), "VL_SERVICOS");
                    table.setValue(listConsultaLote.get(i).getValorDeDeducoesPrestador(), "VL_DEDUCOES");
                    table.setValue("", "VL_PIS");
                    table.setValue("", "VL_COFINS");
                    table.setValue("", "VL_INSS");
                    table.setValue("", "VL_IR");
                    table.setValue("", "VL_CSLL");
                    table.setValue(listConsultaLote.get(i).getCodigoServico(), "COD_SERVICOS");
                    table.setValue(listConsultaLote.get(i).getAliquotaServico(), "ALIQUOTA_SERV");
                    table.setValue("", "VL_ISS");
                    table.setValue(listConsultaLote.get(i).getValorCreditoPrestador(), "VL_CREDITO");
                    table.setValue(listConsultaLote.get(i).getIssRetidoPrestador(), "VL_ISS");
                    table.setValue(listConsultaLote.get(i).getCnpjTomador(), "CPF_CNPJ_TOMADOR");
                    table.setValue("", "IM_TOMADOR");
                    table.setValue("", "IE_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getRazaoSocialTomador(), "RAZ_SOCIAL_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getTipoLogradouroTomador(), "TIPO_LOGRADOURO_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getLogradouroTomador(), "LOGRADOURO_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getNumeroEnderecoTomador(), "NUM_END_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getComplementoEnderecoTomador(), "COMP_END_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getBairroTomador(), "BAIRRO_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getCidadeTomador(), "CIDADE_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getUfTomador(), "UF_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getCepTomador(), "CEP_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getEmailTomador(), "EMAIL_TOMADOR");
                    table.setValue(listConsultaLote.get(i).getDiscriminacaoTomador(), "DISCRIMINACAO");
                    table.setValue("BRL", "MOEDA");
                }

            }


        }
    }
}

ate
Elton C.

Criado 8 de dezembro de 2008
Ultima resposta 19 de dez. de 2008
Respostas 10
Participantes 2