SAP transaction codeObjectSM50ModuleBASIS

SM50 — Work Process Overview for the Current Instance

SM50 displays the work processes (dialog, background, update, enqueue, spool) running on the application server instance the user is currently logged onto, showing status, user, program, table accessed and elapsed time. It is instance-local, not system-wide; use SM66 to see work processes across all application servers in the cluster.

SM50 is the classic Basis screen for inspecting what a single application server instance is doing right now, process by process. This page covers the recurring diagnostic mistakes around scope, PRIV mode, lock waits and process cancellation, and where SM50 fits against SM66, SM13 and SM21.

Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,258 words

What it does

SM50 reads the work process table held in the shared memory of the application server instance the user is logged onto and displays each work process: its type (dialog, background, update, update2, enqueue, spool), current status (running, waiting, PRIV, stopped), the user and client, the report or transaction executing, the table currently being accessed, and elapsed CPU and total time. The one fact that causes most confusion is scope: SM50 only ever shows the instance you are connected to. A production system with several application servers can look perfectly healthy in SM50 while a stuck process sits on a different instance entirely. Nothing displayed here is a database table in the conventional sense; it is a live read of dispatcher shared memory, which is why the screen refreshes and why closing it loses the snapshot unless a trace or log was written separately.

When it is used

SM50 is reached for the moment someone reports the system is slow or hanging and a specific session or job needs to be identified in real time. Typical triggers: a user says their screen has been sitting on an hourglass for minutes, a background job is showing as active but producing no output, or a lock error is being investigated and someone needs to see which work process actually holds the resource. It sits upstream of more specialised tools: once a stuck process is identified in SM50, the investigation moves to SM12 for the lock table, SM13 for update requests, or ST22 for the resulting dump. For a cluster-wide picture rather than one server, SM66 is used instead. There is no Fiori app that replaces this granularity of live process inspection.

How to use it

  • Open SM50 (or click into it from SM66 for a specific server).
  • Sort the list by Time or CPU to surface long-running processes rather than reading top to bottom.
  • Double-click a suspicious entry to see full detail: client, user, program, screen, table, wait reason.
  • If status shows PRIV, check the private memory size before doing anything else.
  • If a process needs to be stopped, use Process > Cancel Without Core first; reserve Cancel With Core for genuine hang analysis, since it forces a full dump.
  • Cross-check the timestamp against SM21 (system log) after any cancellation to confirm what actually happened.

Key fields

  • No persistent database table backs this screen directly; the display is a live read of the dispatcher's work process table in shared memory, which disappears on instance restart.
  • ENQUEUE SERVER MEMORY - holds the lock entries a work process may be waiting on or holding; SM50 shows the wait, the lock table itself is inspected separately.
  • SPOOL OBJECTS - a work process of type spool shown as busy corresponds to an active spool request; the request itself is a persisted object visible through the spool transactions.
  • SYSTEM LOG - if a process is cancelled with a core dump or terminates abnormally, an entry is written to the system log and is the durable record of the event once the SM50 snapshot has moved on.

How to prove it in the data

SM50 itself cannot be queried through SE16 because it is not a database table; proof has to come from the durable records left around the event. Note the exact timestamp and work process number from SM50, then open the system log filtered to that instance and time window to confirm a cancellation or timeout was actually logged. If the process was killed with a core dump, check the short dump list for a dump at the same timestamp, same user, same program. For lock-related hangs, capture the lock table entries before cancelling anything, since the entry disappears the moment the holding session ends.

ECC vs S/4HANA

SM50 is unchanged on S/4HANA; it remains a SAP GUI transaction with the same instance-local scope and the same process types. There is no Fiori app that replaces this level of live, per-process detail; monitoring at scale on S/4HANA has generally moved toward centralised tools outside SM50 itself, but for a hands-on check of what one instance is doing right now, SM50 is still the tool a Basis consultant opens first, exactly as in ECC.

Common pitfalls

  • Wrong scope: checking SM50 on one application server and concluding the system is fine, when the actual hang is on a different instance in the cluster. Always confirm which server SM50 is showing (visible in the header) before ruling anything out, and use SM66 for the cluster-wide list when there is more than one application server.
  • PRIV mode: a dialog work process shown as PRIV is running in private, non-shared memory, usually because a program allocated an internal table or extended memory well beyond the configured threshold. The process is not available to other users until it finishes or is killed. Killing it without checking what it was doing risks losing legitimate long-running work rather than a genuine runaway program; check the program name and table first.
  • Lock waits mistaken for hangs: a work process can sit at 'Running' with a climbing time value because it is waiting on a lock held by a completely different session, sometimes on a different instance. Cancelling the waiting process does nothing useful; the lock holder has to be found and addressed instead.
  • Cancel with core used casually: forcing a core dump on a production instance under load is disruptive and generates a large dump; it should be reserved for cases where OS-level or ABAP-level trace evidence is actually needed, not as a routine way to clear a stuck session.
  • All work processes busy: every dialog process shown busy or yellow is a capacity symptom, not an individual process problem; users get no-work-process errors system-wide. The fix is process count or workload distribution, not chasing one entry in the list.
  • Update process stuck: a process of type UPD or UPD2 sitting active for an unusually long time points to a stuck update task; this shows up to end users as a save that never completes, and the follow-up check belongs in SM13, not in repeatedly refreshing SM50.

Whose problem this is

This is Basis territory. A functional or ABAP consultant may spot the symptom (a save that never finishes, a transaction that hangs), but diagnosing and acting on SM50 belongs to Basis. A good handover includes the instance name, work process number, timestamp, the exact program or transaction shown, and whether the process was waiting on a lock, a database call, or private memory, so Basis does not have to re-discover the same snapshot after it has already scrolled past.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-tcodes/sm50ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.