【IT168 技术文章】
因为在 I_CALLBACK_HTML_TOP_OF_PAGE 中用cl_dd_document创建的alv头不能打印,而用REUSE_ALV_COMMENTARY_WRITE在top_of_page中输出的头虽然可以打印,但SLIS_T_LISTHEADER-INFO只有60位,有一定的局限性。所以在需要输出更长文本时,可以在top_of_page中使用以下代码实现
FORM f_top_of_page .
DATA: lr_content TYPE REF TO cl_salv_form_element,
lr_rows TYPE REF TO cl_salv_form_layout_grid,
lr_row TYPE REF TO cl_salv_form_layout_flow,
lr_grid_status TYPE REF TO cl_salv_form_layout_grid.
DATA: l_row TYPE i VALUE '1'.
DATA: l_string TYPE string.
CREATE OBJECT lr_rows.
lr_content = lr_rows.
* 需要输出的文本
l_string = '1234567890abcdefgh1234567890abcdefgh'.
* 相当于H (Header)
lr_row = lr_rows->add_row( ).
lr_row->create_header_information( text = l_string ).
lr_row = lr_rows->add_row( ).
lr_row = lr_rows->add_row( ).
lr_grid_status = lr_row->create_grid( ).
* 相当于S(Selection)
lr_grid_status->create_label(
row = l_row
column = 1
text = l_string ). " Key
lr_grid_status->create_text(
row = l_row
column = 2
text = l_string ). " Info
lr_grid_status->create_text(
row = l_row
column = 3
text = l_string ). " Info
ADD 1 TO l_row.
lr_grid_status->create_label(
row = l_row
column = 1
text = l_string ).
lr_row = lr_rows->add_row( ).
lr_row = lr_rows->add_row( ).
* 相当于A (Action)
lr_row->create_action_information( text = l_string ).
cl_salv_form_content=>set( lr_content ).
ENDFORM. " F_TOP_OF_PAGE