19
SAP R/3 Bapi – SAP / R3 BAPI (Business Application Programming Interface ) Rodolfo Mião Programador Abap [email protected] 08/06/2022 Pág. 1

Curso Bapi

Embed Size (px)

DESCRIPTION

Curso Bapi

Citation preview

Page 1: Curso Bapi

SAP

R/3 Bapi – SAP / R3

BAPI (Business Application Programming Interface )

Rodolfo MiãoProgramador Abap

[email protected]

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

21/04/2023 Pág. 1

Page 2: Curso Bapi

SAP

R/3 Bapi – SAP / R3

INTRODUÇÃO.........................................................................................................................................................3Pré-requisitos.......................................................................................................................................................3VANTAGENS DE USAR BAPIS...............................................................................................................................4ORIENTAÇÃO À OBJETOS EFUNÇÕES PARA ACESSO À BAPIS...............................................................................5DETERMINANDO AS BAPIS DO BUSINESS OBJECTS.............................................................................................6CARACTERISTICAS DAS BAPIS.............................................................................................................................7STANDARDIZED ( NOMES PADRÕES) BAPIS.........................................................................................................8CHAMANDO BAPIS DE ABAP............................................................................................................................10

BAPI ACTIVEX CONTROL..........................................................................................................................12

INTRODUÇÃO.......................................................................................................................................................12CHAMANDO BAPIS DE DENTRO DO EXCEL........................................................................................................12

Bibliografia.........................................................................................................................................................16

21/04/2023 Pág. 2

Page 3: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Business Application Programming Interface (BAPI)

Introdução

O Framework de Negócios no Sistema R/3 é uma família de componentes separados e integrados.

Componentes do Framework:

Componentes empresariais (recursos humanos, por exemplo)

Objetos empresariais (Pedido, funcionário, candidato, por exemplo)

BAPI-interfaces (cria um pedido, mudança do endereço, por exemplo)

Business Object (Componentes de negócios) interagem com Framework de Negócios em cima das Interfaces de programas para Aplicações de Negócios (BAPIs).

BAPIs também fornece um alojamento de interface padrão para integração de aplicações externas e componentes no Framework de Negócios. Estas interfaces são definidas dentro do sistema SAP com iniciativa dos clientes, sócios e organizações de padronização principais.

A BAPI é definida como um método do SAP Business Object.

A BAPI é uma arquitetura de software desenvolvida pela SAP que visa permitir a construção de aplicativos a partir de componentes feitos por diferentes empresas de software ou ferramentas.

As BAPI´s no sistema R/3 são normalmente implementadas como módulos de funções. Todas são criadas e gerenciadas no Function Builder.

Pré-requisitos

Para usar um método BAPI para ter acesso a dados em SAP Business Objects , um programa de aplicação precisa só saber chamar o método. Informações requeridas :

· O nome da BAPI · Detalhes da interface de BAPI: - Parâmetros de importação que contêm dados a serem transferidos do programa de chamada à BAPI . - Parâmetros de exportação que contêm dados a serem transferidos atrás da BAPI ao programa de chamada. - Import/export (table) parâmetros por importar e exportar dados .

Os programadores de aplicação podem trabalhar com SAP Business Objects e podem implementar a BAPIs sem precisar saber a implementação subjacente e detalhes do código.

21/04/2023 Pág. 3

Page 4: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Vantagens de Usar BAPIs

Esta seção lista algumas das vantagens de usar BAPIs como um dos meios de ter acesso os Objetos de Negócio da SAP.

Business Standard

SAP Business Objects e suas BAPIs são os padrões para as funções empresariais no Sistema R/3. Eles habilitam o Sistema R/3 e outros produtos de software serem integrados em um nível empresarial.

Standards Conformance

Estão sendo desenvolvidos BAPIs como parte da iniciativa SAP em comum com clientes, sócios, e organizações de padrões principais. BAPIs estão se tornando um padrão de comunicação entre sistemas empresariais. Você pode acessar o SAP Business Objects e suas BAPIs usando orientação à 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 Aplicação de Objeto (OAG) e, junto com ObjectBridge da VisualEdge, conforme as diretizes CORBA do Grupo de Administração de Objeto (Common Object Request Broker Architecture).

Stability and Downwards Compatibility

Quando a SAP desenvolveu e lançou a BAPI, sua definição de interface e parâmetros permanecem estáveis para um tempo de limite longo. Isto assegura que programas de aplicação não são afetados através de mudanças por baixo dos softwares e dados R/3. SAP pode fazer qualquer extensão necessária ao BAPIs, por exemplo, inclusão de parâmetros opcionais, sem desestabilizar a operação de aplicações existentes e, ao mesmo tempo, pode oferecer a funcionalidade ampliada a aplicações novas.

