Skip to content
Cette page existe aussi en français. Voir en français
SAP Tutorials

SAP SM30 Table Maintenance: Edit a Table Without a Developer

SAP SM30: maintain a customizing table without a developer (and when to use SM31 or SE11)

A consultant forwards me a screenshot: “Michael, the client wants to add three rows to a customizing table, and the technical team is quoting two days of development. Is that normal?” No, it isn’t normal. In nine cases out of ten, this kind of update takes a few minutes with SM30, without touching a single line of ABAP and without tying up a developer. The “we need a dev” reflex wastes time and money for nothing, simply because no one took ten minutes to explain what the SM30 transaction actually does, where it stops, and at what point you genuinely need to call someone.

This article puts these moves back in the right order. You’ll see how to maintain a customizing table with SM30, how to tell whether SM30 is enough or whether you need to switch to SM31, SE11 or SE16N, and above all how not to break anything: the right client, the transport request, the authorizations. It’s the daily work of a key user who knows how to work cleanly.

Key takeaways in 30 seconds

SM30 (Call View Maintenance) lets you maintain or display the data of a SAP table or view that has a generated maintenance dialog: you add, edit or delete customizing entries with no developer and no ABAP. As soon as you need to create the table structure or its maintenance generator, you switch to SE11, on the developer side.

What is SM30? (Call View Maintenance in plain terms)

SM30 is the Call View Maintenance transaction: it opens the maintenance dialog of a SAP table or view to display and edit its data. In practice, you type a table name into the SM30 screen, and SAP shows you a grid where you can add, edit or delete entries, like a guard-railed spreadsheet.

The SM30 transaction home screen: enter the table name and choose Display or Maintain
The SM30 transaction home screen: you enter the table name, then choose Display or Maintain.

The key word here is “guard-railed”. SM30 does not open the table in raw access: it goes through a generated maintenance dialog, meaning a small program and a screen that SAP built specifically for that table. This generator is called the Table Maintenance Generator (TMG). It is what decides which fields are visible, which ones are editable, and what input checks apply.

The direct consequence, and this is the first thing to remember: a table can only be maintained in SM30 if it has a maintenance generator. If the table doesn’t have one, SM30 will return a message along the lines of “maintenance is not allowed” or “no maintenance generator for this table”. That is not a mistake on your part; it simply means nobody generated the dialog on the ABAP Dictionary side (more on that with SE11).

SAP message rejecting a table with no maintenance generator in SM30
Without a maintenance generator, SM30 refuses the table: it’s not a bug, you need to generate the TMG on the SE11 side.

One last point of vocabulary, because it avoids a lot of confusion: SM30 is mainly for customizing data: the tables that drive how the system behaves, not transactional business data like a sales order or a delivery. Maintaining a customizing table and creating a sales order are two very different kinds of action, even if the screen looks like a grid in both cases.

Maintaining a table with SM30, step by step

Here is the standard flow to add or edit an entry. Nothing magical, but each step has its role.

  1. 1
    Check your client first

    You are logged into a specific client (the SAP client). A customizing table edited in one client does not magically propagate to the others: that’s what the transport handles. Before any input, make sure you are in the right environment (usually a customizing client, not production directly).

  2. 2
    Run the SM30 transaction

    Type /nSM30 in the command field, or go through the menu.

  3. 3
    Enter the table or view name

    Fill in the field, then choose the mode: Display to view safely, Maintain to edit.

  4. 4
    Work in the grid

    You can add a row (“New Entries”), edit an existing value, or delete a row. The checks defined in the generator apply as you go (mandatory fields, allowed values).

  5. 5
    Save

    This is where the most important step for a customizing table happens: SAP usually asks you to attach the change to a customizing request / transport request. You either create a new one or select an existing one. This request is what will later let you replay the change in the other systems (quality, production).

The SM30 maintenance grid in Maintain mode with the New Entries button
The SM30 maintenance grid in Maintain mode: add, edit or delete entries via New Entries.

As long as you stay in Display mode, you risk nothing: it’s an excellent way to explore a table before touching it. The committing move is saving in Maintain mode.

