SAPSMARTFORMS凭证连续打印设置操作之三.docx
《SAPSMARTFORMS凭证连续打印设置操作之三.docx》由会员分享,可在线阅读,更多相关《SAPSMARTFORMS凭证连续打印设置操作之三.docx(27页珍藏版)》请在冰豆网上搜索。
![SAPSMARTFORMS凭证连续打印设置操作之三.docx](https://file1.bdocx.com/fileroot1/2022-12/1/e1260f20-abec-4f7f-b08e-581c971b9e1f/e1260f20-abec-4f7f-b08e-581c971b9e1f1.gif)
SAPSMARTFORMS凭证连续打印设置操作之三
SAPSMARTFORM凭证连续打印设置操作之三
---利用ALV显示,并进行手动选择打印
在SAP系统中,凭证经常需要连续打印,如从凭证号100,打印至120;要求系统在打印的时候自动按凭证号进行分页处理。
下面的例子是利用内表传递数据至SMARTFORMS并且利用打印程序中的内表循环来实现凭证的自动分页打印处理;而SMARTFOR的设置则非常的简单,按一张凭证号来进行设置即可。
下面进行具体的操作讲解。
一、打印效果显示,如下图所示:
运行报表程序:
按钮,即可进行选择性的连续打印,如下图:
:
...
售单号
i肖售輙
幼赣退誚動事处请苦组奴
粵户代科
清号单号
订单创逢刁期
4
I71Q
1000
100D
1Q10
110
0000001175
4970
1997-D1-Q3
4
'71
1000
1000
1000
1Q1
0000001001
^71
1997-01-07
72
1000
1000
1010
110
0000002200
书72
1997-01-21
4
73
1000
1000
1030
130
0000001033
M73
1997-01-21
4
174
10OT
1000
1000
101
0000002140
笹羽
1997-01-21
4
75
1000
1000
1030
130
0000001002
M75
1997-01-21
4
76
1000
1000
1030
130
0000002004
书76
1997-01-21
4
77
1000
1000
1030
130
0000001360
咄77
1997-01-21
4
7Q
1000
1000
1000
101
0000002130
M78
1997-01-21
4
79
1000
1000
1030
130
0000001360
书79
1997-01-21
4
80
1000
1000
1000
101
0000002130
笹00
1997-01-21
4
应
1000
1000
1030
130
0000001033
噸62
1997-01-22
4
田
IODO
1DQD
1QKI
101
0Q0QQK14Q
■WS3
19ffF-Dl-22
4
04
1000
1000
1030
130
0000001002
49^1
1997-01-22
4
S5
1000
1000
1030
130
0000002004
4905
1997-01-22
4
筒
10X
1D0D
imn
110
0000051460
钩96
1丹7-CI1-22
4
67
1000
1000
1010
110
0000001171
4967
1997-01-22
4
斶
1000
1000
1010
110
000000
4968
1997-01-22
4
69
10W
1D0D
1010
110
OOQQQO;171
4geg
199=01-22
4
190
1000
1000
1000
101
0000002140
卿90
1997-01-23
上面为显示连续打印三张销售凭证,运行后如下图所示:
中(n的打印強覧;第doom薫,oooo3薫
l^ii-
行号
物料代玛
锄料嶽述
单价
单谊
金慈
备注
10
So^iv
5000
IA30.00
PC
0150.OKS
20
5v*iirXal
乩Q如
“瓯帕
P首
3Q
isI775r
2350业血
K
WCLOG
40
I-U
■MDI1sr/fn
4.她
M42.aa
FC
iaooo
焙金趣
32.B38,00
行号
物料代码
将料描述
数量
单价
单位
壷额
10
L-«F
€liwhlaHoe斗。
・aitBail:
120l/2J5¥
20.OM
6IQ.00
CAR
12?
4M.QQ
m000
总金站
1Z2Q0.QQ
业务员:
掾件员:
业务经理:
行号
悔料代码
物料描述
单价
单位
金飯
备注
W
孑01
3GOO
U3Q00
PC
翎加-閒
Z0
KJ2
$iiWXaD
4.000
issa.oo
PC
7552_(Ki
310
Tst.ra13
5LgO
1730.^
PC
afiso_ao
40
1-04
-SiliiqyEeIfHH
4.OChO
i87a.aa
7512-GO
.QOT
2B.604.00
销售组绘=
数据结构体的定义zwyvbap;TC0DESE11,此结构体在后面的程序中也要用到,是传递数据的接口。
定义如下图所示:
结枸^TVBAP迦话
筲晅描述1肖隼订单和印堀薛构I
国性组件I棗目劑肋J檢査盘币fSll鱼宝jg_
険回「&应两匣|冃鱼|■-.Hi
1/6
I
I
机••
教据类型
KS小教柱
YEM
□
r~|
1类型
*VBELJr
CHAR
10
D悄售础誚凭证号
POSUK
□
1类型
十FOSNR
NUHC
6
0销卑和分梢凭证的顶目是
皿
□
1类型
▼也TMR
CHAR
18
。
物料娟羽
ARKTX
□
ii~|
1类型
*ARKTK
CHAR
40
0誚售订单项巨担丈本
KVMENQ
□
1类型
▼KMEim
QUAN
15
3以讷鱼单位表示的宰计订单埶蚩
METWR
□
n
1类型
▼FETffR
CURR
15
2凭证童币卄垂的净怕也
NETPK
□
1类型
-WETPR
CURR
11
2净伯
HEINS
□
1类型
■KLEINS
UNIT
3
D星血计里单位
SMARTFORMSF0界面设置
1、表格接口的数据,如下图所示:
_/导入t辱出卜農卜例外陋陌]團跑團匾I西
类型分駅
关联类型
缺省值i
USERSETTINGS
TYPE
TDBOOL
'X'
YKORG
TYPE
VKORG
VTWEG
TYPE
VTWEG
VKBUR
TYPE
VKBUR
WKGRP
TYPE
VKGRF
KUNNR
TYPE
KUNNR
MEI
TYPE
NAME1_CP
VEELH
TYPE
VBELN
AUDAT
TYPE
AUDAT
2、表格接口表的数据如下图所示:
夷格
2SD_FRINfl0bl
活动的
JS述
涓售打印格我
异入导出,表例外
呵画岡厮画瓦阙
类型倾
pTVBAK
LIKE
ZWYVBAP
3、全局定义中的数据定义如下图所示:
岡画画爾國園嗣
缺省值
GS.VBAK
LIKE
ZWYVEAF
TOTAL
TYPE
CHAR1O
PRICE
TYPE
CHARI0
SUM.PRICE
TYPE
CHAR10—
SU1ITOTAL
TYPE
BSEG-DMETR
S_PRICE
TYPE
BSEG-DMBTR
四、SMARTFOR页S口窗口的操作:
1页头显示内容。
下面的操作都只进行截图显示。
如下图所示:
▼◎页和窗口
*a学PAGE1新页面
•'d%WIWDOW1页头显示内容
▼®%TEMPLATE1公司窑称%TEXT1埜司名称%TEXT40fl印日期%TEXT2销售组织%TEXT3稍害组织字鞍%TEXT4分诸渠道%TEXT5甥肖渠道宇段%TEXT6销售办事处%TEXT7销售办事处字段%TEXT8供应商名称%TEXT9供应商名称宇段%TEXT10单据日期%TEXT11单据日期字段%TEXT12彳肖售单号%TEXT13梢售单号宇段
・0MAIN主窗口
►'Cj%WIND0W2页尾
-苗WTEXT5也ii«巧碗
•田%TEXT6帥■亦事老
・I方■if.TUjT-r£±・4<.ifchk占也
2、MAIN主窗口的设置:
▼O页和窗口
▼包%PAGE1新页面
*DKWIMDO四1页头显示内容卜霜%tewplatEi扯旨左琲
▼Q]MAIN主窗口
厂吐芒@r旦即3列表标题
*©^LCCPl'Sig环i
*®%TEMPLATE4统计区域
*H^TEMPLATES页尾
»^WIMD0W2页屋
打印表体的表头显示,如下图所示:
T拄TEMPLATES列表标题
表体循环显示:
妙%L00P1厮錘』
▼曲%TEP■云MEW刊丢手用
•鲁%CODE1Mg序行1
・必%TEXT22行号
・\2%TEXT23物料编码
・眩%TEXT24物料描述
•寄%TEXT25数重
・\3%TEXT26单侑
*席%TEXT27单位
・区%TEXT28金额
•%TEXT29备注
數据计算_苇件
r输出选项:
条件]
LOOP循环
垃内部表J
GTJ/HAK
I转至▼GSVBAK
行|
到
13
新程序行的设置:
—骰属性条件
输入蚩數
输出蚩埶
GS.VBAK-KWMEliG
•
TOTAL
Jb.
GS_VBAK-NETIR
w
PRICE
<►t►
4b4卜
一噸厲性幷:
井
喘人垂数
础寥舉
GS_VEAK-NETPR
—
SUM_FRICE
4
SUN_TOTAL
■
<卜
4卜
4・
紐晏数1
GSVBAE-NETFR
J
SPKICE
鼻
w
r
"1
_J
4>
4乍
’回
I►
一般属性
条件
GSVBAK-NETFR
total=gs_vbakkwen?
.
price=gE_vbak-netirr.
jum_price=(s_vbaknetpr.
sumtotal=subtotal+total.
10
s_price=s_prxce十price.
”曰前Iff口
'已^aaeiaf页面
*D%WINDDW1页头显示内昏
■曲%TEM=LATE1圧词名祢Q)阳川主前口
Pffi临TEIWFL4TE2列垂标蚩
▼◎^locpl就丽环1
-函%TEJiT23初梯騙
・0屯广匚eT;ll疊
-虽%TFVT55救里
文略出E衣丰元翳
统计区域的设置:
-QMfiffl主芮口
,園%.T6MR_fiTE2
*◎%UOOPL.tfijiT1
F囲%■旧血ATE1密+区威
・r?
鳴TtKT苟口ks»
-朗怡在和如.賊里圭段宙%TCXTg.鮭砸—
,朗粘阿T3M总淳轉宇段
*圈^temkatesSE
»9WINDOWS页u
li
bi^totalC3)iP
页尾的设置:
*H7cTEMPLATE5页尾
•团阪〒五方讯业劳员—*区%TEXT35业势员宁段*区WTEXT3自换作员*眩%TEXT39操作员字段*区%TEXT37业奔经理
*\2%TEXT3S业劳经理宇段
五、REPORT!
整代码清单,如下图所示(TCODESE38:
*&*
*&ReportZP_SD_006
*&
*&
*&
*&
*&
REPORTzp_sd_007.
INCLUDEzp_sd_007_varl
INCLUDEzp_sd_007_form
INCLUDEzp_sd_007_alv
START-OF-SELECTION
PERFORMget_data_alv
色含文件ZP_SD_007^VARL动
*&*
*&包含ZP_SD_007_VARL
*&*
TABLESvbak.
DATAformnameTYPEtdsfname,
fm_nameTYPErs38l_fnamcontrolTYPEssfctrlop,
errtabTYPEtsferror.
DATA
BEGINOFgt_vbak
OCCURS0.
"定义内表
INCLUDE
TYPEzwyvbap.
DATA
ENDOFgt_vbak.
DATA
BEGINOFgt_vbap
OCCURS0,
"定义内表
vbelnLIKEvbak-vbeln.
DATAENDOFgt_vbap.
DATAp_vbelnTYPEvbak-vbeln
*定义传递到FORM中的页头数据
DATA
vkorg
TYPE
vbak-vkorg,
"销售组织
vtweg
TYPE
vbak-vtweg,
"分销渠道
vkbur
TYPE
vbak-vkbur,
"销售办事处
vkgrp
TYPE
vbak-vkgrp,
"销售组
kunnr
TYPE
vbak-kunnr,
"供应商代码
namel
TYPE
knal-namel,
"供应商名称
vbeln
TYPE
vbak-vbeln,
"订单号码
audat
TYPE
vbak-audat.
"过账日期
*定义显示在
ALV界面上的内表
DATABEGIN
OFgt_vbak_alvOCCURS0,
vkorg
TYPE
vbak-vkorg,
"销售组织
vtweg
TYPE
vbak-vtweg,
"分销渠道
vkbur
TYPE
vbak-vkbur,
"销售办事处
vkgrp
TYPE
vbak-vkgrp,
"销售组
kunnr
TYPE
vbak-kunnr,
"供应商代码
namel
TYPE
knal-namel,
"供应商名称
SELECTION-SCREENBEGINOFBLOCK100WITHFRAMETITLEtext-001.*PARAMETERSS_vbelnTYPEvbak-vbelnOBLIGATORY.
"定义需要打印的凭
SELECT-OPTIONSs_vbelnFORvbak-vbelnDEFAULT'4970'TO'4990'证号码
SELECTION-SCREENENDOFBLOCK100.
包含文件舌动
*&*
*&包含ZP_SD_007_FORM
*$显示在界面上的数据
*&*
FORMget_data_alv
SELECT
vkorg
vtweg
vkbur
vkgrp
kunnrvbelnaudat
INTOCORRESPONDINGHELDS
OFTABLEgt_vbak_alv
FROMvbak
WHEREvbelnINs_vbeln
ENDFORM
"get_data_alv
*&
*
*&
Form
print_so
*&
*
*
text
设置打印的程序
*
*
FORMprint_so
CLEARgt_vbap[]
IN
SELECTvbelnINTOCORRESPONDIINGELDSOFTABLEgt_vbapFROMvbakWHEREvbeln
s_vbeIn.
*获取选中的数据,并把选中的数据传递至内表中。
APPENDgt_vbap.
ENDLOOP
formname='ZSD_PRINT_001'.
CALLFUNCTION'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname=formname"#########Form##importing
IMPORTING
fm_name=fm_name
EXCEPTIONS
no_form=1
no_founction_module=2
OTHERS=3.
IFsy-subrc<>0.
MESSAGEIDsy-msgidTYPEsy-msgtyNUMBERsy-msgno
WITHsy-msgv1sy-msgv2sy-msgv3sy-msgv4.
ENDIF
control
-no_dialog
='X'.
control
-preview
=X.
control
-no_open
=X.
control
-noclose
=X.
CALLFUNCTION'SSF_OPEN'
EXPORTING
*
ARCHIVE_PARAMETERS
=
*
USER_SETTINGS
='X'
*
MAIL_SENDER
=
*
MAIL_RECIPIENT
=
*
MAIL_APPL_OBJ
=
*
OUTPUT_OPTIONS
=
control_parameters
=control
*
IMPORTING
*
JOB_OUTPUT_OPTIONS
=
EXCEPTIONS
formatting_error
=1
internal_error
=2
senderror
3
user_canceled
OTHERS
=4
=5.
IFsy-subrc<>0.
errorhandling
MESSAGEIDsy-msgidTYPEsy-msgtyNUMBERsy-msgno
WITHsy-msgv1sy-msgv2sy-msgv3sy-msgv4.
EXIT.
ENDIF
LOOPATgt_vbap."对凭证号进行循环处理,即在程序中进行分页的设置
p_vbeln=gt_vbap-vbeln.
*获取打印的表头数据
SELECTSINGLE
kunnrvbelnaudat
INTO(vkorg,vtweg,vkbur,vkgrp,kunnr,vbeln,audat)
FROMvbak
WHEREvbeln=p_vbeln.
*获取打印的表体数据
CLEARgt_vbak[]."清空内表
SELECT
vbeln
posnrmatnrarktxkwmeng
INTOCORRESPONDINGHELDSOFTABLEgt_vbak
FROMvbap
WHEREvbeln=p_vbeln.
CALLFUNCTIONfm_name
EXPORTING
control_parameters
=control
vkorg
=vkorg"销售订单
vtweg
=vtweg"客户
vkbur
=vkbur"日期
vkgrp
=vkgrp"日期
kunnr
=kunnr
vbeln
=vbeln
audat
=audat
name1
=name1
TABLES
gt_vbak=gt_vbak"传递内表数据到SMARTFORMS
EXCEPTIONS
formatting_errorinternal_errorsend_error
user_canceled
OTHERS
=4
=5.
IFsy-subrc<>0.
errorhandling
MESSAGEIDsy-msgidTYPEsy-msgtyNUMBERsy-msgno
WITHsy-msgv1sy-msgv2sy-msgv3sy-msgv4.
ENDIF
ENDLOOP
CALLFUNCTION'SSF_CLOSE'
IMPORTING
JOB_OUTPUT_INFO
EXCEPTIONS
formatting_errorinternal_errorsend_error
=4.
OTHERS
IFsy-subrc<>0.
errorhandling
MESSAGEIDsy-msgidTYPEsy-msgtyNUMBERsy-msgno
WITHsy-msgv1sy-msgv2sy-msgv3sy-msgv4.
ENDIF
*analyseinternalerrortableofSmartForms
CALLFUNCTION'SSF_READ_ERRORS'
IMPORTING
errortab=errtab.
IFNOTerrtabISINITIAL.
addyourhandling
ENDIF.
"print_so
ENDFORM
包含文件
[ZPSD007ALV
*&*
*&包含ZP_SD_007_ALV
*&*
TYPE-POOLSslis.
*ALV相关内表和
构
DATAit_fieldcatTYPEslis_t_fieldcat_alv,
wa_layoutTYPEslis_layout_alv,
wa_status