Sei sulla pagina 1di 16

SAP

R/3

Bapi SAP / R3

BAPI (Business Application


Programming Interface )

Rodolfo Mio
Programador Abap
Rodolfo.miao@procwork.com.br

07/10/2015

Pg. 1

SAP

R/3

Bapi SAP / R3

BUSINESS APPLICATION PROGRAMMING INTERFACE (BAPI)...............................................................................3


INTRODUO.........................................................................................................................................................3
Pr-requisitos.......................................................................................................................................................3
VANTAGENS DE USAR BAPIS...............................................................................................................................4
ORIENTAO OBJETOS EFUNES PARA ACESSO BAPIS................................................................................5
DETERMINANDO AS BAPIS DO BUSINESS OBJECTS.............................................................................................6
CARACTERISTICAS DAS BAPIS.............................................................................................................................7
STANDARDIZED ( NOMES PADRES) BAPIS.........................................................................................................8
CHAMANDO BAPIS DE ABAP............................................................................................................................10
BAPI ACTIVEX CONTROL..........................................................................................................................12
INTRODUO.......................................................................................................................................................12
CHAMANDO BAPIS DE DENTRO DO EXCEL........................................................................................................12
BIBLIOGRAFIA..............................................................................................................................................16

07/10/2015

Pg. 2

SAP

R/3

Bapi SAP / R3

Business Application Programming Interface


(BAPI)
Introduo
O Framework de Negcios no Sistema R/3 uma famlia de componentes separados e integrados.
Componentes do Framework:
Componentes empresariais (recursos humanos, por exemplo)
Objetos empresariais (Pedido, funcionrio, candidato, por exemplo)
BAPI-interfaces (cria um pedido, mudana do endereo, por exemplo)
Business Object (Componentes de negcios) interagem com Framework de Negcios em cima das
Interfaces de programas para Aplicaes de Negcios (BAPIs).
BAPIs tambm fornece um alojamento de interface padro para integrao de aplicaes externas
e componentes no Framework de Negcios. Estas interfaces so definidas dentro do sistema SAP
com iniciativa dos clientes, scios e organizaes de padronizao principais.
A BAPI definida como um mtodo do SAP Business Object.
A BAPI uma arquitetura de software desenvolvida pela SAP que visa permitir a construo de
aplicativos a partir de componentes feitos por diferentes empresas de software ou ferramentas.
As BAPIs no sistema R/3 so normalmente implementadas como mdulos de funes. Todas
so criadas e gerenciadas no Function Builder.

Pr-requisitos
Para usar um mtodo BAPI para ter acesso a dados em SAP Business Objects , um programa de
aplicao precisa s saber chamar o mtodo. Informaes requeridas :
O nome da BAPI
Detalhes da interface de BAPI:
- Parmetros de importao que contm dados a serem transferidos do programa de chamada
BAPI .
- Parmetros de exportao que contm dados a serem transferidos atrs da BAPI ao programa de
chamada.
- Import/export (table) parmetros por importar e exportar dados .
Os programadores de aplicao podem trabalhar com SAP Business Objects e podem implementar
a BAPIs sem precisar saber a implementao subjacente e detalhes do cdigo.

07/10/2015

Pg. 3

SAP

R/3

Bapi SAP / R3

Vantagens de Usar BAPIs


Esta seo lista algumas das vantagens de usar BAPIs como um dos meios de ter acesso os
Objetos de Negcio da SAP.

Business Standard
SAP Business Objects e suas BAPIs so os padres para as funes empresariais no Sistema R/3.
Eles habilitam o Sistema R/3 e outros produtos de software serem integrados em um
nvel empresarial.

Standards Conformance
Esto sendo desenvolvidos BAPIs como parte da iniciativa SAP em comum com clientes, scios, e
organizaes de padres principais. BAPIs esto se tornando um padro de
comunicao entre sistemas empresariais.
Voc pode acessar o SAP Business Objects e suas BAPIs usando orientao objetos
conectando tecnologias como o COM/DCOM da Microsoft (Component Object
Model/Distributed Component Object Model).
Os SAP Business Objects j obedecem o Grupo de Aplicao de Objeto (OAG) e, junto com
ObjectBridge da VisualEdge, conforme as diretizes CORBA do Grupo de Administrao
de Objeto (Common Object Request Broker Architecture).

