1"use strict";(self.webpackChunkerpl_docusaurus=self.webpackChunkerpl_docusaurus||[]).push([[6533],{15538:(e,s,t)=>{t.d(s,{A:()=>r});const r=t.p+"assets/images/ddic-a6d1780590411e519c10e95ac9613eba.gif"},18407:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"erpl-adt/index","title":"ERPL-ADT Overview","description":"A CLI and MCP server for the SAP ADT REST API \u2014 give AI coding agents real-time access to ABAP.","source":"@site/docs/erpl-adt/index.md","sourceDirName":"erpl-adt","slug":"/erpl-adt/","permalink":"/docs/erpl-adt/","draft":false,"unlisted":false,"editUrl":"https://github.com/datazoode/erpl-landingpage/tree/main/docs/erpl-adt/index.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1,"title":"ERPL-ADT Overview","description":"A CLI and MCP server for the SAP ADT REST API \u2014 give AI coding agents real-time access to ABAP.","keywords":["erpl-adt","sap","abap","adt","cli","mcp","ai","claude","cursor","gemini"]},"sidebar":"docs","previous":{"title":"functions","permalink":"/docs/erpl-odata/functions"},"next":{"title":"BW/4HANA Modeling","permalink":"/docs/erpl-adt/bw"}}');var n=t(74848),a=t(28453);const i={sidebar_position:1,title:"ERPL-ADT Overview",description:"A CLI and MCP server for the SAP ADT REST API \u2014 give AI coding agents real-time access to ABAP.",keywords:["erpl-adt","sap","abap","adt","cli","mcp","ai","claude","cursor","gemini"]},d="ERPL-ADT Overview",l={},o=[{value:"Core Capabilities",id:"core-capabilities",level:2},{value:"Installation",id:"installation",level:2},{value:"Quick Start",id:"quick-start",level:2},{value:"In Action",id:"in-action",level:2},{value:"Documentation",id:"documentation",level:2},{value:"How It Works",id:"how-it-works",level:2},{value:"Community & Support",id:"community--support",level:2},{value:"License",id:"license",level:2}];function c(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.header,{children:(0,n.jsx)(s.h1,{id:"erpl-adt-overview",children:"ERPL-ADT Overview"})}),"\n",(0,n.jsxs)(s.p,{children:["A single binary that speaks the SAP ADT REST API \u2014 the same protocol Eclipse uses. As a ",(0,n.jsx)(s.strong,{children:"CLI"})," it scripts ABAP work from a terminal or CI; as an ",(0,n.jsx)(s.strong,{children:"MCP server"})," it gives AI coding agents like Claude Code, Cursor, and Gemini full access to your SAP system. No Eclipse, no SAP NW RFC SDK, no JVM."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"erpl-adt searching ABAP objects",src:t(68710).A+"",width:"1280",height:"520"})}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h2,{id:"core-capabilities",children:"Core Capabilities"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Search & browse"}),"\nFind ABAP classes, programs, function groups, data dictionary tables, CDS views and packages by name pattern or type."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Read & write source"}),"\nRead ABAP source with syntax highlighting; write back with auto-locking, transport wiring, and activation in one step."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Run tests & checks"}),"\nTrigger ABAP Unit and ATC quality checks from the command line. Exit codes report test pass/fail and check severity."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Manage transports"}),"\nCreate, list, and release transport requests. Pipe to JSON for CI integration."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"BW/4HANA modeling"}),"\nSearch the BW catalog across ADSO/HCPR/DTPA/TRFN/RSDS/QUERY, inspect InfoProvider field structures, and export an InfoArea's dataflow as Mermaid for documentation or diff review. See the ",(0,n.jsx)(s.a,{href:"/docs/erpl-adt/bw",children:"BW guide"}),"."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Metadata catalog"}),"\nBuild a unified, cross-domain catalog (ABAP + DDIC + CDS + BW) into a single DuckDB file, then search, trace lineage, and browse it in a built-in web explorer \u2014 offline from SAP, in milliseconds. Hybrid full-text + semantic search, a business-glossary overlay, and incremental sync. See the ",(0,n.jsx)(s.a,{href:"/docs/erpl-adt/catalog",children:"Catalog guide"}),"."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"MCP server"}),"\nThe same operations exposed as ",(0,n.jsx)(s.a,{href:"https://modelcontextprotocol.io/",children:"Model Context Protocol"})," tools \u2014 drop into any MCP client and let the agent decide which tools to call. See the ",(0,n.jsx)(s.a,{href:"/docs/erpl-adt/mcp",children:"MCP guide"}),"."]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h2,{id:"installation",children:"Installation"}),"\n",(0,n.jsx)(s.p,{children:"The quickest way \u2014 no download needed:"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-bash",children:"uvx erpl-adt --help\n"})}),"\n",(0,n.jsx)(s.p,{children:"Or install permanently:"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-bash",children:"pip install erpl-adt\n"})}),"\n",(0,n.jsxs)(s.p,{children:["Or grab a static binary for your platform from the ",(0,n.jsx)(s.a,{href:"https://github.com/datazooDE/erpl-adt/releases/latest",children:"latest release"}),":"]}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Platform"}),(0,n.jsx)(s.th,{children:"Architecture"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Linux"}),(0,n.jsx)(s.td,{children:"x86_64"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"macOS"}),(0,n.jsx)(s.td,{children:"arm64, x86_64"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Windows"}),(0,n.jsx)(s.td,{children:"x64"})]})]})]}),"\n",(0,n.jsx)(s.hr,{}
1),"\n",(0,n.jsx)(s.h2,{id:"quick-start",children:"Quick Start"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-bash",children:"# Save credentials (prompts for the password)\nerpl-adt login --host sap.example.com --port 44300 --https --user DEVELOPER\n\n# Search for classes\nerpl-adt search 'ZCL_FLIGHT*' --type CLAS --max 20\n\n# Read source with syntax highlighting\nerpl-adt source read ZCL_FLIGHT_CTRL --color\n"})}),"\n",(0,n.jsxs)(s.p,{children:["Every command accepts ",(0,n.jsx)(s.code,{children:"--json"})," for machine-readable output."]}),"\n",(0,n.jsxs)(s.p,{children:["For a guided walkthrough see the ",(0,n.jsx)(s.a,{href:"/docs/get_started/quickstart-erpl-adt",children:"5-minute quickstart"}),"."]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h2,{id:"in-action",children:"In Action"}),"\n",(0,n.jsxs)(s.p,{children:["Read a data-dictionary table \u2014 ",(0,n.jsx)(s.code,{children:"AbapType"})," and ",(0,n.jsx)(s.code,{children:"CheckTable"})," columns are resolved automatically:"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"erpl-adt reading DDIC table SFLIGHT",src:t(15538).A+"",width:"1280",height:"660"})}),"\n",(0,n.jsx)(s.p,{children:"Read ABAP source with built-in syntax highlighting:"}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"erpl-adt reading ABAP source with color",src:t(35273).A+"",width:"1280",height:"720"})}),"\n",(0,n.jsx)(s.p,{children:"Browse a package recursively to enumerate everything it contains:"}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"erpl-adt traversing a package tree",src:t(30822).A+"",width:"1280",height:"660"})}),"\n",(0,n.jsxs)(s.p,{children:["The BW catalog, ADSO field structure, and dataflow-as-Mermaid live on the ",(0,n.jsx)(s.a,{href:"/docs/erpl-adt/bw",children:"BW page"}),"."]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h2,{id:"documentation",children:"Documentation"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/docs/erpl-adt/bw",children:"BW/4HANA Modeling"})," \u2014 catalog search, ADSO inspection, Mermaid dataflow export"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/docs/erpl-adt/catalog",children:"Metadata Catalog"})," \u2014 build a cross-domain DuckDB catalog with search, lineage, and a web explorer"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/docs/erpl-adt/mcp",children:"MCP Server"})," \u2014 wire erpl-adt into Claude Code, Cursor, Gemini"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/docs/erpl-adt/reference",children:"Command Reference"})," \u2014 every group, action, and flag"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/docs/get_started/quickstart-erpl-adt",children:"Quickstart"})," \u2014 5 minutes from install to first MCP call"]}),"\n"]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h2,{id:"how-it-works",children:"How It Works"}),"\n",(0,n.jsx)(s.p,{children:"ADT communicates with SAP over a well-structured REST API: resource URIs, XML payloads, stateful sessions for locking. erpl-adt speaks the same protocol Eclipse does \u2014 so anything Eclipse can do against your system, the CLI and MCP server can do too."}),"\n",(0,n.jsxs)(s.p,{children:["The MCP mode is the interesting part. It means any AI coding agent can talk to your SAP system \u2014 search code, read source, run tests, write fixes \u2014 through a standardized protocol. The agent decides which tools to call and in what order. For the full story, read the ",(0,n.jsx)(s.a,{href:"/blog/introducing-erpl-adt",children:"announcement post"}),"."]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h2,{id:"community--support",children:"Community & Support"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"GitHub"}),": ",(0,n.jsx)(s.a,{href:"https://github.com/datazooDE/erpl-adt",children:"datazooDE/erpl-adt"})]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Releases"}),": ",(0,n.jsx)(s.a,{href:"https://github.com/datazooDE/erpl-adt/releases",children:"github.com/datazooDE/erpl-adt/releases"})]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Issues & feature requests"}),": GitHub Issues on the same repo"]}),"\n"]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h2,{id:"license",children:"License"}),"\n",(0,n.jsxs)(s.p,{children:["erpl-adt is licensed under the Apache License 2.0. See the ",(0,n.jsx)(s.a,{href:"https://github.com/datazooDE/erpl-adt/blob/main/LICENSE",children:"LICENSE file"}),"."]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Give your terminal and your AI agents the same ABAP superpowers Eclipse has \u2014 without Eclipse."})," \ud83e\udd16"]})]})}function h(e={}){const{wrapper:s}={...(0,a.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},28453:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>d});var r=t(96540);const n={},a=r.createContext(n);function i(e){const s=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),r.createElement(a.Provider,{value:s},e.children)}},30822:(e,s,t)=>{t.d(s,{A:()=>r});const r=t.p+"assets/images/package-cc85dce885e373e267d94d2d81722b92.gif"},35273:(e,s,t)=>{t.d(s,{A:()=>r});const r=t.p+"assets/images/source-9ab9a19a1194646ae4029c15bcd4ee16.gif"},68710:(e,s,t)=>{t.d(s,{A:()=>r});const r=t.p+"assets/images/search-a45efb2d7888bb582738d7b73ea93f1c.gif"}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.