ZFM_RFC_FIDOC-创建财务凭证-BAPI_ACC_DOCUMENT_CHECK/BAPI_ACC_DOCUMENT_POST/POSTING_INTERFACE_DOCUMENT

&---------------------------------------------------------------------
*& 包含 创建财务凭证使用
&---------------------------------------------------------------------
DATA:BEGIN OF gt_act OCCURS 0,

抬头
bukrs TYPE bkpf-bukrs, “公司代码
blart TYPE bkpf-blart, “凭证类型
budats(8) ,” 过账日期
budat(8) ,” 凭证日期
monat TYPE bkpf-monat, "过账期间
gjahr TYPE bkpf-gjahr, "会计年度
waers TYPE bkpf-waers, "货币码
wwert TYPE bkpf-wwert, "汇率换算日期
kursf TYPE bkpf-kursf, "汇率
bktxt TYPE bkpf-bktxt, "凭证抬头文本
"用户名
xblnr TYPE bkpf-xblnr, "参考


bschl TYPE bseg-bschl, "记帐代码
lifnr TYPE bseg-lifnr, "供应商编码
kunnr TYPE bseg-kunnr, "客户编码
anln1 TYPE bseg-anln1, "资产编码
umskz TYPE bseg-umskz, "特别总账标识
umsks TYPE bseg-umsks, "特定总帐事务类型
hkont TYPE bseg-hkont, "会计科目编码
hkontk TYPE bseg-hkont, "备选统御科目
xnegp, "反记账
wrbtr TYPE bseg-wrbtr, "凭证货币金额
pswsl TYPE bseg-pswsl, "凭证货币
dmbtr(16) , "本币金额

  • h_waers   TYPE  bseg-h_waers,"本位币货币
     prctr     TYPE  bseg-prctr, "利润中心
     kostl     TYPE  bseg-kostl, "成本中心
     aufnr     TYPE  bseg-aufnr, "订单
     sgtxt     TYPE  bseg-sgtxt, "文本
     zuonr     TYPE  bseg-zuonr, "分配
     zfbdt(8),                   "起算日期
     zterm(4),                   "付款条件
     matnr     TYPE  bseg-matnr, "物料号
     anbwa     TYPE  bseg-anbwa, "资产交易类型
     zlsch     TYPE  bseg-zlsch, "付款方式
     rstgr     TYPE  bseg-rstgr, "原因代码
     vbund     TYPE  bseg-vbund, "贸易伙伴
     xref3     TYPE  bseg-xref3, "销售办事处
     mwskz     TYPE  bseg-mwskz, "税码
     fkber     TYPE  bseg-fkber, "功能范围
     bewar     TYPE  bseg-bewar, "事物类型
    
  • ZZ001 "银行账号
    kndnr(10), "获利能力段客户
    prodh(18), "获利能力段产品层次

  •   newum(1),"特殊总账 需要大写
     projk(20),"工作分解结构元素 (WBS 元素)
     flag,"需要大写 客户/供应商
     xmwst     TYPE  bkpf-xmwst, "自动计算税额
    

    END OF gt_act.

DATA: wa_zexten LIKE zexten_cwgx. "ZEXTEN就是刚才SE11创建的那个结构

DATA: it_extension2 LIKE bapiparex OCCURS 0 WITH HEADER LINE.
DATA: g_n TYPE i.
DATA: g_index TYPE i.
DATA: BEGIN OF gw_tax,
bukrs TYPE bkpf-bukrs,
waers TYPE bkpf-waers , "货币码
mwskz TYPE bseg-mwskz, "税码
xmwst TYPE bkpf-xmwst, "计算税额
dmbtr TYPE bseg-wrbtr , "金额
buzei TYPE bseg-buzei , "行项目
sgtxt TYPE bseg-sgtxt , "行项目文本
zuonr TYPE bseg-zuonr , "行项目文本
END OF gw_tax.

