abap-docs
SAP's ABAP Keyword Documentation scraped from help.sap.com and committed as Markdown in two libraries, Standard ABAP and ABAP Cloud, with keyword and category indexes for the MCP servers and LLMs it is generated for.
SAP publishes the ABAP Keyword Documentation as HTML on help.sap.com, where the cross-references are javascript:call_link() calls, so nothing can clone it or index it as text. Two scripts do the conversion: scrape.js fetches the pages and generate.js writes Markdown of 1–10KB per page with frontmatter and the source URL embedded, and the result is committed under docs/standard and docs/cloud, around 6,000 pages per library, beside files_index.json and optimized_index.json for lookup by keyword or category. The two libraries are SAP's own split: the latest index for Standard ABAP with its full history, and the CLOUD index for the restricted ABAP Cloud syntax. It is the abap-docs submodule of mcp-sap-docsmcp-sap-docsAn MCP server over seventeen cloned SAP documentation repositories — ABAP keyword docs, capire, OpenUI5, Cloud SDK, BTP — searched with BM25 and prebuilt embeddings fused by reciprocal rank fusion.independent, cap, where the two libraries appear as the abap-docs-standard and abap-docs-cloud sources; the conversion is all it does, and nothing in it searches.
Facts
Where it sits
Who is behind it
In the atlas: maintains 35, contributes to 86, wrote 25@marianfoomaintainer
Before choosing this
Conditions
PracticalFunctional boundary
The Markdown is a snapshot of whatever help.sap.com served when the pipeline last ran, and the Standard library is scraped from the latest index, so which release a page describes follows from the scrape date rather than from anything the corpus states. package.json states ISC and the repository carries no LICENSE file, so what the copied SAP documentation may be used for is not stated in it.
What it declares
Every artifact
- Type
- Doc source
- Origin
- Independently maintained
- Use as
- A reference
- Runtime
- Node.js
Connections
Finding answers in written documentation, and writing what is missing
Download
Learn more
- ABAP + MCP: Let AI Do Real Development in Your SAP SystemABAP + MCP: Let AI Do Real Development in Your SAP Systemabap-adt-mcp is an open-source MCP server that gives an AI agent full ABAP development capability over ADT: it searches, reads, edits, activates and unit-tests objects, and runs ATC checks, on a connected S/4HANA Cloud or on-premise system, acting as the signed-in developer. It runs on abap-adt-api, the same REST client Eclipse's own ADT tooling uses, and sits beside SAP's own ADT MCP Server, shipped with ADT for VS Code and Eclipse under a different server key, and marianfoo's abap-docs, a read-only server over the ABAP Keyword Documentation and Clean ABAP. Each destination carries a policy — read-only, allowed packages, denied tables and tools — the server checks before every call, and an optional audit file logs each tool call with its outcome and policy gate.Willian_Saez, published 2026-09-03Willian_Saez, SAP Community
README
quoted from marianfoo/abap-docs under ISC, readABAP Documentation Scraper & Generator
This project scrapes and processes SAP ABAP Keyword Documentation, optimizing it for consumption by MCP servers and LLMs.
📚 Supported Libraries
| Library | Description | Source URL |
|---|---|---|
| Standard ABAP | Complete Standard ABAP language reference (includes all history) | help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/ |
| ABAP Cloud | ABAP Cloud language reference for cloud development | help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ |
🚀 Quick Start
Prerequisites
- Node.js 22+ (uses native fetch)
- Dependencies:
npm install
Basic Usage
# Scrape HTML documentation
npm run scrape # Standard ABAP (default)
npm run scrape:standard # Standard ABAP explicitly
npm run scrape:cloud # ABAP Cloud
npm run scrape:all # Both libraries
# Generate Markdown, bundles, and enhancements
npm run generate # Standard ABAP (default)
npm run generate:standard # Standard ABAP explicitly
npm run generate:cloud # ABAP Cloud
npm run generate:all # Both libraries
# Complete pipeline (scrape + generate)
npm run pipeline # Standard ABAP (default)
npm run pipeline:standard # Standard ABAP explicitly
npm run pipeline:cloud # ABAP Cloud
npm run pipeline:all # Both libraries
📁 Output Structure
docs/
├── standard/ # Standard ABAP (from "latest")
│ ├── html/ # Raw scraped HTML files
│ ├── md/ # Individual Markdown files (1-10KB each)
│ ├── _manifest.json # Scraping metadata
│ └── files_index.json # File index for MCP integration
└── cloud/ # ABAP Cloud (from "cp")
├── html/ # Raw scraped HTML files
├── md/ # Individual Markdown files (1-10KB each)
├── _manifest.json # Scraping metadata
└── files_index.json # File index for MCP integration
🎯 MCP Server Integration
The generated documentation is optimized for MCP server consumption:
Search Strategy (Priority Order)
- Individual Files (
md/folder) - Best for specific queries - File Index (
files_index.json) - Quick lookup by keywords/categories
Key Features
- ✅ All JavaScript links eliminated - No
javascript:call_link()instances - ✅ Source URLs embedded - Direct links to official SAP documentation
- ✅ Size-optimized - Individual files 1-10KB, perfect for LLM context windows
- ✅ Rich metadata - Categories, keywords for enhanced search
- ✅ Two libraries - Standard ABAP and ABAP Cloud
Recommended Implementation
Use optimized_index.json for the optimal "Individual Files First" search strategy (as recommended in .cursor documentation):
// Load the optimized index
const index = JSON.parse(fs.readFileSync('docs/standard/optimized_index.json'));
// Priority 1: Search individual files (best for LLMs)
const specificResults = index.individualFiles.filter(f =>
f.keywords.some(k => k.includes(query.toLowerCase()))
).sort((a, b) => b.score - a.score);
// Priority 2: Fall back to focused bundles if needed
if (specificResults.length < 5) {
const bundleResults = index.bundles.filter(b => ...);
}
📊 Statistics
- ~6,000+ documentation pages per library
- Zero JavaScript links - all converted to direct URLs
- Two libraries - Standard ABAP and ABAP Cloud
- Multi-tier indexing - Individual files, bundles, mega-bundles, and quick refs
🔧 Advanced Options
Scraping Options
node scripts/scrape.js --library standard --limit 1000 --concurrency 4 --force
node scripts/scrape.js --library cloud --force
Generation Options
node scripts/generate.js --library standard --force
node scripts/generate.js --library cloud --force
Available Flags
| Flag | Description | Default |
|---|---|---|
--library | Library to process (standard or cloud) | standard |
--all | Process both libraries | false |
--force | Force re-scrape/regenerate even if already done | false |
--limit | Maximum number of pages to scrape | Infinity |
--concurrency | Number of concurrent fetch requests | 8 |
📝 Library Support
Supported ABAP libraries (defined in roots.txt):
- Standard ABAP (
standard) - Latest Standard ABAP documentation with full history - ABAP Cloud (
cloud) - ABAP Cloud documentation for cloud development
🎉 Architecture
This streamlined version uses just 2 scripts:
scripts/scrape.js- Clean, focused HTML scrapingscripts/generate.js- Complete MD generation with all enhancements integrated
Integrated Features in generate.js:
- ✅ HTML to Markdown conversion
- ✅ JavaScript link fixing
- ✅ Enhanced metadata generation (frontmatter)
- ✅ Source URL embedding
- ✅ Content optimization for LLM consumption
No complex pipeline scripts or separate enhancement steps - everything is integrated and optimized for maintainability.
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
Flavors
“**Standard ABAP** | Complete Standard ABAP language reference (includes all history)” — abap-docs — README, Supported Libraries
“**ABAP Cloud** | ABAP Cloud language reference for cloud development” — abap-docs — README, Supported Libraries
History in the atlas
- Entered as the repository behind two sentences the corpus already rests on. capability:documentation's abap framing says "The ABAP keyword documentation, the cheat sheets and the RAP tutorials are public repositories", and for the keyword documentation the public repository is this one, not SAP's: mcp-sap-docs carries it as the `abap-docs` submodule (https://github.com/marianfoo/abap-docs.git in .gitmodules), which is where its `abap-docs-standard` and `abap-docs-cloud` offline sources come from. doc-source rather than a provider, because that same capability's abap note states publishing a corpus is not answering the concern. identity.license is the `license` field of package.json; the GitHub API reports no licence for the repository, which is the second sentence of when_not_to_use.
- First seen.
For your agent
- Ref
artifact:marianfoo-abap-docs- JSON
- /artifacts/marianfoo-abap-docs.json
- MCP
- Connecting an agent