Loading…

Applicazione Clienti

Si vuole realizzare un’applicazione che ricerchi i clienti registrati nel sistema (vedi XD03).

Strutturazione del dato

Filtri di ricerca : Per la ricerca del cliente si può costruire una struttura basata sui seguenti campi: KUNNR codice cliente o numero BP, il nome il paese e la città.

Nome struttura: ZSTC_CUSTOMER_SEARCH_S

Dati del cliente: Per realizzare l’applicazione di ricerca si può ipotizzare una struttura che utilizzi i campi descritti in figura rappresentare il cliente

Nome Struttura: ZSTC_CUSTOMER_S

Lista Risultati: La lista risultati della ricerca può essere rappresentata da un tipo tabella avente come riga la precedente struttura.

Nome Tipo Tabella: ZSTC_CUSTOMER_T

Dati Dettaglio: la lista delle informazioni da visualizzare nel dettaglio clienti.

Nome Struttura: ZSTC_CUSTOMER_DETAIL_S

Customizing

Per realizzare la struttura grafica del web client della nostra applicazione è necessario un intervento di customizing sulle tabelle di A4W. Per realizzare gli inserimenti è possibile seguire due alternative:

La prima via lanciare il report ZSTC_WEBUI_BASIC_APP_CREATOR inserendo le strutture e i nomi dei campi come in figura

ZSTC_WEBUI_BASIC_APP_CREATOR

Il report effettuerà gli inserimenti necessari alla costruzione grafica dell’applicazione, producendo anche un log che descrive gli inserimenti fatti. Il pro è che in pochi istanti la struttura dell’applicazione è finita.

Nel caso si voglia trasportare l’app creata in un altro sistema è possibile valorizzare il campo in fondo allo screen come in figura, Naturalmente la Transport Request di Customizing va creata precedentemente.

La seconda procedura consiste nell’inserire manualmente i dati in tabella seguendo lo schema ad albero raffigurato nel manuale STC EasyBP® Abap4Web. Per facilitare l’inserimento sono stati realizzati delle view di customizing(vedi STC EasyBP® Customizing) raggiungibili anche tramite il ramo sul customizing di SAP(previa configurazione sul proprio sistema).

Il procedimento del programma non fa che effettuare gli inserimenti in modo automatico, d’altro canto con gli inserimenti manuali si può configurare diversamente l’applicazione, magari con l’aggiunta di modelli e widget più particolari, ma questo si vedrà in seguito.

Nel caso venga lanciato il report, l’output di quest’ultimo sarà un log che riporta l’esito dell’operazione, il link al quale è possibile raggiungere l’applicazione e il log degli inserimenti effettuati del tutto simile alla tabella appena elencata.

Arrivati sin qui è possibile raggiungere l’applicazione al seguente indirizzo: http://<proprio_sistema>/bc/bsp/sap/zstc_webui_min/index.html?_APP=KUST

Naturalmente avremo a disposizione solo lo scheletro dell’applicazione in quanto il comportamento andrà definito tramite la fase di workbench.

Workbench

Naturalmente per gestire il comportamento dell’applicazione ricerca Clienti è necessaria una parte di workbench, in particolare servirà implementare un enhancement ZSTC_EI_XCUST dall’enhancement spot ZSTC_WEBUI, creato questo al suo interno verranno create due implementazioni BAdI

ZSTC_BI_MODUL_XCUST_SEARCH – Modulo Ricerca

Per gestire il comportamento di un modulo viene implementata la definizione di BAdI ZSTC_WEBUI_BADI_MODULE nel nostro caso abbiamo creato la ZSTC_BI_MODUL_XCUST_SEARCH con classe di implementazione ZSTC_CLI_MODULE_XCUST_SEARCH in questa classe è necessario inserire la super classe ZSTC_WEBUI_BADI_ROOT_MODULE ed eliminare i duplicati nelle interfacce.

L’associazione della BAdI al modulo di ricerca è attuata tramite la definizione dei filtri, ovvero di una combinazione che associa il nome del modulo di ricerca che abbiamo inserito nella tabella MODUL

Nella combinazione del filtro inseriamo anche l’applicazione in modo da poter specializzare la BAdI anche per altre applicazioni nel caso in futuro si voglia utilizzare questa BasicApp per costruirne una più complessa le EasyApps.

Adesso andiamo sulla classe di implementazione e ridefiniamo il metodo MAP_ACTIONS

