Skip to content

/AWS1/IF_LOC=>VERIFYDEVICEPOSITION()

About VerifyDevicePosition

Verifies the integrity of the device's position by determining if it was reported behind a proxy, and by comparing it to an inferred position estimated based on the device's state.

The Location Integrity SDK provides enhanced features related to device verification, and it is available for use by request. To get access to the SDK, contact Sales Support.

Method Signature

METHODS /AWS1/IF_LOC~VERIFYDEVICEPOSITION
  IMPORTING
    !IV_TRACKERNAME TYPE /AWS1/LOCRESOURCENAME OPTIONAL
    !IO_DEVICESTATE TYPE REF TO /AWS1/CL_LOCDEVICESTATE OPTIONAL
    !IV_DISTANCEUNIT TYPE /AWS1/LOCDISTANCEUNIT OPTIONAL
  RETURNING
    VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_locverifydevpositio01
  RAISING
    /AWS1/CX_LOCACCESSDENIEDEX
    /AWS1/CX_LOCINTERNALSERVEREX
    /AWS1/CX_LOCRESOURCENOTFOUNDEX
    /AWS1/CX_LOCTHROTTLINGEX
    /AWS1/CX_LOCVALIDATIONEX
    /AWS1/CX_LOCCLIENTEXC
    /AWS1/CX_LOCSERVEREXC
    /AWS1/CX_RT_TECHNICAL_GENERIC
    /AWS1/CX_RT_SERVICE_GENERIC.

IMPORTING

Required arguments:

iv_trackername TYPE /AWS1/LOCRESOURCENAME /AWS1/LOCRESOURCENAME

The name of the tracker resource to be associated with verification request.

io_devicestate TYPE REF TO /AWS1/CL_LOCDEVICESTATE /AWS1/CL_LOCDEVICESTATE

The device's state, including position, IP address, cell signals and Wi-Fi access points.

Optional arguments:

iv_distanceunit TYPE /AWS1/LOCDISTANCEUNIT /AWS1/LOCDISTANCEUNIT

The distance unit for the verification request.

Default Value: Kilometers

RETURNING

oo_output TYPE REF TO /aws1/cl_locverifydevpositio01 /AWS1/CL_LOCVERIFYDEVPOSITIO01

Domain /AWS1/RT_ACCOUNT_ID
Primitive Type NUMC

Examples

Syntax Example

This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.

DATA(lo_result) = lo_client->verifydeviceposition(
  io_devicestate = new /aws1/cl_locdevicestate(
    io_accuracy = new /aws1/cl_locpositionalaccuracy( '0.1' )
    io_cellsignals = new /aws1/cl_loccellsignals(
      it_ltecelldetails = VALUE /aws1/cl_locltecelldetails=>tt_ltecelldetailslist(
        (
          new /aws1/cl_locltecelldetails(
            io_localid = new /aws1/cl_locltelocalid(
              iv_earfcn = 123
              iv_pci = 123
            )
            it_networkmeasurements = VALUE /aws1/cl_locltenetworkmeasur00=>tt_ltenetworkmeasurementslist(
              (
                new /aws1/cl_locltenetworkmeasur00(
                  iv_cellid = 123
                  iv_earfcn = 123
                  iv_pci = 123
                  iv_rsrp = 123
                  iv_rsrq = '0.1'
                )
              )
            )
            iv_cellid = 123
            iv_mcc = 123
            iv_mnc = 123
            iv_nrcapable = ABAP_TRUE
            iv_rsrp = 123
            iv_rsrq = '0.1'
            iv_tac = 123
            iv_timingadvance = 123
          )
        )
      )
    )
    it_position = VALUE /aws1/cl_locposition_w=>tt_position(
      ( new /aws1/cl_locposition_w( |0.1| ) )
    )
    it_wifiaccesspoints = VALUE /aws1/cl_locwifiaccesspoint=>tt_wifiaccesspointlist(
      (
        new /aws1/cl_locwifiaccesspoint(
          iv_macaddress = |string|
          iv_rss = 123
        )
      )
    )
    iv_deviceid = |string|
    iv_ipv4address = |string|
    iv_sampletime = '20150101000000.0000000'
  )
  iv_distanceunit = |string|
  iv_trackername = |string|
).

This is an example of reading all possible response values

lo_result = lo_result.
IF lo_result IS NOT INITIAL.
  lo_inferredstate = lo_result->get_inferredstate( ).
  IF lo_inferredstate IS NOT INITIAL.
    LOOP AT lo_inferredstate->get_position( ) into lo_row.
      lo_row_1 = lo_row.
      IF lo_row_1 IS NOT INITIAL.
        lv_double = lo_row_1->get_value( ).
      ENDIF.
    ENDLOOP.
    lo_positionalaccuracy = lo_inferredstate->get_accuracy( ).
    IF lo_positionalaccuracy IS NOT INITIAL.
      lv_sensitivedouble = lo_positionalaccuracy->get_horizontal( ).
    ENDIF.
    lv_double = lo_inferredstate->get_deviationdistance( ).
    lv_boolean = lo_inferredstate->get_proxydetected( ).
  ENDIF.
  lv_id = lo_result->get_deviceid( ).
  lv_timestamp = lo_result->get_sampletime( ).
  lv_timestamp = lo_result->get_receivedtime( ).
  lv_distanceunit = lo_result->get_distanceunit( ).
ENDIF.