Loading…

BaDI Implementation – Model

Il model nella visione di Abap4Web è l’oggetto che rappresenta il dato, l’entità SAP, che quindi è responsabile dell’interazione sia con il database dal quale leggere/modificare i dati che con il Front-End il quale andrà a leggere il model per visualizzare i dati.

Nella fase di customizing si è definito il model nel “Models Configuration” precisamente nella tabella “MODEL” dove è stato inserito sia l’ID che il tipo e la struttura associata. In questa fase si definirà un’altra BAdI implementation nello stesso enhancement del Modulo,

Enhancement ZSTC_XCUST MODEL

avente:

  • Definizione ZSTC_WEBUI_BADI_MODEL
  • una classe di implementazione che avrà come super-classe ZSTC_WEBUI_BADI_ROOT_MODEL e l’interfaccia ZSTC_WEBUI_IF_BADI_MODEL che porterà i principali metodi di gestione del Model.
  • Ed un filtro avente come valore l’identificativo definito nella tabella MODEL, per gestire l’associazione della BaDI al relativo Model non abbiamo la presenza dell’applicazione non ha dipendenze di alcun tipo con l’applicazione dipende solo dal dato strutturato in precedenza.

Classe di implementazione

La classe di implementazione eredita una serie di metodi dalla super-classe, tali metodi possono essere ridefiniti per consentire la gestione del dato tramite il framework di Abap4Web in questo capitolo verranno descritti quelli che risultano maggiormente utilizzati.

Metodo Search

Il metodo Zstc_Webui_If_Entity~Search
per implementare la propria ricerca, difatti partendo da un model di tipo ricerca (SF) si vanno leggere gli eventuali filtri per poi effettuare le select o chiamare altre funzioni per ritornare un model di tipo tabella al modulo che lo ha chiamato

Tale metodo viene richiamato dal metodo statico zstc_webui_if_entity~search gestito in genere dal metodo do_Action_search del modulo di ricerca

Metodo Read_Entity

il metodo ~READ_ENTITY generalmente chiamato per leggere un model di tipo root o struttura ha in ingresso una chiave generica, che può essere una struttura o un solo campo che servirà a selezionare una entità associata al model e caricare i suoi dati principali per restituire appunto un model generico

La chiamata può essere sempre gestita da un metodo statico della classe relativa al framework, ovvero “zstc_webui_fwk_model=>zstc_webui_if_entity~read_root

Tale metodo risulta molto comodo perché in caso richiamiamo il metodo non verrà fatta una nuova lettura ma leggerà il valore corrispondente alla chiave estratto dalla prima volta. Inoltre se al model sono associati altri model dipendenti questi verranno riletti in automatico. In caso si voglia rileggere tutto si dovrà settare un flag del metodo.

Metodo Read_from_Rel

Tale metodo invece legge I model in base alla relazione con un model genitore, è possibile visualizzare un esempio di chiamata nella figura precedente. Come per la root i model che vengono chiamati la seconda volta saranno presi dalla cache non direttamente dal database a meno di indicare una rilettura

Metodo Update

Come si può intendere dal nome tale metodo va a modificare i dati sul database aggiornandoli in base al model in ingresso

In generale tutti i metodi danno la possibilità di gestire una tabella di log che verrà visualizzata al termine della action quando la palla passerà di nuovo al Front-End.