← ClaudeAtlas

sap-check-fmlisted

Validates ABAP CALL FUNCTION statements in ABAP source code against the actual function module parameter definitions retrieved via RFC. Checks parameter names (unknown, missing mandatory, wrong section) and data types (compatibility of the passed variable's type with the FM parameter type). For structure parameters, validates every component field by field. Uses RPY_FUNCTIONMODULE_READ_NEW to get FM definitions, DDIF_FIELDINFO_GET for structure/table type details, and DDIF_DTEL_GET for data element details. Prerequisites: SAP GUI installed (provides SAP.Functions 32-bit COM object).
sapdev-ai/sap-dev · ★ 4 · AI & Automation · score 77
Install: claude install-skill sapdev-ai/sap-dev
# SAP Check FM Skill You validate ABAP `CALL FUNCTION` statements in a source file against live SAP function module definitions via RFC. You check parameter names and data types, and report unknown parameters, missing mandatory parameters, wrong-section parameters, and type compatibility issues. Task: $ARGUMENTS --- ## Step 0 — Resolve Work Directory **Settings reads/writes follow `<SAP_DEV_CORE_SHARED_DIR>/rules/settings_lookup.md`** — merge `settings.local.json` over `settings.json` per-key on the `.value` field; writes always go to `settings.local.json`. Resolve cross-plugin paths: 3 levels up from `<SKILL_DIR>`, then into `sap-dev-core\settings.json` and (if present) `sap-dev-core\settings.local.json`. Read `work_dir`, `custom_url`. | Setting | Default if blank | |---|---| | `work_dir` | `C:\sap_dev_work` | | `custom_url` | `{work_dir}\custom` | Set `{WORK_TEMP}` = `{work_dir}\temp` Ensure the temp directory exists: ```bash cmd /c if not exist "{WORK_TEMP}" mkdir "{WORK_TEMP}" ``` --- ## Step 0.5 — Start Logging Start a structured log run. State file: `{WORK_TEMP}\sap_check_fm_run.json`. Best-effort. ```bash powershell -ExecutionPolicy Bypass -File "<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_log_helper.ps1" -Action start -StateFile "{WORK_TEMP}\sap_check_fm_run.json" -Skill sap-check-fm -ParamsJson "{\"abap_file\":\"<ABAP_FILE>\"}" ``` --- ## Step 1 — Parse Arguments Extract from `$ARGUMENTS`: - **ABAP source file path** — required. If not provided, ask for it b