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 dynpro
ZCI layout 适用于Web dynpro 的PDF 表单 没有启用ActiveX
xACF 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.
*  <error handling>
    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 开发(待补充)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值