The example makes visible row 2 and output row 3 identify RunC. T1 contains RunA/Queued, RunB/Done, RunC/Running. Hiding Done leaves RunA then RunC on display. The local mapping demonstration resolves RunC correctly and contrasts the wrong display-index lookup into RunB. It is an illustrative table exercise, not a live SAP report, ABAP callback or database operation.

Give records stable keys
RUN_ID is unique within the three-row fixture. T1 indexes are 1,2,3, but positions are coordinates in that revision rather than permanent record identities. The display-only filter removes Done from the view without deleting RunB. The intended detail record should include RunC, Running, field STATUS and T1 after acquisition. A successful read of some table row is insufficient: using visible index 2 still returns a valid record, but it is RunB and therefore the wrong identity for the selected cell.
The archived SAP Library get_current_cell page distinguishes E_ROW/E_COL as display coordinates from ES_ROW_NO output-row information and ES_COL_ID field-name information. It marks ES_ROW_ID obsolete. Confirm the actual installed class signature, native types and structure members before writing ABAP. The reference is an archived contract, not proof of a current installed release or a reason to guess a plausible structure-component name. Do not substitute a CL_SALV API or assume a double-click event provides the same values.
Capture selection with the table revision
The intended handler acquires current-cell information and current table revision together. Validate a positive usable output index within bounds, the expected field identity, and the stable key before showing details. In the fixture, RunC's display coordinate is 2 and output index is 3; STATUS is the field. Preserve the actual returned structures separately from those expected meanings. The reading view demonstrates the mapping with known records while leaving native acquisition and GUI observations to the actual SAP environment.
Select RunC and open Details to see its correct output-row mapping. The wrong-lookup control explicitly demonstrates that using display 2 against T1 yields RunB/Done. This contrast is more informative than merely checking that the action returned a nonempty row. When testing in SAP, record the selected display content, returned output coordinate, resolved key, and key shown in Details. Keep RUN_ID with the prepared details so later work does not treat an old output index as a permanent address for that run.
Hold no-cell and stale cases
The archived current-cell reference describes a zero row index for column-only selection. The authored details policy holds that state and asks for a record cell; it never falls back to RunA. Unknown keys, invalid bounds or unconfirmed field/member mappings also hold. A different selected-rows API has its own contract and cannot silently replace current-cell acquisition. Actual returned member values and callback behavior need their own native inspection rather than being fabricated from the demonstration.
A table replacement, sort or relevant filter change retires the mapping. The page's refresh case makes a captured T1 selection stale, requiring reacquisition before Details. Preserve historical details under their captured version and do not let a late result replace the current selection. Finish by tracing selected cell to output coordinate to RUN_ID. Keep native source/table revisions and observed SAP GUI behavior authoritative; a readable HTML mapping is evidence of the explanation, not execution of an actual report or permission to change business data.
Make your own working example
Build an original ALV display/output mapping demonstration, explicitly not SAP or ABAP execution. T1 output rows:1 RunA Queued,2 RunB Done,3 RunC Running. Display filter hides Done without changing output records, so visible RunC row 2 maps to output 3.
Provide Select RunA, Select RunC, Details, Wrong display-index lookup, Column-only, Replace table, Reset. Selection captures table generation, display position, output position, stable RUN_ID and STATUS field. Details checks generation and bounds before showing correct source record. Wrong lookup demonstrates display 2 reads RunB/Done. Column-only has no accepted row and holds; replacing the table retires captured selection and holds until reacquired.
Show source and visible mapping, selected coordinates, stable key and result together. Do not invent native ES_ROW_NO or ES_COL_ID structure members; explain those installed mappings must be verified against the archived get_current_cell reference. Reset restores T1 and clears selection. No CL_SALV substitution, business transaction, database write, native GUI screenshot or runtime success claim.
Use one self-contained HTML file with no remote dependency. Keep the initial sample, output, and labeled controls near the top. Use at least 16px text, strong contrast, visible focus, and a stacked layout at 360px without horizontal overflow. Use explicit type=button click handlers and explicit DOM selectors; do not depend on native form submission. Clear stale feedback when task inputs change. Render entered text safely. Keep practice data local to the current page; do not imply saving, sending, or production integration. Return only the finished HTML.
Clarify the coordinate warning
Retain native ABAP, table revisions and actual current-cell returns with the report. In a separate HTML mapping explanation, NOS allows eligible static instructions to be revised visually without AI regeneration. Clarify why visible row 2 is not source row 2 before the native handler is reviewed.