FUNCTION zfm_srm_fprz.
*“----------------------------------------------------------------------
"“本地接口:
*” EXPORTING
*” VALUE(EV_STATUS) TYPE CHAR1
*" VALUE(EV_MESSAGE) TYPE CHAR100
*" TABLES
*" IT_DATA STRUCTURE ZSSRM_FPRZ OPTIONAL
*" ET_RETURN STRUCTURE ZSSRM_FPRZ_RETURN OPTIONAL
*"----------------------------------------------------------------------

DATA:ls_data TYPE zssrm_fprz.
DATA:ls_return TYPE zssrm_fprz_return.
DATA:lv_wrbtr_coll TYPE wrbtr.
DATA:lv_wrbtr_max TYPE wrbtr.
DATA:lv_wrbtr_cy TYPE wrbtr.

"预制发票修改
DATA:f_invoicedocstatus TYPE bapi_incinv_detail_header-invoice_status VALUE ‘4’,
s_tablechange LIKE bapi_incinv_chng_tables,
s_headerdatachange LIKE bapi_incinv_chng_header,
s_headerdatachangex LIKE bapi_incinv_chng_headerx,
s_adressdatachange LIKE bapi_incinv_chng_addrdata,
s_adressdatachangex LIKE bapi_incinv_chng_addrdatax,
f_invoicedocnumbernew TYPE bapi_incinv_fld-inv_doc_no,
f_fiscalyearnew TYPE bapi_incinv_fld-fisc_year,
tab_itemdata TYPE STANDARD TABLE OF bapi_incinv_create_item WITH HEADER LINE,
tab_tm_itemdata TYPE STANDARD TABLE OF bapi_incinv_create_tm_item WITH HEADER LINE,
tab_accountingdata TYPE STANDARD TABLE OF bapi_incinv_create_account WITH HEADER LINE,
tab_glaccountdata TYPE STANDARD TABLE OF bapi_incinv_create_gl_account WITH HEADER LINE,
tab_materialdata TYPE STANDARD TABLE OF bapi_incinv_create_material WITH HEADER LINE,
tab_taxdata TYPE STANDARD TABLE OF bapi_incinv_create_tax WITH HEADER LINE,
tab_withtaxdata TYPE STANDARD TABLE OF bapi_incinv_create_withtax WITH HEADER LINE,
tab_vendorsplitdata TYPE STANDARD TABLE OF bapi_incinv_create_vendorsplit WITH HEADER LINE,
tab_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE,
lt_return_post TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.

LOOP AT it_data INTO ls_data.

IF ls_data-rmwwr <> ls_data-wmwst + ls_data-wrbtr.
  •  ls_return-bukrs = ls_data-bukrs."公司代码
    ls_return-belnr = ls_data-belnr."发票号码
    
  •  ls_return-fbelnr = s_data-."会计凭证
    ls_return-gjahr = ls_data-gjahr."会计年度
    ls_return-status = 'E'."消息文本
    ls_return-message = '发票含税金额不等于发票税额加不含税金额'."消息状态
    APPEND ls_return TO et_return.
    CLEAR ls_return.ev_status = 'E'.
    ev_message = '存在错误,请查看返回明细'.
    

    ENDIF.

    ENDLOOP.

    IF ev_status <> ‘E’.

    IF it_data[] IS NOT INITIAL.
    SELECT
    rseg~belnr,
    rseg~gjahr,
    rseg~buzei,
    rseg~wrbtr,
    rseg~shkzg,
    rseg~ebelp,
    rseg~ebeln,
    rseg~lfbnr,
    rseg~lfgja,
    rseg~lfpos,
    rseg~tbtkz,
    rbkp~mwskz1,
    rbkp~blart,
    rbkp~bukrs,
    rseg~menge, "数量
    rseg~meins "订单单位
    FROM rseg
    LEFT JOIN rbkp ON rbkp~belnr = rseg~belnr
    INTO TABLE @DATA(lt_rseg)

  • UP TO 10 ROWS
    FOR ALL ENTRIES IN @it_dataWHERE rseg~belnr = @it_data-belnrAND rseg~gjahr = @it_data-gjahr.
    

    ENDIF.

    LOOP AT it_data INTO ls_data.

    CLEAR lv_wrbtr_coll.LOOP AT lt_rseg INTO DATA(ls_rseg) WHERE belnr = it_data-belnrAND gjahr = it_data-gjahr."获取最大行及最大行金额IF lv_wrbtr_max <= ls_rseg-wrbtr .DATA(ls_rseg_max) = ls_rseg.lv_wrbtr_max = ls_rseg-wrbtr .ENDIF."累加金额lv_wrbtr_coll = lv_wrbtr_coll + ls_rseg-wrbtr.MODIFY lt_rseg FROM ls_rseg.ENDLOOP."获取差异 = 传入金额 - SAP现有金额总计
    lv_wrbtr_cy = ls_data-wrbtr - lv_wrbtr_coll."差异处理
    ls_rseg_max-wrbtr = ls_rseg_max-wrbtr + lv_wrbtr_cy.
    
  •  ls_rseg_max-wrbtr = abs( ls_rseg_max-wrbtr ).
    

