Play Open
Loading Please wait Loading Please wait Loading Please wait Loading Please wait Loading Please wait Loading Please wait

SAP ABAP 单据打印那些事

SAP 的单据打印类型开发主要分为:ScriptForm、SMARTFORMS、AdobeForm.

下面就这三个不同代际的打印技术做下总结:

一、ScriptForm

ScriptForm 常用于系统自带的单据打印模板,较早版本的ECC或国外企业相对使用比较多。相比较其他类型的单据格式,开发友好程度低,难度偏大,因为帮助文档以及相关资料较少,需要自己摸索和验证。

常用T-CODE

SE71 SAPscript 格式 (创建、修改、显示 SCRIPT表单)

SE78 表格图形管理 (管理图片)

SO10 SAPscript:标准文本 (管理统一的文本)

NACE WFMC:初始定制屏幕 ( 集成到标准单据输出的配置 )

Script表单介绍

SAP SCRIPT 表单主要分为页、窗口、页窗口、段落格式、字符格式。

页数主要用于配置表单页分类。

窗口显示表单所有窗口信息,其中MAIN窗口可以跨页

页窗口设置本页所有窗口及其位置(菜单中设置 -> 格式绘制器 可预览位置)

段落格式控制输出的对齐方式、行间距,也可以设置字体,制表符

(制表符设置可以精细控制每一行的空格间隔,很重要)

字符格式可设置字体、大小、粗细、斜体、下划线

(这里和段落格式中字体设置有重复,简单表单可以合并到段落格式)

系统中有大量标准SCRIPTFORM 可供参考,如销售订单打印程序配置。

(使用T-CODE: NACE , 选中 V1 ,点击 "输出类型" )

( 选中 PNST ,双击 "处理程序" )

(这里查看调用程序、例程及表单,其中FORM 子程序就是 例程,表单就是SCRIPT表单)

(这里可以参考调用程序标准语法,查看标准script 表单的写法规则,Demo是最好的老师)

SCRIPT表单开发常识

1、变量尽量在调用程序中定义,全局变量在SCRIPT表单可以直接用

2、自定义逻辑尽量在调用程序中完成,表单可以通过INCLUDE程序调用逻辑赋值,更新麻烦

3、新增打印尽量避免使用,改用smart表单或PDF

文章推荐

扫盲文章:SAP SCRIPTFORM 操作手册

大神详解:SAPscript Forms 教程

二、SMARTFORMS

SMARTFROM,即智能表单,是SAP表单开发中最常见的一种,基本可以覆盖大部分打印需求,包括标签打印。熟悉SCRIPT表单开发的朋友就会知道,SMART表单是SCRIPT表单的升级版,开发界面更加优化、数据传输更规范、编程语法更友好,调用更方便,同时也集成了SCRIPT表单的一些特性。SMART表单虽然控件比较少,但是可灵活运用,可化腐朽为神奇,挑战不可能。

常用T-CODE

SMARTFORMS SAP 智能表格 (创建、修改、显示 SMART表单、样式、文本模块)

SMARTSTYLES SAP Smart Styles (创建、修改、显示 SMART 样式)

SE78 表格图形管理 (管理图片)

SE73 SAPscript 字体维护 (可定义二维码和条形码)

SO10 SAPscript:标准文本 (管理统一的文本)

NACE WFMC:初始定制屏幕 ( 集成到标准单据输出的配置,细节见上面 )

SPAD 假脱机管理 (常用配置打印设备、页格式等)

SMART表单介绍

(已标准SF:SF_XSF_DEMO1 为例)

全局设置

1、表格属性

显示基本SF属性,设置 翻译语言、页格式、样式

2、表格接口

导入 页签:设置打印属性,如Control属性、output 属性、User Settings; 还有自定义表单抬头结构、变量等

导出 页签:设置输出属性

表 页签:全局内表,用户数据内外交互,常用于接收ITEM内表信息

例外 页签:定义异常

3、全局定义

全局数据 页签:定义全局结构、内表、变量等

类型 页签:自定义类型结构,用于参考创建结构、内表

字段符号 页签:暂无使用过

初始化 页签:

格式化程序 页签:

货币/数量字段 页签:设置货币/数量字段参考格式

页和窗口(主要控件)

页控件

需明确 横向还是纵向 (其他默认即可)

(根据需求决定几页,一般首页和其他页 即两页,涉及自动跳转或强制跳转。)

窗口控件

主要作用是设置窗口类型及大小位置。

常规页签:窗口类型,主窗口(每页只能一个,可自动跨页),次窗口即常规窗口。

输出选项页签:设置窗口大小及位置,边框及底纹。

条件页签:可根据字段值动态控制显隐 及其他附加设置

(注意:窗口复制到不同页,可改位置及大小,但是增删里面控件,因为会同时修改。)

模板控件

