Skip to content

Drop deprecated API from the pages, and give the examples a Run button - #188

Merged
oblomov-dev merged 2 commits into
mainfrom
claude/docs-deprecated-controls-snippets-lqmu3x
Sep 1, 2026
Merged

Drop deprecated API from the pages, and give the examples a Run button#188
oblomov-dev merged 2 commits into
mainfrom
claude/docs-deprecated-controls-snippets-lqmu3x

Conversation

@oblomov-dev

@oblomov-dev oblomov-dev commented Sep 1, 2026

Copy link
Copy Markdown
Member

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.md lists.

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".

page was now
pdf.md Z2UI5_CL_POP_PDF sap.m.PDFViewer in the app's own view
logging.md z2ui5_cl_pop_messages ×4 message_box_display( ) — same mapper the popup used
popup.md z2ui5_cl_pop_to_confirm the reader's own popup class
value_help.md z2ui5_cl_pop_to_select a popup_display( ) with the candidates in it
eml.md z2ui5_cl_pop_error message_box_display( lx )
draft_handling.md z2ui5_cl_pop_to_confirm ×3 message_box_display( type = confirm actions = … )
dx.md z2ui5_cl_pop_to_confirm the same confirm box

In the reference blocks. The cs_event listing on frontend.md showed wizard_set_next_step as a live action where 1.144.0 files it under "obsolet", and omitted set_favicon. The user exits moved from z2ui5_if_exit to z2ui5_if_ui5_exit across eight pages — the old one is in frozen src/99, the new one in released src/02, and user_exits.md carried 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.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.md called a view_display( ) method that was never declared.

And one more defect surfaced the moment a fragment was compiled at all: soft_keyboard.md set valueHelpIconSrc, @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.md SELECTed 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.md was 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.md turned out not to be fixable — dropping its local class still leaves cl_fdt_xl_spreadsheet — so it keeps its marker.

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 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, since playground.mjs says 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.md and websocket.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 so check:samples genuinely ran.

test              35/35   (2 new: the AUTHORITY-CHECK rule and its literal counter-case)
check:version     3 places name a version
docs:build        no dead links
check:examples    71 view-building examples from 54 pages, 0 findings
check:playground  85 app classes — 65 with a Run button, 20 excluded on purpose
check:api-names   1811 names + 7 source links on 139 pages, against 1.144.0
check:api-reference  matches the interface at that release
check:samples     149 samples, 46 pages, 116 links — up to date

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 by check:api-reference), advanced/linter.md (documents the rules that find this), and 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. Say the word and they go too.

clipboard_app_state reads like the others but is not deprecated at 1.144.0 — it sits under "Actions", not "obsolet"; the app_state_get_href( ) that supersedes it is on main only. It stays.

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
Copilot AI lite review requested due to automatic review settings September 1, 2026 11:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_exit to z2ui5_if_ui5_exit, and refreshed reference blocks (e.g., cs_event list).

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 oblomov-dev changed the title Stop teaching deprecated API outside the page that documents it Drop deprecated API from the pages, and give the examples a Run button Sep 1, 2026
@oblomov-dev
oblomov-dev merged commit fb0b9f7 into main Sep 1, 2026
1 check passed
@oblomov-dev
oblomov-dev deleted the claude/docs-deprecated-controls-snippets-lqmu3x branch September 1, 2026 14:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants