Fix Table Row Mode (no-deprecated-api)
This skill fixes deprecated row-related properties on sap.ui.table.Table that the UI5 linter detects but cannot auto-fix. The modernization replaces flat properties with a structured rowMode aggregation.
IMPORTANT: Do NOT modernize sap.ui.table.Table to sap.m.Table — they are not equivalent.
Linter Rule
Property Mapping
RowMode Class Selection
Choose based on the old visibleRowCountMode value:
"Fixed"(or not set — this is the default) →rowmodes:Fixed"Interactive"→rowmodes:Interactive"Auto"→rowmodes:Auto
Pre-Modernization Safety Check
If a property set on the Table doesn't exist on the selected RowMode class (e.g., minAutoRowCount on a Fixed mode table), this indicates possible dynamic row mode switching. Abort modernization for that table and flag for manual review.
Fix Strategy — XML Views
Step 1: Add XML Namespace
Add to the root <mvc:View> tag:
Step 2: Remove Deprecated Properties and Add rowMode Aggregation
Before (Fixed mode):
After:
Before (Interactive mode):
After:
Before (Auto mode):
After:
Fix Strategy — JavaScript
Step 1: Add RowMode Import
Add the appropriate class to sap.ui.define:
"sap/ui/table/rowmodes/Fixed"for Fixed mode"sap/ui/table/rowmodes/Interactive"for Interactive mode"sap/ui/table/rowmodes/Auto"for Auto mode
Step 2: Replace Properties with rowMode
Before:
After:
Also handle setter-based patterns:
Before:
After:
Implementation Steps
- Run linter with --details to identify all affected Table instances
- For each Table, determine the RowMode class from
visibleRowCountMode(default:"Fixed") - Safety check: Verify all deprecated properties are compatible with the chosen RowMode class
- XML views: Add
xmlns:rowmodes="sap.ui.table.rowmodes"namespace, remove deprecated properties, add<rowMode>aggregation - JavaScript: Add RowMode import, create RowMode instance with mapped properties, set via constructor or
setRowMode() - Verify by re-running the linter
RowMode Properties Reference
Notes
- If
visibleRowCountModeis not set, the default was"Fixed"— userowmodes:Fixed - The
<table:rowMode>aggregation goes inside<table:Table>, alongside<table:columns> - In XML, always use the
rowmodes:namespace prefix for RowMode elements - Both old and new APIs are synchronous — no async handling needed
Related Skills
- fix-deprecated-controls: For other
no-deprecated-apierrors onsap.ui.table.Table(e.g., deprecated classes, properties not related to row mode), use fix-deprecated-controls - fix-js-globals: If the Table is instantiated via global access (e.g.,
new sap.ui.table.Table()), fix-js-globals handles converting to proper module imports



