欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ALV & SMARTFORMS 并分页

程序员文章站 2022-07-15 10:30:15
...
1. 主界面

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的主界面了,看附件吧!