Odata-Creación EntitySet a partir de un BOR
Creación de EntitySet a partir de un BOR.
1 – En este ejemplo localizaremos una BAPI del módulo de PM
para listar las ordenes de mantenimiento. Ejecutamos la transacción BAPI y
navegamos hasta el módulo localizando la bapi y nos copiamos el Object Name.
2 – Ejecutamos la transacción SEGW y en el Proyecto->Data
Model pulsamos el botón derecho, import -> RFC/BOR Interface.
3 – Ahora comienza el wizard de 3 pantallas donde
comenzaremos pegando el nombre del objeto copiado en el paso 1 en el apartado Data Source Attributes/ Name, pulsamos la
ayuda de búsqueda para localizar la BAPI dentro del BOR.
En la segunda pantalla seleccionaré solamente la tabla resultado ya
que lo único que quiero realizar es una llamada a la bapi que me devuelva todos
los datos con un filtro hardcodeado en el getEntitySet.
En la siguiente pantalla se marcará la primary key que queremos y pulsaremos finish.
Devuelve
mensaje de todo correcto y ha generado un Entity type y un par de Complex type.
Los
siguientes pasos se detallan de manera muy simple:
·
Crearse
el entitySet a mano pulsando botón derecho sobre
indicando un nombre y el Entity type creado

·
Generar
los artifactos copiar el nombre del servicio
·
Registrar
dicho servicio en la transacción /IWFND/MAINT_SERVICE pulsando el botón "Add Service" eligiendo el alias y introduciendo el nombre
del servicio en Technical Service Name, luego enter se abre pantalla, se
rellena paquete y ok.
5 –
Redefino el método Get_EntitySet (ejemplo chorra) para que me traiga todo desde
una fecha fijada (Esto se puede dinamizar utilizando el IT_FILTER_SELECT_OPTIONS
pero en este caso lo ponemos así de momento para realizar la llamada y ver que
devuelve los datos para ver si tenemos que modificar la definición de alguna
property.
method ORDERLISTSET_GET_ENTITYSET.
DATA: RANGO TYPE TABLE OF BAPI_ALM_ORDER_LISTHEAD_RANGES,
lv_l_rango like line of RANGO,
MENSAJE TYPE TABLE OF BAPIRET2.
lv_l_rango-FIELD_NAME = 'SHOW_DOCS_WITH_FROM_DATE'.
lv_l_rango-OPTION = 'I'.
lv_l_rango-SIGN = 'GT'.
lv_l_rango-LOW_VALUE = '20171201'.
APPEND lv_l_rango TO RANGO.
CALL FUNCTION 'BAPI_ALM_ORDERHEAD_GET_LIST'
* EXPORTING
* DISPLAY_PARAMETERS =
* IMPORTING
* NAVIGATION_DATA =
TABLES
IT_RANGES = RANGO
ET_RESULT = ET_ENTITYSET
* ET_TEMPLATE =
RETURN = MENSAJE
.
endmethod.
DATA: RANGO TYPE TABLE OF BAPI_ALM_ORDER_LISTHEAD_RANGES,
lv_l_rango like line of RANGO,
MENSAJE TYPE TABLE OF BAPIRET2.
lv_l_rango-FIELD_NAME = 'SHOW_DOCS_WITH_FROM_DATE'.
lv_l_rango-OPTION = 'I'.
lv_l_rango-SIGN = 'GT'.
lv_l_rango-LOW_VALUE = '20171201'.
APPEND lv_l_rango TO RANGO.
CALL FUNCTION 'BAPI_ALM_ORDERHEAD_GET_LIST'
* EXPORTING
* DISPLAY_PARAMETERS =
* IMPORTING
* NAVIGATION_DATA =
TABLES
IT_RANGES = RANGO
ET_RESULT = ET_ENTITYSET
* ET_TEMPLATE =
RETURN = MENSAJE
.
endmethod.
Si al
probar el getentityset nos sale el siguiente error lo más seguro es que tengas
que realizar algún tratamiento con campos fechas o campos hora. Para saber cuál
es el campo en cuestión ir a la transacción /IWFND/ERROR_LOG.
<?xml
version="1.0" encoding="UTF-8"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><code>005056A509B11ED1B9BF9F46AA8E82ED</code><message xml:lang="en">In
the context of Data Services an unknown internal server error occured</message></error>
Comentarios
Publicar un comentario