Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoLuiz Fernando Ávila Sacramento Modificato 6 anni fa
1
ABAP Objects BAdI per User Enhancement
Mantova, 2 dicembre 2018
2
BAdI: Business Add-In Esistono dei punti all’interno dei processi standard di SAP in cui i programmi sono “aperti” alla possibilità di personalizzare il comportamento dei processi stessi Nella versione precedente l’istruzione CALL CUSTOMER-FUNCTION attivava dei Function Module dove era possibile inserire una parte di codice personalizzato per il cliente (User-Exit) – transaz. CMOD Le BAdI possono essere considerate come l’evoluzione delle User-Exit. L’istruzione CALL METHOD e la programmazione orientata agli oggetti sono usate per lo stesso scopo
3
Struttura di una BAdI Per costruire una BAdI servono:
Una definizione (DEFINITION) – transazione SE18 Attributi generali e contenitore per una interfaccia Un’interfaccia (INTERFACE) – transazione SE18 Classe dell’interfaccia Creata dalla Definition per struttura generale e per avere accesso all’implementazione Un’implementazione (IMPLEMENTATION) – transazione SE19 Contiene il codice sviluppato per l’interfaccia Le implementazioni possono essere multiple e diverse l’una dall’altra La metodologia è leggermente diversa nella release ECC 6.0, si introduce il componente Enhancement Spot
4
INTERFACE – transaz. SE18 / SE24
Nella BAdI DEFINITION viene creato un ampliamento che verrà richiamato all'interno di sorgenti ABAP La BAdI INTERFACE è creata nello stesso momento della DEFINITION Un doppio-click sul nome dell'interfaccia ci porta nel Class Builder (SE24) per costruire la classe correlata alla nostra interfaccia Opzioni (tab strips): Interface: se indicata, eredita contenuti da quest'altra interfaccia Attributes: sono i nomi delle variabili (o parametri) utilizzati da tutti i metodi (come variabili globali) Methodes: Si dichiarano i metodi (una sorta di sub-routines) e i parametri per comunicare con essi Events: sono dei triggers che permettono di avviare particolari azioni Fino alla release 4.7
5
IMPLEMENTATION CLASS – transaz. SE24
Nel Class Builder (SE24) si crea la Classe, o le Classi, dove saranno implementati effettivamente I metodi che sono richiamati nei sorgenti standard SAP e a cui la BADI fa riferimento. Tutti I parametri di input/output e le Exceptions derivano dalla BADI.
6
IMPLEMENTATION – transaz. SE19
Una IMPLEMENTATION si crea con la transazione SE19 Inserire la DEFINITION richiesta (scegliere quella corrispondente alla INTERFACE chiamata nel codice) Opzioni: Inserire i FILTERS per i quali sarà attiva l'implementazione Scrivere il codice per i metodi nella Tab Interface - Methods Il codice inserito è valido localmente per l'implementazione in oggetto e non è condivisibile (shared) con altre implementazioni
7
Implementazione per SAP BAdI Enhancement
In release 4.7 la definizione e l’interfaccia per la BAdI sono già state create e chiamate all’interno del codice standard L’unica cosa che possiamo creare e modificare è l’implementazione dei metodi in una o più Classi custom, che fanno riferimento all’interfaccia della BAdI Si possono creare quante implementazioni si vogliano, purchè si verifichino le seguenti condizioni Se usiamo i filtri o non impostiamo il flag multiple-use, Possiamo avere SOLO UNA implementazione attiva, le altre devono essere DEACTIVATED Se impostiamo il flag multiple-use, ogni volta che viene chiamato un metodo, saranno eseguite TUTTE le implementazioni valide per quel metodo, in ordine casuale
8
Classe CL_EXITHANDLER
Per istanziare una interfaccia BADI, deve essere chiamato il metodo get_instance della Classe CL_EXITHANDLER Una volta fatta la DEFINITION, e completata l'INTERFACCIA, il codice relativo IMPLEMENTATION può essere scritto, ad esempio, in un programma ABAP
9
Classe CL_EXITHANDLER
Codice esempio: CLASS CL_EXITHANDLER DEFINITION LOAD. DATA gv_interface_name TYPE REF TO <interface_name>. START-OF SELECTION. CALL METHOD cl_exithandler=>get_instance EXPORTING exit_name = 'Exit_name' null_instance_accepted = 'X' CHANGING instance = gv_interface_name. CALL METHOD gv_interface_name->method_name END-OF-SELECTION.
10
ENHANCEMENT SPOT – transaz. SE18
Un Enhancement Spot è un componente che può contenere una o più definizioni BADI (da release ECC 6.0) DEFINITION della BADI e dell’Interface: Transaz. SE18 – Selezionare opzione “Enhancement Spot”, per creare Selezionare tecnologia “BAdI Definition” e salvare Selezionare la tabstrip "Enhancement Spot Definitions“ Click sull’Icona "Create BADI" , dare un nome e una descrizione alla BADI Inserire il nome dell’interfaccia relativa alla BADI, e creare la BADI Interface “Create Filter” si trova col tasto destro del mouse sulla Definizione della BADI. Permette di inserire un filtro per il controllo dell’esecuzione della BADI Inserire: nome e tipo del filtro e una descrizione – salvare
11
ENHANCEMENT SPOT – transaz. SE19
IMPLEMENTATION della BADI/Interface: Transaz. SE19 – Scegliere il nome della “Enhancement Spot”, e click su “Create Implementation” Doppio-click su “Implementing Class” per creare la Classe di implementazione Se necessario inserire I valori dei filtri con click su “Filter Val.”
12
GET BADI/CALL BADI – rel. ECC 6.0
Nella nuova rel. ECC 6.0 esistono le istruzioni GET BADI e CALL BADI per richiamare I metodi di una BAdI (sostituisce la classe CL_EXITHANDLER). GET BADI <BADI Name> FILTERS <filter> = <filter var>. TRY. CALL BADI <BADI Name> -> <BADI method> EXPORTING <paramter> = <variable> CATCH CX_SY_DYN_CALL_ILLEGAL_METHOD. ENDTRY. CATCH intercetta le Exception, altrimenti rischio DUMP
13
BAdI Enhancements Nel menu di customizing IMG (transaz SPRO), si possono trovare le BAdI disponibili nei diversi moduli SAP. Molte volte sono allocate sotto un menu chiamato “System Enhancements” La definizione si trova eseguendo l’attività del menu IMG. Ad esempio: se si vuole inserire un controllo sui campi prima della Order Confirmation, si può cercare una BAdI utile nel path Plant Maintenance and Customer Service > System Enhancements and Data Transfers > Business Add-Ins Nell'esempio, la definizione della BAdI è WORKORDER_CONFIRM Se ci sono implementazioni già fatte, saranno visibili. Se vi viene chiesto di creare una implementazione significa che per quell'interfaccia non ne esistono ancora.
14
ESEMPIO BAdI Enhancements in MM
Standard BADI con esempio di implementazione Transazione MM02 – Modifica Materiale Programma LMGMMI12 – line 182 BADI name: W_RETAILSYSTEM_IDENT Interfaccia CL_EX_W_RETAILSYSTEM_IDENT BADI Implementation ZW_RETAILSYSTEM_IDENT
15
BAdI Enhancements Altre cose che si possono aggiungere con BAdI
Menu enhancements nuovi function codes possono essere aggiunti nella tab FCODEs di una definizione (non devono essere attivati nè filtri nè multiple-use flag) il codice deve essere gestito nella chiamata all'applicazione SAP, che può puntare a uno specifico metodo Screen enhancements permette di aggiungere campi o cambiare l'elaborazione di uno screen. Vedi il tab Subscreen nella Definition (se multiple-use non è settato)
16
Esempio pratico - Definition
Creare una BAdI che restituisca il codice currency di una Sales Organization La BadI sarà inserita in un programma custom, quindi è necessario creare tutti I componenti Il processo di ricerca della currency potrebbe essere diverso per ciascuna Sales Organization Definire la BAdI con SE18: Z_BADI_CURRxx_EX Mark filter-depend, Filter type VKORG Il sistema propone il nome della interfaccia ZIF_EX_<nome della definition> Definire I parametri dell’interfaccia ci si arriva dalla SE18 Method GET_CURRENCY (Level: instance) Il metodo è qui solo dichiarato per nome, è codificato nella implementation Importing parameter: FLT_VAL, Type VKORG Changing parameter: WAERS, type WAERS
17
Esempio pratico - Implementation
Definire due diverse implementazioni con SE19 Per due diverse sales organizations Implementation Z_BADI_CURRxx_IMP_EX_SO01 Riferimento alla stessa definizione Z_BADI_CURRxx_EX Definire I filtri di ciascuna implementation con il valore della rispettiva Sales Organization Significa che verrà eseguita solo l’implementation relativa al filtro passato come parametro FLT_VAL al metodo GET_CURRENCY Il metodo eseguito sarà quindi quello contenuto nella interfaccia valida in quel momento Con doppio-click sul nome del metodo, si apre l’editor per inserire il codice ABAP Verificare la CLASSE di ogni interfaccia e il rispettivo codice ABAP Ogni implementation avrà un codice diverso che imposta il parametro di output in modo diverso
18
Esempio pratico – Activate/Deactivate
Una volta inserito il codice, l'implementazione deve essere attivata. Bisogna ritornare allo screen della implememtation per attivare tutti gli elementi. Se sarà necessario modificare un qualsiasi componente dell'implementazione, questa deve essere disattivata prima di inserire le modifiche e al termine attivata.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.