SMARTFORM A5单据打印(自定义纸张/针式打印机)格式问题

         一张A5横放的单据,做SmartForm时很自然的选择了DINA5,然后横放,测试的时候一直用激光打印机,感觉挺正常。实际使用时发现异常,不得己自己定义了一个A5横放的自定纸型(210mmX148mm),打印机端也要设定同样的自定义纸型,并设为默认纸型。针式打印机,窄行打印纸,格式及定位就都正常了。

 

一面是我在网上找到的SAP自定义纸型的方法,至于操作系统下如何自定义纸张就不用说了吧:

1、运行事务代码SPAD;选择工具栏上的【完全管理】按钮——>选择【设备类型】页面(在该页面上有四个按钮:【设备类型】、【打印控制】、【格式类型】、【页格式】);

2、选择【页格式】进入页格式列表界面,选择工具栏上的【修改】图标,工具栏左边会出现【新建】图标(注:不点【修改】图标是不会出现【新建】图标的);选择【新建】图标进入新建页格式界面,输入页格式名称“zkz”,方向选择肖像“Portrait”即竖向,纸张大小为:纸宽“215mm”、纸长“140mm”;(注:方向选为竖向则纸打印时是按竖向来作打印,如方向选横向则按横向打印,当你纸张设为140*215时才可横向打印);保存退出;

3、选择【格式类型】进入格式列表界面,选择工具栏上的【新建】图标进入新建格式界面,格式类型输入“215*140”,类型选择“sapscript”或“abap列表”均可;属性选择前面设置的页格式名称“zkz”,填写注释“xxxxx”;保存退出;

4、选择【设备类型】进入设备类型列表界面,在列表中选择设备类型为“CNSAPWIN”双击进入设备类型(更改)界面,选择工具栏上的【格式】按钮图标进入设备类型格式修改界面,选择【新建】图标,在弹出的对话框的“格式化”框内填入上面所设置的格式类型“215*140”,确定即可。

5、对于是使用write输出报表的,可以双击上述做好的格式类型“215*140”进入maintain format界面,双击要编辑的地方,进入代码编写界面,可在代码中写打印的行间距、字间距、字体、字体大小。(这步很重要,我就是忽图了,导致分页不正常,具体设置代码可以参考己经存在的纸型代码)

至此就为SAP的报表打印设置了针孔纸的纸张打印格式,接着是在报表中的使用:

6、write输出的方式,不需要在程序中设置,只是在打印时要求用户选择“格式类型”为上面所设置的“215*140”;

7、smarform方式,在使用事务代码smartforms画表格时,在“表格属性”栏的“输出选项”中的“页格式”选择上面所设置的“215*140”即可。

8、对于针式打印机,其默认纸张都是A4,我们需要自定义一种纸张的大小,定义纸张格式为215*140,实际尺寸可设置为214.5mm/139.5mm。

至此,你的ABAP报表就可以使用针式打印打印出正确的格式出来了。

注意:由于SAP与针式打印机之间接口的问题,如果表格线太细,打印出来的表格会有时缺少部分横线和竖线,纠正办法是:加粗表格的表框线,最好设置到20TW。(这部份我也遇到,我调到25TW)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
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.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值