文章目录
1 Introduction
This blog will demostrate that how to generate finance certicate .
2 Code
clear:it_bseg,it_bseg[],it_bkpf,it_bkpf[].
"Add BKPF(header) and BSEG(item data)
loop at gt_tmp into gw_tmp.
it_bseg-mandt = sy-mandt. "客户端
it_bseg-bukrs = wa_head-bukrs."公司代码
it_bseg-gjahr = wa_head-budat1(4)."P_GJAHR. "会计年度
it_bseg-buzei = gw_tmp-buzei. "行项目
it_bseg-bschl = gw_tmp-bschl. "记帐代码
it_bseg-umskz = gw_tmp-umskz. "特殊 G/L 标识
it_bseg-hkont = gw_tmp-hkont. "总分类帐帐目
* IT_BSEG-KUNNR = GW_TMP-KUNNR. "客户编号
it_bseg-lifnr = gw_tmp-lifnr. "供应商编号
it_bseg-rstgr = gw_tmp-rstgr. "原因代码
it_bseg-wrbtr = abs( gw_tmp-wrbtr ). "金额
"it_bseg-skfbt = gw_tmp-skfbt. "可使用的凭证货币的现金折扣金额
"-------ADD BY ZX 20180801 END-----------
it_bseg-kkber = gw_tmp-kkber. "贷方控制范围
it_bseg-mwskz = gw_tmp-mwskz. "销售税代码
it_bseg-kostl = gw_tmp-kostl. "成本中心
it_bseg-fkber = gw_tmp-fkber. "功能范围
it_bseg-prctr = gw_tmp-prctr. "利润中心
it_bseg-sgtxt = gw_tmp-sgtxt. "项目文本
it_bseg-koart = gw_tmp-koart. "科目类型
it_bseg-shkzg = gw_tmp-shkzg. "借方/贷方标识
it_bseg-valut = gw_tmp-valut."起息日
it_bseg-zfbdt = sy-datum.
it_bseg-zbd1t = gw_tmp-zbd1t.
it_bseg-zbd1p = gw_tmp-zbd1p.
it_bseg-zbd2t = gw_tmp-zbd2t.
it_bseg-zbd2p = gw_tmp-zbd2p.
it_bseg-zbd3t = gw_tmp-zbd3t.
it_bseg-kokrs = gw_tmp-kokrs.
it_bseg-dmbtr = abs( gw_tmp-wrbtr ). "本位币金额
it_bseg-zterm = gw_tmp-zterm.
append it_bseg.
clear gw_tmp.
endloop.
"20200305 by chenyl begin--
data:l_budat type dats,
l_budat1 type dats.
data: l_date type string.
it_bkpf-mandt = sy-mandt. "客户端
it_bkpf-bukrs = wa_head-bukrs. "公司代码
it_bkpf-gjahr = wa_head-budat1(4). "会计年度
it_bkpf-monat = wa_head-monat." 会计期间
it_bkpf-blart = wa_head-blart. "凭证类型
it_bkpf-numpg = wa_head-numpg. "发票的页数
it_bkpf-xblnr = wa_head-xblnr. "参照
it_bkpf-bktxt = wa_head-bktxt. "抬头文本
it_bkpf-usnam = l_uname. "用户名
it_bkpf-ppnam = ''."预制人
it_bkpf-bldat = wa_head-bldat. "凭证日期
it_bkpf-budat = wa_head-budat1. "凭证日期
it_bkpf-wwert = it_bkpf-budat. "换算日期
it_bkpf-cpudt = it_bkpf-budat. "输入时间
"IT_BKPF-WAERS = T_WAERS. "货币码
"IT_BKPF-HWAER = T_WAERS. "本币
it_bkpf-waers = 'RMB'. "货币码
it_bkpf-hwaer = 'RMB'. "本币
append it_bkpf.
"generate evidence function
call function 'PRELIMINARY_POSTING_FB01'
exporting
i_xcmpl = ''
i_tcode = ''
i_tcode_int = ''
tables
t_bkpf = it_bkpf
t_bseg = it_bseg
t_bsec = it_bsec
t_bset = it_bset
t_bsez = it_bsez
exceptions
error_message = 1.
if sy-msgty ne 'E'.
get parameter id 'BLP' field w_belnr.
* 增加日志表功能
loop at gt_ztfi085b into gw_ztfi085b .
l_idx = sy-tabix.
select max( zno ) into l_zno from ztfi085b
where zanln1 = gw_ztfi085b-zanln1 and bukrs = gw_ztfi085b-bukrs.
select single * into lw_ztfi085b from ztfi085b
where zanln1 = gw_ztfi085b-zanln1 and bukrs = gw_ztfi085b-bukrs and zno = l_zno.
if sy-subrc = 0.
gw_ztfi085b-zno = l_zno + 1.
read table it_item into wa_item with key hkont = '1601020001' .
if sy-subrc = 0.
gw_ztfi085b-zkansw = wa_item-wrbtr .
gw_ztfi085b-kansw = lw_ztfi085b-kansw .
if wa_item-shkzg = 'S'.
gw_ztfi085b-answl = lw_ztfi085b-answl + wa_item-wrbtr .
else.
gw_ztfi085b-answl = lw_ztfi085b-answl - wa_item-wrbtr .
endif.
endif.
else .
gw_ztfi085b-zno = 1.
read table it_item into wa_item with key hkont = '1601020001' .
if sy-subrc = 0.
gw_ztfi085b-kansw = wa_item-wrbtr .
gw_ztfi085b-zkansw = wa_item-wrbtr .
gw_ztfi085b-answl = wa_item-wrbtr .
endif.
endif.
if g_pz = 'ZGS'.
elseif g_pz = 'FGZ'.
endif.
gw_ztfi085b-budat = wa_head-budat1 .
gw_ztfi085b-monat = wa_head-monat .
gw_ztfi085b-gjahr = wa_head-budat1+0(4) .
modify gt_ztfi085b index l_idx from gw_ztfi085b transporting belnr zno budat monat gjahr zkansw kansw
answl .
clear:gw_ztfi085b,l_idx , l_zno,wa_item,lw_ztfi085b.
endloop.
modify ztfi085b from table gt_ztfi085b.
if sy-subrc = 0.
commit work.
else.
rollback work.
endif.
concatenate '预制凭证:' w_belnr '创建成功!' into w_msg.
message s000(zmsg001) with w_msg.
w_save = 'X'.
else.
clear w_belnr.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
into w_msg.
message w_msg type 'S' display like 'E'.
leave screen.
endif.