在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在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。1.到标准程序SAPLKKBL 拷出SCREEN STATUS STANDARD_FULLSCREEN至自己的程序中。
2.在拷过来的STATUS 中新增自己想要的按钮
3.在调用ALV显示时增加有如下两个重要参数。
i_callback_pf_status_set = 'SET_PF_STATUS' "PBO事件
i_callback_user_command = 'ALV_USER_COMMAND'"PAI事件
具体调用如下:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'ALV_USER_COMMAND'
i_callback_program = g_repid
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_save = 'X'
is_variant = v_stru_disvar
it_events = git_events[]
it_sort = it_sort[]
is_print = gs_print
TABLES
t_outtab = gt_data
EXCEPTIONS
program_error = 1
OTHERS = 2.
编写FORM SET_PF_STATUS和ALV_USER_COMMAND 。
FORM alv_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA:ref_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
BREAK-POINT.
CASE r_ucomm.
"自定义事件处理
ENDCASE.
CALL METHOD ref_grid->check_changed_data.
rs_selfield-refresh = 'X'. "刷新内表
ENDFORM.
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD'."从标准拷出来并修改的STATUS
ENDFORM.
E: 无法获得锁 /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
解决方法:
#:sudo rm /var/cache/apt/archives/lock#:sudo rm /var/lib/dpkg/lock使用“sudo dpkg --configure -a”,