alv里如何调用smartform进行打印
时间: 2024-05-25 18:16:16 浏览: 121
1. 首先,在ALV的程序里面定义一个新的按钮,用于触发打印操作。
2. 在按钮的事件处理中,调用函数 module_name = 'SSF_FUNCTION_MODULE_NAME',获取Smartform的函数模块名。
3. 然后,通过函数 module_name = 'SSF_FUNCTION_MODULE_NAME' 获取的函数模块名,调用函数 module_name,传入需要打印的数据。
4. 最后,调用函数 'SSF_FUNCTION_MODULE_NAME',传入Smartform的函数模块名和需要打印的数据,即可完成打印操作。
以下是示例代码:
1. 定义按钮
DATA: ok_code TYPE sy-ucomm.
CASE ok_code.
WHEN 'PRINT'.
lv_layout-info_fname = 'ZALV_SMARTFORM'.
CALL METHOD cl_gui_alv_grid=>get_selected_rows
RECEIVING
value = lt_sel.
LOOP AT lt_sel INTO ls_sel.
READ TABLE gt_outtab INTO ls_outtab INDEX ls_sel-index.
APPEND ls_outtab TO lt_print.
ENDLOOP.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = lv_layout-info_fname
IMPORTING
fm_name = lv_fm_name.
CALL FUNCTION lv_fm_name
EXPORTING
control_parameters = gt_cparams
output_options = gt_oparams
user_settings = gt_usparams
TABLES
t_outtab = lt_print.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = lv_layout-info_fname
IMPORTING
fm_name = lv_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
others = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL FUNCTION lv_fm_name
EXPORTING
control_parameters = gt_cparams
output_options = gt_oparams
user_settings = gt_usparams
TABLES
t_outtab = lt_print.
ENDIF.
ENDCASE.
阅读全文