DATA: gd_documentheader LIKE bapiache09,
gd_customercpd LIKE bapiacpa09,
gd_fica_hd LIKE bapiaccahd,
it_accountreceivable LIKE TABLE OF bapiacar09 WITH HEADER LINE, "客户
it_accountgl LIKE TABLE OF bapiacgl09 WITH HEADER LINE, "总账科目
it_accounttax LIKE TABLE OF bapiactx09 WITH HEADER LINE,
it_criteria LIKE TABLE OF bapiackec9 WITH HEADER LINE,
it_valuefield LIKE TABLE OF bapiackev9 WITH HEADER LINE,
it_currencyamount LIKE TABLE OF bapiaccr09 WITH HEADER LINE,
it_return LIKE TABLE OF bapiret2 WITH HEADER LINE,
it_receivers LIKE TABLE OF bdi_logsys WITH HEADER LINE,
it_fica_it LIKE TABLE OF bapiaccait WITH HEADER LINE,
it_accountpayable LIKE TABLE OF bapiacap09 WITH HEADER LINE, "供应商
it_paymentcard LIKE TABLE OF bapiacpc09 WITH HEADER LINE,
it_ext LIKE TABLE OF bapiacextc WITH HEADER LINE,
it_re LIKE TABLE OF bapiacre09 WITH HEADER LINE,
it_ext2 LIKE TABLE OF bapiparex WITH HEADER LINE,
it_extension LIKE TABLE OF bapiacextc WITH HEADER LINE.

DATA:gv_chcek TYPE c.

"BDC数据
DATA: it_blntab TYPE STANDARD TABLE OF blntab,
it_ftpost TYPE STANDARD TABLE OF ftpost,
it_fttax TYPE STANDARD TABLE OF fttax.
DATA:wa_blntab TYPE blntab,
wa_ftpost TYPE ftpost,
wa_fttax TYPE fttax.
DATA:g_prctr LIKE gt_act-prctr.
DATA:gw_act LIKE gt_act.

"返回参数使用
DATA:gv_pzbh TYPE char10, " 凭证编号
gv_qqid TYPE char16, " 请求id
gv_jkzt TYPE char1, " 接口状态
gv_jkxx TYPE char100. " 接口信息

"BDC数据
DATA:bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA:messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA:bdcmode TYPE c VALUE ‘N’,
bdcupdate TYPE c VALUE ‘L’.

TYPES:BEGIN OF ty_items,
buzei TYPE string,
bschl TYPE string,
lifnr TYPE string,
bpname TYPE string,
kunnr TYPE string,
anln1 TYPE string,
umskz TYPE string,
umsks TYPE string,
hkont TYPE string,
hkontk TYPE string,
xnegp TYPE string,
wrbtr TYPE string,
pswsl TYPE string,
dmbtr TYPE string,
h_waers TYPE string,
prctr TYPE string,
kostl TYPE string,
aufnr TYPE string,
sgtxt TYPE string,
zuonr TYPE string,
zfbdt TYPE string,
zterm TYPE string,
matnr TYPE string,
anbwa TYPE string,
zlsch TYPE string,
rstgr TYPE string,
vbund TYPE string,
xref3 TYPE string,
mwskz TYPE string,
fkber TYPE string,
bewar TYPE string,
zz001 TYPE string,
kndnr TYPE string,
prodh TYPE string,
flag TYPE string,
END OF ty_items.

DATA:gs_items TYPE ty_items,
gt_items TYPE STANDARD TABLE OF ty_items.

TYPES: BEGIN OF ty_fidoc,
bukrs TYPE string,
blart TYPE string,
budat TYPE string,
bldat TYPE string,
monat TYPE string,
gjahr TYPE string,
waers TYPE string,
wwert TYPE string,
kursf TYPE string,
bktxt TYPE string,
usnam TYPE string,
zbelnr TYPE string,
xblnr TYPE string,
zaction TYPE string,
items LIKE gt_items,
END OF ty_fidoc.

DATA:gs_fidoc TYPE ty_fidoc,
gt_fidoc TYPE STANDARD TABLE OF ty_fidoc.