Stability and Downwards Compatibility


Quando a SAP desenvolveu e lanou a BAPI, sua definio de interface e parmetros
permanecem estveis para um tempo de limite longo. Isto assegura que programas de aplicao
no so afetados atravs de mudanas por baixo dos softwares e dados R/3.
SAP pode fazer qualquer extenso necessria ao BAPIs, por exemplo, incluso de parmetros
opcionais, sem desestabilizar a operao de aplicaes existentes e, ao mesmo tempo, pode
oferecer a funcionalidade ampliada a aplicaes novas.

Object Orientation
Os mtodos do SAP Business Objects, BAPIs, provem acesso ao dados e processos R/3
utilizando a programao modelo de orientao objetos.

Openness
Voc pode acessar BAPIs de todas plataformas de desenvolvimentos que suportam SAP Remote
Function Call (RFC) protocol.

07/10/2015

Pg. 4

SAP

R/3

Bapi SAP / R3

Orientao objetos e funes para acesso BAPIs


Orientao objetos para acesso BAPIs na BOR (Business Object Repository) possivel por um
nmero de plataformas. Voc pode utilizar uma BAPI atravs de funo.
Ferramentas de Desenvolvimento /Middleware
BAPI ActiveX Control
(Windows 95 and Windows
NT)

O BAPI ActiveX Control da SAP permite aplicaes de


cliente externos a ter acesso aos Objetos de Negcio da
SAP no BOR invocando BAPIs por OLE

BAPI C++ Class Library in


SAP Assistant

Um BAPI C++ Class Library est disponvel no Assistente


de SAP que prov uma C++ proxy class para cada Objeto
de Negcio de SAP e sua BAPIs.

BAPI Java Class Library in


SAP Assistant

Um dynamic BAPI Java Class Library est disponvel em


Assistente de SAP que habilita acesso orientado objeto
para BAPIs em plataformas de Java.

R/3 DCOM Component


Connector

O R/3 DCOM Component Conector desenvolvido


juntamente pela SAP e a Microsoft habilita os objetos R/3
e os objetos COM para ser naturalmente integrado. O R/3
DCOM Component Conector Software Desenvolvimento
Kit (SDK) transportado como parte de RFC SDK para
Windows NT.

(Windows NT)

ObjectBridge
from Visual Edge

Visaul Edges middleware product ObjectBridge habilita


automaticamente acessos a BAPIs de todos CORBA 2.0enabled Object Request Brokers (ORBs) como tambm
de outros protocolos orientados objetos como
ActiveX/DCOM.

Ambientes de Desenvolvimentos
Delphi/Connect for SAP
from Inprise

Para detalhes adicionais veja Delphi/Connect informao


do produto.

Access Builder for SAP


R/3 from IBM

Access Builder Construtor para SAP R/3 usado para


integrar BAPIs no ambiente de desenvolvimento da IBM e
Visual Age para Java. Access Builder Construtor para SAP
R/3 habilita o desenvolvimento de aplicaes de Java
BAPI, applets de Java e JavaBeans para o Sistema R/3.

Visual Studio (Enterprise


Edition)
from Microsoft

De agora em diante implementao BAPIs em R/3


releases 3.1H e 4.0A estaro localmente disponveis no
ambiente de desenvolvimento da Microsoft - Visual
Studio(Enterprise Edition).

Abap 4

Voc pode utilizar as BAPIs efetuando chamadas as


funes BAPI em seus programas desenvolvidos com
Abap. No utiliza O.O.

Determinando as BAPIs do Business Object


SAP Business Objects e suas BAPIs so gerenciadas no Business Object Repository (BOR) em
uma estrutura baseada na R/3 Application Component hierarchy.
07/10/2015

Pg. 5

SAP

R/3

Bapi SAP / R3

