1.添加空行,保证每一页有固定的打印的表格行数

上图,每页最多打印13行,数据只有11行,自动添加两个空行补齐

代码如下“

 "定义变量:

 data: l_blank type i.

 "内表的行数

 describe table <itab> lines l_blank.

 "计算需要的空行

  l_blank = l_blank mod . 

 if  l_blank > .   

    l_blank =  -  l_blank.  "空白行。 

 endif.

 clear <wa>. 

 do  l_blank times.   

   append <wa> to <itab>.  

 enddo.

2.变量

&symbol& (括号中,小写字母为变量)

&symbol&  屏蔽从第一位开始的N位

&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)&       禁止系统类型转换

&'pre-text' symbol 'post-text'&       在字段输出前后加入文本内容

SET DATE MASK = 'date_mask'    设置日期显示模版

SET TIME MASK = 'time_mask'        设置时间显示模版

3.Smartform的几点说明

1、使用SFSY-FORMPAGES显示总页数的时候,如果页数大于9,,将会在前10页显示成星号。解决办法:可以添加3ZC,&SFSY-PAGE(3ZC)&/&SFSY-FORMPAGES(3ZC)&,不过可能会出现字体颠倒或者重叠的现象,用一个单独的窗口来存放显示页码的文本,并且把窗口的类型设置为L(最终窗口)就OK了。

2、如果金额或者数量字段显示不出来的话,可以在“货币/数量字段”标签中指定相应的数据类型。

3、Field not outputting more than 255 characters in a loop. This is happening because when you send a string to smartform with length >255 characters then it takes only first 255 characters. I overcomed this problem by splitting the string which was of around 500 char into two and then sending it to smartform as individual vairables and displaying the two variables one after the other in the smartform.

将文本字段拆分成几个字符变量再连接在一起显示。

4、输出格式设置说明

Syntax                 说明

&field+&               对于字符变量设置从何位置显示数据,如果offset大于字符变量长度时,系统就不会显示任何数据

&field()&               设置输出长度.

&field(*)&              如果该字段类型是abap数据字典里定义的类型,系统将按照字典定义的长度设置输出长度

&field(S)&             禁止输出符号位

&field(<)&             符号位显示在数据的左边

&field(.)&              设置显示小数的位数

&field(E)&             设置为科学标示法

&field(T)&              禁止千分位的显示(适用于: DEC, CURR, INT和QUAN几种数据类型).

&field(Z)&              禁止数字前导0的显示

&field(I)&               禁止显示空值

&field(K)&             禁止类型系统按数据字典定义的转换函数进行输出转换

&field(R)&             右对齐(只有在定义了输出长度时才有效)

&field(F)&              用指定的字符替换左边的空格.

&field(L)&              将日期转换为本地显示格式,使用JDAT指定的格式

&field(C)&             该设置效果和ABAP的CONDENSE语句相同.

5、Smartform 打印条形码

先在SE73里定义一个新的BARCODE,注意一定要用新的才可以,旧的是打印不出来的。然后定义一个SMARTFORM的样式,把你定义的BARCODE放到字符样式里面去。再做SMARTFORM就可以了,将需要作为条码的变量的格式选为该BARCODE格式,输出时会根据变量不同的数据(如物料,批次)得到相应的条码。

(1).In the transaction se73 , choose a barcode font that suits your requirements (do this by checking the system barcodes radio button)

(2).Click on the Printer barcodes radiobutton and make sure that the barcode you chose in step 1 exists for the device type of your printer.

If you need to create a new barcode font , create it in step1 , and enterthe hex barcode prefix and suffix ( can be obtained from your printer manual) , then in step 2 , define a new z_ device type as a copy of the device type of your printer and assign the system barcode to the printer.

(3). in your layout set , define a character string with the barcode font chosen above in the Bar code field . Format the string that you want to print as a barcode using this character string.

6、调试    如果在SMARTFORM中添加了代码,编辑器是不允许设置断点的。

一种方法就是,在代码中加入断点语句break-point,缺点是,每想设一个断点,就需要写一条断点语句。

另一种方法是,自己加的代码都会自带出一个名字的比如‘%CO1’。 Environment -> Function Module Name, he function that generated for this smartforms is ‘/1BCDWB/SF00000227’(自动生成的SMARTFORM程序名) T-code se37 -> /1BCDWB/SF00000227 -> Goto -> Main Program 最后一个INCLUDE是对DEBUG最有用的,双击进入,找到 FORM %GLOBAL_INIT。

来自:

http://blog.csdn.net/linsen831214/article/details/5690690

有些时候使用smartform时,在设计form layout的时候check是不出错的,但是一旦跑了function, exception就返回了,很让人郁闷。

今天就遇到了这个问题,在程序中使用smartform打印,点击“打印预览”后没有任何反映,通过debug获得错误信息“参考字段wa-wrbtr在表格中未知”,知道了错误源,就好解决了。

在smartform中使用bseg-wrbtr字段时,不能直接&wa-wrbtr&,需要先判断它是否有值,不然就会出错

创建定个程序行,代码如下:

l_wrbtr = wa-wrbtr.  "l_wrbtr 类型为c 或者 string

