There are more AWS SDK examples available in the AWS Doc SDK Examples
AWS IoT examples using SDK for SAP ABAP
The following code examples show you how to perform actions and implement common scenarios by using the AWS SDK for SAP ABAP with AWS IoT.
Actions are code excerpts from larger programs and must be run in context. While actions show you how to call individual service functions, you can see actions in context in their related scenarios.
Each example includes a link to the complete source code, where you can find instructions on how to set up and run the code in context.
Topics
Actions
The following code example shows how to use AttachThingPrincipal.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. lo_iot->attachthingprincipal( iv_thingname = iv_thing_name iv_principal = iv_principal ). MESSAGE |Principal attached to IoT thing '{ iv_thing_name }'.| TYPE 'I'. CATCH /aws1/cx_iotresourcenotfoundex INTO DATA(lo_ex). MESSAGE |Resource not found when attaching principal to '{ iv_thing_name }'.| TYPE 'I'. RAISE EXCEPTION lo_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_svc_ex). MESSAGE lo_svc_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_svc_ex. ENDTRY.-
For API details, see AttachThingPrincipal in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use CreateKeysAndCertificate.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. oo_result = lo_iot->createkeysandcertificate( iv_setasactive = abap_true ). MESSAGE |Certificate created: { oo_result->get_certificateid( ) }| TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
For API details, see CreateKeysAndCertificate in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use CreateThing.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. oo_result = lo_iot->creatething( iv_thingname = iv_thing_name ). MESSAGE |IoT thing created: { oo_result->get_thingname( ) } ARN: { oo_result->get_thingarn( ) }| TYPE 'I'. CATCH /aws1/cx_iotresrcalrdyexistsex. MESSAGE |IoT thing '{ iv_thing_name }' already exists.| TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
For API details, see CreateThing in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use CreateTopicRule.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. " Build the SNS action that will receive messages matching the rule. DATA lo_sns_action TYPE REF TO /aws1/cl_iotsnsaction. CREATE OBJECT lo_sns_action EXPORTING iv_targetarn = iv_sns_action_arn iv_rolearn = iv_role_arn. DATA lo_action TYPE REF TO /aws1/cl_iotaction. CREATE OBJECT lo_action EXPORTING io_sns = lo_sns_action. DATA lt_actions TYPE /aws1/cl_iotaction=>tt_actionlist. APPEND lo_action TO lt_actions. " iv_topic = 'my/iot/topic' - The MQTT topic pattern to match DATA lo_payload TYPE REF TO /aws1/cl_iottopicrulepayload. CREATE OBJECT lo_payload EXPORTING iv_sql = |SELECT * FROM '{ iv_topic }'| it_actions = lt_actions. lo_iot->createtopicrule( iv_rulename = iv_rule_name io_topicrulepayload = lo_payload ). MESSAGE |IoT topic rule created: { iv_rule_name }| TYPE 'I'. CATCH /aws1/cx_iotresrcalrdyexistsex. MESSAGE |Topic rule '{ iv_rule_name }' already exists.| TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
For API details, see CreateTopicRule in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use DeleteCertificate.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. " Certificates must be deactivated before they can be deleted. lo_iot->updatecertificate( iv_certificateid = iv_certificate_id iv_newstatus = 'INACTIVE' ). lo_iot->deletecertificate( iv_certificateid = iv_certificate_id ). MESSAGE |Certificate deleted: { iv_certificate_id }| TYPE 'I'. CATCH /aws1/cx_iotresourcenotfoundex INTO DATA(lo_ex). MESSAGE |Certificate '{ iv_certificate_id }' not found.| TYPE 'I'. RAISE EXCEPTION lo_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_svc_ex). MESSAGE lo_svc_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_svc_ex. ENDTRY.-
For API details, see DeleteCertificate in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use DeleteThing.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. lo_iot->deletething( iv_thingname = iv_thing_name ). MESSAGE |IoT thing deleted: { iv_thing_name }| TYPE 'I'. CATCH /aws1/cx_iotresourcenotfoundex INTO DATA(lo_ex). MESSAGE |IoT thing '{ iv_thing_name }' not found.| TYPE 'I'. RAISE EXCEPTION lo_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_svc_ex). MESSAGE lo_svc_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_svc_ex. ENDTRY.-
For API details, see DeleteThing in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use DeleteTopicRule.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. lo_iot->deletetopicrule( iv_rulename = iv_rule_name ). MESSAGE |IoT topic rule deleted: { iv_rule_name }| TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
For API details, see DeleteTopicRule in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use DescribeEndpoint.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). " iv_endpoint_type = 'iot:Data-ATS' - Endpoint type for data operations TRY. DATA(lo_result) = lo_iot->describeendpoint( iv_endpointtype = iv_endpoint_type ). ov_endpoint_address = lo_result->get_endpointaddress( ). MESSAGE |Endpoint address: { ov_endpoint_address }| TYPE 'I'. CATCH /aws1/cx_iotthrottlingex INTO DATA(lo_throttle_ex). MESSAGE 'Request throttled. Please try again later.' TYPE 'I'. RAISE EXCEPTION lo_throttle_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
For API details, see DescribeEndpoint in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use DetachThingPrincipal.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. lo_iot->detachthingprincipal( iv_thingname = iv_thing_name iv_principal = iv_principal ). MESSAGE |Principal detached from IoT thing '{ iv_thing_name }'.| TYPE 'I'. CATCH /aws1/cx_iotresourcenotfoundex INTO DATA(lo_ex). MESSAGE |Resource not found when detaching principal from '{ iv_thing_name }'.| TYPE 'I'. RAISE EXCEPTION lo_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_svc_ex). MESSAGE lo_svc_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_svc_ex. ENDTRY.-
For API details, see DetachThingPrincipal in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use ListCertificates.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. " Collect all certificates by following the pagination marker. DATA lv_marker TYPE /aws1/iotmarker. DATA lv_count TYPE i. DO. oo_result = lo_iot->listcertificates( iv_marker = lv_marker ). lv_count = lv_count + lines( oo_result->get_certificates( ) ). lv_marker = oo_result->get_nextmarker( ). IF lv_marker IS INITIAL. EXIT. ENDIF. ENDDO. MESSAGE |Retrieved { lv_count } IoT certificates.| TYPE 'I'. CATCH /aws1/cx_iotthrottlingex INTO DATA(lo_throttle_ex). MESSAGE 'Request throttled. Please try again later.' TYPE 'I'. RAISE EXCEPTION lo_throttle_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
For API details, see ListCertificates in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use ListThings.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. " Collect all things by following the pagination token. DATA lv_nexttoken TYPE /aws1/iotnexttoken. DATA lv_count TYPE i. DO. oo_result = lo_iot->listthings( iv_nexttoken = lv_nexttoken ). lv_count = lv_count + lines( oo_result->get_things( ) ). lv_nexttoken = oo_result->get_nexttoken( ). IF lv_nexttoken IS INITIAL. EXIT. ENDIF. ENDDO. MESSAGE |Retrieved { lv_count } IoT things.| TYPE 'I'. CATCH /aws1/cx_iotthrottlingex INTO DATA(lo_throttle_ex). MESSAGE 'Request throttled. Please try again later.' TYPE 'I'. RAISE EXCEPTION lo_throttle_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
For API details, see ListThings in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use SearchIndex.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). " iv_query_string = 'thingName:MyThing*' - Fleet indexing query string TRY. oo_result = lo_iot->searchindex( iv_querystring = iv_query_string ). MESSAGE |Found { lines( oo_result->get_things( ) ) } IoT things matching query.| TYPE 'I'. CATCH /aws1/cx_iotindexnotreadyex INTO DATA(lo_idx_ex). MESSAGE 'Fleet indexing is not ready. Enable indexing with UpdateIndexingConfiguration first.' TYPE 'I'. RAISE EXCEPTION lo_idx_ex. CATCH /aws1/cx_iotthrottlingex INTO DATA(lo_throttle_ex). MESSAGE 'Request throttled. Please try again later.' TYPE 'I'. RAISE EXCEPTION lo_throttle_ex. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
For API details, see SearchIndex in AWS SDK for SAP ABAP API reference.
-
The following code example shows how to use UpdateIndexingConfiguration.
- SDK for SAP ABAP
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'. DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_iot) = /aws1/cl_iot_factory=>create( lo_session ). TRY. DATA lo_idx_conf TYPE REF TO /aws1/cl_iotthingindexingconf. CREATE OBJECT lo_idx_conf EXPORTING iv_thingindexingmode = 'REGISTRY'. lo_iot->updateindexingconfiguration( io_thingindexingconf = lo_idx_conf ). MESSAGE 'IoT thing indexing configuration updated to REGISTRY mode.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_ex). MESSAGE lo_ex->get_text( ) TYPE 'I'. RAISE EXCEPTION lo_ex. ENDTRY.-
For API details, see UpdateIndexingConfiguration in AWS SDK for SAP ABAP API reference.
-