integração Ágiles –...

19
Pág. 1 Image Technology S.A. © 2003 Integração Ágiles SAP

Upload: ngoanh

Post on 10-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 1 Image Technology S.A.©2003

Integração Ágiles –

SAP

Page 2: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 2 Image Technology S.A.©2003

Introdução

• Existem 2 tipos de integração possíveis do

Ágiles com o SAP:

– Integração servidor/servidor

– Integração com a interface gráfica do SAP em

formulários no Ágiles

Page 3: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 3 Image Technology S.A.©2003

Integração entre Servidores

• Integração realizada através da API JCo (SAP

Java Connector)

• Integração feita com o SAP através de

chamada a RFCs (Remote Function Call)

• Não é possível acessar tabelas do SAP

diretamente, somente através de RFCs

Page 4: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 4 Image Technology S.A.©2003

RFC

• As RFCs são compostas de:

– Nome

– Parâmetros:

• Entrada

• Saída

• Tabelas

• Exceções

• Para obter detalhes de uma RFC utilizar a

transação SE37 do SAP (no SAP GUI)

Page 5: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 5 Image Technology S.A.©2003

Modos de Conexão

• Conexão direta

• Pool de Conexões

– Mantém um lista de conexões e libera uma que não

estiver sendo utilizada

Page 6: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 6 Image Technology S.A.©2003

Criação da Connection Pool

import com.sap.mw.jco.*; // Todas nesse pacote

//...

Properties logonProperties = new Properties()

JCO.addClientPool(“Pool Name”, // Nome da Pool

5, // Número máximo de conexões

“199”, // Cliente

“user”, // User

“senha”, // Senha

“PT”, // Idioma

“172.16.1.1”, // Host (servidor)

“00”); // Número do Sistema

Page 7: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 7 Image Technology S.A.©2003

Exemplo de Uso

JCO.Client client = null;

try {

// Obtenção da Conexão

client = JCO.getClient(POOL_NAME);

// Uso da Conexão

} catch(Exception e) {

// Tratamento de Exceção

} finally {

// Liberação da Conexão

JCO.releaseClient(client);

}

Page 8: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 8 Image Technology S.A.©2003

Repositório

• O repositório contém a informação

(metadados) de todas as RFCs que podem ser

chamadas.

• Para obter uma referência ao repositório:IRepository repository =

JCO.createRepository("NOME_REPOSITÓRIO", // Nome

JCO.getClient(POOL_NAME)); //Conexão

Page 9: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 9 Image Technology S.A.©2003

Função (RFC)

IFunctionTemplate ft =

repository.getFunctionTemplate(“NOME_RFC”);

JCO.Function function = ft.getFunction();

• A RFC tem os 3 tipos de Parametros:

JCO.ParameterList input = function.getImportParameterList();

JCO.ParameterList output = function.getExportParameterList();

JCO.ParameterList tables = function.getTableParameterList();

Page 10: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 10 Image Technology S.A.©2003

Parâmetros

• Definindo parâmetros

input.setValue("Valor parâmetro", "NOME_PARAMETRO");

input.setValue(10, "NOME_PARAMETRO2");

input.setValue(new Date(), "NOME_PARAMETRO3");

// ...

• Obtendo parâmetrosString x = output.getString("NOME_PARAMETRO_SAIDA")

int y = output.getInt("NOME_PARAMETRO_SAIDA2")

Date z = output.getDate("NOME_PARAMETRO_SAIDA3")

Page 11: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 11 Image Technology S.A.©2003

Tipos de Dados

Tipo ABAP Descrição Tipo Java Código JCO

b Inteiro de 1 byte int JCO.TYPE_INT1

s Inteiro de 2 bytes int JCO.TYPE_INT2

I Inteiro de 4 bytes int JCO.TYPE_INT

C Caractere String JCO.TYPE_CHAR

N Caractere Numérico String JCO.TYPE_NUM

P Binary Coded Decimal BigDecimal JCO.TYPE_BCD

D Data Date JCO.TYPE_DATE

T Tempo Date JCO.TYPE_TIME

F Número Ponto Flutuante double JCO.TYPE_FLOAT

X Dados Binários byte[] JCO.TYPE_BYTE

g String (tamanho variável) String JCO.TYPE_STRING

y Dados Binários (tamanho variável) byte[] JCO.TYPE_XSTRING

Page 12: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 12 Image Technology S.A.©2003

Métodos de Acesso

Código JCO Método de Acesso

JCO.TYPE_INT1

int getInt()JCO.TYPE_INT2

JCO.TYPE_INT

JCO.TYPE_CHAR

String getString()JCO.TYPE_NUM

JCO.TYPE_STRING

JCO.TYPE_BCD BigDecimal getBigDecimal()

JCO.TYPE_DATE Date getDate()

JCO.TYPE_TIME Date getTime()

JCO.TYPE_FLOAT double getDouble()

JCO.TYPE_BYTEbyte[] getByteArray()

JCO.TYPE_XSTRING

Page 13: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 13 Image Technology S.A.©2003

Trabalhando com Structs

• Obtendo Struct:

JCO.Structure struct = input.getStructure("NOME_STRUCT")

