Vai al contenuto

DI API vs UI API

Sono due API completamente diverse, con oggetti diversi, per due scopi diversi. Confonderle (o non sapere quale serve) è una delle prime fonti di blocco per chi inizia.

UI API — manipolare l'interfaccia

Quello di cui si parla nella sezione UI API: Form, Item, Matrix, DataSource. Serve per:

  • Aggiungere campi/bottoni custom su form esistenti.
  • Reagire a click, cambi di modalità, eventi dell'utente.
  • Creare form completamente nuove.

Namespace: SAPbouiCOM.

DI API — manipolare i dati/documenti a livello business

Serve per creare, leggere, aggiornare documenti (Ordini, Fatture, Anagrafiche...) senza passare dall'interfaccia utente — utile per integrazioni, automazioni, import dati, validazioni server-side.

Namespace: SAPbobsCOM.

using SAPbobsCOM;

Company oCompany = new Company();
// ... impostazione parametri di connessione ...

Documents oOrder = (Documents)oCompany.GetBusinessObject(BoObjectTypes.oOrders);

oOrder.CardCode = "C0001"; // Codice cliente
oOrder.DocDate = DateTime.Now;

oOrder.Lines.ItemCode = "A0001";
oOrder.Lines.Quantity = 10;

int result = oOrder.Add();

if (result != 0)
{
    string errMsg = oCompany.GetLastErrorDescription();
    // gestione errore — vedi sezione dedicata sotto
}

Quando servono entrambe insieme

Caso tipico: un bottone custom sulla UI (UI API) che, al click, crea un documento (DI API). In questo scenario si usano due connessioni diverse ma collegate: la UI API gira sull'istanza SAP già aperta dall'utente, mentre la DI API va instanziata a parte (anche se spesso si riusa lo stesso Company sottostante tramite SBO_Application.Company.GetDIVersion(...) o pattern simili, a seconda della versione SDK).

UI API DI API
Namespace SAPbouiCOM SAPbobsCOM
Oggetto principale Form, Item Company, Documents, BusinessPartners...
Scopo Interagire con lo schermo Creare/leggere/modificare dati
Serve l'utente davanti allo schermo? Sì (di solito) No, può girare in background/batch