Object Orientation

Os métodos do SAP Business Objects, BAPIs, provêem acesso ao dados e processos R/3 utilizando a programação modelo de orientação à objetos.

Openness

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

21/04/2023 Pág. 4

Page 5: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Orientação à objetos e funções para acesso à BAPIs

Orientação à objetos para acesso à BAPIs na BOR (Business Object Repository) é possivel por um número de plataformas. Você pode utilizar uma BAPI através de função.

Ferramentas de Desenvolvimento /Middleware

BAPI ActiveX Control

(Windows 95 and Windows NT)

O BAPI ActiveX Control da SAP permite aplicações de cliente externos a ter acesso aos Objetos de Negócio da SAP no BOR invocando BAPIs por OLE

BAPI C++ Class Library in SAP Assistant

Um BAPI C++ Class Library está disponível no Assistente de SAP que provê uma C++ proxy class para cada Objeto de Negócio de SAP e sua BAPIs.

BAPI Java Class Library in SAP Assistant

Um dynamic BAPI Java Class Library está disponível em Assistente de SAP que habilita acesso orientado à objeto para BAPIs em plataformas de Java.

R/3 DCOM Component Connector

(Windows NT)

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.

ObjectBridge from Visual Edge

Visaul Edge’s middleware product “ObjectBridge” habilita automaticamente acessos a BAPIs de todos CORBA 2.0-enabled Object Request Brokers (ORBs) como também de outros protocolos orientados à objetos como ActiveX/DCOM.

Ambientes de Desenvolvimentos

Delphi/Connect for SAP from Inprise

Para detalhes adicionais veja Delphi/Connect informação 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 aplicações de Java BAPI, applets de Java e JavaBeans para o Sistema R/3.

Visual Studio (Enterprise Edition) from Microsoft

De agora em diante implementação BAPIs em R/3 releases 3.1H e 4.0A estarão localmente disponíveis no ambiente de desenvolvimento da Microsoft - Visual Studio(Enterprise Edition).

Abap 4 Você pode utilizar as BAPIs efetuando chamadas as funções BAPI em seus programas desenvolvidos com Abap. Não utiliza O.O.

21/04/2023 Pág. 5

Page 6: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Determinando as BAPIs do Business Object

SAP Business Objects e suas BAPIs são gerenciadas no Business Object Repository (BOR) em uma estrutura baseada na R/3 Application Component hierarchy.

No BAPI Browser você pode exibir todos SAP Business Objects nas hierarquias de aplicações 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 código de transação BAPI no SAPgui command field. O BAPI Browser do BOR é exibido na qual todos Business Objects com BAPIs são exibidos no R/3 application hierarchy.

3. Amplie os nodos e os nodos subordinados de um dos componentes de aplicação até que você adquire ao nível onde um SAP Business Objects foi implementada . São exibidos só esses objetos empresariais para os quais foram implementados BAPIs.

4. Para abrir um objeto empresarial, clique duas vezes. Os nós que são exibidos são campos Chaves e Métodos.

5. Amplie os Métodos do nó para exibir uma lista das BAPIs disponíveis para tipo de SAP Business Object selecionado. Selecione o ícone de informação para exibir descrições de BAPIs individual.

6. Amplie o nós campos Chaves, listar os campos chaves do objeto. Selecione o ícone de informação para exibir descrições de campos de chave individuais.

Selecione Utilities Color Key para exibir a descrição do icones individuais no BAPI Browser.

21/04/2023 Pág. 6

Page 7: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Depois que você localizar a BAPI que você deseja, você terá que especificar a informação necessária da BAPI para funcionar em seu programa de aplicação.

Essas informações requeridas são:

As Key Fields do SAP Business Object

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 módulo de função BAPI.

Uma vez que você juntou toda a informação necessária, você pode somar a BAPI e seu código de aplicação.

Caracteristicas das BAPIs

Esta seção descreve as características da BAPI sobre as quais você deverá saber antes de integrar chamadas de BAPI em seus programas de aplicação.

Naming Conventions

BAPIs são identificados pelo nome do objeto empresarial em questão seguido pelo nome da BAPI. (Nomes de BAPI estão em inglês e descrevem o que o BAPI faz ao objeto empresarial). Um período separa as duas partes do nome.

Por exemplo, o nome completo da BAPI CheckAvailability do business object Material é Material.CheckAvailability.