IF wa-wrbtr IS INITIAL.     CLEAR l_wrbtr.  ENDIF.

最后输出 &l_wrbtr&即可。

虽然解决了,但不能确定是什么原因,可能bseg-wrbtr的类型是CURR的缘故吧。

来自:http://www.cnblogs.com/liaojunbo/archive/2011/09/05/2167097.html

4.SmartForms 小技巧

1.使用TABLE在最小高度没有考虑数据换行时,绝对不要自己在程序里面计算总页数;

2.使用TABLE切记表头要勾选在换页处显示;

3.使用TABLE切记计算时选择“总计”、“在循环结束时”只会总计一页的数据,而不是所有的数据;

4.使用TABLE当你发现调整了最小行高结果行高还是没变时,看看是不是样式的问题;

5.所有数字变量后面一般都要加(C),数字靠右,文字靠左,标题很短的话文字之间加个空格,页计“/”两边加空格,美观;

6.面向前台打印的时候,导入接口没有要求一般只有打印相关。

SE38中运行RSCPSETEDITOR,勾掉SMARTFORMS和SAPSCRIPT前面的勾就可以了!
激活后SMARTFORM中的文本编辑器就改为SAP默认的了!

SmartForms 小技巧的更多相关文章

  1. 前端网络、JavaScript优化以及开发小技巧

    一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...

  2. Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具

    前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...

  3. 分享两个BPM配置小技巧

    1.小技巧 流程图修改后发布的话版本号会+1,修改次数多了之后可能会导致版本号很高,这个时候可以将流程导出,然后删除对应的流程包再导入,发布数据模型和流程图之后,版本清零 2.小技巧 有的同事入职后使 ...

  4. linux系统维护时的一些小技巧,包括系统挂载新磁盘的方法!可收藏!

    这里发布一些平时所用到的小技巧,不多,不过会持续更新.... 1.需要将history创建硬链接ln 全盘需要备份硬链接 ln /etc/xxx /home/xxx 2.root用户不可以远程 /et ...

  5. JS处理事件小技巧

    今天,就分享一下我自己总结的一些JS的小技巧: ①防止鼠标选中事件 <div class="mask" onselectstart="return false&qu ...

  6. iOS:小技巧(不断更新)

    记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...

  7. css小技巧(1)

    1.-webkit-overflow-scrolling: touch; 解决ios滑动时无缓冲问题 2.::-webkit-scrollbar 设置ios滑动时是否显示滚动条 3.::selecti ...

  8. 最强 Android Studio 使用小技巧和快捷键

    写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...

  9. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

随机推荐

  1. android activity在横竖屏切换的时候不重新调用onCreate方法

    在安卓系统中,横竖屏切换会默认重新调用onCreate等生命周期方法,如果此时有一些临时数据没有保存下来,很有可能会导致该数据丢失. 因此我们可以进行以下设置,来避免恒切换时重新调用onCreate方 ...

  2. IDEA 整合Junit实现自动生成测试代码

    1.安装插件 junit generator 重启IDEA,完成安装. 2. 选中需要测试的方法,按alt + insert 即可自动生成测试类\方法 3. 设置

  3. ASP.NET 弹出对话框和页面之间传递值的经验总结

    今天碰到一个弹出对话框(PopUp dialog)的问题, 因该是个傻瓜问题, 但是还是让我研究了半天, 总结了一些前人经验, 拿出来跟大家分享一下! 在ASP.Net中页面之间的传值方法有很多,但是 ...

  4. USB Type-C,接口上的大统一?

    这款 24-pin 连接器的机械设计反应了设计人员从 Micro-B 连接器上获得的历史教训,它无需确定插入的正反方向并可实现 10000 次的插拔.使用者再也不需要担心“哪头上,哪头下”,因为 US ...

  5. Eclipse开发Java EE应用

    设置Web服务器 添加Web服务器 以上两步可以直接由下面这步完成: or 创建Web工程 建立JSP文件供测试 发布Java Web工程 方法1:在下方Server中添加 方法2:右击左边项目导航树 ...

  6. MyBatis学习总结1

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用 ...

  7. POJ 3083 Children of the Candy Corn 解题报告

    最短用BFS即可.关于左手走和右手走也很容易理解,走的顺序是左上右下. 值得注意的是,从起点到终点的右手走法和从终点到起点的左手走法步数是一样. 所以写一个左手走法就好了.贴代码,0MS #inclu ...

  8. values of type NSInteger should not be used as format arguments; 关于Xcode中烦人的32位与64位警告处理方法.

    http://stackoverflow.com/questions/16075559/why-does-an-nsinteger-variable-have-to-be-casted-to-long ...

  9. BrnShop开源网上商城第三讲:插件的工作机制

    这几天BrnShop的开发工作比较多,所以这一篇文章来的晚了一些,还请大家见谅呀!还有通知大家一下BrnShop1.0.312版本已经发布,此版本添加了报表统计等新功能,需要源码的园友可以点此下载.好 ...

  10. JAX-RS -- Java API for RESTful Web Services

    Java EE 6 引入了对 JSR-311 的支持.JSR-311(JAX-RS:Java API for RESTful Web Services)旨在定义一个统一的规范,使得 Java 程序员可 ...