On this page:

Use browser instrumentation through automatic JavaScript Agent injection and enable Real User Monitoring (RUM) for SAP Fiori, WebDynpro, WebGUI (SAPGUI for HTML), and BSP (CRM WebUI, etc.) applications.

Prerequisites

Configure Browser Instrumentation

You can customize browser Instrumentation from Instrumentation settings > Browser Instrumentation using SAP transaction code /DVD/APPD_CUST.

The following table describes the fields and descriptions for Instrumentation Settings:

FieldDescription
Hosting options

Determines where the JavaScript Agent files are to be hosted. See JavaScript Agent configuration.

  • AppDynamics CDN: All the JavaScript Agent files are from the host cdn.appdynamics.com. It is a simple and helpful option for testing purposes.
  • Self-Hosting: Hosts all of the JavaScript Agent files. It provides more control and is recommended for production. 

  • Shared Hosting: Hosts the main file adrum.js. Asynchronously loaded files are from the AppDynamics CDN. It offers control of the most important file of the JavaScript Agent. It is ideal for small to medium-sized businesses that do not have the resources or prefer not to host the entire JavaScript Agent.
  • Custom snippet: Allows to enter the complete code snippet for the JavaScript injection. All parameters are maintained in the code snippet when this hosting option is used.
Agent Version

It is provided when AppDynamics CDN hosting is selected. The default value is adrum-latest.js.

This field is hidden for hosting options other than AppDynamics CDN where the default value is adrum.js.

Custom host

It is provided when Self-Hosting or Shared Hosting is selected.

It is a mandatory field and the value should not contain prefixes like HTTP:// or HTTPS://.

XHR Exclusion Pattern

URL filter for excluding XHR calls from monitoring. Use a semicolon (;) as a separator to enter multiple patterns such as .*foo.*; .*bar.*

See Filter XHR Calls by URLs for details.

API Key

This value is obtained when Browser RUM is set up.

Cross domain correlationFlag to enable session correlation across multiple domains. See Session Correlation Across Multiple Domains for more details.
Inject at end of HEAD block

ABAP Agent injects JavaScript Agent snippet at the start of the HEAD block of the instrumented web pages. When this flag is set, the snippet is injected at the end of the HEAD block. 

This option is intended for troubleshooting.

UI5 Instrumentation activeFlag to enable instrumentation of SAP Fiori (UI5) applications using the JavaScript Agent.
WebDynpro instrumentation activeFlag to enable instrumentation of WebDynpro applications using the JavaScript Agent.
WebGUI instrumentation activeFlag to enable instrumentation of WebGUI (SAPGUI for HTML) applications using the JavaScript Agent.
BSP instrumentation activeFlag to enable instrumentation of BSP pages (also covers CRM WebUI) using the JavaScript Agent.
EUM correlation is activeFlag to enable correlation between Browser RUM monitoring and SAP (C++ SDK) business transactions is available as of release 21.2.0. See Limitations.

Custom Code Snippet

The Custom Code Snippet hosting option allows you to use more options like specifying the on-premise EUM server. See Configure the JavaScript Agent for details.

Choose Custom snippet from the Hosting Options dropdown menu and enter the custom snippet for the JavaScript Agent injection.


As of release 24.11.0 web UI instrumentation user name, full name and e-mail are propagated to the Controller. Placeholders are pre-defined in default snippet. In custom snippet, add following line in the “config” properties: (see example in image above)
config.userEventInfo = {"PageView": function(context) {return {userData: {Instrumentation: "&INSTR_ID&", UserID: "&USER_ID&", Email: "&EMAIL&", Name: "&NAME&"}}}};
CODE

Name, full name and e-mail are affected by PII filter set in instrumentation in transaction /DVD/APPD_INSTR → Snapshot settings. For more information see: user data propagation

Limitations 

SupportLimitation
C++ SDK / HTTP SDK correlation
  • Correlation between Browser RUM monitoring and backend real-time SAP (C++ SDK) business transaction is only available with ABAP Agent 21.2.0 in beta mode.
  • Correlation logic is improved in ABAP Agent 21.5.0. For best results, it is recommended to use the latest ABAP Agent version with Controller >= 21.6.0 and JavaScript Agent >= 21.6.0.
  • Browser RUM correlation is only available for real-time business transactions (with BT context).
  • Reconstructed business transactions (without BT context) do not support browser RUM correlation. It affects both SAPGUI and WebGUI.
SAP NetWeaver instrumentation

Browser instrumentation is supported from SAP NetWeaver release 7.40.

WebDynpro Applications

WebDynpro applications started via the Internet Explorer run in compatibility mode, which causes newer versions of the JavaScript Agent to end with syntax errors when trying to instrument the source code.

The latest compatible JavaScript Agent 4.5.7.1910Specify this version in the settings if you use the Internet Explorer for WebDynpro applications.

Known Issue with Fiori Launchpad

The JavaScript Agent may prevent some Fiori Launchpad pages to be loaded incorrectly when XHR request monitoring is enabled. To ensure all Fiori Launchpad pages load correctly, follow the workarounds below based on what JavaScript Agent version you have.

JavaScript Agent >= 21.6.0

With JavaScript Agent >= 21.6.0, you must pass config.isAbapApp = true:

(function(config) {
        config.isAbapApp = true;
        }
CODE

With ABAP Agent >= 21.8.0, this parameter is automatically added to the default snippet.

JavaScript Agent <= 21.5.0

With JavaScript Agent <= 21.5.0, you must exclude the XHR calls from monitoring by:

  • Entering the value .* into the XHR Exclusion Pattern field in the SAPUI5 settings.

Or

  • Add the following to the JavaScript custom snippet:
(function(xhr) {
        xhr.exclude = {
            urls: [{
 				pattern: ".*"
                }
            ]
        };
    })(config.xhr || (config.xhr = {}));
CODE

See Filter XHR Calls by URLs for more details.