Skip to Content

Create a Cloud Foundry or XS Advanced App that Queries SAP HANA

test
0 %
Create a Cloud Foundry or XS Advanced App that Queries SAP HANA
Details

Create a Cloud Foundry or XS Advanced App that Queries SAP HANA

January 12, 2021
Created by
January 12, 2021
Create a Node.js app that queries SAP HANA and can be run in Cloud Foundry or XS Advanced.

You will learn

  • How to use the command line interface (CLI) to deploy a Node.js app to Cloud Foundry or XS advanced
  • How to view the logs and enable tracing in the deployed app
QR code

Prerequisites

  • You have completed the first 4 tutorials in this mission

In the previous tutorials, applications that queried SAP HANA were run on a local machine. In this tutorial, a simple application will be run within the SAP Cloud Platform which uses Cloud Foundry or within the SAP HANA, express edition which uses XS advanced (and is also based on Cloud Foundry).

For additional details, consult The XS Advanced Programming Model. For a more complete example, see the Node.js topics in week 3 of Software Development on SAP HANA.


Step 1: Get started with the Command Line Interface (CLI)

The CLI for the SAP Cloud Platform is named cf while the CLI for SAP HANA, express edition is named xs.

  1. Check to see if you have the CLI installed and verify the version.

    cf -v
    
    cf cli version

    For additional details, see Installing the CLI and Installing the cf CLI.

    xs -v
    
    xs cli version

    The installer for xs can be downloaded from SAP Software Downloads under SAP HANA PLATFORM EDITION | SAP HANA PLATFORM EDITION 2.0 | XS RUNTIME 1.

  2. Access help by running the following:

    cf help
    cf help login
    
    xs help
    xs help login
    
  3. Log in to the Cloud Foundry or XS advanced.

    cf login
    
    cf login

    If you are an SAP employee, you may need to enter your password plus a two-factor authentication passcode.

    The API URL, if requested, can be found in the SAP Cloud Platform cockpit.

    api URL

    .

    xs login
    
    xs login

    The API URL if requested can be verified in the XSA is up app.

    xsa running
  4. Additional examples are shown below to view the target information, running services, and deployed apps.

    cf target
    cf services
    cf apps
    cf buildpacks
    
    xs target
    xs services
    xs apps
    xs buildpacks
    
    services

    Additional details can be found at Getting Started with the cf CLI and Get Started with the XS CLI Client.

Log on to answer question
Step 2: Create Node.js app that queries SAP HANA
  1. Create a folder named nodeCF and enter the newly created directory.

    mkdir %HOMEPATH%\HANAClientsTutorial\nodeCF\nodeQueryCF
    cd %HOMEPATH%\HANAClientsTutorial\nodeCF\nodeQueryCF
    
    mkdir $HOME/HANAClientsTutorial/nodeCF/nodeQueryCF
    cd $HOME/HANAClientsTutorial/nodeCF/nodeQueryCF
    
  2. Initialize the project, install express, and @sap/hana-client from NPM.

    npm init -y
    npm install express
    npm install @sap/hana-client
    
  3. Open a file named server.js in an editor.

    notepad server.js
    

    Substitute pico below for your preferred text editor.

    pico server.js
    
  4. Add the code below to server.js. Update the values for host and port, user name and password.

    var express = require('express');
    var hana = require('@sap/hana-client');
    var app = express();
    
    app.get('/', function (req, res) {
       res.send('Hello World');
    })
    
    app.get('/Customers', function (req, res) {
      var connOptions = {
          serverNode: 'XXXXXX.hana.trial-XXXXX.hanacloud.ondemand.com:443',
          //serverNode: 'linux-bj72:39015',
          UID: 'USER1',
          PWD: 'Password1'
          //traceFile: 'stdout',
          //traceOptions: 'sql=warning'
      };
    
      var connection = hana.createConnection();
      connection.connect(connOptions, function(err) {
          if (err) {
              return console.error(err);
          }
          var sql = 'select * from HOTEL.CUSTOMER;';
          var rows = connection.exec(sql, function(err, rows) {
              if (err) {
                  return console.error(err);
              }
              console.log(rows);
              res.send(rows);
              connection.disconnect(function(err) {
                  if (err) {
                      return console.error(err);
                  }   
              });
          });
      });
    })
    
    const port = process.env.PORT || 3000;
    var server = app.listen(port, function () {
       var host = server.address().address
       var port = server.address().port
       console.log("Example app listening at http://%s:%s", host, port)
    })
    
  5. Run and test the app locally.

    node server.js
    
    running locally
Log on to answer question
Step 3: Deploy and test app in SAP Cloud Platform or XS Advanced
  1. Create a deployment descriptor.

    cd ..
    notepad manifest.yml
    

    Substitute pico below for your preferred text editor.

    cd ..
    pico manifest.yml
    

    Add the code below to manifest.yml.

    ---
    applications:
    - name: nodeQueryCF
      random-route: true
      type: nodejs
      path: nodeQueryCF
      command: node server.js
      memory: 128M
    

    For additional details, consult App Manifest Attribute Reference.

  2. Deploy the app to Cloud Foundry or XS advanced.

    cf push
    
    push result

    .

    xs push
    

    .
    push result

    Alternatively, the URL of the app can be found by running the following command:

    cf app nodeQueryCF
    
    xs app nodeQueryCF
    
  3. Test the app.

    cf app

    .

    xs app

For additional details see:

Developing Node.js in the Cloud Foundry Environment

Tutorial: Setting up your JavaScript Application in XS Advanced

Log on to answer question
Step 4: Additional commands
  1. The app can be stopped and started with the below commands:

    cf stop nodeQueryCF
    cf start nodeQueryCF
    
  2. The applications lifecycle events can be seen with the below command:

    cf events nodeQueryCF
    
    events
  3. The logs of the application can be seen with the below command:

    cf logs --recent nodeQueryCF
    

    The following command will show the tail of the log.

    cf logs nodeQueryCF
    
  4. As of version 2.7, the SAP HANA client interfaces can output trace information to stdout or stderr.

    cf set-env nodeQueryCF HDB_SQLDBC_TRACEFILE stdout
    cf set-env nodeQueryCF HDB_SQLDBC_TRACEOPTS SQL=WARN
    cf restage nodeQueryCF
    cf env nodeQueryCF
    cf logs nodeQueryCF
    

    Alternatively, the trace settings can be specified in the application code.

    Refresh the browser and notice that the trace information can now be seen.

    trace
  5. The deployed app can also be managed in the associated cockpit.

    SAP Cloud Platform Cockpit

    SAP Cloud Platform cockpit

    SAP HANA XS Advanced Cockpit

    XS advanced cockpit

    Note that the number of running instances can be scaled if needed.

Congratulations, you have built, deployed and run an app that queries SAP HANA in Cloud Foundry and XS advanced as well as become familiar with the command line interface.

Which of the following statements are true?
×

Next Steps

Back to top