No BAPI Browser voc pode exibir todos SAP Business Objects nas hierarquias de aplicaes na
qual h BAPIs implementada.
Siga os passos abaixo:
1. Efetue login no Sistema R/3.
2. Selecione Tools Business Framework BAPI Browser ou entre o cdigo de transao
BAPI no SAPgui command field. O BAPI Browser do BOR exibido na qual todos Business
Objects com BAPIs so exibidos no R/3 application hierarchy.
3. Amplie os nodos e os nodos subordinados de um dos componentes de aplicao at que
voc adquire ao nvel onde um SAP Business Objects foi implementada . So exibidos s esses
objetos empresariais para os quais foram implementados BAPIs.
4. Para abrir um objeto empresarial, clique duas vezes. Os ns que so exibidos so campos
Chaves e Mtodos.
5. Amplie os Mtodos do n para exibir uma lista das BAPIs disponveis para tipo de SAP
Business Object selecionado. Selecione o cone de informao para exibir descries de BAPIs
individual.
6. Amplie o ns campos Chaves, listar os campos chaves do objeto. Selecione o cone de
informao para exibir descries de campos de chave individuais.
Selecione Utilities Color Key para exibir a descrio do icones individuais no BAPI Browser.

Depois que voc localizar a BAPI que voc deseja, voc ter que especificar a informao
necessria da BAPI para funcionar em seu programa de aplicao.
Essas informaes requeridas so:

As Key Fields do SAP Business Object

07/10/2015

Pg. 6

SAP

R/3

Bapi SAP / R3

Os Import, Export e Import/Export Parameters da BAPI

O Nome da Function Module, se voc efetuar chamada direta RFC ou via Abap para o
mdulo de funo BAPI.
Uma vez que voc juntou toda a informao necessria, voc pode somar a BAPI e seu cdigo de
aplicao.

Caracteristicas das BAPIs


Esta seo descreve as caractersticas da BAPI sobre as quais voc dever saber antes de
integrar chamadas de BAPI em seus programas de aplicao.

Naming Conventions
BAPIs so identificados pelo nome do objeto empresarial em questo seguido pelo nome da BAPI.
(Nomes de BAPI esto em ingls e descrevem o que o BAPI faz ao objeto empresarial). Um
perodo separa as duas partes do nome.
Por exemplo, o nome completo da BAPI CheckAvailability do business object Material
Material.CheckAvailability.
Este BAPIs so implementados de acordo com regras especificadas e so nomeados o mesmo
nome para todos os objetos empresariais. A BAPI GetList que lista instncias de objeto existentes
pode ser usado para muitos objetos empresariais, por exemplo, CompanyCode.GetList e
Material.GetList.

Database Consistency
Cada BAPI que cria uma instncia de um objeto ou atualiza os dados de um objeto responsvel
para consistncia de banco de dados. Todas as mudanas de banco de dados so levadas
completamente ou totalmente ignorada.
Porem, o comando COMMIT WORK no executada pela BAPI ; Este ser necessrio executar
pelo programa qua a chamou.

No Dialog Orientation
BAPIs no devolvem telas de dilogo do Sistema R/3 para o programa de chamada.

Authorization
Qualquer interao com o Sistema R/3 exige que o usurio que tenha um certo grupo de
autorizaes. Ao executar um BAPI como parte de seu programa de aplicao, os usurios de sua
aplicao tm que ter o grupo de autorizaes apropriado nos registros mestres do R/3 . A
documentao provida com a BAPI contm informao sobre as autorizaes exigidas.
Qualquer tentativa de executar uma BAPI e falhar, como resultado de autorizao insuficiente, este
informado no retorno aplicao de chamada.

Data Types and Data Display

07/10/2015

Pg. 7

SAP

R/3

Bapi SAP / R3

Parmetros de BAPI podem usar a maioria dos tipos de dados de SAP apoiados. Os tipos de
dados so documentados na entrada de estrutura do parmetro individual no Dicionrio de ABAP.

Processing Modes
Quando so chamados BAPIs diretamente, por exemplo, usando BAPI ActiveX Control, R/3 DCOM
Component Conector ou chamando o mdulo de funo subjacente diretamente, so processados
BAPIs em modo sncrono.

