SAP小技巧 调整IDOC的过账日期

点击蓝字 关注我们

前言

IDOC是ECC/S4系统中的一种接口数据整合形式.前文已经介绍了关于IDOC的部分知识.

详见连接

无峰,公众号:ABAP 技巧与实战SAP操作手册之 IDOC基础篇

详见链接

无峰,公众号:ABAP 技巧与实战SAP操作手册之 IDOC开发篇

当我们在入站接口的场景中使用IDOC的时候,可能会面临一个问题: 产生IDOC的时候已经把记账日期写入. 如果IDOC过账的时候,IDOC中的过账日期对应的账期关闭.IDOC过账会报错.(图一是一个创建商品凭证的IDOC因为账期关闭报错)

本文主要介绍解决IDOC由于过账日期报错的几种方式,并着重介绍过账前检查账期并调整过账日期的增强

一般创建商品凭证的IDOC有这个需求.

67eff85d0656179517d8ee82e53a96f5.png

图一

01

关于物料账期

物料账期是SAP的一个重要概念.

通过事务代码MMPV可以打开指定公司代码的新的账期. 

物料账期只能打开两个月的. 

可以通过事务代码MMRV修改前期记账标记控制是否能够记账在上期.

物料账期对应的表 MARV

ab66feff7937649802ac43dfed009adf.png

解决账期报错的方式

解决IDOC账期报错有几种方式

  • 通过WE02的编辑功能修改IDOC中的过账日期

  • 通过ZIFIDOC接口监控批量修改IDOC中的过账日期

  • 通过增强在IDOC过账的时候修改传入BAPI函数的过账日期

WE02修改IDOC

旧版本的ECC中事务代码WE02可能无法修改IDOC内容. 需要使用事务代码: WE05 

新版本ECC或S4中WE02等同于WE05 .均可修改IDOC内容(包含控制内容与数据内容)

通过标准功能修改IDOC中的过账日期字段内容

详细操作步骤在前文有介绍,这里不再赘述.

详见链接

无峰,公众号:ABAP 技巧与实战SAP操作手册之 IDOC监控-标准功能

ZIFIDOC修改IDOC

通过WE02修改IDOC的内容操作步骤比较繁琐.每次只能操作一个IDOC的修改. 

如果有很多报错的IDOC. WE02修改会把人折磨致死. 所以当初设计IDOC集中监控程序: ZIFIDOC时, 在里面添加了一个批量修改IDOC内容的功能.

更多ZIFIDOC功能介绍详见链接

无峰,公众号:ABAP 技巧与实战SAP工具箱之 IDOC监控-增强功能

01

配置 ZTSEGNAM

因为IDOC结构复杂,层级很多.如果要通过表格显示,只能关注一个抬头段.一个明细段. 配置表ZTSEGNAM用来指定每个消息类型用于表格呈现的抬头段与明细段

d75ced8adf7110e093af951fd6862112.png

02

进入监控程序

进入IDOC监控程序,显示需要修改的IDOC. 勾选需要修改的IDOC(允许相同类型的多个IDOC同时勾选), 点击显示错误原因和消息内容进入IDOC内容呈现

5025a3bf16c6d1aac880a3f63d84563b.png

03

启用修改模式

在IDOC内容呈现中点击编辑功能会激活IDOC的修改, 修改后点击保存按钮会把修改的内容保存到IDOC中.

c925002ea64856d4800dc38ff1628523.png

4e3d677f6d04a8b44533b0c8b69f00e1.png

通过增强调整过账日期

上面两个方案都需要针对特定的IDOC调整账期字段.如果希望这些账期关闭的IDOC能自动过账到当前日期. 则可以通过如下的增强实现.

自动调整账期由接口控制表字段ZTIF002-ZQKTZ控制特定接口编号是否启用. 并通过配置表ZTIDOC_BUDAT控制消息类型是否启用.

01

配置表

为了让过账日期自动调整的增强适用于更多的场景,设计了一个配置表. ZTIDOC_BUDAT.用于配置需要调整账期的IDOC类型及IDOC中识别日期,地点,公司代码的段名和字段名

1f1e7aa7361de7df3c4d51c25ce43617.png

02

重要字段说明

检查原过账日期所在账期是否打开

40cc61153abbd71e2fdf8e61cc4d4a0e.png

账期调整方式

435fdd2ac8acafafb6a673a1148bb1bc.png

03

配置实例

1a6bf5490b1effce60c3f1702dd1c39d.png

04

增强位置

该增强写在标准函数 BAPI_IDOC_INPUT1 开头的隐式增强中. 

这个函数会处理所有产生一个单据的BAPI调用类的IDOC. 具有一定的通用性.

7bdff242a43098a6d546ea5c36479d85.png

05

增强逻辑

  • 根据配置表内容读取过账日期,读取地点或公司代码.

  • 检查过账日期所在的月是否已经关闭物料账期

  • 如果关闭,根据配置设置新的过账日期

06

封装函数

封装函数Z_IDOC_GET_SET_DATA用于读取或者设置IDOC中指定段名和字段名的字段内容

7dca42d61a2f40e8152f6cea7387bfdf.png

总结

通过上述本文介绍的方式可以手动/批量的修改IDOC中的过账日期,过账到新开的账期,避免因为账期关闭而报错.

增强调整过账日期在IDOC调用BAPI产生商品凭证时,调整传入BAPI的过账日期.也可以避免账期关闭而报错. 这样会导致IDOC产生的凭证中的过账日期不等于IDOC中的过账日期. 但是无需用户费力调整IDOC内容.

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

0f9ced1fbb3ad702d94b2abfa6b33450.png

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

申请进入公众号讨论群提问或者参与话题讨论

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值