sac-member-detail-widget

AE Member Enrollment Detail — SAC Custom Widget

A custom widget for SAP Analytics Cloud rendering per-member Annual Enrollment detail. This is the third widget of a 3-widget suite (see ../ae-member-enrollment-report/GOLD_VIEW_SPEC.md §10l) mirroring the Employer Election suite’s structure — this widget plays the same role AE Employer Election Drill-Down does there. Headline leadership tiles live on AE Member Enrollment (Snap); the fuller operational breakdowns live on AE Member Enrollment Operational.

FLEX members are excluded (v1.3.0, 2026-10-05)

GLD_AE_Member_Enrollment is shared with the FLEX dashboard (sac-flex-member-widget). FLEX members carry Wave “Group A”–”Group F”, and this widget drops any row whose Wave starts with Group , next to its Portico exclusion. Blank-Wave rows are kept, so Traditional numbers don’t change. In a headless check, output was byte-identical with and without FLEX rows injected. Gold’s Employer column is also no longer NULL: it now holds “Name (Number)”. Details: ../flex-member-enrollment-report/GOLD_CHANGES.md.

Important — deliberate exception to the rest of this suite

This widget binds to GLD_AE_Member_Enrollment directly — row-level, PII-bearing Gold data, not the de-identified _NoID view the other two widgets in this suite use. That reverses the original GOLD_VIEW_SPEC.md §8a design (member-level data was meant to never reach a custom widget’s browser) — a reversal explicitly confirmed by Blair on 2026-09-22, given the Employer suite’s own precedent: sac-ae-drilldown-widget already does the same thing for employer-level data, built as a custom widget rather than a native SAC Table specifically because a raw native Table looked “bolted on” next to the other two widgets’ shared styling. A separate native SAC Table + Export button (Blair’s own build, not part of this repo) remains the additional bulk-download surface — this widget doesn’t replace it.

The interaction mechanism — not an in-widget click handler

Confirmed by reading sac-ae-drilldown-widget’s own code before building this one: its per-row “Open” interaction is not a click handled inside the widget’s shadow DOM (that’s the exact pattern already confirmed, twice, not to work in SAC’s Optimized-story View mode). It’s driven by a native SAC Input Control (Linked Analysis) that filters the bound model externally — the widget only ever reacts to onCustomWidgetAfterUpdate with whatever rows the current filter returns. This widget works the same way:

Two lessons carried over from the start, same as the rest of this suite

Files

Data binding — what it expects

Status of this build

Changing it