SlideShare a Scribd company logo
Realizzazione di applicazioni client
con librerie di interfaccia di un
sistema ERP
Fabrizio Granchelli
Università di L’Aquila
Che cos’è un sistema ERP
Un Enterprice Resource Planning è un Sistema
Informativo per la Gestione Integrata dei Processi
Aziendali
 I Processi Aziendali sono tutte le attività e funzioni svolte all’interno di
una azienda che coinvolgono le varie aree di un Sistema Produttivo;
 Per Gestione Integrata si intende l’integrazione on-line e real-time dei
dati che mettono in relazione tra loro i vari processi aziendali
 Un ERP rappresenta un Sistema Informativo perché è supportato da
strumenti e risorse dell’Informatic Tecnology
Architettura di SAP R/3
 Hardware, Network, Sistemi Operativi, Database,
Frontends
 Client Server
 Piattaforme: UNIX, Windows, IBM, ...
 Middleware (MMBC)
 Linguaggio ANSI SQL
 Protocollo TCP/IP
 Chiamate di Sistema C, Posix
 Remote Function Call ( RFC )
 Business Application Programming Interface ( BAPI )
 Applicazioni R/3
 Applicazioni Client: Effettuano transazioni su SAP ( C++, Java, ... )
 Servizi di presentazione: Reporting ( ABAP )
 Servizi di accesso ai dati: Query ( ABAP )
Applicazioni Client
Business Framework
•Risorse per le funzionalità aziendali
•Risorse condivisibile dall’esterno
SAP
Utenti Esterni
R/3
Business Object
BO
Business Framework
Realtà aziendale
Incapsula i dati e i processi di una area aziendale
Sono nascosti i dettagli implementativi
Le applicazioni esterne possono accedere ai dati dell’oggetto solo
attraverso i suoi metodi pubblici
Struttura di un SAP Business Object
 Kernel: Dati inerenti all’oggetto ( stato interno )
 Integrity: Regole e vincoli che costituiscono la logica dell’oggetto
 Interface: Librerie di interfaccia ( metodi BAPI )
 Access: Tecnologie di interfacciamento
Business Application
Programming Interface
 Permettono di accedere ai dati di un BO e di utilizzare i relativi metodi
 Sono definite come un metodo di un BO di SAP
 Sono implementate attraverso moduli funzionali che supportano il
protocollo RFC
Utilizzo delle BAPI
L’accesso a una BAPI avviene in due modi:
 Accesso di tipo object-oriented
 Accesso attraverso una chiamata RFC al modulo funzionale che
implementa la BAPI
I passi da seguire per invocare una BAPI sono:
 Identificare il BO che contiene la BAPI
 Determinare le informazioni sui parametri che definiscono l’interfaccia
della BAPI
 Includere nell’applicazione, la chiamata BAPI con i parametri richiesti
Accesso Object Oriented
Windows 95 o NT
– BAPI ActiveX Control
 Libreria di classi BAPI C++