A word on the line between editing and plain viewing. If all you need is to look at the content of a table (check a value, understand how some data is configured), you don’t even need SM30. SE16 and its more modern version SE16N display the content of a table read-only, without going through a maintenance generator. It’s the inspector’s tool, not the editor’s. Many key users would gain from reaching for SE16N as a first reflex to explore, and only pulling out SM30 when they really need to write.

SM30 vs SM31: which one to use?

The question comes up constantly, and the answer is simpler than it looks. SM31 is the old table maintenance transaction. Historically, it’s the one we used, but it offered reduced functionality compared to what SAP wanted to provide next.

Since release 4.6, SM31 has been redirected: calling SM31 in practice sends you to extended maintenance, that is, the SM30 engine (“Call View Maintenance Like SM30”). SAP’s official recommendation, documented for a long time in SAP Note 28504 on table maintenance, is clear: use SM30 (the extended table maintenance) for your day-to-day work. The official SAP ABAP documentation on maintenance views confirms that it is indeed the SM30 and SM31 transactions that edit the tables of a maintenance view through extended maintenance.

SM30: the transaction to use

  • Extended table maintenance, the engine recommended by SAP.
  • Not sure which one to type? Type SM30 and you’ll be in the right place.
  • Handles the client, input checks and the link to the transport request.

SM31: the legacy one to avoid

  • Old transaction with reduced functionality.
  • Since release 4.6, it redirects to the SM30 engine anyway.
  • Run into it in old docs or an old course? Read it as “SM30” and move on.

Treat it as a hygiene rule, not a technical debate: SM30 today, SM31 is history.

When do you need SE11 (and that’s when you call a developer)?

This is where the real boundary lies between the key-user move and the developer move, and it’s exactly the point my consultant at the start couldn’t settle.

SM30 maintains the DATA of a table. You fill in, you correct, you delete rows in a structure that already exists. It’s functional work, well within your reach.

SE11 (the ABAP Dictionary) DEFINES the table. It’s in SE11 that the structure is described: the fields, their types, the keys. And it’s also in SE11 (via the Utilities menu) that you generate the maintenance generator that will then make the table editable in SM30, attaching a function group, maintenance screens and an authorization group to it. That work touches the data model: it’s developer scope, not key-user scope.

Key-user scope versus developer scope Comparison of the two scopes: the key user edits the DATA of an existing table with SM30 (add, correct, delete entries), while the developer DEFINES the STRUCTURE of the table and generates the maintenance generator with SE11. The boundary is the data versus structure distinction. Key user / functional You, without a developer SM30 Edit the DATA of a table that already exists Add an entry Correct a value Delete a row Attach to the transport request Functional work, within your reach Developer / technical Technical consultant or dev SE11 Define the STRUCTURE the data model itself Create the table, its fields, its keys Add a field to the table Generate the maintenance generator Authorization group, function group Touches the model: call a dev
The key-user versus developer boundary: you either edit DATA (SM30) or you edit STRUCTURE (SE11). That’s the single question that settles the request landing on your desk.

The split rule is therefore clear-cut:

  • The table already exists and has a maintenance generator → SM30, you handle it, without a developer.
  • The table exists but has no maintenance generator (SM30 refuses maintenance) → the TMG must be generated in SE11 → you call a developer (or a technical consultant).
  • The table doesn’t exist yet, or a field has to be added to it → structure definition / modification in SE11 → developer scope, no discussion.

This “I edit data vs I edit structure” logic is exactly the same one that separates a key user from a developer on other customization grounds. It’s actually the same philosophy I detail in the guide on customizing SAP screens without ABAP using SHD0: adapting SAP’s behavior with the functional tools designed for it, and only switching to the technical side when the need genuinely touches the code or the structure. SM30 for customizing data, SHD0 for screen appearance: two entry doors to “SAP without a developer”, two moves every key user gains from mastering.

SM30, SM31, SE11, SE16N: the decision table

To settle it in three seconds the next time someone asks you to “touch a table”, keep this table handy.