Standardized (Nomes Padres) BAPIs


Algumas BAPIs e mtodos provem funes bsicas e podem ser usados para a maioria da SAP
Business Object. Tal BAPIs so conhecidas como Standardized BAPIs.

BAPIs for Reading Data


A BAPIs seguinte lhe proporciona acesso somente de leitura para dados no objeto empresarial
associado:
GetList
Com a BAPI GetList voc pode selecionar objetos valores chaves, por exemplo, company-code e
material-number.
GetStatus
A BAPI GetStatus usado para examinar o estado de um SAP Business Object, por exemplo, o
estado de processo de uma ordem de venda. Este BAPI s usado para exibir o estado de um
objeto e no retorna detalhes completos como a BAPI GetDetail.

BAPIs for Creating or Changing Data


O BAPIs seguinte pode criar, modificar ou apagar instncias de um objeto empresarial:
Create ou CreateFromData
A BAPI Create ou CreateFromData cria uma instncia de um SAP Business Object, por exemplo,
uma ordem de compra.
Change
A BAPI Change efetua mudanas em uma instncia existente de um SAP Business Object, por
exemplo, uma ordem de compra.
Delete and Undelete
A BAPI Delete apaga uma instncia de um SAP Business Object do banco de dados, por exemplo,
uma ordem de compra.
A BAPI Undelete remove a deletion flag.

BAPIs for Mass Processing

07/10/2015

Pg. 8

SAP

R/3

Bapi SAP / R3

As BAPIs listadas na seo acima , BAPIs for Creating or Changing Data, tambm pode ser
usado para processo de massa. Aqui, quando um BAPI chamado, so processadas vrias
instncias de objeto de negcio ao mesmo tempo.
Com BAPIs para processar, o sufixo Mltiplo somado ao nome de mtodo, por exemplo,
ChangeMultiple, CreateMultiple, DeleteMultiple.

BAPIs for Controlling COMMIT and ROLLBACK


O modelo de transao estipula que todo BAPI que cria instncias de objeto ou dados de objeto de
mudanas responsvel para consistncia de banco de dados.
Os comandos commit ou reset changes ao banco de dados (COMMIT and ROLLBACK), no deve
ser executado pelo prprio BAPI, eles tm que ser chamados diretamente do programa de
aplicao externo.
Programas externos podem usar o seguinte BAPIs para estas chamadas:

BapiTransactionCommit

Este mtodo executa um comando COMMIT WORK. Quando voc chama BAPIs em seu
programa que modificam dados no Sistema R/3, voc tem que chamar este mtodo ento para
passar as mudanas para o banco de dados.

BapiTransactionRollback

Este mtodo executa um comando ROLLBACK WORK. Quando voc chama BAPIs em seu
programa que mudificam dados no Sistema R/3, depois voc tem que chamar este mtodo para
desfazer as mudanas . Isto funciona contanto que o BAPI BapiTransactionCommit j no
passasse as mudanas para o banco de dados.

Fase de expirao da BAPI

Release
BAPI
BAPI

Business
Object
BAPI

Business
Object

3.1

4.0

F1

F2

F3

Supported until F3

Supported as of 4.0

New

F = functional Release

Chamando BAPIs de ABAP


07/10/2015

Pg. 9

SAP

R/3

Bapi SAP / R3

Este relatrio usa o servio BAPI BapiService.MessageGetDetail, exibir o texto pequeno e o texto
longo de mensagens de erro.
*------------------------------------------------------------------------*
*
read a message short and long text using the BAPI
*
*
BAPI_MESSAGE_GETDETAIL of the object BapiService.
*
*------------------------------------------------------------------------*

* Data declaration
DATA : MY_ID
LIKE BAPIRET2-ID,
MY_NUMBER
LIKE BAPIRET2-NUMBER,
MY_TEXTFORMAT LIKE BAPITGA-TEXTFORMAT,
MY_MESSAGE_V1 LIKE BAPIRET2-MESSAGE_V1,
MY_MESSAGE
LIKE BAPIRET2-MESSAGE,
MY_RETURN
TYPE BAPIRET2.
DATA BEGIN OF MY_TEXT OCCURS 1.
INCLUDE STRUCTURE BAPITGB.
DATA END OF MY_TEXT.

