MIR4 预制凭证修改及过账,尾差调整
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 预制凭证修改及过账,尾差调整相关推荐
- 【FI】财务预制凭证界面隐藏过账按钮
[FI]财务预制凭证界面隐藏过账按钮 [背景介绍] SAP中的会计凭证一旦过账了就不能再进行修改,但其也提供了类似国内财务软件同样的预制功能,预制凭证过账之前不会更新会计系统.预制凭证虽然不更新科目余 ...
- 预制凭证过账报错【dynpro SAPMF05A 0302 无批输入数据】
平常咱们在预制凭证过账的时候的会遇到各种SAPMF05A什么什么的报错,lsmw录屏也会报这种错误(报错截图如下) [字段 BSEG-FISTL. 在 dynpro SAPMF05A 0332 中不存 ...
- BAPI_ACC_DOCUMENT_POST生成预制凭证增强
1.找该BAPI增强出口ACC_DOCUMENT(SE24跟踪): 2.SE19对BADI实例化 READ TABLE c_extension2 INTO wa_extension WITH KEY ...
- sap 预制凭证与暂存凭证的区别
在sap中有park document ,hold document,postdocument.在这三中凭证中,park 凭证是预制凭证,预制凭证必须具有完整性.它的产生是基于内部控制的思想, 一定权 ...
- SAP中预制凭证简单应用分析测试
在笔者公司并没有用来预制凭证的模式.但笔者也系统的学习过FICO课程.即然有应用环境,就自行测试一下过程.毕竟,企业的应用需求也会随时变化. 首先,从管理及应用角度,预制凭证都是一个很好的功能.可以将 ...
- 金蝶云标准版 单张凭证无法反过账,反过账按钮在工具条中不显示
7.5版本已在凭证查询列表添加过账和反过账按钮,需要进入BOS设计器设置可见性. [操作步骤] 1.依次进入[BOS设计器]→[财务会计]→[总账]选择凭证扩展. 2.右下方属性中找到[列表菜单]进入 ...
- SAP 预制凭证小结
1. 预制凭证会生成凭证编号 2. 预制凭证不更新科目余额 3. 预制凭证会占FM预算 4. 预制凭证可以随意更改 5. 预制凭证可以删除,删除后只剩下凭证抬头,没有行项目,凭证编号不变 6. 预制凭 ...
- BAPI_ACC_GL_POSTING_POST生成财务预制凭证
利用此BAPI生成预制凭证,首先要在如下用户出口做一个简单增强: ACBAPI01 会计核算: 对 BAPI 界面的客户增强功能 对应的出口函数是:EXIT_SAPLACC4_001 相应的代码如下, ...
- SAP-SAP预制凭证相关的表
预制凭证相关的表如下: 预制凭证的抬头在BKPF里和VBKPF里都有,凭证状态是V. 预制凭证的行项目在VBSEGS. 当保存预制凭证的时候,BKPF和VBKPF里面都会保存凭证抬头数据,行项目保存在 ...
最新文章
- 【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 分析 malloc 函数的 arm 汇编语言 )
- java使用集合存储过程_详解java调用存储过程并封装成map
- python 爬虫系统_实战干货:从零快速搭建自己的爬虫系统
- P3577-[POI2014]TUR-Tourism【状压dp】
- 不动产中心考试计算机测试题,2005年全国计算机二级考试VFP笔试模拟题
- Knative Service 之流量灰度和版本管理
- matplotlib 简单试用
- python的setheading什么意思_用Python告诉你什么是佩奇
- GetTickCount 和getTickCount
- idea全局搜索快捷键总结
- PHP实现微信小程序免密支付,微信免密支付,微信小程序实现微信支付功能!!!...
- SVN 无法clean up解决方案
- 2B市场行业,面向2025年技术趋势与5大机会,赶快来看一看吧
- 你可能不知道的 Ps 技巧
- 【愚公系列】2023年01月 .NET CORE工具案例-基于SqlSugar的多库多表融合查询
- HTML + CSS3 基础入门与进阶
- 几个图像缩放算法的比较
- python3中的urllib.parse的常用方法
- 新三级医院信息化建设解决方案
- android 魅族日历,GitHub - yhyonghao/CalendarView: CalenderView_Meizu 魅族风格日历