Piattaforme con Java Virtual Machine
– Libreria di classi BAPI Java
Classi BAPI C++
La libreria di classi BAPI C++ offre una
proxy class per ogni SAP BO che ha metodi
pubblici.
Una proxy class è un rappresentante locale
di un’istanza remota di un BO in R/3.
Classi Proxy
(from Logical View)
Applicazione C++
Classi RFC
(from Logical View)
APPLICAZIONE C++ UTILIZZANDO CLASSI PROXY
Inserimento in remoto di un ordine di vendita
(Sales Order) su SAP R/3
Applicazione Client
Apre una connessione con sistema
SAP R/3
Creazione nuovo ordine di vendita
Server R/3
Inserimento ordine di vendita
transazioni in
remoto
transazioni su SAP R/3
(modulo SD)
Chiamata BAPI
Connection :
CRfcConnection
oOrder :
CBoSalesOrder
: Server R/3
SalesOrder(BusinessObjectSAP)
: Applicazione
Client
Crea oggetto
Connection Connection.SafeOpen()
Crea oggetto
oOrder oOrder.Createfromdata
Crea istanza di
BO:SalesOrder
Chiamata RFC
SEQUENCE DIAGRAM
BAPI Createfromdata
Proxy Class Diagram
CBoBase
CBoBase()
CBoBase()
~CBoBase()
GetKeyValue()
GetKeyValue()
GetKeyValue()
GetName()
SetKeyValue()
CBapiorders
ExchgRate : double
ItmNumber : int
ReqQty : double
CondPUnt : double
NetValue : double
DlvQty : double
NetPrice : double
NetValHd : double
CBapiorders()
~CBapiorders()
CBoSalesOrder
CBoSalesOrder()
~CBoSalesOrder()
Createfromdat1()
Createfromdata()
Getlist()
Getstatus()
Simulate()
CGetlistImports
CGetlistImports()
~CGetlistImports()
(from CBoSalesOrder)
CGetstatusImports
CGetstatusImports()
~CGetstatusImports()
(from CBoSalesOrder)
RFC_PARAM_
CBo
m_nFlags : int
m_pRfcParam : void*
CBoParameter()
CBoParameter()
CBoParameter()
~CBoParameter()
GetName()
operator =()
Value()
1
1
-m_n
1
1
CBoObject
CBoObject()
~CBoObject()
Call()
GetParameter()
SetEnvironment()
GetTypeInfo()
GenerateMethod()
AddKeysToParamList()
GetMethod()
CBoMethod
m_nFlags : int
CBoMethod()
CBoMethod()
CBoMethod()
~CBoMethod()
GetName()
Call()
GetParameter()
0..1
1
-m_p
0..1
1
0..1
1
+m_p
0..1
1
CCreatefromdat1Import
CCreatefromdat1Imports()
~CCreatefromdat1Imports()
CBapisdhea
CBapisdhead()
~CBapisdhead()
1
1
+Order 1
1
CCreatefromdat1Export
CCreatefromdat1Exports()
~CCreatefromdat1Exports()
CGetlistExports
CGetlistExports()
~CGetlistExports()
(from CBoSalesOrder)
CGetstatusExports
CGetstatusExports()
~CGetstatusExports()
(from CBoSalesOrder)
CBapisoldto
MaxPlDlv : double
DlvPrio : int
OrderProb : int
CBapisoldto()
~CBapisoldto()
1
1
+Soldt
1
1
CBapipayer
CredLimit : double
OrderVals : double
RcvblVals : double
CredLiab : double
ValLimit : double
AddValDy : int
CBapipayer()
~CBapipayer()
1
1
+Billin
1
1
CCreatefromdat1Table
CCreatefromdat1Tables()
~CCreatefromdat1Tables()
(CBoTable<CBapiorders>)
CGetlist
CGetlistTables()
~CGetlistTables()
(from CBoSalesOrder)
1
1
1
+Sale
1
AType

More Related Content

PPT
BAPIs.ppt
PPT
BAPI app.ppt
PPT
developing app.ppt
PPT
dev app.ppt
PPT
BAPIx.ppt
PPS
GreenVulcano ESB Technical Overview (ITA)
PPT
Java lezione 14
BAPIs.ppt
BAPI app.ppt
developing app.ppt
dev app.ppt
BAPIx.ppt
GreenVulcano ESB Technical Overview (ITA)
Java lezione 14

Similar to BAPI.ppt (20)