主要作用是规范文本输出,尤其是同行多字段的情况,有固定的高和宽。

模板页签:设置行及列的高和宽,设置单元格边框及底纹

输出选项页签:设置样式和边框(基本不用)

条件页签:可根据字段值动态控制显隐 及其他附加设置

表控件

表格输出,专门处理内表数据展示,仅用于主窗口,自动换行,自动跨页。

表页签:设置行和列的宽,单元格边框和底纹。(一般需要设置表头行、item行、脚标行)

数据页签:设置LOOP循环及其WHERE条件,有内表转为行数据

计算页签:预定义平均值、统计数量、总计方法

输出选项页签:设置样式

条件页签:可根据字段值动态控制显隐 及其他附加设置

(表头行用于显示列名称,item行用于显示item数据,脚标行用户显示统计数据或说明。)

文本控件

主要用户展示文本或条码,同时设置文本段落格式和字符格式。

常规属性页签:设置文本类型,文本信息及其段落格式,字符格式。(详细解释)

文本类型解释动态文本显示完整表类型文本元素输入字符、字段变量包含文本长文本显示(SO10显示)文本模块统一预定义的文本(其他SMART表单可用)

字符格式作用字体、大小、粗细、斜体、下划线、颜色二维码或条形码

Web属性页签:设置Web页交互控件,比如按钮、下拉框

输出选项页签:设置样式和边框(基本不用)

条件页签:可根据字段值动态控制显隐 及其他附加设置

循环控件

处理内表数据不过根据需求设置LOOP循环及输出

数据页签:设置LOOP循环及其WHERE条件,有内表转为行数据

计算页签:预定义平均值、统计数量、总计方法

输出选项页签:设置样式

条件页签:可根据字段值动态控制显隐 及其他附加设置

程序行控件

根据需求穿插程序逻辑,一般用于统计计算或判断标识逻辑

常规属性页签:设置输入输出参数,写程序逻辑

条件页签:可根据字段值动态控制显隐 及其他附加设置

命令控件

常用于强制换页

常规属性页签:设置跳转目标页及其他控制设置

输出选项页签:设置控件位置

条件页签:可根据字段值动态控制显隐 及其他附加设置

可选控件

类似于IF判断,根据条件控制显示信息

常规属性页签:设置节点条件,满足就走TURE,不满足就走FALSE

输出选项页签:设置控件位置

条件页签:可根据字段值动态控制显隐 及其他附加设置

图形控件

常用于显示LOG等图片

常规属性页签:设置图片属性(SE78中上传图片)

条件页签:可根据字段值动态控制显隐 及其他附加设置

开发注意事项

1、打印需求第一要义就是需求明确,越细越好,否则会反复修改到无语

2、常见注意点:页格式、横向或纵向、字体、列表字段控制、左右两边间距等

3、页控制:第一页和第二页布局,一般就是第二页抬头有变化,其他需求可能要复杂了

4、SMART表单复制通过导出、导入实现

5、类似凭证打印可以通过 SSF_OPEN、SSF_CLOSE 控制

6、字符输出特殊控制,常用的如:&symbol (ZC)&,不显示前导0和空格

&symbol& 括号中,小写字母为变量 &symbol (n)& 只显示前N位 &symbol (S)& 忽略正负号 &symbol (<)& 符号在左边 &symbol (>)& 符号在右边 &symbol (Z)& 不输出前导零 &symbol (C)& 空格压缩去空格(留一个) &symbol (.n)& 显示n 位的小数位 &symbol (T)& 忽略千位分隔符 &symbol (En)& 浮点数的幂指数为n &symbol (nR)& n位显示,居右 &symbol (Ff)& fill character,用f 填充字段至完整位数显示 &symbol (I)& 如果该字段是INITIAL,不输出 &symbol (K)& 禁止系统类型转换 &symbol+N& 偏移 &symbol(R)& 右对齐

7、打印输出控制

gs_output_option-tdimmed = 'X'. "开启立即打印 gs_output_option-tddelete = 'X'. "打印完后断开设置连接,清空打印内容缓存 gs_output_option-tdnoprint = 'X'. "不显示“打印”按钮 gs_control_param-no_dialog = 'X'. "不显示选择打印对话框 gs_control_param-preview = 'X'. "打印预览

gs_output_option-tddest = 'VS'. "打印输出设备

8、小技巧:打印预览时PDF导出。(在预览界面的命令框中输入 PDF! 回车后自动导出PDF)

文章推荐

1、SMART表单开发初级 Step By Step

2、页格式设置、创建样式、修改默认文本编辑器、图片使用、二维码

3、条码、二维码详解

4、自动生成PDF,作为附件发送邮件(待补充)

5、添加特殊符号功能

方块通过模板单元格边框实现,里面的符号通过插入特殊符号实现(最终实现动态控制)

