当前位置:网站首页>SAP SMARTFORMS换页打印自动判断
SAP SMARTFORMS换页打印自动判断
2022-06-11 00:50:00 【DeveloperMrMeng】
最近项目需要做一些单据打印,又遇到了那个熟悉的需求,明细标题行要在换页的时候也进行打印,如果只是简单的只有一种明细清单,那将标题行放在Windows窗口中就行了,但如果有多种明细清单,就不能这么做了,因为每种明细清单标题可能是不一样的,换页的时候是需要根据当前是哪种明细数据来打印对应的标题行的,记得之前做法都是先打印出来,或者根据行高去计算,看到第几行需要换页,然后写代码计算行数,MOD求余,使用换页命令进行换页等等一些操作,嫌麻烦就扒了一下系统标准代码,从标准判断换页的逻辑中抽离出来了一小部分封装了一个通用函数,后面判断换页只需要调用一下就好了,无需一堆逻辑去手动计算,再通过命令调用换页之类的操作了。
标准判断换页的逻辑在 SSFCOMP_TABLE_BEGIN 的 performtab_use_definition 中,也可以自己去打断点看看。
效果如下:


实现方式:
1.创建函数ZCHECK_NEW_PAGE


**********************************************************************
* 根据行高判断下一行是否需要换页
* 参照函数SSFCOMP_TABLE_BEGIN中perform tab_use_definition中的处理
**********************************************************************
FUNCTION ZCHECK_NEW_PAGE.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(I_VALUE)
*" REFERENCE(I_UNIT) TYPE CHAR2
*" EXPORTING
*" REFERENCE(E_NEW_PAGE) TYPE FLAG
*"----------------------------------------------------------------------
* Units
CONSTANTS:
UNIT_CHARACTER(2) VALUE 'CH',
UNIT_CENTIMETER(2) VALUE 'CM',
UNIT_MILLIMETER(2) VALUE 'MM',
UNIT_POINT(2) VALUE 'PT',
UNIT_LINE(2) VALUE 'LN',
UNIT_TWIP(2) VALUE 'TW',
UNIT_INCH(2) VALUE 'IN'.
DATA:
L_FACTOR TYPE F,
LV_CONV_VALUE TYPE I.
CASE I_UNIT.
WHEN UNIT_TWIP.
L_FACTOR = 1.
WHEN UNIT_POINT.
L_FACTOR = 20.
WHEN UNIT_CENTIMETER.
L_FACTOR = 1440 / 254 * 100.
WHEN UNIT_MILLIMETER.
L_FACTOR = 144 / 254 * 100.
WHEN UNIT_INCH.
L_FACTOR = 1440.
WHEN OTHERS.
L_FACTOR = 0.
ENDCASE.
LV_CONV_VALUE = I_VALUE * L_FACTOR.
ASSIGN ('(SAPLSTXBC)FT-REM_HEIGHT') TO FIELD-SYMBOL(<FS_REM_HEIGHT>).
IF <FS_REM_HEIGHT> - LV_CONV_VALUE + 12 <= 0.
E_NEW_PAGE = 'X'.
ELSE.
E_NEW_PAGE = ''.
ENDIF.
ENDFUNCTION.2.在smartforms中添加以下逻辑:
传入参数为明细内容行的高度和高度单位,也就是下一行即将要打印的行的高度信息
当判断下一行明细会换页打印时,在此之前先打印标题,即实现标题行随换页一起打印的效果

打印完换页后的标题行和换页后的第一行明细后,清空标识,保证每一页只会打印一次标题

借助这个函数,我们就能快速的知道下一行是否需要换页,从而可以在换页后的最开始,去决定我们想要打印的东西。
以上。
边栏推荐
- 【MATLAB】图像基本运算(点运算、算术运算、缩放、旋转)
- How to reinstall win11 drawing tool when it is missing
- Loki 学习总结(1)—— Loki 中小项目日志系统的不二之选
- Contest2902 - following Tang Kelian's programming: sequence structure question d: area 201502 question f: persistence of supporting college students in Ludian earthquake
- (已解决)Latex--取消正文中参考文献引用的上标显示(gbt7714-2015会导致默认上角标引用)(上角标&平齐标混合使用教程)
- Dialog alertdialog, simpledialog, showmodalbottomsheet, showtoast shutter custom dialog
- 【圖像處理】基於matlab GUI多功能圖像處理系統【含Matlab源碼 1876期】
- [music] playing "over fire" based on MATLAB [including Matlab source code 1875]
- [winning] Title A of the 9th Teddy Cup Challenge
- Matlab array other common operation notes
猜你喜欢

Data and electricity course design: circuit of full adder / subtractor

Understanding of pointers

Deep exploration of functions with indefinite parameters in C language

Dinner a bang's Craft
![[leetcode] LRU cache](/img/14/cedd5bb84ae1cceb62016d13e67f67.jpg)
[leetcode] LRU cache

Video compression data set TVD

字节北京23k和拼多多上海28K,我该怎么选?

关于CS-3120舵机使用过程中感觉反应慢的问题

视频压缩数据集TVD

Task02: linked list
随机推荐
Database overview
面试官:介绍一下你简历中的项目,细讲一点,附项目实战
Project sorting of Online Exercise System Based on gin and Gorm
Return function of different return values
【MATLAB】图像基本运算(点运算、算术运算、缩放、旋转)
[error record] Android application security detection vulnerability repair (strandhogg vulnerability | set activity component android:taskaffinity= "")
Win11怎么更改管理员头像?Win11更换管理员头像的方法
[leetcode] LRU cache
Within one month, the broadcasting volume has increased by 9million, and station B has three traffic growth passwords!
Question g: candy
Loki 学习总结(1)—— Loki 中小项目日志系统的不二之选
flutter_ Swiper carousel map plug-in
2021-02-03 learning notes of MATLAB before the US games (grey prediction and linear programming)
In May, the main growth ranking list (platform of station B) of the single flying melon data up was released
并发编程基础底层原理学习(四)
Thoughts on small steamed stuffed bun's dividend
Some records of China open SSL compilation
Task02: basic use of database (MySQL)
Initialize the one-dimensional array a correctly
【MATLAB】图像压缩编码(DCT、RLE)