事务码SMARTFORMS,做好表单和样式,没难度,花点时间慢慢调格式就是了。
注意的点:参考的字段如果包含数量和货币,需再货币/数量这里定义参考字段,同时引用数量和货币字段时,后面需加(C),防止上下位置不一致。
回到报表,定义
DATA: lv_fname TYPE rs38l_fnam.
DATA: gs_head LIKE zmm064e1h,
gt_output LIKE TABLE OF zmm064e1d,
gs_output LIKE zmm064e1d,
lv_loop LIKE sy-tabix.
DATA: gw_options TYPE ssfcompop,
gw_control TYPE ssfctrlop.
DATA: lv_fname TYPE rs38l_fnam.
DATA: gs_head LIKE zmm064e1h,
gt_output LIKE TABLE OF zmm064e1d, "se11定义的结构,作为表,在SMARTFORMS中在表格接口填入,
gs_output LIKE zmm064e1d, "SE11定义的结构,作为抬头,在SMARTFORMS中在表格接口填入,
lv_loop LIKE sy-tabix.
得到表单程序名
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZMM064E1'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = lv_fname
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
设置并打开打印窗口
gw_options-tdnewid = 'X'. "New Spool
gw_options-tdimmed = 'X'.
gw_options-tddelete = 'X'. "Delete Spool After Print
gw_options-tdfinal = 'X'.
gw_options-tdiexit = 'X'. "Exit after printing in print preview
gw_options-tddest = 'LP01'.
gw_control-no_dialog = ''.
gw_control-preview = 'X'.
gw_control-no_open = 'X'.
gw_control-no_close = 'X'.
CALL FUNCTION 'SSF_OPEN' "打开打印窗口
EXPORTING
control_parameters = gw_control
output_options = gw_options
user_settings = ''
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
给传入的值赋值后,调用表单对应的程序名
CALL FUNCTION lv_fname
EXPORTING
control_parameters = gw_control
output_options = gw_options
gs_head = gs_head
* IMPORTING
* job_output_info = l_end
* job_output_options = l_start
TABLES
gt_output = gt_output
* it_bkpf = lt_bkpf
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
最后关闭打印
CALL FUNCTION 'SSF_CLOSE'
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
OTHERS = 4.