Appeler des fonctions Cloud Functions

Ce guide de démarrage rapide explique comment appeler une fonction qui publie un message créé à partir des arguments reçus par la fonction, à l'aide de l'API Cloud Functions.

Avant de commencer

Avant d'exécuter ce guide de démarrage rapide, assurez-vous que vous ou vos administrateurs avez rempli les conditions préalables suivantes :

  • Assurez-vous que l'API Cloud Functions est activée dans votre projet Google Cloud.

    Accéder à la bibliothèque d'API

  • Selon l'environnement dans lequel votre système SAP est hébergé, configurez l'authentification pour appeler des fonctions Cloud. Pour obtenir des instructions, consultez la page S'authentifier pour appeler des fonctions Cloud. Configurez les clés client comme suit :

    • Pour accéder au point de terminaison de la fonction Cloud, créez une clé client nommée DEMO-CF.
    • Pour appeler la fonction Cloud, créez une clé client nommée DEMO-CF-INVOKER.
  • Dans la console Google Cloud, écrivez une fonction HTTP de 2e génération, cf-gen2-hello-with-args, qui publie un message à l'aide des arguments fournis :

        exports.helloWorld = (req, res) => {
        let name = req.body.name || req.query.name;
        let full_name = `${req.body.firstname} ${req.body.lastname}`;
        res.status(200).send(`Hello ${name}! Full Name: ${full_name}`);
      };
    

    Pour en savoir plus sur l'écriture des fonctions HTTP, consultez la page Écrire des fonctions Cloud.

Créer un programme pour appeler des fonctions Cloud

  1. Dans le système SAP, créez un programme exécutable dans votre espace de noms personnalisé (par exemple, Z ou Y) à l'aide de la transaction SE38.

    1. Dans l'interface utilisateur graphique de SAP, saisissez le code de transaction SE38.

    2. Dans le champ Programme, saisissez un nom pour votre programme, par exemple ZDEMO_CLOUDFUNC_INVOKER.

    3. Cliquez sur Créer.

    4. Spécifiez les attributs du programme :

      1. Dans le champ Titre, saisissez un titre de votre programme, par exemple Invoke Cloud Function using Cloud Function Invoker.

      2. Dans le champ Type, sélectionnez Executable Program.

      3. Cliquez sur Enregistrer.

    5. Enregistrez le programme en tant qu'objet local.

    6. Dans l'éditeur ABAP, ajoutez le code suivant :

      **********************************************************************
      *  Copyright 2024 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_cfinvoker.
      
      DATA(lv_cf_name)  = CONV string( 'cf-gen2-hello-with-args' ).
      DATA(lv_msg)      = CONV string( '{"firstname": "John", "lastname" : "Doe"}' ).
      
      
      TRY.
          " Create a Client API stub for Cloud Functions
          DATA(lo_cloudfunc_client) = NEW /goog/cl_cloudfunc_v2( iv_key_name   = 'DEMO_CF' ).
          " Create a Client API stub for Cloud Function Invoker.
          " Internally this uses the Cloud Function instance to fetch the cloud function HTTP endpoint
          DATA(lo_cfinvoker_client) = NEW /goog/cl_cloudfunc_invoker( iv_key_name   = 'DEMO_CF_INVOKER' ).
      
          " Send additional query parameters as inputs to the cloud function.
          lo_cfinvoker_client->add_common_qparam( iv_name  = 'name'
                                                  iv_value = 'Johnny' ).
      
          lo_cfinvoker_client->invoke(
            EXPORTING
              iv_cf_name      = lv_cf_name            "Cloud Function Name
              iv_cf_location  = 'us-central1'         "Location where the Cloud Function is hosted
              io_cf_instance  = lo_cloudfunc_client   "Instance of cloud Function Client API Stub
              iv_body         = lv_msg                "Input payload to the Cloud Function
              iv_content_type = 'application/json'
              iv_method       = 'POST'
            IMPORTING
              es_output       = DATA(lv_output)
              ev_ret_code     = DATA(lv_ret_code)
              ev_err_text     = DATA(lv_err_text)
              es_err_resp     = DATA(ls_err_resp)
          ).
      
          IF lo_cfinvoker_client->is_success( iv_code = lv_ret_code ).
            WRITE: / 'HTTP Return Code:', lv_ret_code.
            WRITE: / 'Response:', lv_output. "Output of cloud function
          ELSE.
            WRITE: / 'HTTP Return Code:', lv_ret_code.
            WRITE: / 'Error:', lv_err_text.
          ENDIF.
      
        CATCH /goog/cx_sdk INTO DATA(lo_exp).
          WRITE: / lo_exp->get_text( ).
      ENDTRY.

    Remplacez les éléments suivants :

    • DEMO_CF : nom de la clé client utilisée pour accéder au point de terminaison de la fonction Cloud.
    • DEMO_CF_INVOKER : nom de la clé client utilisée pour appeler la fonction Cloud.
  2. Exécutez votre application dans SE38. Si l'opération réussit, le résultat suivant s'affiche:

     HTTP Return Code:        200
     Response: Hello Johnny! Full Name: John Doe
    

Étapes suivantes