技术开发 频道

实现超过60位可打印的ALV header

【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

 

0
相关文章