• Setando parâmetrosstruct.setValue("Valor parâmetro", "NOME_PARAMETRO");

struct.setValue(10, "NOME_PARAMETRO2");

struct.setValue(new Date(), "NOME_PARAMETRO3");

• Obtendo parâmetrosString x = struct.getString("NOME_PARAMETRO_SAIDA")

int y = struct.getInt("NOME_PARAMETRO_SAIDA2")

Date z = struct.getDate("NOME_PARAMETRO_SAIDA3")

Page 14: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 14 Image Technology S.A.©2003

Trabalhando com Tabela

JCO.ParameterList tables = function.getTableParameterList();

JCO.Table tabela = tables.getTable(“NOME_TABELA”);

// LEITURA

for (int i = 0; i < tabela.getNumRows(); i++){

tabela.setRow(i);

System.out.println(tabela.getString(“NOME PARAMETRO”));

}

// ESCRITA

tabela.firstRow();

for (int i = 0; i < 10; i++){

tabela.appendRow();

tabela.setValue(i, “NOME PARAMETRO”));

}

Page 15: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 15 Image Technology S.A.©2003

Exemplo Completo:

Integração com Ágiles• Código no Eclipse

Page 16: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 16 Image Technology S.A.©2003

Integração com Interface

Gráfica em Formulários• Uso do ActiveX do SAP via Javascript

• Acesso a transações (telas) do SAP

• Uso da RFC RFC_CALL_TRANSACTION_USING do SAP

Page 17: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 17 Image Technology S.A.©2003

Login / Logoutvar fns; // Objeto ActiveX

var conn; // Conexão

var trans // Transação

function doSAPlogon() {

// Obtendo objetos

fns = new ActiveXObject("SAP.Functions");

trans = fns.Transactions;

conn = fns.connection;

// parametros de conexão

conn.System = 'PS1'

conn.ApplicationServer = '172.16.128.166';

conn.Client = '199';

conn.Language = 'PT';

/* conn.user = 'xxxxx'; // Se colocado login e senha ele não pede pro usuário

conn.password = 'xxxxx'; */

conn.tracelevel = 6;

conn.RFCWithDialog = 1;

conn.logon(0,0); // efetuar logon

}

function doSAPlogoff() { conn.logoff(); }

Page 18: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 18 Image Technology S.A.©2003

Chamando a teladoSAPlogon(); // LOGIN

callta = fns.add("RFC_CALL_TRANSACTION_USING"); // RFC que chama transações

callta.exports("TCODE") = "/PWS/ZYCI012"; // Nome da transação do SAP

callta.exports("MODE") = "E";

var bt_data = callta.tables("BT_DATA"); // Parâmetros

var i = 1;

bt_data.AppendRow;

bt_data(i,"PROGRAM") = "/PWS/SAPMZYCI012“ // Nome do programa

bt_data(i,"DYNPRO") = "0100"; // Número da Tela

bt_data(i,"DYNBEGIN") = "X";

i++;

bt_data.AppendRow;

bt_data(i,"PROGRAM") = ""; bt_data(i,"DYNPRO") = ""; bt_data(i,"DYNBEGIN") = "";

bt_data(i,"FNAM") = "/PWS/ZYCIE008-NRADTO"; // Preenche o campo

bt_data(i,"FVAL") = "000000000"; // Valor a ser preenchido

i++;

bt_data.AppendRow;

bt_data(i,"PROGRAM") = ""; bt_data(i,"DYNPRO") = ""; bt_data(i,"DYNBEGIN") = "";

bt_data(i,"FNAM") = "BDC_OKCODE"; // Manda um comando de confirmação

bt_data(i,"FVAL") = "=ENTE"; // ENTER

i++;

Page 19: Integração Ágiles – SAPwiki.recife.pe.gov.br/.../Desenvolvimento/5_Integracao_Agiles_SAP.pdf · Pág. 2 Image Technology S.A.©2003 Introdução •Existem 2 tipos de integração

Pág. 19 Image Technology S.A.©2003

Continuação// Após o Enter mudou de tela

bt_data.AppendRow;

bt_data(i,"PROGRAM") = "/PWS/SAPMZYCI012"; // Novo programa (o mesmo)

bt_data(i,"DYNPRO") = "0200"; // Nova tela

bt_data(i,"DYNBEGIN") = "X";

i++;

bt_data.AppendRow;

bt_data(i,"PROGRAM") = ""; bt_data(i,"DYNPRO") = ""; bt_data(i,"DYNBEGIN") = "";

bt_data(i,"FNAM") = "BDC_CURSOR"; // Posiciona o cursor

bt_data(i,"FVAL") = "/PWS/ZYCIE008-NRADTO(01)"; // na primeira linha, no campo NRATO

i++;

bt_data.AppendRow;

bt_data(i,"PROGRAM") = ""; bt_data(i,"DYNPRO") = ""; bt_data(i,"DYNBEGIN") = "";

bt_data(i,"FNAM") = "BDC_OKCODE"; // Mande uma confirmação

bt_data(i,"FVAL") = "=CS"; // clique do mouse

retcd = callta.call; // chama transação

// Agora é aberta a tela do SAP na transação escolhida, e efetuados os comandos

// em backgroud.

doSAPlogoff(); // logoff