From sc4sap
Creates ABAP objects (classes, interfaces, programs, function modules, tables, structures); confirms transport/package, auto-generates code via MCP, activates.
npx claudepluginhub babamba2/superclaude-for-sap --plugin sc4sapThis skill uses the workspace's default tool permissions.
Guided ABAP object creation workflow. Hybrid mode: confirms transport and package interactively, then auto-creates, writes initial code, and activates the object.
Creates ABAP programs (Report/CRUD/ALV/Batch) with Main+Include structure, OOP or procedural paradigms, and full agent-driven coding/QA pipeline. For new executable REPORTs from scratch.
Assists with ABAP code for SAP systems: internal tables, structures, ABAP SQL, OOP, RAP, CDS views, EML statements, ABAP Cloud, strings, dynamic programming, RTTI/RTTC, field symbols, data references, exceptions, unit testing.
Provides SAP ABAP CDS reference for data modeling, views, entities, annotations, associations, parameters, functions, CASE expressions, DCL access control, CURR/QUAN types, troubleshooting, ABAP querying, and SALV IDA. For ABAP 7.4+ to Cloud.
Share bugs, ideas, or general feedback.
Guided ABAP object creation workflow. Hybrid mode: confirms transport and package interactively, then auto-creates, writes initial code, and activates the object.
sc4sap:create-object handles the full lifecycle of creating a new ABAP object: determining the right object type, confirming package and transport assignment, creating the object via MCP, generating a well-structured initial implementation, and activating it — all in one workflow.<Response_Prefix>
Every response triggered by this skill MUST begin with [Model: <main-model> · Dispatched: <sub-summary>] per ../../common/model-routing-rule.md § Response Prefix Convention.
</Response_Prefix>
<Phase_Banner>
Multi-phase skill. Before each Agent(...) dispatch, emit ▶ phase=<id> (<label>) · agent=<name> · model=<Opus 4.7|Sonnet 4.6|Haiku 4.5> per ../../common/model-routing-rule.md § Phase Banner Convention.
</Phase_Banner>
<Use_When>
<Do_Not_Use_When>
Update* tools (UpdateClass, UpdateProgram, UpdateInclude, etc.)/sc4sap:team for parallel orchestration or /sc4sap:create-program for a full program with includes<Session_Trust_Bootstrap> MANDATORY — runs as Step 0 before any MCP call or user interaction.
Invoke /sc4sap:trust-session with parent_skill=sc4sap:create-object to pre-grant all MCP tool + file-op permissions for this session (eliminates per-tool "Allow this tool?" prompts during Create* + activation flow).
.sc4sap/session-trust.log already has a line within the last 24h, skip silently.Agent dispatches within this skill MUST pass mode: "dontAsk".Full spec: see ../trust-session/SKILL.md.
</Session_Trust_Bootstrap>
<Supported_Object_Types>
| Type | MCP Create Tool | Description |
|---|---|---|
| Class | CreateClass | ABAP OO class (local or global) |
| Interface | CreateInterface | ABAP OO interface |
| Program | CreateProgram | Executable program (report) |
| Function Module | CreateFunctionModule + CreateFunctionGroup | RFC-capable function module |
| Table | CreateTable | Transparent database table |
| Structure | CreateStructure | ABAP structure (type definition) |
| Data Element | CreateDataElement | Domain-based data element |
| Domain | CreateDomain | Value domain with fixed values or ranges |
| CDS View | CreateView | Core Data Services view |
| Service Definition | CreateServiceDefinition | OData service definition |
| Service Binding | CreateServiceBinding | OData service binding (UI5/API) |
| Behavior Definition | CreateBehaviorDefinition | RAP behavior definition |
| Screen | CreateScreen | Dynpro screen (selection screen or dialog) |
| GUI Status | CreateGuiStatus | PF-Status (menu bar, toolbar, function keys) |
| </Supported_Object_Types> |
<ECC_DDIC_Fallback>
MANDATORY: Read ../../common/ecc-ddic-fallback.md before creating any Table / Data Element / Domain. It defines when the ECC branch triggers, the helper-program naming rules, the strict template format (mirroring the files under ecc/), and the hard constraints ($TMP only, no activate, no CTS).
</ECC_DDIC_Fallback>
<Field_Typing_Rule>
MANDATORY for every Table / Structure / Table Type field-type decision (standard MCP flow and ECC helper-program fallback): read ../../common/field-typing-rule.md.
Priority: Standard DE (1) → existing CBO DE (2) → new CBO DE (3) → Data Type + Length (4, last resort). Raw primitives like LIFNR CHAR 10 / MATNR CHAR 40 / BUKRS CHAR 4 are forbidden when an authoritative SAP data element exists. Before each field, run SearchObject against DTEL and check .sc4sap/cbo/<MODULE>/<PACKAGE>/inventory.json.
</Field_Typing_Rule>
<Function_Module_Rule>
MANDATORY for every UpdateFunctionModule source emission: read ../../common/function-module-rule.md.
FM signature is stored inline in the FUNCTION statement source (SAP parses it on write and updates TFDIR/FUPARAREF automatically). There is no separate "parameters" endpoint. Every FM source MUST declare IMPORTING / EXPORTING / CHANGING / TABLES / EXCEPTIONS clauses directly between FUNCTION {name} and the first .. Never emit the placeholder " You can use the template 'functionModuleParameter' ... line, never use *"*"Local Interface: blocks as a substitute, never declare shadow locals like lv_iv_xxx TYPE ... to stand in for missing parameters.
Remote-Enabled (RFC) flag is a separate concern — stored in TFDIR.FMODE, not in source. Currently requires manual SE37 Properties update; flag this in the completion report. </Function_Module_Rule>
<Hybrid_Mode> Confirm (interactive):
GetPackage if unsure)ListTransports, or create new)Auto-execute (after confirmation):
GetInactiveObjects
</Hybrid_Mode><Workflow_Steps>
MANDATORY: Follow the step sequence defined in workflow-steps.md.
Per-step model allocation (skill main thread runs on Haiku 4.5 per frontmatter; creation + report delegate to agents):
| Step | Owner | Model | Role |
|---|---|---|---|
| 0 Trust | skill-to-skill | Haiku | permission bootstrap |
| 1 Classify | main | Haiku | keyword → object type |
| 2 Metadata | main | Haiku | name / package / transport / description (Q&A + SearchObject + ListTransports + naming validation) |
| 3 Pre-Creation Check | main | Haiku | SearchObject (name-exists guard) |
| 3.5 Version Branch | main | Haiku | SAP_VERSION ECC vs S/4 routing |
| 4 + 5 + 6 Create + Implement + Activate (standard flow) | sap-executor with model: "opus" override | Opus 4.7 | One dispatch covers: CreateClass/CreateProgram/... → UpdateClass/UpdateProgram/... with initial implementation code → ActivateObjects → GetInactiveObjects verify. The Opus override is justified because Step 5 is novel code generation (common/model-routing-rule.md § Tier 2) — field typing priority 1–4, class constructor + method signatures, FM inline parameter declarations, etc. |
| 4-ECC DDIC Helper Program (ECC fallback) | sap-executor with model: "opus" override | Opus 4.7 | ECC-only branch for Table/DTEL/DOMA. Executor picks the matching template from skills/create-object/ecc/, substitutes names, fills the field list per common/field-typing-rule.md, and CreateProgram + UpdateProgram + ActivateObjects the helper into $TMP. |
| 7 Completion Report | sap-writer (Haiku base — no override) | Haiku 4.5 | Pure formatting from the executor's structured return. Localizes to the user's current conversation language. For ECC fallback, uses the mandatory report format in workflow-steps.md § Step 7 verbatim (do NOT rephrase the ⚠ header + 3-step SE38/SE11 checklist). |
At Step 2 (metadata collection) — when the object belongs to a specific SAP module (MM table, SD structure, PS data element, …) — the main thread reads SAP_ACTIVE_MODULES from sap.env / config.json and consults ../../common/active-modules.md. If companion modules are active, proactively suggest integration fields (e.g., creating an MM CBO table in a landscape with PS active → suggest adding PS_POSID / AUFNR). Do NOT add silently — propose to user and let them accept/decline, then pass the confirmed field list through to the executor dispatch.
</Workflow_Steps>
<Naming_Convention_Enforcement>
MANDATORY: Always read configs/common/naming-conventions.md for the complete, authoritative ABAP naming conventions reference before creating any object.
The reference file covers:
Z{MODULE}_... patternQuick validation checklist (applied before every create):
Z or Y (customer namespace)[A-Z0-9_]ZCL_ for classes, ZIF_ for interfaces)If the user-provided name violates any rule, suggest a compliant alternative based on configs/common/naming-conventions.md before proceeding.
</Naming_Convention_Enforcement>
<MCP_Tools_Used>
SearchObject — check for existing objectsListTransports — list available transportsGetPackage — verify package existenceCreateClass / CreateInterface / CreateProgram / CreateFunctionGroup / CreateFunctionModule / CreateTable / CreateStructure / CreateDataElement / CreateDomain / CreateView / CreateServiceDefinition / CreateServiceBinding / CreateBehaviorDefinition / CreateScreen / CreateGuiStatusUpdateClass / UpdateProgram / UpdateScreen / UpdateGuiStatus / etc. — write initial implementationGetInactiveObjects — verify activationCreateProgram + UpdateProgram (target $TMP). CreateTable / CreateDataElement / CreateDomain must NOT be attempted when SAP_VERSION = ECC.
</MCP_Tools_Used>Task: {{ARGUMENTS}}