Este BAPIs são implementados de acordo com regras especificadas e são nomeados o mesmo nome para todos os objetos empresariais. A BAPI GetList que lista instâncias de objeto existentes pode ser usado para muitos objetos empresariais, por exemplo, CompanyCode.GetList e Material.GetList.

Database Consistency

Cada BAPI que cria uma instância de um objeto ou atualiza os dados de um objeto é responsável para consistência de banco de dados. Todas as mudanças de banco de dados são levadas completamente ou totalmente ignorada. Porem, o comando COMMIT WORK não é executada pela BAPI ; Este será necessário executar pelo programa qua a chamou.

No Dialog Orientation

BAPIs não devolvem telas de diálogo do Sistema R/3 para o programa de chamada.

Authorization

Qualquer interação com o Sistema R/3 exige que o usuário que tenha um certo grupo de autorizações. Ao executar um BAPI como parte de seu programa de aplicação, os usuários de sua aplicação têm que ter o grupo de autorizações apropriado nos registros mestres do R/3 . A documentação provida com a BAPI contém informação sobre as autorizações exigidas.

21/04/2023 Pág. 7

Page 8: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Qualquer tentativa de executar uma BAPI e falhar, como resultado de autorização insuficiente, este é informado no retorno à aplicação de chamada.

Data Types and Data Display

Parâmetros de BAPI podem usar a maioria dos tipos de dados de SAP apoiados. Os tipos de dados são documentados na entrada de estrutura do parâmetro individual no Dicionário de ABAP.

Processing Modes

Quando são chamados BAPIs diretamente, por exemplo, usando BAPI ActiveX Control, R/3 DCOM Component Conector ou chamando o módulo de função subjacente diretamente, são processados BAPIs em modo síncrono.

Standardized (Nomes Padrões) BAPIs

Algumas BAPIs e métodos provêem funções básicas e podem ser usados para a maioria da SAP Business Object. Tal BAPIs são conhecidas como “Standardized” BAPIs.

BAPIs for Reading Data

A BAPIs seguinte lhe proporciona acesso somente de leitura para dados no objeto empresarial associado:

GetListCom a BAPI GetList você pode selecionar objetos valores chaves, por exemplo, company-code e material-number.

GetStatusA 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 não retorna detalhes completos como a BAPI GetDetail.

BAPIs for Creating or Changing Data

O BAPIs seguinte pode criar, modificar ou apagar instâncias de um objeto empresarial:

Create ou CreateFromData A BAPI Create ou CreateFromData cria uma instância de um SAP Business Object, por exemplo, uma ordem de compra.

ChangeA BAPI Change efetua mudanças em uma instância existente de um SAP Business Object, por exemplo, uma ordem de compra.

Delete and Undelete A BAPI Delete apaga uma instância de um SAP Business Object do banco de dados, por exemplo, uma ordem de compra.

21/04/2023 Pág. 8

Page 9: Curso Bapi

SAP

R/3 Bapi – SAP / R3

A BAPI Undelete remove a deletion flag.

BAPIs for Mass Processing

As BAPIs listadas na seção acima , “BAPIs for Creating or Changing Data”, também pode ser usado para processo de massa. Aqui, quando um BAPI é chamado, são processadas várias instâncias de objeto de negócio ao mesmo tempo.

Com BAPIs para processar, o sufixo “Múltiplo” é somado ao nome de método, por exemplo, ChangeMultiple, CreateMultiple, DeleteMultiple.

BAPIs for Controlling COMMIT and ROLLBACK

O modelo de transação estipula que todo BAPI que cria instâncias de objeto ou dados de objeto de mudanças é responsável para consistência de banco de dados.

Os comandos commit ou reset changes ao banco de dados (COMMIT and ROLLBACK), não deve ser executado pelo próprio BAPI, eles têm que ser chamados diretamente do programa de aplicação externo.

Programas externos podem usar o seguinte BAPIs para estas chamadas:

BapiTransactionCommit

Este método executa um comando COMMIT WORK. Quando você chama BAPIs em seu programa que modificam dados no Sistema R/3, você tem que chamar este método então para passar as mudanças para o banco de dados.

BapiTransactionRollback

Este método 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 método para desfazer as mudanças . Isto funciona contanto que o BAPI BapiTransactionCommit já não passasse as mudanças para o banco de dados.

21/04/2023 Pág. 9

Page 10: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Fase de expiração da BAPI

Release

BAPI

BusinessObject

BAPIBAPI

BusinessObject

BAPIBAPI

New

F13.1 4.0 F2

