Table of Contents

Transactional RFC (tRFC) Monitoring

Transactional RFC (tRFC) is the asynchronous, guaranteed-delivery RFC mechanism used by SAP NetWeaver
to exchange IDocs and function calls between systems (transaction SM58).
This monitor supervises the open tRFC entries of an ABAP system, in both directions, and raises alarms
when entries fail or stay in process for too long.

What Can Be Monitored

You can detect and alert on:

Each surveillance row targets a subset of entries using filters on direction, destination, function/program, user and state.

Monitored Data

The monitor reads the tRFC state tables through RFC_READ_TABLE:

Direction SAP table Content
OUTBOUND ARFCSSTATE tRFC calls sent by the monitored system to a destination.
INBOUND ARFCRSTATE tRFC calls received by the monitored system.

Only open entries are read (ARFCRETURN is empty). The following fields are collected:

Field Description
ARFCDEST RFC destination of the call. Used by the Destination filter.
ARFCSTATE Current state of the entry (SYSFAIL, CPICERR, RECORDED, …). Used by the status filter.
ARFCFNAM Function module or program name. Used by the Program name filter.
ARFCUSER User who created the entry. Used by the User filter.
ARFCDATUM + ARFCUZEIT Date and time of the entry, converted using the time zone of the SAP system. Used for the time window and the age evaluation.
ARFCMSG Error message of the entry. Included in per-entry alarms.

The connector user needs the authorization to call RFC_READ_TABLE on both tables.

tRFC states

The status filter accepts the following values:

status Matches
ANY Every entry, whatever its state.
IN_ERROR Entries in any error state: CPICERR/CONFAIL, SYSFAIL, SYSLOAD, RETRY/ARETRY/ANORETRY. Unknown states are also treated as errors.
IN_PROCESS Entries that are not in an error state: RECORDED/VBRECORD, SENDED, HOLDEXE, HOLDDEL, EXECUTED, FINISHED, CONFIRMD, WCONFIRM.
CPICERR/CONFAIL Communication error or connection failure with the destination.
SYSFAIL Error raised in the target system.
SYSLOAD No resources available in the target system.
RETRY/ARETRY/ANORETRY Entry waiting for an automatic retry, or for which retries are exhausted.
RECORDED/VBRECORD Entry recorded but not executed yet.
SENDED Entry sent, waiting for confirmation.

How It Works

Collection window

At each execution the monitor computes, per direction, a collection start date:

The collection start date drives the query sent to SAP:

Every entry returned by SAP is kept for evaluation. Entries older than the row window are never counted for Max Entries, but they are evaluated by the Max entry age check.

Row evaluation

Rows are evaluated in the order of the surveillance table. For each active row:

Configuration Hints

Configuration

Monitoring Parameters

Parameter Type Required Default Description
Send metrics Boolean Yes true Emits the TRFC_ENTRIES_COUNT metric for every collected entry (see Generated Metrics).
Use period for collection depth Boolean Yes true If enabled, the RFC_READ_TABLE query only returns open entries whose ARFCDATUM is on or after the day of the collection start date. If disabled, all open entries are read whatever their age, so that Max entry age can detect entries stuck for days or weeks without a large Period. Reading the full tables can be slow on systems with many open entries.

Surveillance Table

