Creazione Servizio Odata mediante FUNCTION IMPORT
Le Function Import vengono
usate per operazioni personalizzate che non possono essere richiamate utilizzando
un’operazione standard (CRUD)
Richiamare la transazione SEGW, creare un
nuovo Progetto, premendo il pulsante NEW:
Sulla cartella Data model,
tasto dx, selezionare Import ->RFC/BOR Interface
Inserire un nome per il
Function Import Name
In questo caso, sotto la cartella
Function Import viene creato il nostro GetUser
Ora alla
nostra GetUser dobbiamo associare la nostra Entity, quindi adesso ci creiamo la
nostra Entity partendo dalla Bapi BAPI_USER_GET_DETAIL che useremo successivamente.
Sulla cartella Data model,
tasto dx, selezionare Import ->RFC/BOR Interface
Inserire il nome della Entity,
se il gateway è presente sulla stessa macchina, selezionare LOCAL,
altrimenti Remote.
Selezionare il type “Remote
Funcion Call”, ed inserire il nome della BAPI da usare. In questo
caso non selezionare l’Entity Set che non useremo.
Selezioniamo i campi che
vogliamo restituire al servizio in questo campo quelli che ho evidenziato:Indichiamo il campo chiave.
Adesso alla
nostra Function Import, GetUser, associamo la Entity Type creata
precedentemente, indichiamo come “Return Type Kind” l’Entity Type, come “Return
Type” la nostra Function Import, come “Return Cardinality” 0..1 ed infine come “HTTP
Method Type” il metodo GET, e SALVIAMO
Poi facciamo
doppio click sulla cartella Function Import Parameters, evidenziato in rosa,
per inserire dei parameti di input, salviamo e attiviamo e si creano come al
solito le classi associate al servizio.
Registriamo il servizio richiamando il servizio /n/IWFND/MAINT_SERVICE
Premiamo il pulsante Aggiungere servizio
Inserire l’Alias e il nome del nostro servizio, battere invio, selezionarlo
e premere “Aggiungere servizio selezionati”
Ritornare nella lista dei servizi e vedere se vediamo il
servizio creato
A questo punto eseguiamo la
transazione /n/IWFND/GW_CLIENT per usufruire del servizio creatoRichiamando la seguente URL
/sap/opu/odata/sap/ZFUNC_IMPORT_SRV/GetUser?User_Id='SLANZETTA'
Vediamo che ci restituisce il
seguente messaggio di errore “Non è stato implementato il metodo EXECUTE_ACTION”
Quindi adesso
ridefiniamo il metodo EXECUTE_ACTION, e per far ciò, facciamo doppio click sulla classe
ZCL_ZFUNC_IMPORT_DPC_EXT
Aprire la
cartella
/IWBEP/IF_MGW_APPL_SRV_RUNTIME, selezionare il metodo
EXECUTE_ACTION,
tasto dx e scegliere
Ridefinire
Scriviamo il seguente codice:
METHOD /iwbep/if_mgw_appl_srv_runtime~execute_action.
DATA: lv_function_name TYPE /iwbep/mgw_tech_name,
Lt_bapiret2 TYPE STANDARD TABLE OF bapiret2,
Ls_entity TYPE ZCL_ZFUNC_IMPORT_MPC_EXT=>ts_user,
Ls_bapiaddr3 TYPE bapiaddr3,
Lv_uname TYPE sy-uname,
Ls_parameter LIKE LINE OF it_parameter.
lv_function_name = io_tech_request_context->get_function_import_name( ).
IF lv_function_name = 'GetUser'.
READ TABLE it_parameter INDEX 1 INTO ls_parameter.
IF sy-subrc = 0.
Lv_uname = ls_parameter-value.
TRANSLATE lv_uname TO UPPER CASE.
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
EXPORTING
Username = lv_uname
IMPORTING
Address = ls_bapiaddr3
TABLES
Return = lt_bapiret2.
MOVE-CORRESPONDING ls_bapiaddr3 TO ls_entity.
copy_data_to_ref(
EXPORTING
is_data = ls_entity
CHANGING
cr_data = er_data
).
ENDIF.
ENDIF.
ENDMETHOD.
A questo punto, rieseguiamo la
transazione /n/IWFND/GW_CLIENT per usufruire del servizio creato
Richiamando la seguente URL
/sap/opu/odata/sap/ZFUNC_IMPORT_SRV/GetUser?User_Id='SLANZETTA'
Otteniamo il
seguente risultato:
SE MI CONTATTATE IN PRIVATO, PAGATE LA META' DEL PREZZO DI AMAZON, E POTETE SCEGLIERE IL FORMATO WORD o PDF.
>>> RECENSIONI DEI LIBRI su Amazon Kindle <<<