三、AdobeForm

Adobe From 又称为PDF FROM 是SAP的一种表单生成技术,相比较Sap Script From 与 Smartforms 其优点更加灵活方便开发。功能设计上编辑模式进行了拆分,接口设计与样式设计分为两块。

从功能上讲,SAP ABAP系统与Adobe Forms集成,使你能够创建可交互的PDF表单。你可以使用Adobe Form Designer创建包含表单字段、复选框、下拉框等交互元素的表单。然后,使用ABAP代码将数据填充到表单中,并将其导出为PDF格式。当然,script 和 smart表单也可以转化成PDF,但是功能没那么强大。

SAP官方测试表单(不迷路):FP_TEST*

常用T-CODE

SFP 表格构建器

Adobe表单介绍

(以标准表单:SD_SDOC_FORM01,接口(界面):SDOC_INTERFACE 为例)

基本常识:

接口(界面)定义传入传出结构及必要的全局变量

Form(表单) 负责 绑定interface 并 绘制布局(Layout)

所以,我们优先完成接口(界面)的定义,然后在表单中引用并绑定到对应的控件中。

接口(界面)介绍

导入、导出、全局定义和初始化功能一致,可参考SMART表单全局设置的介绍。

表单(Form)介绍

属性

填写描述,选择布局类型和 接口(界面)绑定。

标准布局适用于打印,发送PDF邮件,不适用于Web dynproZCI layout 适用于Web dynpro 的PDF 表单 没有启用ActiveXxACF layout 适用于Web dynpro 的PDF 表单 浏览器启用了ActiveX未知类型格式适用于 sap netweaver

上下文

完成 接口(界面)绑定后,在上下文中显示并可拖拉到右侧,可直接在布局中绑定。

布局

通过布局界面,简单分为四块:菜单功能(上部)、层次结构(左侧)、视图配置(中间)、控件配置(右侧)

解释:

Master Page:母版功能,每个表单设计都至少包含一个Adobe lifecycle designer 自动创建的母版页。(标准案例严格按照设计,母版仅用于整体布局,建议参考)

Body Page: 单页,每个body page 从 master page上获得 页大小和页方向。

开发注意事项

1、通过Data View 字段或表拖拽可快速创建控件,自动完成绑定

2、Body Page,应该选择Flowed 浮动,因为是动态的

3、遇到布局里显示异常,重置下即可。(Palettes->Workspace->Reset Palettes Locations)

4、有How to 指导教程(官方文档,不迷路)和控件库(自由发挥,直接拖拽)

5、ABAP 调用代码Demo( FP_JOB_OPEN、FP_JOB_CLOSE)

CALL FUNCTION 'FP_JOB_OPEN'

CHANGING

ie_outputparams = fp_outputparams

EXCEPTIONS

cancel = 1

usage_error = 2

system_error = 3

internal_error = 4

OTHERS = 5.

IF sy-subrc <> 0.

Endif.

TRY.

CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'

EXPORTING

i_name = form_name

IMPORTING

e_funcname = fm_name.

CATCH cx_root INTO gv_w_cx_root.

lv_mesg = gv_w_cx_root->get_text( ).

MESSAGE lv_mesg TYPE 'E'.

ENDTRY.

CALL FUNCTION fm_name

EXPORTING

/1bcdwb/docparams = fp_docparams

SLS_PRT_COM = fp_SLS_PRT_COM

IMPORTING

/1bcdwb/formoutput = fp_form_output

EXCEPTIONS

usage_error

=1

system_error

=2

internal_error

=3.

IF sy-subrc <> 0.

*

MESSAGE ID 'ZV_SAP1' TYPE 'E' NUMBER 999 WITH

'Adobe function errored out; RC='(251) sy-subrc ##TEXT_POOL.

ENDIF.

CALL FUNCTION 'FP_JOB_CLOSE'

IMPORTING

e_result = fp_result

EXCEPTIONS

usage_error = 1

system_error = 2

internal_error = 3

OTHERS = 4.

IF sy-subrc = 0.

IF nast-nacha = '7' OR ( nast-nacha = '5' AND nast-anzal = '0' )

OR p_mail = 'X'.

PERFORM external_send_email.

ELSEIF nast-nacha = 1 .

retcode = 0.

ENDIF.

ELSE.

MESSAGE ID 'ZV_SAP1' TYPE 'E' NUMBER 999 WITH

'Job (spool) close failed; RC='(250) sy-subrc ##TEXT_POOL.

ENDIF.

文章案例推荐

1、简单Demo案例练手:Adobe Form创建教程

2、入门案例:Adobe From(PDF From)入门 及条码

3、WebDynpro for ABAP中AdobeForm 开发(待补充)

Copyright © 2088 足球小将世界杯_1999年美国女足世界杯 - omaili.com All Rights Reserved.
友情链接