Decision tree SM30, SM31, SE11, SE16N Decision diagram: starting from a need on a SAP table, the tree points to SE16N to view read-only, to SM30 to maintain the data of a table that has a maintenance generator, and to SE11 on the developer side to create the structure or generate the maintenance generator. SM31 redirects to the SM30 engine since release 4.6. You need to “touch” a SAP table Just look, or edit? View (read-only) SE16N No generator required, no risk Edit data Maintenance generator present? Old doc: SM31? Since 4.6, SM31 redirects to the SM30 engine YES NO SM30 You handle it yourself, without a developer SE11 Generate the TMG, then come back to SM30 Create or change the structure SE11 too: developer scope Green = key-user / functional move Navy = developer / technical move Data to edit = functional (SM30 / SE16N) Structure to create = technical (SE11)
Decision tree: depending on whether you want to view, edit data or touch the structure, the tool changes (SE16N, SM30 or SE11) and the person doing the move changes with it.
Your needThe right transactionWho does the move
Edit the data of a customizing table (add / correct / delete an entry)SM30Key user / functional consultant
Same need, but you run into old docs that mention SM31SM30 (SM31 redirects to the SM30 engine since 4.6)Key user / functional consultant
Only view / explore the content of a table (read-only)SE16 / SE16NKey user / functional consultant
Create or change the structure of a table, or generate its maintenance generator (TMG)SE11 (ABAP Dictionary)Developer / technical consultant

The dividing line is always the same: data → functional (SM30 / SE16N), structure → technical (SE11). Keep that marker in mind and you’ll instantly know whether the request landing on your desk is for you or for the dev.

Authorizations and safeguards: don’t break production

SM30 is powerful, and that’s precisely why it’s framed by authorizations. You don’t let just anyone edit just any customizing table: a wrong value in a customizing table can change the system’s behavior for everyone.

Three authorization objects control access to tables:

  • S_TABU_DIS: access by table authorization group. Each table belongs to a group; this object says which groups you’re entitled to, and whether in display or maintenance.
  • S_TABU_NAM: access by table name. Finer than the previous one, it lets you authorize a specific table without opening up its whole group.
  • S_TABU_CLI: the authorization for cross-client tables. Those tables are particularly sensitive, because a change hits all the system’s clients at once, with no transport.

If SM30 denies you access to a table even though the transaction opens fine, the problem is almost always there: you’re missing the authorization on the right group or the right table name. This is not something to force; it’s a request to raise with your security team, with a justified business need.

From the customizing client to production via the transport request Flow diagram: a customizing table change made with SM30 in the customizing client is attached to a transport request, which then replays the change in the quality system and then in production, traceably and in the right order. Editing directly in production outside transport creates gaps between systems. The clean path of a customizing change CUSTOMIZING CLIENT SM30 You enter here TRANSPORT REQUEST The central safeguard Quality (QA) Production Replayed in the right order, traceably. No manual input in production. AVOID Editing directly in production, or outside transport: you create gaps between systems that nobody can explain anymore six months later.
The right path: SM30 in the customizing client, attachment to a transport request, then replay in quality and in production. Editing directly in prod breaks that traceability.
The transport request: don’t dismiss it when it pops up

Depending on how the client is configured, SAP attaches your customizing table change to a transport request, but it isn’t systematic. When that request exists, it’s not a formality: it’s what will replay your change cleanly in quality and then in production, in the right order and traceably. In practice, you (the key user) attach the change to the request, but it’s usually the technical team that releases it and actually transports it. Editing directly in production, outside transport, remains the surest way to create gaps between systems that nobody can explain anymore six months later.

For a key user who specifically wants to understand this customizing logic end to end (client, customizing, transport) instead of learning the moves one by one the hard way, this is exactly the kind of fundamentals we put back in the right order in the SAP Starter: enough to get a clean grip on SM30 (and its neighbors) rather than fumbling through.

Common mistakes with SM30 (and how to avoid them)

Across missions, it’s always the same traps that come back. Knowing them in advance saves you considerable time.

Mixing up customizing data and application data

SM30 is for customizing, not for entering transactional business data. If you find yourself trying to “add a sales order” through a table, you’re in the wrong place: there’s almost always a dedicated business transaction. SM30 touches the system’s behavior, not the day-to-day flows.

Forgetting the client