TYPES:BEGIN OF ty_fidoc_e,
zbelnr TYPE string,
status TYPE string,
msg TYPE string,
belnr TYPE string,
bukrs TYPE string,
gjahr TYPE string,
END OF ty_fidoc_e.

DATA:gs_fidoc_e TYPE ty_fidoc_e,
gt_fidoc_e TYPE STANDARD TABLE OF ty_fidoc_e.
FUNCTION zfm_rfc_fidoc.

*“----------------------------------------------------------------------
"“本地接口:
*” IMPORTING
*” VALUE(IV_DATA) TYPE STRING
*" EXPORTING
*" VALUE(EV_MESSAGE) TYPE STRING
*"----------------------------------------------------------------------
*(修改日志)--------------------------------------------------------
*

  • 日志号 修改人 修改时间 修改说明 传输号码

  • 001 李中原 20220601 创建 ED1K913650
  • 002 李中原 20220601 新增校验逻辑 ED1K913978

DATA:lv_zjxsl TYPE ztsmsl-zjxsl. "税率
DATA:ls_ztcwgxpz_log TYPE ztcwgxpz_log.

REFRESH gt_fidoc_e.

"记录日志使用
DATA: ls_log_tab TYPE zcat_log_info.
DATA: lv_nr_range_nr TYPE inri-nrrangenr,
lv_object TYPE inri-object.

IF iv_data IS INITIAL.
gv_jkzt = ‘E’.
gv_jkxx = ‘导入空值’.

gs_fidoc_e-status = 'E'.
gs_fidoc_e-msg = '导入空值'.
APPEND gs_fidoc_e TO gt_fidoc_e.

ELSE.

  • 解析异常捕捉
    TRY.
    CALL METHOD /ui2/cl_json=>deserialize
    EXPORTING
    json = iv_data
    CHANGING
    data = gt_fidoc.

    CATCH cx_sy_move_cast_error.

     gs_fidoc_e-status = 'E'.
     gs_fidoc_e-msg = '解析失败'.
     APPEND gs_fidoc_e TO gt_fidoc_e.
    

    ENDTRY.

ENDIF.

**必填字段检查

  • PERFORM frm_check_data TABLES it_zsfidoc_oa_t

  •                      USING ls_zsfidoc_oa
    
  •                            gv_jkxx.
    
  • IF gv_jkxx IS INITIAL.

*写入日志信息。
lv_object = ‘ZCANR001’.
lv_nr_range_nr = ‘01’.
CALL FUNCTION ‘NUMBER_GET_NEXT’
EXPORTING
nr_range_nr = lv_nr_range_nr
object = lv_object
quantity = ‘1’
IMPORTING
number = ls_log_tab-zlogn "日志编号。
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
CALL TRANSFORMATION id
SOURCE iv_data = iv_data
RESULT XML ls_log_tab-reque .
ls_log_tab-zsyss = ‘财务共享接口’ .
ls_log_tab-funco = ‘ZFM_RFC_FIDOC’.
ls_log_tab-intern = ‘创建财务凭证’ .
ls_log_tab-ernam = sy-uname .
ls_log_tab-erdat = sy-datum .
ls_log_tab-ertim = sy-uzeit .
ls_log_tab-ftype = ‘SOAP’ .
MODIFY zcat_log_info FROM ls_log_tab .
COMMIT WORK AND WAIT .

"赋关键值
LOOP AT gt_fidoc INTO gs_fidoc.

REFRESH gt_items.
REFRESH gt_act .
CLEAR gs_items.
CLEAR:gv_pzbh,
      gv_qqid,
      gv_jkzt,
      gv_jkxx.

IF gs_fidoc-zaction = 'C'."C校验。P传输
  gv_chcek = 'X'.
ENDIF.

gt_items[] = gs_fidoc-items[].