Inserendo le azioni definite nella tabella ACTN e assegnate al Module nella tabella MOACT , le azioni saranno inserite nella tabella ereditata T_ACTIONS con il loro ID (ACT_SEARCH_KUST) e un token, un alias dell’azione. Tale token verrà concatenato ad una stringa per la precisione ‘DO_ACTION_’ in modo da invocare dinamicamente il metodo associato all’azione, nella classe ci sono già alcuni metodi, in quanto ereditati dalla classe super, quindi possiamo associare il token SEARCH e ridefinire il metodo DO_ACTION_SEARCH

I metodi sono richiamati all’interno del metodo ZSTC_WEBUI_IF_ENHM_MODULE~DO_ACTION. Naturalmente è possibile creare un metodo ex novo l’importante è che abbia la dicitura DO_ACTION_XXXX e che sia dichiarato come metodo pubblico di istanza. All’interno del metodo DO_ACTION_SEARCH andremo a codificare il comportamento dell’azione come nella figura sottostante

In particolare alla riga 9 si recupera il model assegnato nella ACTMD – MODEL_KUST_SEARCH model di tipo ricerca, quindi appartenente alla classe ZSTC_WEBUI_FWK_MODEL_SF.

Utilizzando il model ricavato che porte in dote i filtri di ricerca è possibile Lanciare il metodo statico della classe ZSTC_WEBUI_FWK_MODEL ZSTC_WEBUI_IF_ENTITY~search. Tale metodo, che codificheremo nella seconda BAdI, produrrà il model di uscita dell’azione specificato sempre nella tabella ACTMD MODEL_KUST_SEARCH_RIS . Il Model ricavato sarà assegnato sempre all’azione (riga 31)

ZSTC_BI_MODUL_XCUST_DETAIL– Modulo Dettaglio

Anche in questo caso si creerà una BAdI associata al modulo che va a gestire il comportamento del form. L’implementazione sarà creata all’interno dello stesso Per gestire il comportamento di un modulo viene implementata la definizione di BAdI ZSTC_WEBUI_BADI_MODULE nel nostro caso abbiamo creato la ZSTC_BI_MODUL_XCUST_DETAIL con classe di implementazione ZSTC_CLI_MODULE_XCUST_DETAILcome in precedenza sarà necessario inserire la super classe ZSTC_WEBUI_BADI_ROOT_MODULE ed eliminare i duplicati nelle interfacce.

Per associare l’implementazione della BAdI al modulo di ricerca è necessario creare una combinazione di filtri ed associare il nome del modulo di ricerca che abbiamo inserito nella tabella MODUL

Se si vuole implementare un comportamento particolare sui può seguire il caso precedente.

ZSTC_BI_MODEL_XCUST – Model Customer

Come per il modulo sempre all’interno dell’enhancement implementation ZSTC_EI_XCUST, si procede a creare l’implementazione del model ovvero la BAdI ZSTC_BI_MODEL_XCUST (vedi BAdI implementation – Model), dalla definizione ZSTC_WEBUI_BADI_MODEL ed associata alla classe di implementazione ZSTC_CLI_MODEL_XCUST, anche qui è necessario inserire la super-classe ZSTC_WEBUI_BADI_ROOT_MODEL ed eliminare i duplicati dall’interfaccia.

Come per il modulo verrà creata una combinazione per associare la BAdI al model definito a customizing nella MODEL .

Dato che nella nostra applicazione andremo a ricercare i clienti ridefiniamo il metodo ZSTC_WEBUI_IF_BADI_MODEL~SEARCH. Dal model in input di tipo ricerca, si andranno ad estrarre i filtri con il quale eseguire la ricerca. nel nostro caso i clienti.

E dopo aver effettuato le necessarie estrazioni andremo a costruire e ad assegnare i risultati al modulo di uscita il MODEL_KUST_SRCH_RIS

Per il model in questione essendo un model ‘risultato’ e quindi in sola lettura non è necessario un’implementazione BADI

Conclusione Applicazione Clienti

Come si può notare i passaggi descritti non sono particolarmente impegnativi, basta semplicemente una conoscenza abap base per poter implementare una applicazione in breve tempo. Seguendo i passaggi descritti precedentemente è possibile non solo replicare l’applicazione ma anche crearne di altre, l’importante è stabilire un ambito di applicazione e definire quindi una breve analisi dove vengano definite le strutture da utilizzare per i dati, il dove recuperare i dati ed il tipo di visualizzazione ed in pochi passaggi si ha un’applicazione web lato client che si interfaccia con il server SAP fruibile su dispositivi di vario tipo senza dare un vero e proprio accesso al server sap.

Screenshoot Applicazione Clienti:
Screenshoot Risultato ricerca:
Screenshoot Pagina dettaglio, da configurare layout: