Skip to content
Back to skills

Sap Gui

ASecurity

Automate SAP GUI workflows with VBScript or Python, inspect ALV controls, and troubleshoot scripting or landscape configuration.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 22, 2026
ai-agentspythongoshellbashapifrontendsecurity

Works with

  • cursor
  • cli
  • api

Security analysis

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

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

Scanned October 22, 2026

npx -y skills add alivirgo/Major-AI-Skills --skill sap-gui --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sap Gui?

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

Security grade badge for Sap Gui
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alivirgo-sap-gui/badge)](https://www.skillsdirectory.com/skills/alivirgo-sap-gui)

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-gui
description: "Automate SAP GUI workflows with VBScript or Python, inspect ALV controls, and troubleshoot scripting or landscape configuration."
category: erp
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
tags: ["sap-gui", "sap-scripting", "alv-grid", "s4hana", "abap-transactions", "saplogon", "claude"]
tools: ["claude", "cursor", "gemini", "codex"]
---

# SAP GUI Desktop & Scripting Automation AI Skill Guide (Claude)

## Overview & Engine Architecture
SAP GUI for Windows is the native desktop presentation tier for SAP ECC and SAP S/4HANA, communicating via the binary **DIAG protocol** (TCP port `3200 + SystemNumber`). SAP GUI features an embedded **SAP GUI Scripting Engine (COM API)** for automated robotic process automation (RPA), interactive **ALV Grid controls (`GuiGridView`)**, and centralized connection management via **`SAPUILandscape.xml`**. Claude operates as an Enterprise SAP Basis Administrator and RPA Automation Specialist, specializing in **Python / VBScript SAP GUI Scripting**, **RZ11 server scripting parameter enablement**, **ALV grid table scraping**, and **SNC single sign-on configuration**.

### SAP GUI Client & NetWeaver Architecture

```
┌─────────────────────────────────────────────────────────────┐
│                 SAP GUI Presentation Stack                  │
│                                                             │
│  Client Presentation & Scripting Engine                     │
│  ├── SAP Logon Client (`saplogon.exe` / `SAPUILandscape.xml`)│
│  ├── SAP GUI Scripting Engine COM API (`GuiApplication`)    │
│  └── Dynpro Screen & ALV Grid Controls (`GuiGridView`)      │
│                                                             │
│  Network & Security Protocol                                │
│  ├── SAP DIAG Binary Stream (TCP Port 3200-3299)            │
│  ├── Secure Network Communication (SNC / Kerberos SSO)      │
│  └── SAProuter Gateway Relays (`/H/saprouter/S/3299/...`)   │
│                                                             │
│  Application Server & ABAP Runtime                          │
│  ├── ABAP Dispatcher & Work Process Farm (DIA/UPD/BGD)      │
│  └── Profile Parameters (`sapgui/user_scripting = TRUE`)    │
└─────────────────────────────────────────────────────────────┘
```

---

## Operational Capabilities & Agent Directives

1. **Python SAP GUI Scripting Automation**: Author robust Python scripts using `win32com.client` to attach to active SAP sessions, navigate transaction codes (TCodes), enter header data, and read ALV grid tables.
2. **Server-Side Scripting Security Enablement**: Diagnose and configure SAP profile parameters (`sapgui/user_scripting`, `sapgui/user_scripting_disable_recording`, `sapgui/user_scripting_set_readonly`) in transaction **RZ11**.
3. **ALV Grid & Table Control Extraction**: Parse and export data from complex `GuiGridView` controls (`GetCellValue`, `SelectAll`, `PressToolbarButton`).
4. **`SAPUILandscape.xml` Centralization**: Manage enterprise connection definitions, message servers, routers, and SNC partner names across client fleets.

---

## Production Python Automation: Automated SAP GUI Session Attacher & ALV Scraper

Save this script as `sap_gui_scraper.py` (requires `pip install pywin32`):

```python
"""
SAP GUI Scripting API Automation (Python / COM)
Attaches to active SAP GUI session, executes TCode SE16N, and exports ALV grid data.
"""

import sys
import win32com.client

def attach_sap_session(session_index: int = 0):
    try:
        # Access Running SAP GUI COM Object via ROT (Running Object Table)
        sap_gui_auto = win32com.client.GetObject("SAPGUI")
        if not sap_gui_auto:
            print("Error: SAP GUI is not running.")
            return None

        application = sap_gui_auto.GetScriptingEngine
        if not application:
            print("Error: Scripting Engine not available (check RZ11 parameters).")
            return None

        connection = application.Children(0)
        session = connection.Children(session_index)
        print(f"Connected to SAP System: {session.Info.SystemName} (Client: {session.Info.Client}, User: {session.Info.User})")
        return session

    except Exception as e:
        print(f"Failed to attach to SAP GUI COM engine: {e}")
        return None

def query_sales_orders(session, max_rows: int = 25):
    try:
        # 1. Navigate to Table Viewer Transaction (SE16N)
        session.findById("wnd[0]/tbar[0]/okcd").text = "/nSE16N"
        session.findById("wnd[0]").sendVKey(0) # Press Enter

        # 2. Enter Table Name (VBAK - Sales Document Header)
        session.findById("wnd[0]/usr/ctxtGD-TAB").text = "VBAK"
        session.findById("wnd[0]/usr/txtGD-MAX_LINES").text = str(max_rows)
        session.findById("wnd[0]/tbar[1]/btn[8]").press() # Execute (F8)

        # 3. Read Results from ALV Grid Control
        grid = session.findById("wnd[0]/usr/cntlRESULT_LIST/shellcont/shell")
        row_count = grid.RowCount
        print(f"\n--- [EXTRACTED {row_count} SALES ORDERS FROM VBAK] ---")

        for r in range(min(row_count, max_rows)):
            sales_doc = grid.GetCellValue(r, "VBELN")
            doc_type  = grid.GetCellValue(r, "AUART")
            net_val   = grid.GetCellValue(r, "NETWR")
            currency  = grid.GetCellValue(r, "WAERK")
            cust_no   = grid.GetCellValue(r, "KUNNR")
            print(f"• Order: {sales_doc:<10} | Type: {doc_type:<4} | Amount: {net_val:>10} {currency} | Customer: {cust_no}")

        # Return to main screen
        session.findById("wnd[0]/tbar[0]/okcd").text = "/n"
        session.findById("wnd[0]").sendVKey(0)

    except Exception as e:
        print(f"Transaction automation error: {e}")

if __name__ == "__main__":
    sess = attach_sap_session(0)
    if sess:
        query_sales_orders(sess, max_rows=10)
```

---

## Technical Troubleshooting Matrix

| Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway |
| :--- | :--- | :--- |
| **`Scripting API Error: The scripting API is not installed or enabled`** | Server-side profile parameter `sapgui/user_scripting` is set to `FALSE` in the SAP instance. | 1. In SAP GUI, log in as Basis Administrator $\rightarrow$ Open TCode **RZ11**.<br>2. Enter parameter: `sapgui/user_scripting` $\rightarrow$ Click **Change Value** $\rightarrow$ Set to `TRUE`.<br>3. Check client options in *SAP GUI Options $\rightarrow$ Accessibility & Scripting $\rightarrow$ Enable Scripting*. |
| **Session Disconnects: `WSAECONNRESET: Connection to partner broken`** | Network firewall dropped idle TCP connection on port 3200 or SAP dispatcher `rdisp/keepalive` timed out. | 1. In RZ11, increase `rdisp/keepalive` to `1200` seconds.<br>2. Enable TCP KeepAlive on Windows network interface.<br>3. Verify SAProuter connection string. |
| **ALV Grid Selection Fails: `Cannot find GUI element wnd[0]/usr/cntl...`** | The report was executed in Classical List mode rather than modern ALV Grid Control mode. | In report selection screen, ensure **ALV Grid Display** is checked, or adjust the control path. |
| **SAP Shortcut Fails: `sapshcut.exe password rejected`** | SAP GUI 7.70/8.0 security restriction disallowing plaintext password arguments in command-line shortcuts. | Configure **SNC Single Sign-On (Kerberos)** or launch shortcut with user prompt. |

---

## Command Line Syntax & Shortcuts

```bash
# 1. Launch SAP GUI Directly into Transaction via sapshcut
"C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe" -system=PRD -client=100 -user=JSMITH -command="/nVA01"

# 2. Launch SAP Logon with Dedicated Landscape File
"C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe" /LANDSCAPE="\\shared_nas\sap\SAPUILandscape.xml"
```

### Essential File Locations
- **Master Connection Landscape**: `%APPDATA%\SAP\Common\SAPUILandscape.xml`
- **User Settings**: `%APPDATA%\SAP\SAPLogon\SAPLogonTree.xml`
- **SAP GUI Trace Logs**: `%APPDATA%\SAP\SAP GUI\Traces\`

---

## Agent Operational Directive
> **MANDATORY**: Verify that `sapgui/user_scripting` is set to `TRUE` in transaction RZ11 before executing COM automation. In production scripts, uncheck "Notify when a script attaches to SAP GUI" to enable headless background RPA execution.

Files in this skill

  • SKILL.md8.4 KB
  • gemini.md6.1 KB
  • gpt.md7.2 KB

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.