Buenas días,
Voy a estar realizar una serie de artículos sobre la creación de OData en SAP utilizando la herramienta SAP Gateway. Poco a poco iré tratando temas como creación CRUD, Mapping, Depp Entity, entre otros.
Este primer articulo trata sobre la creación de un OData que realice consulta ala tabla MARA y emita un mensaje personalizado.
Paso a Paso:
1.- Entramos a la transacción SEGW y creamos un nuevo proyecto.
Para caso de prueba le doy a Objeto Local.
2.- En Name le asignamos un nombre que va tener la entidad. SAP agregara la palabra “Set”.
3.- Elegimos los campos que deseamos trabajar. Mediante estos campos también podre filtrar la data.
4.- Seleccionar los campos llave.
SAP agregara la palabra Set a su nombre Entidad. En mi caso EntityMaraSet.
5.- Click botón rojo, Generate Runtime Objects. Con ello SAP te generara las clases DPC y MPC.
Registrar en el Servidor HUB.
6.- Entramos a la SE80 y escribimos ZCL_(Nombre del proyecto)_DPC_EXT. Modificamos el método GET_ENTITYSET.
El código realiza:
- Tomar los valores que envías en la URL con ¿$filter.
- Realizar el Select a la tabla MARA.
- Capturar las excepciones mediante el try – catch.
- Enviar el mensaje personalizado en el HTTP Response.
METHOD entitymaraset_get_entityset.
TRY.
DATA: ls_mensj TYPE ihttpnvp,
ref_exc TYPE REF TO cx_root.
ls_mensj-name = 'Mensaje'.
DATA(lo_filter) = io_tech_request_context->get_filter( ).
DATA(lt_filter_select_options) = lo_filter->get_filter_select_options( ).
DATA(lv_filter_str) = lo_filter->get_filter_string( ).
SELECT * INTO TABLE et_entityset FROM mara
WHERE (lv_filter_str).
IF sy-subrc EQ 0.
ls_mensj-value = 'Consulta SQL correcta'.
ENDIF.
CATCH cx_sy_sql_error INTO ref_exc.
ls_mensj-value = ref_exc->get_text( ).
CATCH /iwbep/cx_mgw_busi_exception INTO ref_exc.
ls_mensj-value = ref_exc->get_text( ).
CATCH /iwbep/cx_mgw_tech_exception INTO ref_exc.
ls_mensj-value = ref_exc->get_text( ).
ENDTRY.
/iwbep/if_mgw_conv_srv_runtime~set_header( ls_mensj ).
ENDMETHOD.
7.- Entrar a la transacción SAP Gateway Client - /IWFND/GW_CLIENT. Ejecutar en la opción GET.
-
Consultar toda la tabla MARA.
- Filtrar por parámetros la tabla MARA. Se puede filtrar en el Where por todos los campos que han sido seleccionados en el paso 3.
El resultado:
- Mensaje personalizado.
- Data de las consultas.
Cualquier duda o sugerencia me la hacen saber.
Saludos.