Smartform的几点说明

本文介绍了SAP SmartForms中的常见问题及解决方案,包括页数显示异常、字段输出限制、长字符串处理、输出格式设置、条形码打印及调试技巧等。
部署运行你感兴趣的模型镜像

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。

您可能感兴趣的与本文相关的镜像

Facefusion

Facefusion

AI应用

FaceFusion是全新一代AI换脸工具,无需安装,一键运行,可以完成去遮挡,高清化,卡通脸一键替换,并且Nvidia/AMD等显卡全平台支持

SmartForm是一种在SAP系统中用于创建和管理表单的工具,它是在SAP Script表单的基础上发展而来的,提供了更为便捷的使用体验[^3]。通过SmartForm,用户可以创建包含页面、窗口、地址栏、图形、数据、文本内容以及文本模块在内的复杂表单,并且能够直接生成易于调用的功能模块[^4]。 开发过程中,当SmartForm特别复杂时,不可避免地需要添加自定义代码。如果这些代码存在问题,那么调试和追踪错误就变得至关重要。对于接手他人制作的表单时遇到的元素理解难题,可以通过定位到所需的元素节点来解决[^2]。 ### SmartForm的优势 - **易用性**:相比SAP Script,SmartForm提供了一个更直观的用户界面,使得表单的设计和配置更加简单直接。 - **集成性**:能够直接生成功能模块,这使得ABAP程序中的调用变得更加简单。 - **灵活性**:支持多种元素的添加,如数据字段、文本模块、图形等,允许创建高度定制化的表单[^4]。 ### SmartForm的不足 - **学习曲线**:尽管SmartForm设计得较为直观,但对于新用户来说,掌握其所有特性和功能仍需一定时间。 - **调试难度**:当表单逻辑复杂时,调试内部错误或定位元素节点可能变得困难[^2]。 ### 开发与打印单据 利用SmartForm开发一个单据并实现打印,通常包括后端代码的编写和前端界面的设计两大部分。后端代码负责处理业务逻辑,而前端界面则关注于表单的外观和用户体验,包括样式设置和表单布局设计等[^1]。 #### 示例代码:调用SmartForm功能模块 ```abap DATA: lv_form_name TYPE string VALUE 'ZSMARTFORM_EXAMPLE', lt_output_options TYPE TABLE OF sfpoutputoptions, ls_output_options TYPE sfpoutputoptions. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = lv_form_name IMPORTING fm_name = lv_form_name. CALL FUNCTION lv_form_name EXPORTING output_options = lt_output_options EXCEPTIONS others = 1. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值