{"ref":"capability:gui-automation","page":"/capabilities/gui-automation","json":"/capabilities/gui-automation.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"gui-automation","name":"Driving the SAP GUI","domain":"developer-experience","ecosystems":["abap"],"universal":false,"description":"Operating the SAP GUI programmatically to perform tasks or test interactions through the actual screen. [Agent access to your code](capability:agent-code-access) works with development objects instead of the user interface.","short":"Operating the SAP GUI programmatically","core_coverage":{"state":"community-only","assessed_at":"2026-09-10","where_it_stops":"At the API and the switch that enables it. SAP ships the GUI Scripting interface and the option in SAP Logon that turns it on, and everything above that — sessions, waits, recovery, screenshots — is written by whoever is driving it.","note":"SAP's Scripting API is an interface inside the GUI and not something published as an artifact, so the core side of this concern has no entry of its own.\n\nThis is also the corner of the corpus where SAP's API policy is most directly in question. Scripting the GUI to move business data is not development tooling, and the distinction belongs in the decision rather than in a footnote — see the [SAP API Policy Evidence Skill](artifact:marianfoo-sap-api-policy-skill) on [tool governance](capability:tool-governance).","community_adds":"MCP servers that drive the desktop GUI through the Scripting API, such as [kts982/mcp-sap-gui](artifact:kts982-mcp-sap-gui), through RoboSAPiens, as [SAPient MCP](artifact:toni-ramchandani-sapient-mcp) does, or by screen coordinates with a screenshot after each action, as [mcp-sap-gui](artifact:mario-andreschak-mcp-sap-gui) does. [sapgui.mcp](artifact:hochfrequenz-sapgui-mcp) also reaches the Web GUI and is built for testing. [jrgkraus/tool-bi](artifact:jrgkraus-tool-bi) runs a transaction as batch input from ABAP, without a screen, and SAP's own [joule-gui-automation-and-integration](artifact:sap-samples-joule-gui-automation-and-integration) sample drives a GUI session from Joule."},"coverage_by_flavor":{"abap-cloud":{"state":"not-applicable","assessed_at":"2026-09-14","note":"SAP BTP ABAP environment and SAP S/4HANA Cloud Public Edition both mandate ABAP for Cloud Development, and SAP's own guidance for it states there is no access to SAP GUI at all. With no SAP GUI session open, there is nothing for the Scripting API to attach to and nothing for a script to drive.","sources":[{"url":"https://github.com/SAP-samples/abap-cheat-sheets/blob/main/19_ABAP_for_Cloud_Development.md","title":"SAP-samples/abap-cheat-sheets: ABAP for Cloud Development","checked":"2026-09-14","quote":"There is no access to SAP GUI (transactions SE80, SE24 etc. you may know from classic ABAP)"},{"url":"https://pages.community.sap.com/topics/abap/abap-cloud-faq","title":"SAP Community: ABAP Cloud FAQ","checked":"2026-09-14","quote":"SAP BTP ABAP environment: all releases (mandatory); S/4HANA Cloud Public Edition: since 2208 for new customers (mandatory)"}]}},"history":[{"date":"2026-09-10","field":"entry","from":null,"to":"created","reason":"Four artifacts drive SAP's own UI and the corpus had no concern for them — filing them on agent access to your code would have been wrong, because none of them reads an object or knows what ADT is. Named on the ABAP door because the GUI is the ABAP system's UI."},{"date":"2026-09-14","field":"coverage_by_flavor.abap-cloud","from":null,"to":"not-applicable","reason":"SAP's own ABAP Cloud documentation states there is no access to SAP GUI in the SAP BTP ABAP environment or SAP S/4HANA Cloud Public Edition, both of which mandate ABAP Cloud, and none of the four ABAP-door providers of this capability states abap-cloud support — all four state only standard-abap."},{"date":"2026-10-14","field":"normative_relevance","from":null,"to":"SAP API Policy, sections 2.2.2, 3","reason":"The GUI servers' boundaries each restated the policy in the atlas's own words; it belongs to the concern, sourced to the policy."},{"date":"2026-10-17","field":"description","from":"Operating SAP's own user interface as a program rather than as a person — the desktop GUI or the Web GUI, driven through the Scripting API. Reached for when a transaction has no API at all, and increasingly when a change needs testing against the real screen rather than against the layer beneath it. Distinct from [agent access to your code](capability:agent-code-access), which reaches the objects through ADT and never sees a screen.","to":"Operating the SAP GUI programmatically to perform tasks or test interactions through the actual screen. [Agent access to your code](capability:agent-code-access) works with development objects instead of the user interface.","reason":"Keep the technology that defines the concern in the default; move implementation detail to framing_by_ecosystem.abap. Maintainer-requested scope audit."},{"date":"2026-10-26","field":"core_coverage.state, core_coverage.relationship","from":"core-and-community (relationship: unassessed)","to":"community-only","reason":"Reassessed against the graph (check:capabilities): every provider counting for the ABAP door is independent, the SAP sample is not a presence, and the block states no sourced what_core_does, so no core presence is recorded."},{"date":"2026-10-26","field":"core_coverage.note","from":"Every provider here is independent and all of them sit on SAP's Scripting API, which is not an entry: ... So core-and-community records that both are present without an artifact on the core side.","to":"SAP's Scripting API is an interface inside the GUI and not something published as an artifact, so the core side of this concern has no entry of its own.","reason":"Reassessed against the graph (check:capabilities): the sentence explained a state the providers contradict and made a claim about all providers, which one coordinate-based server and a batch input package do not fit."},{"date":"2026-10-26","field":"core_coverage.community_adds","from":"Four takes on the same API: the original and most used, a Robot Framework foundation, a CI-and-releases packaging, and one that drives the Web GUI as well as the desktop and is built for testing.","to":"MCP servers that drive the desktop GUI through the Scripting API, through RoboSAPiens or by screen coordinates; sapgui.mcp also reaches the Web GUI; tool-bi runs batch input without a screen; SAP's Joule sample drives a GUI session.","reason":"Reassessed against the graph (check:capabilities): removed the count and the popularity wording, and named the kinds, including batch input (jrgkraus-tool-bi) and SAP's sample, which the text never named."}],"drafted_with_ai":true,"normative_relevance":[{"instrument":"instrument:sap-api-policy-v4-2026a","prominence":"prominent","sections":["2.2.2","3"],"applies_when":"An MCP server drives SAP GUI for an agent, through its Scripting API or the screen.","note":"Driving the user interface for an agent is still an agent executing a sequence of actions against the system. Check whether section 2.2.2 applies to the design, and that the user interface is not used as a way around the controls section 3 names.","applies_to":{"ecosystems":["abap"]},"sources":[{"url":"https://help.sap.com/doc/sap-api-policy/latest/en-US/API_Policy_latest.pdf","title":"SAP API Policy v.4.2026a","checked":"2026-10-14","quote":"Customers, partners, and third parties must not bypass, disable, or otherwise circumvent API Controls"}]}],"framing_by_ecosystem":{"abap":{"description":"Operating SAP's own user interface as a program rather than as a person — the desktop GUI or the Web GUI, driven through the Scripting API. Reached for when a transaction has no API at all, and increasingly when a change needs testing against the real screen rather than against the layer beneath it. Distinct from [agent access to your code](capability:agent-code-access), which reaches the objects through ADT and never sees a screen."}}},"sap_delivery":{"door":"abap","all":null,"by_flavor":{"standard-abap":null,"abap-cloud":null}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:kts982-mcp-sap-gui","name":"kts982/mcp-sap-gui","json":"/artifacts/kts982-mcp-sap-gui.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:mario-andreschak-mcp-sap-gui","name":"mcp-sap-gui","json":"/artifacts/mario-andreschak-mcp-sap-gui.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:hochfrequenz-sapgui-mcp","name":"sapgui.mcp","json":"/artifacts/hochfrequenz-sapgui-mcp.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:toni-ramchandani-sapient-mcp","name":"SAPient MCP","json":"/artifacts/toni-ramchandani-sapient-mcp.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:jrgkraus-tool-bi","name":"tool-bi","json":"/artifacts/jrgkraus-tool-bi.json","ecosystem":"abap","origin_ring":"independent"}],"samples":[{"ref":"artifact:sap-samples-joule-gui-automation-and-integration","name":"SAP-samples/joule-gui-automation-and-integration","json":"/artifacts/sap-samples-joule-gui-automation-and-integration.json"}],"explained_by":[],"normative_context":[{"ref":"instrument:sap-api-policy-v4-2026a","name":"SAP API Policy","json":"/instruments/sap-api-policy-v4-2026a.json","prominence":"prominent","sections":["2.2.2","3"]}]}}