Skip to content
Back to skills

Sap Arc1 Kit

ASecurity

Installs on an SAP system (on-premise, through the ARC-1 MCP server) the tool kit that lets Claude run reports with variants/selection values and read the ALV output, create PDF previews of NAST print output, read and edit SmartForms as XML, and replace a customer form with the approved copy. Use it when starting a new SAP project and the tools Custom_LaunchReport, Custom_PrintPreview, Custom_SmartFormRead/Write/Replace are not available, when the user asks to "install/port the tools", "prepa...

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
developmenttypescriptpythonbashnode

Works with

  • claude code
  • cli
  • mcp

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 20 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add silvius1996/claude-sap-kit --skill sap-arc1-kit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sap Arc1 Kit?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sap Arc1 Kit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/silvius1996-sap-arc1-kit/badge)](https://www.skillsdirectory.com/skills/silvius1996-sap-arc1-kit)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: sap-arc1-kit
description: Installs on an SAP system (on-premise, through the ARC-1 MCP server) the tool kit that lets Claude run reports with variants/selection values and read the ALV output, create PDF previews of NAST print output, read and edit SmartForms as XML, and replace a customer form with the approved copy. Use it when starting a new SAP project and the tools Custom_LaunchReport, Custom_PrintPreview, Custom_SmartFormRead/Write/Replace are not available, when the user asks to "install/port the tools", "prepare the system", "set up the report launcher or SmartForms tools" on a new system or client, or when the skills sap-report-launcher / sap-smartform-xml report that the tools are missing.
---

# ARC-1 kit: installation on a new SAP system

The kit has two parts that are installed together:

| Part | Where | Content (default prefix `ZAI`) |
|---|---|---|
| ABAP | SAP system | 3 exception classes, 3 logic classes, function group `ZAI_FG_LAUNCHER` with 6 function modules (5 remote-enabled) |
| ARC-1 extension | PC, project folder | 5 MCP tools: `Custom_LaunchReport`, `Custom_PrintPreview`, `Custom_SmartFormRead`, `Custom_SmartFormWrite`, `Custom_SmartFormReplace` |

The tools call the function modules through the standard SOAP-RFC service (`/sap/bc/soap/rfc`),
because ARC-1 extensions can only make HTTP calls.

The sources are in `assets/` (`abap/clas`, `abap/fugr`, `arc1-extension`). They need
SAP_BASIS 7.50 or later: ECC 6.0 EHP8 and every S/4HANA on-premise / private cloud release.
They were tested live on S/4HANA 2025 (SAP_BASIS 816) and ECC 6.0 EHP8 (SAP_BASIS 750); they avoid
newer constructs on purpose (`RAISE EXCEPTION TYPE`, POSIX `REGEX` instead of `NEW` and PCRE).
On ECC check before installing that the class `/UI2/CL_JSON` exists (used for the ALV output).

## Before starting: what to ask or check

1. **Project rules**: read the project `CLAUDE.md`. It decides package, prefix and whether
   transport requests are needed. On a customer system do not create transport requests or
   transportable packages without explicit confirmation from the user.
2. **Object prefix**: generic, never personal (default `ZAI`). If the project has a different
   naming convention, ask the user for the prefix. Max 10 characters, starting with Z or Y.
3. **Package**: `$TMP` on development/sandbox systems; a project package only if the user asks
   for it (it needs a transport request).
4. **ARC-1 configured** in `.mcp.json` with writes enabled (`SAP_ALLOW_WRITES=true`) and the
   target package in `SAP_ALLOWED_PACKAGES`.
5. **SICF service `/sap/bc/soap/rfc` active** (transaction `SICF`). Claude cannot activate it:
   if it is inactive, ask the user or the Basis team. Quick check: the first tool call returns
   HTTP 403/404 if the service is off.
6. **SAP user authorizations**: `S_RFC` on the function group, plus those needed to run the
   reports and read spool requests.

## Step 1 — Prepare the sources with the chosen prefix

```bash
python <skill>/scripts/set_prefix.py --to ZAI --dest <project>/sap-kit
```

The script copies `assets/` and replaces the prefix in file names and content
(ABAP and TypeScript), upper and lower case. With `--to ZAI` it only copies.

## Step 2 — ABAP objects (order matters)

Use `SAPWrite` with the chosen `package` (and `transport` if not `$TMP`). Read each file and
pass its content unchanged.

1. **Exception classes** `<P>_CX_LAUNCHER`, `<P>_CX_PRINT_PREVIEW`, `<P>_CX_SMARTFORM`
   → `SAPWrite batch_create` with `activateAtEnd: true`.
2. **Function group** `<P>_FG_LAUNCHER` → `SAPWrite create type=FUGR`.
3. **Include** `L<P>_FG_LAUNCHERF01` (work areas `TABLES: nast, tnapr`) →
   `SAPWrite create type=INCL group=<P>_FG_LAUNCHER`. ARC-1 adds the `INCLUDE` line to the
   main program by itself.
4. **FM** `<P>_PRINT_CALL_ROUTINE` → `type=FUNC`, `processingType: normal`.
5. **Classes** `<P>_CL_REPORT_LAUNCHER`, `<P>_CL_PRINT_PREVIEW`, `<P>_CL_SMARTFORM_XML`
   (files `.clas.abap`) → `SAPWrite create type=CLAS`.
6. **Remote-enabled FMs** `<P>_RUN_REPORT`, `<P>_RUN_PRINT_PREVIEW`, `<P>_SMARTFORM_READ`,
   `<P>_SMARTFORM_WRITE`, `<P>_SMARTFORM_REPLACE` → `type=FUNC`, `processingType: rfc`.
7. **One activation** with `SAPActivate objects=[...]` of: the 3 classes, the include, the 6 FUNC
   (with `group`) and the FUGR. New FMs stay inactive if only the FUGR is activated: they must
   be listed explicitly.
8. **Tests** (`.testclasses.abap`) → `SAPWrite update include=testclasses` for each class,
   then `SAPActivate` of the 3 classes.

## Step 3 — Checks on the system

- `SAPQuery`: `SELECT funcname, fmode FROM tfdir WHERE funcname LIKE '<P>_%'` → the 5 entry
  FMs with `FMODE = 'R'`, `<P>_PRINT_CALL_ROUTINE` empty.
- `SAPDiagnose unittest` on the 3 classes: 8 + 8 + 14 tests, no errors. Tests that find no
  suitable data on the system end with a **tolerable** assertion (`CL_ABAP_UNIT_ASSERT=>SKIP`
  does not exist on 7.50): ARC-1 then reports the class as `failed` with `severity: tolerable`.
  This is expected, not a problem, when the message says what is missing:
  "No BA00 message in this system", "No preview spool request below the TSP01 maximum" (normal
  before the first `Custom_PrintPreview` on the system), "Output type V1/ZZZZ has a TNAPR entry
  in this system", "No transportable Z*/Y* SmartForms of other users or no open request". Any other failure, or a `critical` one, is a real error.
- `SAPDiagnose atc`: no priority 1/2 findings. Priority 3 findings on "texts without text
  element" are accepted (technical messages) unless the project rules say otherwise.
- `Custom_SmartFormReplace` is tried only on a test Z form, in a transportable package and
  with a transport request given by the user (tested on S/4HANA 2025: `prepare` + `execute`
  successful, form recorded in the request without popup via RFC).
  There is no need to repeat the test on every system: a `prepare` and the user's confirmation
  before the first real `execute` are enough.

## Step 4 — ARC-1 extension

1. Copy `sap-kit/arc1-extension` into the project folder (e.g. `<project>/arc1-extension`).
2. `npm install --ignore-scripts`, then `npm test` (builds into `dist/` and runs 20 Node tests).
   `--ignore-scripts` skips the native build of ARC-1 dependencies, which the extension does
   not need.
3. In `.mcp.json`, in the ARC-1 server, add to `env`:
   ```json
   "ARC1_PLUGINS": "<absolute path>/arc1-extension/dist/index.js",
   "SAP_ALLOW_PLUGIN_RAW_WRITES": "true"
   ```
   The second flag is needed because the tools make HTTP POST calls to SAP.

   Rules for `Custom_SmartFormReplace`, in the same `env` (the variable names follow the
   chosen prefix, e.g. `ZXYZ_CHECK_AUTHOR`):

   | Variable | Use | Default |
   |---|---|---|
   | `SAP_ALLOW_TRANSPORT_WRITES` | Must be `true`, otherwise the tool refuses | - |
   | `SAP_ALLOWED_PACKAGES` | Packages in which an original can be replaced | empty = none |
   | `<P>_CHECK_AUTHOR` | Check done in ABAP with the user actually logged on (`sy-uname`); `false` on systems with a shared SAP user, where the author does not tell who wrote the form | `true` |
   | `<P>_ALLOWED_TRANSPORTS` | Allowed transport requests, comma separated | all modifiable workbench requests |
4. Ask the user to **restart Claude Code** (or reconnect the ARC-1 server): the tools appear
   only afterwards. Then `ToolSearch` with `Custom_` to check them.

## Step 5 — Quick test

- `Custom_LaunchReport` with `tcode: "MB52"` (or a Z report of the project) and a narrow filter.
- `Custom_SmartFormRead` on `LE_SHP_DELNOTE` or a project form → XML saved.
- `Custom_PrintPreview` on a document with a NAST print message → PDF saved.

Then record prefix, package, created objects and results in the project notes.

## Known problems

| Symptom | Cause / fix |
|---|---|
| HTTP 403/404 from `/sap/bc/soap/rfc` | SICF service inactive or user without authorization |
| SOAP fault "function not found" | FM inactive or not remote-enabled (`FMODE`) |
| FMs created but inactive after activating the FUGR | Activate them explicitly as FUNC with `group` |
| `Custom_*` tools missing | Extension not built, wrong `ARC1_PLUGINS` path or Claude Code not restarted |
| After a prefix change the tools call FMs that do not exist | Rebuild the extension (`npm test`) from the copy with the new prefix |

To use the tools: skills `sap-report-launcher` and `sap-smartform-xml`.

Files in this skill

  • SKILL.md7.9 KB
  • assets/PREFIX4 B
  • assets/abap/clas/ZAI_CL_PRINT_PREVIEW.clas.abap11.1 KB
  • assets/abap/clas/ZAI_CL_PRINT_PREVIEW.testclasses.abap6.5 KB
  • assets/abap/clas/ZAI_CL_REPORT_LAUNCHER.clas.abap9.2 KB
  • assets/abap/clas/ZAI_CL_REPORT_LAUNCHER.testclasses.abap2.4 KB
  • assets/abap/clas/ZAI_CL_SMARTFORM_XML.clas.abap23.5 KB
  • assets/abap/clas/ZAI_CL_SMARTFORM_XML.testclasses.abap11.6 KB
  • assets/abap/clas/ZAI_CX_LAUNCHER.clas.abap605 B
  • assets/abap/clas/ZAI_CX_PRINT_PREVIEW.clas.abap615 B
  • assets/abap/clas/ZAI_CX_SMARTFORM.clas.abap607 B
  • assets/abap/fugr/LZAI_FG_LAUNCHERF01.abap95 B
  • assets/abap/fugr/ZAI_PRINT_CALL_ROUTINE.abap1.2 KB
  • assets/abap/fugr/ZAI_RUN_PRINT_PREVIEW.abap2.1 KB
  • assets/abap/fugr/ZAI_RUN_REPORT.abap1.2 KB
  • assets/abap/fugr/ZAI_SMARTFORM_READ.abap329 B
  • assets/abap/fugr/ZAI_SMARTFORM_REPLACE.abap2.1 KB
  • assets/abap/fugr/ZAI_SMARTFORM_WRITE.abap576 B
  • assets/arc1-extension/package-lock.json84.4 KB
  • assets/arc1-extension/package.json691 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…