预制发票修改*
CLEAR s_headerdatachange.
s_headerdatachange-calc_tax_ind = ‘’.
s_headerdatachange-gross_amount = ls_data-rmwwr.
s_headerdatachange-doc_date = ls_data-bldat."凭证中的凭证日期
s_headerdatachange-pstng_date = ls_data-budat."凭证中的过帐日期
s_headerdatachange-doc_type = ls_rseg_max-blart."凭证中的过帐日期

  CLEAR s_headerdatachangex.s_headerdatachangex-calc_tax_ind = 'X'.s_headerdatachangex-gross_amount = 'X'.s_headerdatachangex-doc_date = 'X'."凭证中的凭证日期s_headerdatachangex-pstng_date = 'X'."凭证中的过帐日期s_headerdatachangex-doc_type = 'X'."凭证中的过帐日期"差异金额修改REFRESH tab_itemdata.CLEAR tab_itemdata.tab_itemdata-invoice_doc_item = ls_rseg_max-buzei .               "发票凭证项目tab_itemdata-po_number        = ls_rseg_max-ebeln .     "采购订单tab_itemdata-po_item          = ls_rseg_max-ebelp .         "采购凭证项目tab_itemdata-ref_doc          = ls_rseg_max-lfbnr   .      "参考凭证号tab_itemdata-ref_doc_year     = ls_rseg_max-lfgja.    "会计年度tab_itemdata-ref_doc_it       = ls_rseg_max-lfpos    .            "参考凭证项目tab_itemdata-item_amount      = ls_rseg_max-wrbtr   .     "凭证金额tab_itemdata-quantity         = ls_rseg_max-menge     .        "数量tab_itemdata-po_unit          = ls_rseg_max-meins    .           "订单单位tab_itemdata-po_pr_qnt        = ls_rseg_max-menge      .       "采购订单价格单位数量tab_itemdata-de_cre_ind       = ls_rseg_max-tbtkz    .       "标识: 后续借/贷APPEND tab_itemdata."其他行写入LOOP AT lt_rseg INTO ls_rseg WHERE belnr = it_data-belnrAND gjahr = it_data-gjahr.IF ls_rseg-buzei <> ls_rseg_max-buzei.CLEAR tab_itemdata.tab_itemdata-invoice_doc_item = ls_rseg-buzei .               "发票凭证项目tab_itemdata-po_number        = ls_rseg-ebeln .     "采购订单tab_itemdata-po_item          = ls_rseg-ebelp .         "采购凭证项目tab_itemdata-ref_doc          = ls_rseg-lfbnr   .      "参考凭证号tab_itemdata-ref_doc_year     = ls_rseg-lfgja.    "会计年度tab_itemdata-ref_doc_it       = ls_rseg-lfpos    .            "参考凭证项目tab_itemdata-item_amount      = ls_rseg-wrbtr   .     "凭证金额tab_itemdata-quantity         = ls_rseg-menge     .        "数量tab_itemdata-po_unit          = ls_rseg-meins    .           "订单单位tab_itemdata-po_pr_qnt        = ls_rseg-menge      .       "采购订单价格单位数量tab_itemdata-de_cre_ind       = ls_rseg_max-tbtkz     .       "标识: 后续借/贷APPEND tab_itemdata.ENDIF.ENDLOOP."税额CLEAR tab_taxdata.REFRESH tab_taxdata.tab_taxdata-tax_code = ls_rseg_max-mwskz1 .tab_taxdata-tax_amount = ls_data-wmwst.APPEND tab_taxdata."修改标识CLEAR s_tablechange.s_tablechange-itemdata = 'X'."s_tablechange-taxdata = 'X' ."CLEAR:f_fiscalyearnew,f_invoicedocnumbernew.SORT tab_itemdata.CALL FUNCTION 'BAPI_INCOMINGINVOICE_CHANGE'EXPORTINGinvoicedocnumber     = ls_rseg-belnrfiscalyear           = ls_rseg-gjahr
  •     invoice_doc_status   = f_invoicedocstatus "4  修正 (过帐, 未完成)table_change         = s_tablechangeheaderdata_change    = s_headerdatachangeheaderdata_changex   = s_headerdatachangex
    
  •     adressdata_change    = s_adressdatachange
    
  •     adressdata_changex   = s_adressdatachangexIMPORTINGfiscalyear_new       = f_fiscalyearnewinvoicedocnumber_new = f_invoicedocnumbernewTABLESitemdata             = tab_itemdata
    
  •     tm_itemdata          = tab_tm_itemdata                 "1554041
    
  •     accountingdata       = tab_accountingdata
    
  •     glaccountdata        = tab_glaccountdata
    
  •     materialdata         = tab_materialdatataxdata              = tab_taxdata
    
  •     withtaxdata          = tab_withtaxdata
    
  •     vendoritemsplitdata  = tab_vendorsplitdatareturn               = tab_returnEXCEPTIONSOTHERS               = 01."消息类型: S 成功,E 错误,W 警告,I 信息,A 中断
    LOOP AT tab_return INTO DATA(ls_tab_return) WHERE type = 'A'OR type = 'E'OR type = 'X'.IF ls_return-message NS ls_tab_return-message."排斥重复的错误信息ls_return-message = ls_return-message && '/' && ls_tab_return-message.ENDIF.ENDLOOP.
    IF sy-subrc = 0.ROLLBACK WORK.ls_return-bukrs = ls_rseg_max-bukrs."公司代码ls_return-belnr = ls_rseg_max-belnr."发票号码
    
  •  ls_return-fbelnr = s_data-."会计凭证ls_return-gjahr = ls_rseg_max-gjahr."会计年度ls_return-status = 'E'."消息文本APPEND ls_return TO et_return.CLEAR ls_return.ev_status = 'E'.ev_message = '存在错误,请查看返回明细'.ELSE.COMMIT WORK AND WAIT.ls_return-bukrs = ls_rseg_max-bukrs."公司代码ls_return-belnr = ls_rseg_max-belnr."发票号码
    
  •  ls_return-fbelnr = s_data-."会计凭证ls_return-gjahr = ls_rseg_max-gjahr."会计年度ls_return-status = 'S'."消息文本ls_return-message = '修改成功'."消息文本ev_status = 'S'.ev_message = '修改成功'."预制发票过账DATA:lv_inv_no TYPE belnr_d,lv_fisc_y TYPE gjahr,lt_return TYPE STANDARD TABLE OF bapiret2.CALL FUNCTION 'BAPI_INCOMINGINVOICE_POST'EXPORTINGinvoicedocnumber = ls_rseg-belnrfiscalyear       = ls_rseg-gjahrTABLESreturn           = lt_return_post."消息类型: S 成功,E 错误,W 警告,I 信息,A 中断LOOP AT lt_return_post INTO DATA(ls_return_post) WHERE type = 'A'OR type = 'E'OR type = 'X'.IF ls_return-message NS ls_return_post-message."排斥重复的错误信息ls_return-message = ls_return-message && '/' && ls_return_post-message.ENDIF.ENDLOOP.IF sy-subrc = 0.ROLLBACK WORK.ls_return-bukrs = ls_rseg_max-bukrs."公司代码ls_return-belnr = ls_rseg_max-belnr."发票号码ls_return-gjahr = ls_rseg_max-gjahr."会计年度ls_return-status = 'E'."消息文本ev_status = 'E'.ev_message = '存在错误,请查看返回明细'.ELSE.COMMIT WORK AND WAIT.DATA(lv_awkey) = ls_rseg-belnr && ls_rseg-gjahr.SELECT SINGLEbelnrFROM bkpfINTO ls_return-fbelnr "会计凭证WHERE awkey = lv_awkey.ls_return-bukrs = ls_rseg_max-bukrs."公司代码ls_return-belnr = ls_rseg_max-belnr."发票号码ls_return-gjahr = ls_rseg_max-gjahr."会计年度ls_return-status = 'S'."消息文本ls_return-message = '修改成功,过账成功'."消息文本ev_status = 'S'.ev_message = '修改成功,过账成功'.ENDIF.APPEND ls_return TO et_return.CLEAR ls_return.ENDIF.
    "最大金额金额行数据清理
    CLEAR ls_rseg_max.
    

    ENDLOOP.

    ENDIF.

