ALV & SMARTFORMS 并分页
程序员文章站
2022-07-15 10:30:15
...
1. 主界面
2. Form Attributes
3. Form Interface
4. Global Definitions
5. %LOOP2 表数据循环
6. %LOOP3 计算单个凭证总页码
7. %CODE3 累计单个凭证记录数
8. %CODE2 计算总页码数
9. %LOOP1 循环明细
10. %CODE1 累计当前记录数
11. %TEMPLATE2 数据明细
12. %CODE4 计算当前页码数
13. %CODE5 计算空行
14. %LOOP4 补充打印空行
15. %TEMPLATE4 空数据明细
16. %CONDITION1 分页
17. %COMMAND1 强制分页
18. %CODE6 清除内表数据
我还是没找到方法,把我的截图从excel表里搞出来,没有画图工具,看附件吧
其实,做sap的alv调用smartforms输出,只要一步一步来,耐心读完肯定就可以的。
1. 首先,在窗口属性设置-〉输出设置-〉Style
一般一个Style就足够用了,在T-Code smartforms第二栏,新建Style。
新建Style,在段落格式-〉右键-〉创建节点-〉如TH(Table Header)、etc.,其中设置第一页相关信息就够了,常用到的Alignment选择左、右、中,Indent中设置Left Margin 2mm,Spacing中设置Line Spacing 1ln;然后是在Header Data中设置默认的段落格式,一般选择左排列的格式;最后是创建字体格式,一般创建第二页也就是Font那页,设置字体、大小、粗体、下划线这几样,第一页Standard Setting是为了创建Bar Code而设置的。
2. 其次,在接口参数设定中。
Table也就是第三栏中设置内表like数据字典中的结构体,这样减去了缓存放入内存中调用的弊端,在数据字典中,可以设置“Z”开头的结构体,T-Code SE11的第三栏,点击创建,在第一列输入任意,第三列输入你like的地段,敲回车,这样把你所需要的结构体建立起来。
3. 再次,在定义全局变量中。
第一列全局变量,还有第四列初始化,这两个会用到,而Types没有用到,这也就是防止产生大量的缓存
4. 剩下的就是SMARTFORMS的主界面了,看附件吧!
2. Form Attributes
设置:Style
3. Form Interface
设置:内表 代码:IT_DATA LIKE ZXLI001 IT_PURNM LIKE ZXLI002 IT_BLANKS LIKE ZXLI001
4. Global Definitions
设置:1).全局变量 WA_DATA TYPE ZXLI001 WA_PURNM TYPE ZXLI002 G_COUNT TYPE I G_CURRLINE TYPE I G_TOTALLINES TYPE I G_CURRPAGE TYPE I G_TOTALPAGE TYPE I WA_BLANKS TYPE ZXLI001 C_X TYPE I 2).初始化 输入参数:G_TOTALLINES, IT_DATA. 代码:DESCRIBE TABLE IT_DATA LINES G_TOTALLINES.
5. %LOOP2 表数据循环
位置:数据-〉loop循环-〉内表:IT_PURNM INTO WA_PURNM.
6. %LOOP3 计算单个凭证总页码
位置:数据-〉loop循环-〉内表:IT_DATA INTO WA_DATA. WHERE 条件:PUR_NUM = WA_PURNM-PURNM
7. %CODE3 累计单个凭证记录数
输入参数:G_COUNT, C_X. 代码:G_COUNT = G_COUNT + 1. C_X = G_COUNT.
8. %CODE2 计算总页码数
输入参数:G_COUNT, G_TOTALPAGE. 代码:DATA : L_LINE TYPE I. L_LINE = G_COUNT MOD 10. IF L_LINE = 0. G_TOTALPAGE = G_COUNT DIV 10. ELSE. G_TOTALPAGE = G_COUNT DIV 10 + 1. ENDIF. L_LINE = 0. G_COUNT = 0.
9. %LOOP1 循环明细
位置:数据-〉loop循环-〉内表:IT_DATA INTO WA_DATA. WHERE 条件:PUR_NUM = WA_PURNM-PURNM
10. %CODE1 累计当前记录数
输入参数:G_COUNT, C_CURRLINE. 代码:G_COUNT = G_COUNT + 1. G_CURRLINE = G_CURRLINE + 1.
11. %TEMPLATE2 数据明细
12. %CODE4 计算当前页码数
输入参数:G_COUNT, G_CURRPAGE. 代码:DATA : L_LINE TYPE I. L_LINE = G_COUNT MOD 10. IF L_LINE = 0. G_CURRPAGE = G_COUNT DIV 10. ELSE. G_CURRPAGE = G_COUNT DIV 10 + 1. ENDIF.
13. %CODE5 计算空行
输入参数:G_COUNT, IT_BLANKS. 代码:G_COUNT = G_COUNT MOD 10. IF G_COUNT <> 0. G_COUNT = 10 - G_COUNT. ENDIF. CLEAR IT_BLANKS[]. DO G_COUNT TIMES. APPEND WA_BLANKS TO IT_BLANKS. ENDDO. G_COUNT = 0.
14. %LOOP4 补充打印空行
位置:数据-〉loop循环-〉内表:IT_BLANKS INTO WA_BLANKS.
15. %TEMPLATE4 空数据明细
16. %CONDITION1 分页
条件:G_CURRLINE <> G_TOTALLINES
17. %COMMAND1 强制分页
普通:Go to New Page -> %PAGE1
18. %CODE6 清除内表数据
输入参数:IT_DATA, IT_PURNM. 代码:CLEAR IT_DATA[]. CLEAR IT_PURNM[].
我还是没找到方法,把我的截图从excel表里搞出来,没有画图工具,看附件吧
其实,做sap的alv调用smartforms输出,只要一步一步来,耐心读完肯定就可以的。
1. 首先,在窗口属性设置-〉输出设置-〉Style
一般一个Style就足够用了,在T-Code smartforms第二栏,新建Style。
新建Style,在段落格式-〉右键-〉创建节点-〉如TH(Table Header)、etc.,其中设置第一页相关信息就够了,常用到的Alignment选择左、右、中,Indent中设置Left Margin 2mm,Spacing中设置Line Spacing 1ln;然后是在Header Data中设置默认的段落格式,一般选择左排列的格式;最后是创建字体格式,一般创建第二页也就是Font那页,设置字体、大小、粗体、下划线这几样,第一页Standard Setting是为了创建Bar Code而设置的。
2. 其次,在接口参数设定中。
Table也就是第三栏中设置内表like数据字典中的结构体,这样减去了缓存放入内存中调用的弊端,在数据字典中,可以设置“Z”开头的结构体,T-Code SE11的第三栏,点击创建,在第一列输入任意,第三列输入你like的地段,敲回车,这样把你所需要的结构体建立起来。
3. 再次,在定义全局变量中。
第一列全局变量,还有第四列初始化,这两个会用到,而Types没有用到,这也就是防止产生大量的缓存
4. 剩下的就是SMARTFORMS的主界面了,看附件吧!