Você está na página 1de 19

Integrao giles SAP

Pg. 1

Image Technology S.A.2003

Introduo
Existem 2 tipos de integrao possveis do giles com o SAP:
Integrao servidor/servidor Integrao com a interface grfica do SAP em formulrios no giles

Pg. 2

Image Technology S.A.2003

Integrao entre Servidores


Integrao realizada atravs da API JCo (SAP Java Connector) Integrao feita com o SAP atravs de chamada a RFCs (Remote Function Call) No possvel acessar tabelas do SAP diretamente, somente atravs de RFCs

Pg. 3

Image Technology S.A.2003

RFC
As RFCs so compostas de:
Nome Parmetros:
Entrada Sada Tabelas Excees

Para obter detalhes de uma RFC utilizar a transao SE37 do SAP (no SAP GUI)
Pg. 4 Image Technology S.A.2003

Modos de Conexo
Conexo direta Pool de Conexes
Mantm um lista de conexes e libera uma que no estiver sendo utilizada

Pg. 5

Image Technology S.A.2003

Criao da Connection Pool


import com.sap.mw.jco.*; // Todas nesse pacote //... Properties logonProperties = new Properties() JCO.addClientPool(Pool Name, // Nome da Pool 5, // Nmero mximo de conexes 199, // Cliente user, // User senha, // Senha PT, // Idioma 172.16.1.1, // Host (servidor) 00); // Nmero do Sistema
Pg. 6 Image Technology S.A.2003

Exemplo de Uso
JCO.Client client = null; try { // Obteno da Conexo client = JCO.getClient(POOL_NAME); // Uso da Conexo } catch(Exception e) { // Tratamento de Exceo } finally { // Liberao da Conexo JCO.releaseClient(client); }
Pg. 7 Image Technology S.A.2003

Repositrio
O repositrio contm a informao (metadados) de todas as RFCs que podem ser chamadas. Para obter uma referncia ao repositrio:
IRepository repository =
JCO.createRepository("NOME_REPOSITRIO", // Nome JCO.getClient(POOL_NAME)); //Conexo

Pg. 8

Image Technology S.A.2003

Funo (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();

Pg. 9

Image Technology S.A.2003

Parmetros
Definindo parmetros
input.setValue("Valor parmetro", "NOME_PARAMETRO");
input.setValue(10, "NOME_PARAMETRO2"); input.setValue(new Date(), "NOME_PARAMETRO3"); // ...

Obtendo parmetros
String x = output.getString("NOME_PARAMETRO_SAIDA") int y = output.getInt("NOME_PARAMETRO_SAIDA2")

Date z = output.getDate("NOME_PARAMETRO_SAIDA3")

Pg. 10

Image Technology S.A.2003

Tipos de Dados
Tipo ABAP
b s I C N

Descrio
Inteiro de 1 byte Inteiro de 2 bytes Inteiro de 4 bytes Caractere Caractere Numrico

Tipo Java
int int int String String

Cdigo JCO
JCO.TYPE_INT1 JCO.TYPE_INT2 JCO.TYPE_INT JCO.TYPE_CHAR JCO.TYPE_NUM

P
D T F X

Binary Coded Decimal


Data Tempo Nmero Ponto Flutuante Dados Binrios

BigDecimal
Date Date double byte[]

JCO.TYPE_BCD
JCO.TYPE_DATE JCO.TYPE_TIME JCO.TYPE_FLOAT JCO.TYPE_BYTE

g
y

String (tamanho varivel)


Dados Binrios (tamanho varivel)

String
byte[]

JCO.TYPE_STRING
JCO.TYPE_XSTRING

Pg. 11

Image Technology S.A.2003

Mtodos de Acesso
Cdigo JCO
JCO.TYPE_INT1 JCO.TYPE_INT2 JCO.TYPE_INT JCO.TYPE_CHAR JCO.TYPE_NUM JCO.TYPE_STRING String getString() int getInt()

Mtodo de Acesso

JCO.TYPE_BCD
JCO.TYPE_DATE JCO.TYPE_TIME JCO.TYPE_FLOAT JCO.TYPE_BYTE JCO.TYPE_XSTRING

BigDecimal getBigDecimal()
Date getDate() Date getTime() double getDouble()

byte[] getByteArray()

Pg. 12

Image Technology S.A.2003

Trabalhando com Structs


Obtendo Struct:
JCO.Structure struct = input.getStructure("NOME_STRUCT")

Setando parmetros
struct.setValue("Valor parmetro", "NOME_PARAMETRO");

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

Obtendo parmetros
String x = struct.getString("NOME_PARAMETRO_SAIDA")
int y = struct.getInt("NOME_PARAMETRO_SAIDA2") Date z = struct.getDate("NOME_PARAMETRO_SAIDA3")
Pg. 13 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));
Pg. 14

Image Technology S.A.2003

Exemplo Completo: Integrao com giles


Cdigo no Eclipse

Pg. 15

Image Technology S.A.2003

Integrao com Interface Grfica em Formulrios


Uso do ActiveX do SAP via Javascript Acesso a transaes (telas) do SAP Uso da RFC RFC_CALL_TRANSACTION_USING do SAP

Pg. 16

Image Technology S.A.2003

Login / Logout
var fns; // Objeto ActiveX
var conn; // Conexo var trans // Transao function doSAPlogon() { // Obtendo objetos fns = new ActiveXObject("SAP.Functions");

trans = fns.Transactions;
conn = fns.connection; // parametros de conexo conn.System = 'PS1' conn.ApplicationServer = '172.16.128.166'; conn.Client = '199';

conn.Language = 'PT';
/* conn.user = 'xxxxx'; // Se colocado login e senha ele no pede pro usurio conn.password = 'xxxxx'; */ conn.tracelevel = 6; conn.RFCWithDialog = 1; conn.logon(0,0); // efetuar logon } function doSAPlogoff() { conn.logoff(); }

Pg. 17

Image Technology S.A.2003

Chamando a tela
doSAPlogon(); // LOGIN callta = fns.add("RFC_CALL_TRANSACTION_USING"); // RFC que chama transaes callta.exports("TCODE") = "/PWS/ZYCI012"; // Nome da transao do SAP callta.exports("MODE") = "E";

var bt_data = callta.tables("BT_DATA"); // Parmetros


var i = 1; bt_data.AppendRow; bt_data(i,"PROGRAM") = "/PWS/SAPMZYCI012 // Nome do programa bt_data(i,"DYNPRO") = "0100"; // Nmero 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 confirmao bt_data(i,"FVAL") = "=ENTE"; i++; // ENTER

Pg. 18

Image Technology S.A.2003

Continuao
// Aps 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 confirmao bt_data(i,"FVAL") = "=CS"; // clique do mouse retcd = callta.call; // chama transao // Agora aberta a tela do SAP na transao escolhida, e efetuados os comandos // em backgroud. doSAPlogoff(); // logoff

Pg. 19

Image Technology S.A.2003