I recently had the pleasure of evaluating the awesome new Surface Pro 2 as a laptop replacement for my company. I was very pleased with everything about the device; it is fast, has excellent battery life, a great screen, and the small size makes it very portable and a great companion to bring to meetings. There was one major gotcha however that very likely could have prevented this awesome new device from being usable at my company.
We are a company that is heavily invested in SAP. We use SAP for nearly every major business function, and although we do have some things in the SAP Portal, the vast majority of our users spend their lives using SAP GUI. Unfortunately, out-of-the-box, SAP GUI on a Surface Pro 2 (or any other device with a high-DPI display) is, to put it nicely, a sub-optimal user experience. Basically, SAP GUI is so small that it is unusable without pulling out a magnifying glass.
SAP GUI was designed for 92ppi screens. The Surface Pro 2 has a 208ppi screen. What this means is that, for instance, a UI element that is 50px tall would physically be ~1/2″ on a standard screen, but on the Surface Pro 2, the same element is less than 1/4″ tall.
Windows has a solution for this by supporting different scaling levels. Scaling has been available since Windows Vista, and was further enhanced in Windows 8.1 to support more scaling levels (up to 200%) and per-display scaling. For the Surface Pro 2, the default scaling is set to 150%. What this does is tells apps that are “dpi-aware” to draw everything 1.5x larger. For older application that aren’t dpi-aware, the Windows DWM will simply scale up the output of the application after the fact. This introduces some blur, but makes everything a much more usable size.
The problem is, in the SAP GUI developers’ infinite wisdom, they decided to set the flag (through the application manifest) that tells Windows that SAP GUI is dpi-aware, without actually doing the work to make SAP GUI dpi-aware. The end result is SAP GUI draws at a size suitable for 92ppi, and since Windows was told that it should be handling different ppi levels, the DWM happily displays the app without any scaling. Hence the teeny tiny UI.
The Solution (well…more of a hack)
As I said above, the problem is that SAP GUI is basically lying to Windows by saying that it is dpi-aware, when it really isn’t. So the solution is to make SAP GUI stop lying.
- Rename your saplogon.exe to something like saplogon2.exe. This will be your backup in case something goes wrong (mine is in C:\Program Files (x86)\SAP\FrontEnd\SAPgui)
- Download and install Resource Tuner (awesome program, with a 30-day free trial)
- Launch Resource Tuner and open saplogon.exe
- Select the Manifest\1 entry and click the Resource Editor button in the toolbar
- Find the ms_windowsSettings:dpiAware element (should be near the end) and change the value from “true” to “false”
- Save the file as saplogon.exe in your SAP GUI folder
- Start SAP GUI and enjoy the increased size!