* Enter values in object


MOVE
MOVE
MOVE
MOVE

'FI'
'024'
'ASC'
'0001'

TO
TO
TO
TO

MY_ID.
MY_NUMBER.
MY_TEXTFORMAT.
MY_MESSAGE_V1.

"message id of message to read


"message number of message to read
"text format, here ASCII
"text to fill into message

*BAPI call
CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
EXPORTING
ID
= MY_ID
NUMBER
= MY_NUMBER
*
LANGUAGE
= SY-LANGU
TEXTFORMAT = MY_TEXTFORMAT
MESSAGE_V1 = MY_MESSAGE_V1
*
MESSAGE_V2 =
*
MESSAGE_V3 =
*
MESSAGE_V4 =
IMPORTING
MESSAGE
= MY_MESSAGE
RETURN
= MY_RETURN
TABLES
TEXT
= MY_TEXT
.

* Print results
WRITE : / 'Input' COLOR 5.
WRITE : / 'my_id...........:', MY_ID.
WRITE : / 'my_number.......:', MY_NUMBER.
WRITE : / 'my_textformat...:', MY_TEXTFORMAT.
WRITE : / 'my_message_v1...:', MY_MESSAGE_V1.
WRITE : / 'Output' COLOR 5.
WRITE : / 'my_message........:', MY_MESSAGE.
WRITE : / 'my_return.........:', MY_RETURN.
WRITE : / 'Text output' COLOR 5.
LOOP AT MY_TEXT.
WRITE : / MY_TEXT.
ENDLOOP.

07/10/2015

Pg. 10

SAP

R/3

07/10/2015

Bapi SAP / R3

Pg. 11

SAP

R/3

Bapi SAP / R3

BAPI ActiveX Control


Introduo
O control BAPI ActiveX permite que programas externos acessem dados do R/3
executando as BAPIs via OLE Automation.
Os programas externos podem ser escritos no Visual Basic ou qualquer linguagem que
suporte OLE Automation.
Esse recurso deve ser utilizado para pequenas aplicaes. Ele no permite por exemplo,
o gerenciamento de conexes e o uso do MTS para construo de aplicaes
distribudas. Para aplicaes mais robustas o uso do DCOM Connector mais
aconselhvel.
Esse control funciona somente no Windows 95/98 e NT.

Chamando BAPIs de dentro do Excel


O ProgID do controle BAPI ActiveX SAP.BAPI.1. O ProgID como j explicado
anteriormente o identificador de uma classe. a chave que o Visual Basic precisa para
localizar o objeto no registro do Windows para carregar suas informaes.

07/10/2015

Pg. 12

SAP

R/3

Bapi SAP / R3

Para efetuar a conexo com o R/3 utilizamos outro controle chamado Logon ActiveX
Control. Seu ProgID SAP.LogonControl.1.
Isso o que precisamos saber para trabalhar com os objetos. O ProgID dos controles
est documentado no help do SAP. No help do SAP podemos encontrar tambm a
documentao de outros controles disponveis.
Nesse exemplo iremos carregar a lista de empresas cadastradas no SAP em uma planilha
Excel, atravs da execuo de uma macro.
Para tanto crie uma nova macro a partir do menu Ferramentas / Macro / Macros. A
seguinte janela ser exibida:

Preencha um nome e selecione [Criar].


A tela do editor VBScript ser aberta.
Insira o cdigo abaixo e salve a macro.
Sub lista_empresa()
'Constantes para identificao do usurio
Const sClient As String = "199"
Const sUser As String = "pwsabap"
Const sPassword As String = "treina"
Const sLanguage As String = "PT"
'Constante para identificao do ambiente
Const sMSysSystem
As String = "PS1 - 46C"
Const sMSysMessageServer As String = ""
Const sMSysGroupName As String = ""
'Declarao dos objetos
'Objeto para o BAPI ActiveX control
07/10/2015

