1.页格式:
1.1 运行事务代码SPAD;选择工具栏上的【完全管理】按钮——>选择【设备类型】页面(在该页面上有四个按钮:【设备类型】、【打印控制】、【格式类型】、【页格式】)
1.2选择【页格式】进入页格式列表界面,选择工具栏上的【修改】图标,工具栏左边会出现【新建】图标(注:不点【修改】图标是不会出现【新建】图标的);选择【新建】图标进入新建页格式界面,输入页格式名称“zkz”,方向选择肖像“Portrait”即竖向,纸张大小为:纸宽“215mm”、纸长“140mm”;(注:方向选为竖向则纸打印时是按竖向来作打印,如方向选横向则按横向打印,当你纸张设为140*215时才可横向打印);保存退出;
2.样式:输入事务码smartforms
3.同样SMARTFORMS事务码
4.smartforms调用
FORM data_print_list USING it_row_id TYPE lvc_t_roid.
*" 清单打印
DATA: lv_formname TYPE tdsfname VALUE ‘ZZLJYFIRP_0007_LIST’,
lv_function_name TYPE rs38l_fnam,
ls_output_option TYPE ssfcompop,
ls_control_param TYPE ssfctrlop,
ls_job_output_info TYPE ssfcrescl.
DATA: lv_open TYPE flag.
DATA: lo_grid TYPE REF TO cl_gui_alv_grid,
lt_row TYPE lvc_t_roid,
ls_row TYPE lvc_s_roid.
DATA: ls_list_header TYPE zsjyfi_0009,
ls_list_footer TYPE zsjyfi_0010,
lt_list TYPE STANDARD TABLE OF zsjyfi_0008,
ls_list TYPE zsjyfi_0008.
DATA: ls_output TYPE ty_output,
lt_output TYPE STANDARD TABLE OF ty_output.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lo_grid.
CALL METHOD lo_grid->check_changed_data.
CHECK lo_grid IS NOT INITIAL.
lo_grid->get_selected_rows(
IMPORTING
-
et_index_rows = " Indexes of Selected Rows
et_row_no = lt_row
).LOOP AT lt_row INTO ls_row.
READ TABLE gt_output INTO ls_output INDEX ls_row-row_id.
IF sy-subrc = 0.
APPEND ls_output TO lt_output.
ENDIF.
ENDLOOP.
*" 抬头
ls_list_header-bukrs = ls_output-bukrs.
SELECT SINGLE
butxt
INTO ls_list_header-butxt
FROM t001
WHERE bukrs = p_bukrs.
LOOP AT lt_output INTO ls_output.
*" 清单
MOVE-CORRESPONDING ls_output TO ls_list.
ls_list-dmbtr = ls_output-document_dmbtr.
APPEND ls_list TO lt_list.
*" 合计
ls_list_footer-dmbtr_sum = ls_list_footer-dmbtr_sum + ls_output-document_dmbtr.
CLEAR: ls_list.
ENDLOOP.
*" get Function Module
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
EXPORTING
formname = lv_formname
-
VARIANT = ' '
-
IMPORTINGDIRECT_CALL = ' '
fm_name = lv_function_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.
ENDIF.
ls_output_option-tdimmed = ‘X’.
ls_output_option-tdnewid = ‘X’.
ls_output_option-tddelete = ‘X’.
ls_output_option-tdfinal = ‘X’. - ls_output_option-tddest = ‘PRT0’.
ls_output_option-tddest = ‘LP01’.
ls_output_option-tdprinter = ‘CNSAPWIN’.
ls_control_param-no_open = abap_true.
ls_control_param-no_close = abap_true.
ls_control_param-langu = sy-langu.
CALL FUNCTION ‘SSF_OPEN’
EXPORTING
-
ARCHIVE_PARAMETERS = user_settings = ''
-
MAIL_SENDER =
-
MAIL_RECIPIENT =
-
MAIL_APPL_OBJ = output_options = ls_output_option control_parameters = ls_control_param
-
IMPORTING
-
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0. -
Implement suitable error handling here
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
lv_open = abap_true.
ENDIF.CALL FUNCTION lv_function_name
EXPORTING -
ARCHIVE_INDEX =
-
ARCHIVE_INDEX_TAB =
-
ARCHIVE_PARAMETERS = control_parameters = ls_control_param
-
MAIL_APPL_OBJ =
-
MAIL_RECIPIENT =
-
MAIL_SENDER = output_options = ls_output_option user_settings = '' is_list_header = ls_list_header it_bkpf_list = lt_list is_list_footer = ls_list_footer
-
importing
-
document_output_info =
-
job_output_info =
-
job_output_options =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0. -
Implement suitable error handling here
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.IF lv_open EQ abap_true.
CALL FUNCTION ‘SSF_CLOSE’
IMPORTING
job_output_info = ls_job_output_info
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
OTHERS = 4.
IF sy-subrc <> 0. -
Implement suitable error handling here
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM.
System fields of Smart Forms
&SFSY-DATE&
Displays the date. You determine the display format in the user master record.
&SFSY-TIME&
Displays the time of day in the form HH:MM:SS.
&SFSY-PAGE&
Inserts the number of the current print page into the text. You determine the format of the page number (for example, Arabic, numeric) in the page node.
&SFSY-FORMPAGES&
Displays the total number of pages for the currently processed form. This allows you to include texts such as’Page x of y’ into your output.
&SFSY-JOBPAGES&
Contains the total page number of all forms in the currently processed print request.
&SFSY-WINDOWNAME&
Contains the name of the current window (string in the Window field)
&SFSY-PAGENAME&
Contains the name of the current page (string in the Page field)
&SFSY-PAGEBREAK&
Is set to ‘X’ after a page break (either automatic [Page 7] or command-controlled [Page 46])
&SFSY-MAINEND&
Is set as soon as processing of the main window on the current page ends
&SFSY-EXCEPTION&
Contains the name of the raised exception. You must trigger your own exceptions, which you defined in the form interface, using the user_exception macro (syntax: user_exception ).