ODP
Domino & Db2 : Gestione documentale
PPTX
Live office
PPT
BPM Standards
PDF
L’evoluzione delle API: da CORBA a OpenAPI e oltre
PDF
Evento 18 giugno - Sviluppo applicativo
PDF
Le Novita’ dello sviluppo applicazioni per IBM i
PPT
Tesi Discussione
PPT
Web dynpro for abap 01
PDF
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
PDF
Presentazione -ebc 360 utility -all in one- energy.gas - water
PDF
Non solo Microservizi: API, Prodotti e Piattaforme
PDF
4 sistemi informativi d azienda
PDF
Lezione 8: Introduzione ai Web Service
PDF
Web EC One
PPTX
Seminari twinegy solution sales portal v.1.0
PDF
Lezione 6: Remote Method Invocation
PDF
Espedia Enterprise Mobility
PDF
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
PDF
CV Valentina Pandolfi
PDF
CV Valentina Pandolfi
Domino & Db2 : Gestione documentale
Live office
BPM Standards
L’evoluzione delle API: da CORBA a OpenAPI e oltre
Evento 18 giugno - Sviluppo applicativo
Le Novita’ dello sviluppo applicazioni per IBM i
Tesi Discussione
Web dynpro for abap 01
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
Presentazione -ebc 360 utility -all in one- energy.gas - water
Non solo Microservizi: API, Prodotti e Piattaforme
4 sistemi informativi d azienda
Lezione 8: Introduzione ai Web Service
Web EC One
Seminari twinegy solution sales portal v.1.0
Lezione 6: Remote Method Invocation
Espedia Enterprise Mobility
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
CV Valentina Pandolfi
CV Valentina Pandolfi
Ad

