预制财务凭证BAPI

文章目录

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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值