中文乱码问题
如果预览时中文正常,打印出来是乱码的情况,可以尝试在中文环境下重新维护并激活。再次打印应该可以解决。如果还有问题,则检查语言包是否支持中文(或则其他需要使用的语言)。
Table 和 Template 区别
Table
Table 行为动态,数据输出时会根据列宽自动换行,可以固定列宽,
但是默认情况下控制不了行高,如果要想和 template 一样固定行高,需要将 table 的无换页属性打钩;通过 Main window ( table 控件)的高度来自动翻页.
Template
固定列宽、行高,当输出数据过长时会自动截断,通常被用于静态表单开发。
Template 跟 loop 嵌套使用,可以实现固定行高、列宽的表单开发。
需要手动翻页,并程序中计算页码;(或则在程序中设计好固定行数+计算页码).
Smartform Debug
- 使用事物码 Smartforms 进入,输入 Form name 或则通过事物码 NACE 查找到的表单
- 在表单中找到需要 Debug 的一段代码,将代码复制,后续在该位置设断点
- 在导航栏中通过 Environment –> Function Module Name 获取 Function module
- 在 SE37 中打开该 Function Module,进入 Main program 找到 Perform GLOBAL_INIT
- 该 FORM 中进行所有的程序数据初始化,所有 smartform 中的程序行在此处定义,可以打断点
- 或则在 Main program 中找到想要打断点的代码位置,运行 Smartform,会进入断点,进行 Debug
输出格式设置
所有数字变量后面一般都要加 (C),数字靠右,文字靠左
| Syntax | Desc | Syntax | Desc |
|---|---|---|---|
| &field(n)& | 只显示前n位 | &field(.n)& | 显示n为小数位 |
| &field(S)& | 忽略正负号 | &field(T)& | 忽略千分位分隔符 |
| &field(<)& | 符号在左边 | &field(L)& | 将日期转换为本地格式显示 |
| &field(>)& | 符号在右边 | &field(I)& | 如果字段INITIAL,不输出 |
| &field(Z)& | 不输出前导零 | &field(nR)& | n位显示,居右(必须设置长度才可) |
| &field(C)& | 空格压缩 |
页码混乱问题
使用 SFSY-FORMPAGES 显示总页数的时候,如果页数大于 9,将会在前 10 页显示成星号。
解决办法:可以添加 3ZC,&SFSY-PAGE(3ZC)&/&SFSY-FORMPAGES(3ZC)&,不过可能会出现字体颠倒或者重叠的现象,用一个单独的窗口来存放显示页码的文本,并且把窗口的类型设置为 L (最终窗口) 就 OK 了。
金额数字显示问题
如果金额或者数量字段显示不出来的话,可以在 “货币 / 数量字段” 标签中指定相应的数据类型。
Smartforms 系统字段
| Field | Description | Field | Description |
|---|---|---|---|
| &SFSY-DATE& | 日期显示 | &SFSY-PAGENAME& | 当前页的名字 |
| &SFSY-TIME& | 时间格式为HH:MM:SS | &SFSY-USERNAME& | 当前用户的名字 |
| &SFSY-PAGE& | 当前打印页的页号 | &SFSY-WINDOWNAME& | 返回当前窗口的名字 |
| &SFSY-FORMPAGES& | 当前文档的总页数 | &SFSY-JOBPAGES& | 当前打印请求中所有文档的合计页数 |