BAPI.ppt

  • 1. Realizzazione di applicazioni client con librerie di interfaccia di un sistema ERP Fabrizio Granchelli Università di L’Aquila
  • 2. Che cos’è un sistema ERP Un Enterprice Resource Planning è un Sistema Informativo per la Gestione Integrata dei Processi Aziendali  I Processi Aziendali sono tutte le attività e funzioni svolte all’interno di una azienda che coinvolgono le varie aree di un Sistema Produttivo;  Per Gestione Integrata si intende l’integrazione on-line e real-time dei dati che mettono in relazione tra loro i vari processi aziendali  Un ERP rappresenta un Sistema Informativo perché è supportato da strumenti e risorse dell’Informatic Tecnology
  • 3. Architettura di SAP R/3  Hardware, Network, Sistemi Operativi, Database, Frontends  Client Server  Piattaforme: UNIX, Windows, IBM, ...  Middleware (MMBC)  Linguaggio ANSI SQL  Protocollo TCP/IP  Chiamate di Sistema C, Posix  Remote Function Call ( RFC )  Business Application Programming Interface ( BAPI )  Applicazioni R/3  Applicazioni Client: Effettuano transazioni su SAP ( C++, Java, ... )  Servizi di presentazione: Reporting ( ABAP )  Servizi di accesso ai dati: Query ( ABAP )
  • 4. Applicazioni Client Business Framework •Risorse per le funzionalità aziendali •Risorse condivisibile dall’esterno SAP Utenti Esterni R/3
  • 5. Business Object BO Business Framework Realtà aziendale Incapsula i dati e i processi di una area aziendale Sono nascosti i dettagli implementativi Le applicazioni esterne possono accedere ai dati dell’oggetto solo attraverso i suoi metodi pubblici
  • 6. Struttura di un SAP Business Object  Kernel: Dati inerenti all’oggetto ( stato interno )  Integrity: Regole e vincoli che costituiscono la logica dell’oggetto  Interface: Librerie di interfaccia ( metodi BAPI )  Access: Tecnologie di interfacciamento
  • 7. Business Application Programming Interface  Permettono di accedere ai dati di un BO e di utilizzare i relativi metodi  Sono definite come un metodo di un BO di SAP  Sono implementate attraverso moduli funzionali che supportano il protocollo RFC
  • 8. Utilizzo delle BAPI L’accesso a una BAPI avviene in due modi:  Accesso di tipo object-oriented  Accesso attraverso una chiamata RFC al modulo funzionale che implementa la BAPI I passi da seguire per invocare una BAPI sono:  Identificare il BO che contiene la BAPI  Determinare le informazioni sui parametri che definiscono l’interfaccia della BAPI  Includere nell’applicazione, la chiamata BAPI con i parametri richiesti
  • 9. Accesso Object Oriented Windows 95 o NT – BAPI ActiveX Control  Libreria di classi BAPI C++ Piattaforme con Java Virtual Machine – Libreria di classi BAPI Java
  • 10. Classi BAPI C++ La libreria di classi BAPI C++ offre una proxy class per ogni SAP BO che ha metodi pubblici. Una proxy class è un rappresentante locale di un’istanza remota di un BO in R/3.
  • 11. Classi Proxy (from Logical View) Applicazione C++ Classi RFC (from Logical View) APPLICAZIONE C++ UTILIZZANDO CLASSI PROXY
  • 12. Inserimento in remoto di un ordine di vendita (Sales Order) su SAP R/3 Applicazione Client Apre una connessione con sistema SAP R/3 Creazione nuovo ordine di vendita Server R/3 Inserimento ordine di vendita transazioni in remoto transazioni su SAP R/3 (modulo SD)
  • 13. Chiamata BAPI Connection : CRfcConnection oOrder : CBoSalesOrder : Server R/3 SalesOrder(BusinessObjectSAP) : Applicazione Client Crea oggetto Connection Connection.SafeOpen() Crea oggetto oOrder oOrder.Createfromdata Crea istanza di BO:SalesOrder Chiamata RFC SEQUENCE DIAGRAM BAPI Createfromdata
  • 14. Proxy Class Diagram CBoBase CBoBase() CBoBase() ~CBoBase() GetKeyValue() GetKeyValue() GetKeyValue() GetName() SetKeyValue() CBapiorders ExchgRate : double ItmNumber : int ReqQty : double CondPUnt : double NetValue : double DlvQty : double NetPrice : double NetValHd : double CBapiorders() ~CBapiorders() CBoSalesOrder CBoSalesOrder() ~CBoSalesOrder() Createfromdat1() Createfromdata() Getlist() Getstatus() Simulate() CGetlistImports CGetlistImports() ~CGetlistImports() (from CBoSalesOrder) CGetstatusImports CGetstatusImports() ~CGetstatusImports() (from CBoSalesOrder) RFC_PARAM_ CBo m_nFlags : int m_pRfcParam : void* CBoParameter() CBoParameter() CBoParameter() ~CBoParameter() GetName() operator =() Value() 1 1 -m_n 1 1 CBoObject CBoObject() ~CBoObject() Call() GetParameter() SetEnvironment() GetTypeInfo() GenerateMethod() AddKeysToParamList() GetMethod() CBoMethod m_nFlags : int CBoMethod() CBoMethod() CBoMethod() ~CBoMethod() GetName() Call() GetParameter() 0..1 1 -m_p 0..1 1 0..1 1 +m_p 0..1 1 CCreatefromdat1Import CCreatefromdat1Imports() ~CCreatefromdat1Imports() CBapisdhea CBapisdhead() ~CBapisdhead() 1 1 +Order 1 1 CCreatefromdat1Export CCreatefromdat1Exports() ~CCreatefromdat1Exports() CGetlistExports CGetlistExports() ~CGetlistExports() (from CBoSalesOrder) CGetstatusExports CGetstatusExports() ~CGetstatusExports() (from CBoSalesOrder) CBapisoldto MaxPlDlv : double DlvPrio : int OrderProb : int CBapisoldto() ~CBapisoldto() 1 1 +Soldt 1 1 CBapipayer CredLimit : double OrderVals : double RcvblVals : double CredLiab : double ValLimit : double AddValDy : int CBapipayer() ~CBapipayer() 1 1 +Billin 1 1 CCreatefromdat1Table CCreatefromdat1Tables() ~CCreatefromdat1Tables() (CBoTable<CBapiorders>) CGetlist CGetlistTables() ~CGetlistTables() (from CBoSalesOrder) 1 1 1 +Sale 1 AType