Drop deprecated API from the pages, and give the examples a Run button - #188
Merged
oblomov-dev merged 2 commits intoSep 1, 2026
Merged
Conversation
A sweep of every page for the identifiers resources/deprecations.md lists.
Three kinds of hit came out of it, and only the first is what the sweep was
looking for.
**Deprecated API in code a reader copies.** The frozen Z2UI5_CL_POP_* popups
were used in eleven examples across seven pages; view_model_update( ), an empty
method since 1.143.0, was called in three and RECOMMENDED in a fourth ("only
the data changed -> view_model_update"); popover.md offered popover_model_update( )
as a feature the popover "supports". Each is now the thing the framework
actually does:
pdf.md sap.m.PDFViewer in the app's own view - and the example is
runnable now, with a real one-page PDF inline, instead of
calling an on-premise class to make one
logging.md message_box_display( ), which takes a BAL table, a
cl_bali_log or an ABAP-Logger object directly - the same
mapper the popup used
popup.md the reader's own popup class, which is what that section is
about; the built-in was only ever the illustration
value_help.md a popup_display( ) with the candidates in it - no sub-app,
no navigation, and the picked key rides in the event argument
eml.md message_box_display( lx ), matching what Exception teaches
draft_handling message_box_display( type = `confirm` actions = ... ), which
keeps the custom button texts the popup had
dx.md the same confirm box
**Deprecated API in the reference blocks.** The cs_event listing on frontend.md
had drifted: it showed wizard_set_next_step as a live action when 1.144.0 files
it under "obsolet", and omitted set_favicon. It is the released set now, and
says in one line that the obsolete ones exist and where they are documented.
The user exits moved from z2ui5_if_exit to z2ui5_if_ui5_exit across eight
pages - the old interface sits in the frozen src/99 while the new one is in
released src/02, and the tip promising the examples would move "once it is in
a release" was written before 1.144.0 shipped it.
**Notes explaining a deprecation.** Eleven of them, on ten pages, each
duplicating a row of the deprecations page next to unrelated material. Gone;
that page is where the migration is written.
Four kinds of mention are deliberately LEFT, because deleting them would make
the page wrong rather than clean: resources/changelog.md (what a release
removed is a fact about that release), resources/api.md (generated from the
interface, obsolete members included), advanced/linter.md (documents the rules
that FIND these, including frozen-view-builder), and the two history passages -
renaming.md's inventory of every form the name z2ui5 takes, and
how_it_all_works.md explaining why the current view builder exists by naming
the one it replaced.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018szAF7BmqF1q7QcyhH454j
There was a problem hiding this comment.
Pull request overview
This PR updates the VitePress documentation to stop recommending or demonstrating deprecated abap2UI5 framework APIs outside the dedicated deprecations page, keeping examples aligned with the current released interface and behavior.
Changes:
- Replaced usages of frozen built-in popup classes (
Z2UI5_CL_POP_*) with supported patterns (e.g.,message_box_display( ), custom popup views,sap.m.PDFViewer). - Removed guidance around obsolete refresh APIs (e.g.,
view_model_update( ),popover_model_update( )) and updated explanations to reflect automatic model delta pushing. - Updated user-exit documentation/examples from
z2ui5_if_exittoz2ui5_if_ui5_exit, and refreshed reference blocks (e.g.,cs_eventlist).
Reviewed changes
Copilot reviewed 31 out of 31 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/tutorials/walkthrough/step-7.md | Removes mention of obsolete refresh call and narrows popup guidance wording. |
| docs/technical/dx.md | Replaces deprecated confirm popup class usage with message_box_display( ) confirm flow. |
| docs/cookbook/view/nested_views.md | Removes obsolete refresh call from guidance and examples; updates explanation of automatic delta pushing. |
| docs/cookbook/translation_messages/message.md | Updates “multiple messages” guidance to rely on message mapper / message box instead of deprecated popup classes. |
| docs/cookbook/translation_messages/logging.md | Rewrites BAL logging display to use message_box_display( ) instead of deprecated popup navigation. |
| docs/cookbook/popup_popover/popup.md | Replaces frozen popup-class example with a “popup as separate app” pattern using a custom dialog view. |
| docs/cookbook/popup_popover/popover.md | Replaces obsolete popover refresh guidance with automatic delta pushing explanation. |
| docs/cookbook/model/binding.md | Removes obsolete _bind_edit deprecation tip content. |
| docs/cookbook/expert_more/value_help.md | Replaces deprecated selection popup navigation with an in-class popup picker pattern. |
| docs/cookbook/event_navigation/navigation/hash.md | Removes a deprecation aside about removed frontend event. |
| docs/cookbook/event_navigation/life_cycle.md | Removes deprecated popup-class mention while explaining check_on_navigated( ). |
| docs/cookbook/event_navigation/frontend.md | Refreshes cs_event reference block and removes deprecation-history tips from the page body. |
| docs/cookbook/eml_cds_sql/fuzzy_search.md | Removes view_model_update( ) call from example handler. |
| docs/cookbook/eml_cds_sql/eml.md | Replaces deprecated error popup navigation with message_box_display( lx ) and updates wording. |
| docs/cookbook/eml_cds_sql/draft_handling.md | Replaces confirm popup class flows with message_box_display( ) confirm/actions and updated event handling. |
| docs/cookbook/eml_cds_sql/abap_sql.md | Removes view_model_update( ) call from example handler. |
| docs/cookbook/device_capabilities/pdf.md | Replaces deprecated PDF popup class with sap.m.PDFViewer example and runnable base64 PDF pattern. |
| docs/cookbook/cheat_sheet.md | Removes frozen-popup deprecation warning from the “ready-made dialog” cheat-sheet row. |
| docs/cookbook/browser_interaction/title.md | Removes obsolete cs_config-title deprecation note. |
| docs/cookbook/browser_interaction/keyboard_shortcuts.md | Replaces obsolete _event_client( ) mention with updated guidance and link to positions section. |
| docs/configuration/setup/ui5_bootstrapping.md | Updates example method signature to z2ui5_if_ui5_exit~set_config_http_get. |
| docs/configuration/setup/theme.md | Updates example method signature to z2ui5_if_ui5_exit~set_config_http_get. |
| docs/configuration/setup/style_css.md | Updates example method signature to z2ui5_if_ui5_exit~set_config_http_get. |
| docs/configuration/setup/logon_language.md | Updates example method signature to z2ui5_if_ui5_exit~set_config_http_get. |
| docs/configuration/setup/bootstrap_attributes.md | Updates example method signature to z2ui5_if_ui5_exit~set_config_http_get. |
| docs/configuration/setup.md | Updates setup guidance and examples to z2ui5_if_ui5_exit and removes obsolete title/deprecation note. |
| docs/configuration/security.md | Updates security exit examples to z2ui5_if_ui5_exit~set_config_http_get/post. |
| docs/configuration/performance.md | Removes view_model_update( ) and _bind_edit obsolescence tips in performance guidance. |
| docs/advanced/renaming.md | Updates API inventory table to reflect interface rename/removal from the “no segment” list. |
| docs/advanced/extensibility/user_exits.md | Updates interface references and examples to Z2UI5_IF_UI5_EXIT and removes now-stale rename/deprecation tips. |
| docs/advanced/extensibility/custom_control.md | Rewrites custom control guidance to remove frozen-wrapper-class mention and reflect current builder behavior. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+89
to
+90
| framework flattens it into the lines the box shows; see | ||
| [Logging](./logging) for the sources it reads. |
Comment on lines
+11
to
+12
| into the lines the box shows — so every example below is the same one call with | ||
| a different argument. See [Message](./message) for the other sources. |
Comment on lines
+156
to
+157
| WHEN client->check_on_event( `DELETE` ). | ||
| client->nav_app_call( NEW z2ui5_cl_sample_confirm( mv_question = `Delete this entry?` ) ). |
53 buttoned examples became 65, and the ones that gained a button gained it by
becoming correct rather than by being waved through.
**Three exclusions were incidental, not inherent.** value_help.md SELECTed
SCARR for four airline names - it uses the demo data the walkthrough already
uses for this, with the SELECT kept as the comment above it, and runs.
authorization.md was refused for "displays nothing", which was true and was a
defect: it showed a guard and an empty ELSE. It now shows both outcomes,
including a message on refusal, because returning silently leaves the user on a
blank frame that looks like a crash. It stays excluded, for a better reason
(below). spreadsheet.md turned out NOT to be fixable - dropping its local class
still leaves cl_fdt_xl_spreadsheet, so it keeps its marker.
**Nine fragments became complete classes**: popover, focus, title, soft
keyboard, keyboard shortcuts, message, exception, device model, URL handling,
inner-app navigation and XML templating. Where a page's fragments were each one
line, the fragments stayed and a combined example was added instead - a message
page whose six snippets are one call each is not improved by six class
wrappers.
Two of them could not have run as printed, which is what compiling them found:
soft_keyboard.md bound `input` with client->_bind( ) while declaring it as
a LOCAL - the BINDING_ERROR this documentation warns
about on three other pages. It is a public attribute now
keyboard_shortcuts called a view_display( ) method that was never declared
and one more defect surfaced the moment the fragment was compiled at all:
soft_keyboard.md set valueHelpIconSrc, which is @SInCE 1.84 - silently ignored
on the 1.71 floor this site targets. Dropped.
**A new playground rule: AUTHORITY-CHECK.** Not a transpiler question - the
page in the browser has no user, no roles and no authorization objects, so
sy-subrc after the check means nothing and an example about which branch it
takes cannot take either one. Unlike the rules above it this one is reasoned
rather than watched, and it fails towards no button like the rest. The
"displays nothing" test was pinned on authorization.md's authority check, which
this rule now catches one step earlier, so the two are pinned apart.
The inner-app example is the one worth looking at: an app that calls another
instance of ITSELF. One class, and the stack, the return and get_app_prev( )
are all real - press the button twice and walk back up.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018szAF7BmqF1q7QcyhH454j
oblomov-dev
deleted the
claude/docs-deprecated-controls-snippets-lqmu3x
branch
September 1, 2026 14:12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two passes over the same pages, in two commits.
1. Stop teaching deprecated API outside the page that documents it
A sweep of every page for the identifiers
resources/deprecations.mdlists.In code a reader copies. The frozen
Z2UI5_CL_POP_*popups were used in eleven examples across seven pages.view_model_update( )— an empty method since 1.143.0 — was called in three and recommended in a fourth ("Only the data changed →view_model_update").popover.mdofferedpopover_model_update( )as a feature the popover "supports".pdf.mdZ2UI5_CL_POP_PDFsap.m.PDFViewerin the app's own viewlogging.mdz2ui5_cl_pop_messages×4message_box_display( )— same mapper the popup usedpopup.mdz2ui5_cl_pop_to_confirmvalue_help.mdz2ui5_cl_pop_to_selectpopup_display( )with the candidates in iteml.mdz2ui5_cl_pop_errormessage_box_display( lx )draft_handling.mdz2ui5_cl_pop_to_confirm×3message_box_display( type = confirm actions = … )dx.mdz2ui5_cl_pop_to_confirmIn the reference blocks. The
cs_eventlisting onfrontend.mdshowedwizard_set_next_stepas a live action where 1.144.0 files it under"obsolet", and omittedset_favicon. The user exits moved fromz2ui5_if_exittoz2ui5_if_ui5_exitacross eight pages — the old one is in frozensrc/99, the new one in releasedsrc/02, anduser_exits.mdcarried a tip promising the examples would move "once it is in a release", which 1.144.0 did.Eleven notes explaining a deprecation, on ten pages, each duplicating a row of the deprecations page next to unrelated material.
2. Give the examples a Run button wherever one can honestly work
53 buttoned examples became 65, and the ones that gained a button gained it by becoming correct, not by being waved through.
Nine pages of fragments became complete classes: popover, focus, title, soft keyboard, keyboard shortcuts, message, exception, device model, URL handling, inner-app navigation, XML templating. Where a page's fragments were each one line, the fragments stayed and a combined example was added instead — a message page whose six snippets are one call each is not improved by six class wrappers.
What compiling them found
Two examples could not have run as printed:
soft_keyboard.mdboundinputwithclient->_bind( )while declaring it as a local — theBINDING_ERRORthis documentation warns about on three other pages. It is a public attribute now.keyboard_shortcuts.mdcalled aview_display( )method that was never declared.And one more defect surfaced the moment a fragment was compiled at all:
soft_keyboard.mdsetvalueHelpIconSrc, @SInCE 1.84 — silently ignored on the 1.71 floor this site targets.None of these was visible while the code sat in a fragment. That is the argument for the change, more than the buttons are.
The three exclusions
value_help.mdSELECTed SCARR for four airline names — it uses demo data now, with the SELECT kept as the comment above it, exactly as the walkthrough already does, and runs.authorization.mdwas refused for "displays nothing", which was true and was a defect: a guard and an empty ELSE. It shows both outcomes now, including a message on refusal, because returning silently leaves the user on a blank frame that looks like a crash.spreadsheet.mdturned out not to be fixable — dropping its local class still leavescl_fdt_xl_spreadsheet— so it keeps its marker.A new playground rule:
AUTHORITY-CHECKNot a transpiler question. The page in the browser has no user, no roles and no authorization objects, so
sy-subrcafter the check means nothing, and an example whose point is which branch it takes cannot take either one. Unlike every rule above it in that file, this one is reasoned rather than watched — flagging that, sinceplayground.mjssays each of its rules came from an example seen failing in a real playground. It fails towards no button like the rest. The "displays nothing" test was pinned on authorization.md's authority check, which this rule now catches one step earlier, so the two are pinned apart.What still cannot run, and why
20 examples stay excluded, each with its reason on its own page. They are not oversights — they are examples about a system feature: EML and CDS (
eml.md,cds.md,draft_handling.md,rap.md), business tables (abap_sql.md,cloud.md,lock.md,fuzzy_search.md), enqueue function modules (lock.md), on-premise classes (email.md,snippets.md,srtti.md,spreadsheet.md), and the launchpad KPI add-on.41 pages still have no Run button at all, and most should not: config pages showing an exit method, the security headers, the cheat sheet, the deprecations page. The ones I judged worth revisiting later are
odata.md,smart_controls.mdandwebsocket.md— each needs a service, a SAPUI5-only library or a socket the playground has none of.Checks
npm run check— all eight gates green, with a samples checkout socheck:samplesgenuinely ran.Compiled examples 57 → 71, buttoned 51 → 65.
Deliberately left alone
Four kinds of deprecated-API mention stay, because deleting them would make the page wrong rather than clean — a judgement call against the letter of the request, so:
resources/changelog.md(what a release removed is a fact about that release),resources/api.md(generated, obsolete members included, compared byte for byte bycheck:api-reference),advanced/linter.md(documents the rules that find this), and two history passages —renaming.md's inventory of every form the namez2ui5takes, andhow_it_all_works.mdexplaining why the current view builder exists by naming the one it replaced. Say the word and they go too.clipboard_app_statereads like the others but is not deprecated at 1.144.0 — it sits under"Actions", not"obsolet"; theapp_state_get_href( )that supersedes it is onmainonly. It stays.