Esta funcionalidade pode ser encontrada na classe CL_GEF_API.
Você pode adicionar novas geometrias 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 ) ).
onde GEF_OBJTYPE é 'EAMEQUI' para Equipamentos ou 'EAMFLOC' para Localizações Funcionais.
A chave para o objeto (GEF_OBJKEY) varia de acordo com o tipo de objeto: para Equipamentos, é apenas o número do Equipamento (EQUI-EQUNR), enquanto que para Localizações Funcionais é o Número do Objeto (IFLOT-OBJECT).
O ID do SRS é definido por padrão (pelo menos em nosso sistema) como 3857, que é a projeção Mercator Esférica. Os dados fornecidos estavam em formato de latitude e longitude (ID do SRS 4326), então tivemos que converter de um formato para outro antes de salvar. Isso envolveu chamar uma função no banco de dados HANA usando um AMDP:
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Método Público Estático ZCL_GEF_UTIL=>TRANSFORM_4326_TO_3857
* +-------------------------------------------------------------------------------------------------+
* | [--->] LV_WKT_4326 TIPO STRING
* | [<---] EV_WKT_3857 TIPO TEXT100
* +--------------------------------------------------------------------------------------</SIGNATURE>
MÉTODO transform_4326_to_3857 POR PROCEDIMENTO DE BANCO DE DADOS PARA HDB IDIOMA SQLSCRIPT OPÇÕES SOMENTE LEITURA.
lt_wkt_3857 = SELECIONAR NOVO ST_Point( :lv_wkt_4326 , 4326).ST_Transform(3857).ST_AsWKT() como wkt de dummy;
ev_wkt_3857 := :lt_wkt_3857.wkt[ 1 ];
FIMMÉTODO.
Todas as geometrias usadas aqui estão em