LOOP AT gt_items INTO gs_items.

  "抬头值
  gt_act-bukrs  =  gs_fidoc-bukrs. "公司代码
  gt_act-blart  =  gs_fidoc-blart. "凭证类型
  gt_act-budat  =  sy-datum.       "凭证中的创建日期
  gt_act-budats =  gs_fidoc-budat. "凭证中的过帐日期
  gt_act-monat  =  gs_fidoc-monat. "会计期间
  gt_act-gjahr  =  gs_fidoc-gjahr. "会计年度
  gt_act-waers  =  gs_fidoc-waers. "货币码
  gt_act-wwert  =  gs_fidoc-wwert. "汇率换算日期
  gt_act-kursf  =  gs_fidoc-kursf. "汇率
  gt_act-bktxt  =  gs_fidoc-bktxt. "凭证抬头
  gt_act-xblnr  =  gs_fidoc-xblnr. "参考凭证号

  "明细值
  gt_act-bschl  =  gs_items-bschl ."记帐代码
  gt_act-lifnr  =  gs_items-lifnr ."供应商编码
  gt_act-kunnr  =  gs_items-kunnr ."客户编码
  gt_act-anln1  =  gs_items-anln1 ."资产编码
  gt_act-umskz  =  gs_items-umskz ."特殊总账 需要大写
  gt_act-umsks  =  gs_items-umsks ."特定总帐事务类型

  IF gs_items-flag = 'D'.
    gt_act-hkont  =  gs_items-kunnr ."科目
  ELSEIF gs_items-flag = 'K'.
    gt_act-hkont  =  gs_items-lifnr ."科目

    "创建员工供应商公司页签
    IF gs_items-lifnr IS NOT INITIAL.
      PERFORM frm_xk01_bdc USING gs_items-lifnr
                                 gs_items-bpname
                                 gs_fidoc-bukrs.
    ENDIF.

  ELSEIF gs_items-flag = 'A'.
    gt_act-hkont  =  gs_items-anln1 ."科目
  ELSE.
    gt_act-hkont  =  gs_items-hkont ."科目
  ENDIF.

  gt_act-hkontk =  gs_items-hkontk."备选统驭科目
  gt_act-xnegp  =  gs_items-xnegp ."反记账

  "去除金额空格
  CONDENSE gs_items-dmbtr NO-GAPS.
  CONDENSE gs_items-wrbtr NO-GAPS.
  •   " 借贷处理
    SELECT SINGLE shkzg
      INTO @DATA(lv_shkzg)
      FROM tbsl
      WHERE bschl = @gs_items-bschl.
    IF lv_shkzg = 'H'.
      gt_act-dmbtr  =  gs_items-dmbtr * -1."金额
      gt_act-wrbtr  =  gs_items-wrbtr * -1."凭证货币金额
    ELSE.
      gt_act-dmbtr  =  gs_items-dmbtr."金额
      gt_act-wrbtr  =  gs_items-wrbtr."凭证货币金额
    ENDIF.
    
    gt_act-pswsl  =  gs_items-pswsl. "凭证货币
    gt_act-prctr  =  gs_items-prctr ."利润中心
    gt_act-kostl  =  gs_items-kostl ."成本中心
    gt_act-aufnr  =  gs_items-aufnr ."订单号
    gt_act-sgtxt  =  gs_items-sgtxt ."项目文本
    gt_act-zuonr  =  gs_items-zuonr ."分配编号
    gt_act-zfbdt  =  gs_items-zfbdt ."到期日计算的基限日期
    gt_act-zterm  =  gs_items-zterm ."付款条件代码
    gt_act-matnr  =  gs_items-matnr. "物料号
    gt_act-anbwa  =  gs_items-anbwa. "资产交易类型
    gt_act-zlsch  =  gs_items-zlsch. "付款方式
    gt_act-rstgr  =  gs_items-rstgr. "凭证行项目原因代码
    gt_act-vbund  =  gs_items-vbund. "贸易伙伴
    gt_act-xref3  =  gs_items-xref3. "销售办事处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放弃幻想_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值