Editing in the wrong client is the classic mistake. You enter everything cleanly, you save, and the change doesn’t show up where it’s expected, because it was made in another client. Always check your entry point before writing.

Saving without a transport request

On a customizing table, refusing or “skipping” the transport request condemns you to a change that stays stuck in a single system. Get into the habit of always attaching the change to a request, and noting down its number.

Forcing a table that has no maintenance generator

If SM30 says there’s no maintenance available, it’s not a bug to work around. It’s the signal that you need a maintenance generator (to create in SE11) or that this table simply isn’t meant to be edited by hand. Escalate the need rather than looking for a back door.

Ignoring authorizations

An access denial isn’t a personal failure: it’s the security system doing its job. The right reaction is to file a justified authorization request (S_TABU_DIS / S_TABU_NAM depending on the case), not to try to work around it.

SM30 FAQ

What is the SM30 transaction used for in SAP?

SM30 (Call View Maintenance) lets you maintain or display the data of a SAP table or view that has a generated maintenance dialog. You can add, edit or delete customizing entries with no developer and no ABAP.

What is the difference between SM30 and SM31?

SM31 is the old table maintenance transaction, with reduced functionality. Since release 4.6 it redirects to the SM30 engine (extended maintenance). SAP recommends SM30 (SAP Note 28504). In practice, always use SM30.

SM30 or SE11: which one should I choose?

SM30 is for maintaining the data of an existing table. SE11 (ABAP Dictionary) is for defining the table structure and generating its maintenance generator, which is developer work. Data to edit: SM30. Structure to create or change: SE11.

How do you edit a SAP table without a developer?

Use SM30 if the table has a maintenance generator: you add, edit or delete entries in a guard-railed grid, without writing code. If the table has no generator, it must be created in SE11, and that’s where a developer steps in.

SM30 or SE16N to look at a table?

To only view the content of a table read-only, use SE16 or SE16N: no risk of changing anything and no need for a maintenance generator. Reserve SM30 for cases where you genuinely need to write to the table.

What authorizations do you need to use SM30?

Access to tables is controlled by the authorization objects S_TABU_DIS (by authorization group), S_TABU_NAM (by table name) and S_TABU_CLI (cross-client tables). An access denial means one of these authorizations is missing.

Does SM30 create a transport request?

For customizing tables, SM30 usually asks you to attach the change to a customizing / transport request. That request is what propagates the change to the other clients and systems (quality, production) traceably.

Conclusion

Next time someone tells you “we need a developer” to add three rows to a customizing table, ask the only question that matters: is this about editing data, or editing a structure? If it’s data and the table has its maintenance generator, SM30 is your tool, in a few minutes and with no code. If it’s the structure or the generator itself that’s missing, then yes, SE11 and a developer come into play. In between, SM31 is just a historical shortcut to SM30, and SE16N remains your best reflex for looking without touching.

The next move is simple: open SM30 in your test environment, type the name of a customizing table you know, and stay in Display mode to explore its grid. You’ll immediately see what we’re talking about, and you’ll have taken the first step toward never again outsourcing what’s yours to do.

Share

Keep reading

SAP Tutorials

SAP IDoc Guide: Read an IDoc, Fix Status 51 (WE02, BD87)

SAP IDoc Guide: How to Read an IDoc, Diagnose an Error (WE02 / WE19 / BD87) and Know When to Use It A failed SAP IDoc is often a junior...

Michael Antoine Michael A. 17 min read
SAP Tutorials

SAP Output Determination: How SAP Decides What to Print or Send (NACE)

SAP output determination: how SAP decides which document to print or send (NACE) A SAP output document never fires "just because". When a sales order goes out as an email...

Michael Antoine Michael A. 15 min read
SAP Tutorials

SAP Selection Variant: Save, Reuse and Schedule a Report

SAP Selection Variant: Save, Reuse and Schedule the Execution of a Report Every Monday morning, it is the same ritual: you open your report, you retype the same company code,...

Michael Antoine Michael A. 16 min read
SAP Tutorials

SAP SD Pricing Determination: The Condition Technique

Sooner or later, on a project, a user shows you a sales order and asks why the displayed price is not the one they expected. You open the line, you...

Michael Antoine Michael A. 14 min read