Das ist ein aus meiner Sicht sehr leidiges Thema, dem irgendwie nie jemand viel Beachtung bei der SAP geschenkt hat.
Generell kannst du die Hilfe mit Transaktion SR13 konfigurieren.
Normalerweise müsste man die Doku zu Transaktionen konfigurieren können. Das ist jedoch erstens sehr umständlich und zweitens wird es einem in deinem Fall AFAIK sogar unmöglich gemacht.
Aus dem Grid heraus wird ein Standardbaustein zur Ermittlung der entsprechenden Doku aufgerufen. Der allerdings so, dass man nix Vernünftiges dazu einstellen kann:
Code: Alles auswählen.
call function 'IWB_HTML_HELP_OBJECT_SHOW'
exporting
* DEVCLASS =
* TCODE =
program = 'SAPLSLVC_DIALOG'
* DYNPRONR =
extension = 'ANWENDERDOKU'
* FRONTEND_PLATFORM =
call_browser = 'X'
* SINGLE_OBJECT = ' '
* IMPORTING
* ACTION =
* FRONTEND_URL =
* FRONTEND_PROGRAM =
exceptions
object_not_found = 1
rfc_error = 2
no_profil_parameter = 3
import_parameter_is_invalid = 4
others = 5.
IMHO müsste das rufende Programm und die aktuelle Transaktion übergeben werden. Stattdessen werden Festwerte übergeben, die mir als Kunden so gar nichts nützen.
Vielleicht übersehe ich aber auch was...
Raten würde ich dir, die Programme so anzupassen, dass ein eigener Status verwendet wird und der Callback für USER_COMMAND entsprechend ausgewertet wird. Siehe Programm BCALV_TEST_FULLSCREEN_USER_COM.
Den Originalstatus würde ich kopieren, den Funktionscode des [info]-Buttons durch einen eigenen ersetzen (ZDOKU oder sowas).
dann würde ich einen eigenen Baustein bauen, der mir zu Reportname, Transaktionscode oder sonst was die entsprechende Doku heraussucht und anzeigt.
Im ALV-Grid kannst du den Standardfunktionscode abfangen durch das Event
BEFORE_USER_COMMAND. und dann wieder den eigenen Baustein zur Dokuermittlung aufrufen.
Beim cl_gui_alv_grid hättest du noch den Vorteil, dass du eine komplett eigene Ableitung von der Klasse bauen könntest in der du den Info-Button zentral abfängst. dann bräuchtest du nur noch in Programmen, die cl_gui_alv_grid verwenden, stattdessen die neue Klasse zcl_gui_alv_grid_with_info einsetzen und hättest dann automatisch überall diese Funktionalität.