ENDFUNCTION.

MIR4 预制凭证修改及过账,尾差调整相关推荐

  1. 【FI】财务预制凭证界面隐藏过账按钮

    [FI]财务预制凭证界面隐藏过账按钮 [背景介绍] SAP中的会计凭证一旦过账了就不能再进行修改,但其也提供了类似国内财务软件同样的预制功能,预制凭证过账之前不会更新会计系统.预制凭证虽然不更新科目余 ...

  2. 预制凭证过账报错【dynpro SAPMF05A 0302 无批输入数据】

    平常咱们在预制凭证过账的时候的会遇到各种SAPMF05A什么什么的报错,lsmw录屏也会报这种错误(报错截图如下) [字段 BSEG-FISTL. 在 dynpro SAPMF05A 0332 中不存 ...

  3. BAPI_ACC_DOCUMENT_POST生成预制凭证增强

    1.找该BAPI增强出口ACC_DOCUMENT(SE24跟踪): 2.SE19对BADI实例化 READ TABLE c_extension2 INTO wa_extension WITH KEY  ...

  4. sap 预制凭证与暂存凭证的区别

    在sap中有park document ,hold document,postdocument.在这三中凭证中,park 凭证是预制凭证,预制凭证必须具有完整性.它的产生是基于内部控制的思想, 一定权 ...

  5. SAP中预制凭证简单应用分析测试

    在笔者公司并没有用来预制凭证的模式.但笔者也系统的学习过FICO课程.即然有应用环境,就自行测试一下过程.毕竟,企业的应用需求也会随时变化. 首先,从管理及应用角度,预制凭证都是一个很好的功能.可以将 ...

  6. 金蝶云标准版 单张凭证无法反过账,反过账按钮在工具条中不显示

    7.5版本已在凭证查询列表添加过账和反过账按钮,需要进入BOS设计器设置可见性. [操作步骤] 1.依次进入[BOS设计器]→[财务会计]→[总账]选择凭证扩展. 2.右下方属性中找到[列表菜单]进入 ...

  7. SAP 预制凭证小结

    1. 预制凭证会生成凭证编号 2. 预制凭证不更新科目余额 3. 预制凭证会占FM预算 4. 预制凭证可以随意更改 5. 预制凭证可以删除,删除后只剩下凭证抬头,没有行项目,凭证编号不变 6. 预制凭 ...

  8. BAPI_ACC_GL_POSTING_POST生成财务预制凭证

    利用此BAPI生成预制凭证,首先要在如下用户出口做一个简单增强: ACBAPI01 会计核算: 对 BAPI 界面的客户增强功能 对应的出口函数是:EXIT_SAPLACC4_001 相应的代码如下, ...

  9. SAP-SAP预制凭证相关的表

    预制凭证相关的表如下: 预制凭证的抬头在BKPF里和VBKPF里都有,凭证状态是V. 预制凭证的行项目在VBSEGS. 当保存预制凭证的时候,BKPF和VBKPF里面都会保存凭证抬头数据,行项目保存在 ...

最新文章

  1. 【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 分析 malloc 函数的 arm 汇编语言 )
  2. java使用集合存储过程_详解java调用存储过程并封装成map
  3. python 爬虫系统_实战干货:从零快速搭建自己的爬虫系统
  4. P3577-[POI2014]TUR-Tourism【状压dp】
  5. 不动产中心考试计算机测试题,2005年全国计算机二级考试VFP笔试模拟题
  6. Knative Service 之流量灰度和版本管理
  7. matplotlib 简单试用
  8. python的setheading什么意思_用Python告诉你什么是佩奇
  9. GetTickCount 和getTickCount
  10. idea全局搜索快捷键总结
  11. PHP实现微信小程序免密支付,微信免密支付,微信小程序实现微信支付功能!!!...
  12. SVN 无法clean up解决方案
  13. 2B市场行业,面向2025年技术趋势与5大机会,赶快来看一看吧
  14. 你可能不知道的 Ps 技巧
  15. 【愚公系列】2023年01月 .NET CORE工具案例-基于SqlSugar的多库多表融合查询
  16. HTML + CSS3 基础入门与进阶
  17. 几个图像缩放算法的比较
  18. python3中的urllib.parse的常用方法
  19. 新三级医院信息化建设解决方案
  20. android 魅族日历,GitHub - yhyonghao/CalendarView: CalenderView_Meizu 魅族风格日历

热门文章

  1. Accelerated C++:通过示例进行编程实践——练习解答(第4章)
  2. 304、bootstrap 之 图片样式
  3. 图像增强——伽马变换
  4. 照镜子——2018年2月3-6日
  5. java 设计模式实战,适配器模式之万物拟人化
  6. 量子信息提供后摩尔时代技术,超导量子电路中量子生成对抗学习
  7. 数字签名(1) 证书下载
  8. Python中IO概述
  9. 一年收购三家科技公司,金拱门不做汉堡改行人工智能了?
  10. android跳一跳功能实现,Android 数字跳动显示的TextView实现