Supported until F3

Supported as of 4.0

F = functional Release

F3

Chamando BAPIs de ABAP

Este relatório usa o serviço 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 objectMOVE 'FI' TO MY_ID. "message id of message to readMOVE '024' TO MY_NUMBER. "message number of message to readMOVE 'ASC' TO MY_TEXTFORMAT. "text format, here ASCIIMOVE '0001' TO MY_MESSAGE_V1. "text to fill into message

*BAPI callCALL 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

21/04/2023 Pág. 10

Page 11: Curso Bapi

SAP

R/3 Bapi – SAP / R3

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.

21/04/2023 Pág. 11

Page 12: Curso Bapi

SAP

R/3 Bapi – SAP / R3

BAPI ActiveX Control

Introdução

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 aplicações. Ele não permite por exemplo, o gerenciamento de conexões e o uso do MTS para construção de aplicações distribuídas. Para aplicações mais robustas o uso do DCOM Connector é mais aconselhável.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 informações.

21/04/2023 Pág. 12

Page 13: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Para efetuar a conexão 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 também a documentação de outros controles disponíveis.

Nesse exemplo iremos carregar a lista de empresas cadastradas no SAP em uma planilha Excel, através da execução 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 código abaixo e salve a macro.

Sub lista_empresa()

'Constantes para identificação do usuárioConst sClient As String = "199"Const sUser As String = "pwsabap"Const sPassword As String = "treina"Const sLanguage As String = "PT"

'Constante para identificação do ambienteConst sMSysSystem As String = "PS1 - 46C"Const sMSysMessageServer As String = ""Const sMSysGroupName As String = ""

'Declaração dos objetos'Objeto para o BAPI ActiveX control

21/04/2023 Pág. 13

Page 14: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Dim oBapiControl As Object'Objeto para o R/3 logon controlDim oLogonControl As Object'Business Object CompanyCode e seus parâmetrosDim boCompanyCode As ObjectDim oReturn As ObjectDim otabCompanyCodes As Object

'Criação dos objetos de conexãoSet oBapiControl = CreateObject("SAP.BAPI.1")Set oLogonControl = CreateObject("SAP.LogonControl.1")

‘Passamos uma nova conexão para o atributo connection do controle BAPISet oBapiControl.Connection = oLogonControl.NewConnection

'Logon no R/3'Preenche logon parametersoBapiControl.Connection.System = sMSysSystemoBapiControl.Connection.MessageServer = sMSysMessageServeroBapiControl.Connection.GroupName = sMSysGroupNameoBapiControl.Connection.Client = sClientoBapiControl.Connection.user = sUseroBapiControl.Connection.Password = sPasswordoBapiControl.Connection.Language = sLanguage

‘Se informarmos (1, False) para o método Logon, não será exibida janela de logIf oBapiControl.Connection.Logon(0, False) = False Then MsgBox "Conexão falhou!" EndEnd If

'Criação do objeto CompanyCode‘Chamamos o método GetSAPObject para instanciar qualquer Business Object do SAP ‘Para descobrir o nome que deve ser passado como parâmetro veja explicação no final do ‘desse códigoSet oCompanyCode = oBapiControl.GetSAPObject("CompanyCode") Set oReturn = oBapiControl.DimAs(oCompanyCode, "GetList", "Return")Set otabCompanyCodes = oBapiControl.DimAs(oCompanyCode, "GetList", "CompanyCodeList")

'Chama o método do objeto CompanyCodeoCompanyCode.GetList Return:=oReturn, CompanyCodeList:=otabCompanyCodes

'Imprime a relação de empresas retornadas na planilha'A lógica a seguir lança na coluna A o código da empresa e'na coluna B o nome da empresaDim celnome As StringDim celcode As StringDim x As Integer

21/04/2023 Pág. 14

Page 15: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Dim y As Variant

y = otabCompanyCodes.dataWhile 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)WendApplication.Goto Reference:="R1C1"

'Logoff do R/3oBapiControl.Connection.Logoff

End Sub

Como descobrir o nome do Business Object que queremos trabalhar?No R/3 inicie a transação BAPI (release 4.6) e selecione o BO desejado. O nome que devemos informar para o método GetSAPObject está no campo Nome do Objeto:

Set oCompanyCode = oBapiControl.GetSAPObject("CompanyCode")

21/04/2023 Pág. 15

Page 16: Curso Bapi

SAP

R/3 Bapi – SAP / R3

Bibliografia

1. SCHUESSLER, Thomas G.. A Beginner’s 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

21/04/2023 Pág. 16