Creazione Servizio Odata mediante FUNCTION IMPORT
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.
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
Richiamando 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:
1. SAP EWM (Extended Warehouse Management)
3. SAP VIM (Vendor Invoice Management)
>>> RECENSIONI DEI LIBRI su Amazon Kindle <<<
Ebook: SAP MM: https://www.amazon.it/dp/B0C3MKD9BR#customerReviews
Ebook: SAP MII: https://www.amazon.it/dp/B0C4392MY9#customerReviews
Ebook: SAP VIM: https://www.amazon.it/dp/B0C6FBK8QN#customerReviews
Nice, ho sempre usato le varie crud riadattate a call function, interessante.
RispondiEliminaOttima Guida! Grazie mille per la sua professionalità
RispondiElimina