Code: Alles auswählen.
REPORT.
*----------------------------------------------------------------------*
* CLASS lcl_demo DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_demo DEFINITION.
PUBLIC SECTION.
CLASS-METHODS create.
ENDCLASS. "lcl_demo DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_demo IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_demo IMPLEMENTATION.
METHOD create.
FIELD-SYMBOLS: <struc> TYPE any,
<table> TYPE STANDARD TABLE.
DATA struct_type TYPE REF TO cl_abap_structdescr.
data table_type TYPE REF TO cl_abap_tabledescr.
data comp_tab TYPE cl_abap_structdescr=>component_table.
data comp LIKE LINE OF comp_tab.
data dref_struc TYPE REF TO data.
data dref_table TYPE REF TO data.
DATA lr_salv_table TYPE REF TO cl_salv_table.
comp-name = 'VKORG'.
comp-type ?= cl_abap_elemdescr=>describe_by_name( comp-name ).
append comp to comp_tab.
comp-name = 'VTWEG'.
comp-type ?= cl_abap_elemdescr=>describe_by_name( comp-name ).
append comp to comp_tab.
struct_type = cl_abap_structdescr=>get( comp_tab ).
CREATE DATA dref_struc TYPE HANDLE struct_type.
table_type = cl_abap_tabledescr=>create( p_line_type = struct_type ).
CREATE DATA dref_table TYPE HANDLE table_type.
ASSIGN dref_struc->* TO <struc>.
ASSIGN dref_table->* TO <table>.
DO 10 TIMES.
APPEND INITIAL LINE TO <table> ASSIGNING <struc>.
CLEAR <struc>. " WITH sy-abcde+sy-index(1).
ENDDO.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = lr_salv_table
CHANGING
t_table = <table>.
lr_salv_table->display( ).
ENDMETHOD. "create
ENDCLASS. "lcl_demo IMPLEMENTATION
START-OF-SELECTION.
lcl_demo=>create( ).
Wird damals als das SALV entwickelt wurde wohl für zu aufwändig erachtet worden sein:ewx hat geschrieben:Erst wenn ich im Feldkatalog explizit "REF_TABLE" und "REF_FIELD" setze, funktioniert die F4-Hilfe wie gewünscht.
Das ist doch echt traurig, dass man sich das erst selbst über die Domäne besorgen muss, oder?
Code: Alles auswählen.
lr_column->set_f4( abap_true ).
ls_ddic-table = 'VBAK'.
ls_ddic-field = 'AUART'.
lr_column->set_ddic_reference( ls_ddic ).
Code: Alles auswählen.
ls_ddic-table = 'VBAK'.
ls_ddic-field = 'AUART'.
lr_column->set_ddic_reference( ls_ddic ).
lr_column->set_f4( abap_true ).
Code: Alles auswählen.
DATA(reason_column) = or_table->get_columns( )->get_column( 'REASON ' ).
reason_column->set_ddic_reference( VALUE #( table = 'ZVX_RECHECK_LOG' field = 'REASON' ) ).
Du musst die Rückgabe von OR_TABLE->GET_COLUMNS( )->GET_COLUMN( ... ) in den Typ CL_SALV_COLUMN_LIST casten um die besagte Methode zu sehen.vonglan hat geschrieben:Wir haben 7.40 SP10, und bei uns finde ich die Methode set_f4() gar nicht.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
vonglan