Field Required Default Description
Active Yes true Enables/disables this surveillance row.
Period Yes 0 Time window, in minutes, in which entries are counted for Max entries. 0 means “since the previous successful execution” (60 minutes at most). The largest Period of a direction also defines the collection start date (see Collection window).
Direction Yes OUTBOUND OUTBOUND (table ARFCSSTATE) or INBOUND (table ARFCRSTATE).
Destination Yes * Filter on the RFC destination (ARFCDEST).
Program name Yes * Filter on the function module or program name (ARFCFNAM).
User Yes * Filter on the user who created the entry (ARFCUSER).
status Yes IN_ERROR State of the entries to evaluate (see tRFC states).
Max entries Yes 0 Number of matching entries in the window from which the aggregated alarm is raised (count >= Max entries). 0 disables this threshold. Ignored when Aggregates is disabled.
Severity (Max entries) Yes Major Severity of the “entries count” alarm(s). Disabled turns the row into an exclusion filter: matching entries are removed and ignored by the following rows.
Aggregates Yes true If enabled, one alarm per row carrying the number of entries. If disabled, one alarm per matching entry.
Max entry age (d/h/m) Yes 0 Age threshold of the entries, as a number with an optional time unit (2h, 90m, 1d 12h). Without unit the value is in hours. Alarm when the age of an entry is greater than the threshold. Evaluated on every collected entry, inside or outside the row window. 0 disables this threshold.
Severity (Max entry age) Yes Major Severity of the “entries older than” alarm(s). Clear or Disabled suppresses the per-entry age alarms.
Auto clear Yes true Alarms generated by this row are clearable when the condition recovers.
Prefix No (empty) Alarm tag and message prefix. %MSG% can be used to place the generated message inside a custom text (my_prefix %MSG% my_suffix). A value starting with ! sets the tag without altering the message.
Exclusive No false If enabled, entries matched by this row are removed from the list and are not evaluated by the following rows.
Volatile No false Applies to the aggregated entries count alarm when Period > 0: every execution generates a new alarm instead of updating the previous one.
Alarm No true Enables/disables alarm generation for this row.
Report No false If enabled, the entry count and severity of this row are shown in the daily report.

Alarm Conditions

For each active surveillance row with Alarm enabled:

Generated Metrics

When Send metrics is enabled, the monitor emits one time series for all collected entries, independently of the surveillance rows:

metricId metricUnit Tags metricDescription
TRFC_ENTRIES_COUNT count status, direction, destination Number of open tRFC entries updated since the previous execution, aggregated on 5-minute slots per state, direction and destination.

TRFC_IN_ENTRIES_COUNT and TRFC_OUT_ENTRIES_COUNT (formerly TRFC_IN_ENTRIES and TRFC_OUT_ENTRIES) are the metric identifiers carried by the alarms.

Generated Alarms

Alarm messages include the tRFC context, for example:

The state wording depends on the row status: nothing for ANY, with ERROR state for IN_ERROR, in process for IN_PROCESS, and with <STATE> state for a specific state.

Examples

Active Period Direction Destination Program name User status Max entries Severity Aggregates Max entry age (d/h/m) Severity Auto clear Prefix Exclusive Volatile Alarm Report
true 0 OUTBOUND SANDBOX * * ANY 0 Disabled true 0 Major true false false true false
true 15 OUTBOUND * * * IN_ERROR 10 Major true 0 Major true false false true false
true 1440 INBOUND * * * IN_PROCESS 0 Major true 2h Warning true false false true true
true 0 OUTBOUND PRD_CLNT100 * * SYSFAIL 0 Critical false 1d Major true SAP-PI %MSG% false false true false

Row 1 effect: exclusion row. OUTBOUND entries whose destination contains SANDBOX are removed and ignored by the following rows. No alarm is raised.

Row 2 effect: sends one MAJOR alarm when 10 or more OUTBOUND entries in an error state were updated during the last 15 minutes. The alarm is cleared automatically when the count drops below 10.

Row 3 effect: INBOUND entries from the last 24 hours are collected. Sends one WARNING alarm giving the number of INBOUND entries still in process for more than 2 hours. Max entries is 0, so no count alarm is raised. The row is also shown in the daily report. With Use period for collection depth disabled, the same row with Period 0 would check every open INBOUND entry, whatever its age.

Row 4 effect: sends one CRITICAL alarm per SYSFAIL OUTBOUND entry to destination PRD_CLNT100 updated since the previous execution, with the message prefixed by SAP-PI. Entries in SYSFAIL for more than one day raise one MAJOR alarm each; those older than 7 days are grouped into a single MAJOR alarm giving their number.