OData - Get_EntitySet

s4hana
Etiquetas: #<Tag:0x00007f435597b0b8>

#1

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

5.- Click botón rojo, Generate Runtime Objects. Con ello SAP te generara las clases DPC y MPC.

6

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.
    

17

  • 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.

18

El resultado:

  • Mensaje personalizado.

19

  • Data de las consultas.

20

Cualquier duda o sugerencia me la hacen saber.

Saludos.


#2

Excelente!

Solo recomendaría pasar las capturas de formula a texto, si es posible :pray:


#3

Ya esta SidV.

Saludos.


#4

Que buen aporte¡¡¡ estaré al pendiente de tus post¡