Create a Pub/Sub topic SAMPLE_TOPIC_01 and add a pull
subscription SAMPLE_SUB_TOPIC_01 to the same. For more information, see Create a topic and Create a subscription.
Create a program to publish messages to Google Cloud
In the SAP system, create an executable program in your
custom namespace (for example, Z or Y) by using transaction SE38.
In the SAP GUI, enter transaction code SE38.
In the Program field, enter a name of your program
for example, ZDEMO_PUBSUB.
Click Create.
Specify the program attributes:
In the Title field, enter a title of your program,
for example, Publish messages to a Pub/Sub topic.
In the Type field, choose Executable Program.
Click Save.
Save the program as a Local Object.
In the ABAP Editor, add the following code:
**********************************************************************
* Copyright 2023 Google LLC *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* https://www.apache.org/licenses/LICENSE-2.0 *
* Unless required by applicable law or agreed to in writing, *
* software distributed under the License is distributed on an *
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, *
* either express or implied. *
* See the License for the specific language governing permissions *
* and limitations under the License. *
**********************************************************************
REPORT zr_qs_publish_messages.
* Data Declaration
DATA:
lv_p_projects_id TYPE string,
lv_p_topics_id TYPE string,
ls_input TYPE /goog/cl_pubsub_v1=>ty_023.
TRY.
* Instantiate the client stub
DATA(lo_pubsub) = NEW /goog/cl_pubsub_v1( iv_key_name = 'DEMO_PUBSUB' ).
* Pass the relevant input parameters
lv_p_topics_id = 'SAMPLE_TOPIC_01'.
lv_p_projects_id = lo_pubsub->gv_project_id.
APPEND VALUE #( data = cl_http_utility=>encode_base64( 'Hello World!' ) ) to ls_input-messages.
* Call the API
CALL METHOD lo_pubsub->publish_topics
EXPORTING
iv_p_projects_id = lv_p_projects_id
iv_p_topics_id = lv_p_topics_id
is_input = ls_input
IMPORTING
es_output = DATA(ls_output)
ev_ret_code = DATA(lv_ret_code)
ev_err_text = DATA(lv_err_text)
es_err_resp = DATA(ls_err_resp).
* Handle the output
IF lo_pubsub->is_success( lv_ret_code ).
MESSAGE 'Message was published!' TYPE 'S'.
ELSE.
MESSAGE 'Message was not published!' TYPE 'E'.
ENDIF.
* Close the HTTP Connection
lo_pubsub->close( ).
CATCH /goog/cx_sdk INTO DATA(lo_exception).
MESSAGE lo_exception->get_text( ) TYPE 'E'.
ENDTRY.
Replace DEMO_PUBSUB with the client key name.
Run your application in SE38.
To validate the results, follow these steps:
In the Google Cloud console, go to Pub/Sub.
Select the subscription SAMPLE_SUB_TOPIC_01 and go to the Messages tab.
Use the PULL feature to check whether the "Hello World!"
message has been published to the topic.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[],[],null,["# Publish messages to Google Cloud Pub/Sub\n\n\u003cbr /\u003e\n\nThis quickstart shows you how\nto create a program that publishes a \"Hello World!\" message to\na Pub/Sub topic by using the [Pub/Sub API](/pubsub/docs/reference/service_apis_overview).\n\nBefore you begin\n----------------\n\n\nBefore you run this quickstart, make sure that you or your administrators have\ncompleted the following prerequisites:\n\n- You have a Google Cloud account and project.\n\n- Billing is enabled for your project. [See how to confirm that billing is enabled for your project](/billing/docs/how-to/verify-billing-enabled).\n\n- The on-premises or any cloud edition of ABAP SDK for Google Cloud is installed and configured. [See how to install and configure the on-premises or any cloud edition of ABAP SDK for Google Cloud](/sap/docs/abap-sdk/on-premises-or-any-cloud/latest/install-config).\n\n\u003cbr /\u003e\n\n- Authentication to access Google Cloud APIs is set up. [See how to set up authentication](/sap/docs/abap-sdk/on-premises-or-any-cloud/latest/authentication).\n\n- Grant the service account the IAM role `roles/pubsub.publisher`.\n\n- Make sure the Pub/Sub API is enabled in your Google Cloud project.\n\n [Go to API library](https://console.cloud.google.com/project/_/apis/library/pubsub.googleapis.com)\n- Create a Pub/Sub topic `SAMPLE_TOPIC_01` and add a pull\n subscription `SAMPLE_SUB_TOPIC_01` to the same. For more information, see [Create a topic](/pubsub/docs/create-topic#create_a_topic) and [Create a subscription](/pubsub/docs/create-subscription#create_subscriptions).\n\nCreate a program to publish messages to Google Cloud\n----------------------------------------------------\n\n1. In the SAP system, create an executable program in your\n custom namespace (for example, Z or Y) by using transaction `SE38`.\n\n 1. In the SAP GUI, enter transaction code `SE38`.\n\n 2. In the **Program** field, enter a name of your program\n for example, `ZDEMO_PUBSUB`.\n\n 3. Click **Create**.\n\n 4. Specify the program attributes:\n\n 1. In the **Title** field, enter a title of your program,\n for example, `Publish messages to a Pub/Sub topic`.\n\n 2. In the **Type** field, choose `Executable Program`.\n\n 3. Click **Save**.\n\n 5. Save the program as a **Local Object**.\n\n 6. In the **ABAP Editor**, add the following code:\n\n **********************************************************************\n * Copyright 2023 Google LLC *\n * *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); *\n * you may not use this file except in compliance with the License. *\n * You may obtain a copy of the License at *\n * https://www.apache.org/licenses/LICENSE-2.0 *\n * Unless required by applicable law or agreed to in writing, *\n * software distributed under the License is distributed on an *\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, *\n * either express or implied. *\n * See the License for the specific language governing permissions *\n * and limitations under the License. *\n **********************************************************************\n\n REPORT zr_qs_publish_messages.\n\n * Data Declaration\n DATA:\n lv_p_projects_id TYPE string,\n lv_p_topics_id TYPE string,\n ls_input TYPE /goog/cl_pubsub_v1=\u003ety_023.\n\n TRY.\n * Instantiate the client stub\n DATA(lo_pubsub) = NEW /goog/cl_pubsub_v1( iv_key_name = '\u003cvar translate=\"no\"\u003eDEMO_PUBSUB\u003c/var\u003e' ).\n\n * Pass the relevant input parameters\n lv_p_topics_id = 'SAMPLE_TOPIC_01'.\n lv_p_projects_id = lo_pubsub-\u003egv_project_id.\n APPEND VALUE #( data = cl_http_utility=\u003eencode_base64( 'Hello World!' ) ) to ls_input-messages.\n\n * Call the API\n CALL METHOD lo_pubsub-\u003epublish_topics\n EXPORTING\n iv_p_projects_id = lv_p_projects_id\n iv_p_topics_id = lv_p_topics_id\n is_input = ls_input\n IMPORTING\n es_output = DATA(ls_output)\n ev_ret_code = DATA(lv_ret_code)\n ev_err_text = DATA(lv_err_text)\n es_err_resp = DATA(ls_err_resp).\n\n * Handle the output\n IF lo_pubsub-\u003eis_success( lv_ret_code ).\n MESSAGE 'Message was published!' TYPE 'S'.\n ELSE.\n MESSAGE 'Message was not published!' TYPE 'E'.\n ENDIF.\n\n * Close the HTTP Connection\n lo_pubsub-\u003eclose( ).\n\n CATCH /goog/cx_sdk INTO DATA(lo_exception).\n MESSAGE lo_exception-\u003eget_text( ) TYPE 'E'.\n ENDTRY.\n\n Replace \u003cvar translate=\"no\"\u003eDEMO_PUBSUB\u003c/var\u003e with the client key name.\n2. Run your application in `SE38`.\n\n3. To validate the results, follow these steps:\n\n 1. In the Google Cloud console, go to **Pub/Sub**.\n\n 2. Select the subscription `SAMPLE_SUB_TOPIC_01` and go to the **Messages** tab.\n\n 3. Use the PULL feature to check whether the \"Hello World!\"\n message has been published to the topic.\n\nWhat's next\n-----------\n\n\n- Explore other quickstarts available on the GitHub repository, [GoogleCloudPlatform/google-cloud-abap/abap-sdk\n /ZGOOG_SDK_QUICKSTART/](https://github.com/GoogleCloudPlatform/google-cloud-abap/tree/main/abap-sdk/ZGOOG_SDK_QUICKSTART).\n- Read the guide [Application development with the on-premises or any cloud edition of ABAP SDK for Google Cloud](/sap/docs/abap-sdk/on-premises-or-any-cloud/latest/developer).\n- View the [code samples](/sap/docs/abap-sdk/samples/all-samples#on-premises-or-any-cloud-edition).\n- Ask your questions and discuss ABAP SDK for Google Cloud with the community on [Cloud Forums](https://discuss.google.dev/tags/c/google-cloud/14/abap-sdk).\n\n\u003cbr /\u003e"]]