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
- Python SAP GUI Scripting Automation: Author robust Python scripts using
win32com.clientto attach to active SAP sessions, navigate transaction codes (TCodes), enter header data, and read ALV grid tables. - 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. - ALV Grid & Table Control Extraction: Parse and export data from complex
GuiGridViewcontrols (GetCellValue,SelectAll,PressToolbarButton). SAPUILandscape.xmlCentralization: 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):
"""
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.2. Enter parameter: sapgui/user_scripting $\rightarrow$ Click Change Value $\rightarrow$ Set to TRUE.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.2. Enable TCP KeepAlive on Windows network interface.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
# 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_scriptingis set toTRUEin transaction RZ11 before executing COM automation. In production scripts, uncheck "Notify when a script attaches to SAP GUI" to enable headless background RPA execution.