Pg. 13

SAP

R/3

Bapi SAP / R3

Dim oBapiControl As Object


'Objeto para o R/3 logon control
Dim oLogonControl As Object
'Business Object CompanyCode e seus parmetros
Dim boCompanyCode As Object
Dim oReturn
As Object
Dim otabCompanyCodes As Object
'Criao dos objetos de conexo
Set oBapiControl = CreateObject("SAP.BAPI.1")
Set oLogonControl = CreateObject("SAP.LogonControl.1")
Passamos uma nova conexo para o atributo connection do controle BAPI
Set oBapiControl.Connection = oLogonControl.NewConnection
'Logon no R/3
'Preenche logon parameters
oBapiControl.Connection.System = sMSysSystem
oBapiControl.Connection.MessageServer = sMSysMessageServer
oBapiControl.Connection.GroupName = sMSysGroupName
oBapiControl.Connection.Client = sClient
oBapiControl.Connection.user = sUser
oBapiControl.Connection.Password = sPassword
oBapiControl.Connection.Language = sLanguage
Se informarmos (1, False) para o mtodo Logon, no ser exibida janela de log
If oBapiControl.Connection.Logon(0, False) = False Then
MsgBox "Conexo falhou!"
End
End If
'Criao do objeto CompanyCode
Chamamos o mtodo GetSAPObject para instanciar qualquer Business Object do SAP
Para descobrir o nome que deve ser passado como parmetro veja explicao no final do
desse cdigo
Set oCompanyCode = oBapiControl.GetSAPObject("CompanyCode")
Set oReturn = oBapiControl.DimAs(oCompanyCode, "GetList", "Return")
Set
otabCompanyCodes
=
oBapiControl.DimAs(oCompanyCode,
"GetList",
"CompanyCodeList")
'Chama o mtodo do objeto CompanyCode
oCompanyCode.GetList Return:=oReturn, CompanyCodeList:=otabCompanyCodes
'Imprime a relao de empresas retornadas na planilha
'A lgica a seguir lana na coluna A o cdigo da empresa e
'na coluna B o nome da empresa
Dim celnome As String
Dim celcode As String
Dim x
As Integer
07/10/2015

Pg. 14

SAP

R/3
Dim y

Bapi SAP / R3

As Variant

y = otabCompanyCodes.data
While x < 40
x=x+1
If x <= 9 Then
celnome = "B" + Right(Str(x), 1)
celcode = "A" + Right(Str(x), 1)
Else
celnome = "B" + Right(Str(x), 2)
celcode = "A" + Right(Str(x), 2)
End If
Range(celcode).Select
ActiveCell.FormulaR1C1 = y(x, 1)
Range(celnome).Select
ActiveCell.FormulaR1C1 = y(x, 2)
Wend
Application.Goto Reference:="R1C1"
'Logoff do R/3
oBapiControl.Connection.Logoff
End Sub
Como descobrir o nome do Business Object que queremos trabalhar?
No R/3 inicie a transao BAPI (release 4.6) e selecione o BO desejado. O nome que
devemos informar para o mtodo GetSAPObject est no campo Nome do Objeto:
Set oCompanyCode = oBapiControl.GetSAPObject("CompanyCode")

07/10/2015

Pg. 15

SAP

R/3

Bapi SAP / R3

Bibliografia
1. SCHUESSLER, Thomas G.. A Beginners Guide to Accessing BAPIs with the SAP
DCOM Connector. SAP Professional Journal. Dedham, (Sample Issue): 91, 2000
2. BAPI ActiveX Control, SAP Library, SAP AG., 2000
3. DCOM Connector, SAP Library, SAP AG., 2000
4. OLE2 Automation Controller, SAP Library, SAP AG., 2000
5. BAPI Programming, www.sap.com/solutions/technology/bapis/, SAP AG. 2000
6. Interface repository - http://ifr.sap.com/catalog/query.asp

07/10/2015

Pg. 16

Potrebbero piacerti anche