Esta funcionalidad se puede encontrar en la clase CL_GEF_API.
Puedes agregar nuevas geometrías usando:
DATA(lv_geometry_id) =
cl_gef_api=>add_geometry(
is_geometry =
VALUE #(
gef_objtype = iv_bo_id
gef_objkey = iv_objkey
gef_context = 'X'
gef_geom_wkt = lv_geom_wkt_3857
gef_geom_type = COND #( WHEN iv_geom_wkt CP 'POINT*' THEN '1'
WHEN iv_geom_wkt CP 'LINESTRING*' THEN '2'
WHEN iv_geom_wkt CP 'POLYGON*' THEN '3' )
gef_geom_srid = 3857 ) ).
donde GEF_OBJTYPE es 'EAMEQUI' para Equipos o 'EAMFLOC' para Ubicaciones Funcionales.
La clave para el objeto (GEF_OBJKEY) varía según el tipo de objeto: para Equipos, es solo el número de Equipo (EQUI-EQUNR), mientras que para Ubicaciones Funcionales es el Número de Objeto (IFLOT-OBJECT).
El ID de SRS se establece por defecto (en nuestro sistema, al menos) en 3857, que es la proyección Mercator Esférica. Los datos suministrados estaban en formato de latitud y longitud (ID de SRS 4326), por lo que tuvimos que convertir de un formato a otro antes de guardar. Esto implicó hacer una llamada a una función en la base de datos de HANA utilizando un AMDP:
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_GEF_UTIL=>TRANSFORM_4326_TO_3857
* +-------------------------------------------------------------------------------------------------+
* | [--->] LV_WKT_4326 TYPE STRING
* | [<---] EV_WKT_3857 TYPE TEXT100
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD transform_4326_to_3857 BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY.
lt_wkt_3857 = SELECT NEW ST_Point( :lv_wkt_4326 , 4326).ST_Transform(3857).ST_AsWKT() as wkt from dummy;
ev_wkt_3857 := :lt_wkt_3857.wkt[ 1 ];
ENDMETHOD.
Todas las geometrías utilizadas aquí están en