一、前言

江正军的博客对idoc就详细的说明介绍,有兴趣的可以看一下。

https://www.cnblogs.com/jiangzhengjun/p/4292135.html#_Toc411677436

二、idoc的集中数据存储:(表)

EDIDC   : 控制记录,记录IDOC的一些控制字段:(消息类型,idoc类型,入站,出站伙伴,最终状态等)

EDID4   :    idoc的数据记录,记录IDOC的数据内容,具体记录在EDID4-SDATA,通过 EDID4-SEGNAM段名查找对应的段结构,通过EDID4-SDATA内容整体赋值到段的结构,可以解析具体的业务数据。

EDIDS  :  状态记录,每次IDOC的处理都会把内部调用的BAPI或者BDC的返回信息写入EDIDS表中,确保每次IDOC的处理结果都被详细记录下来,但也造成无用信息太多,标准功能不太方便快速定位关键错误信息。

三、IDOC和单据的关系

IDOC最终生成的单据和IDOC的关系最后也会被系统记录下来,存储在两个表 idocrel , srrelroles中,

可以通过显示链接,查看并跳转到最终生成的单据,显示IDOC内容的 Tcode:  WE02,

也可以在单据中通过附件中关系找到对应的IDOC

这个前端通过的 Relationships可以找到对应的关系凭证。

后台逻辑如下图:

edidc~docnum INNER JOIN srrelroles~ebjkey

=> srrelroles~roleid INNER JOIN idocrel~role_a

=> idocrel~role_b INNER JOIN srrelroles~relationid

注:这个结果和前台显示的Relationships有差异,但是应该还是可以满足需求的。

下面是零售业 CAR 到 Retail生成的Billing , 清账凭证,物料凭证的一个CDS view。

@AbapCatalog.sqlViewName: 'ZSDVDIDOC'
@EndUserText.label: '销售小票IDOC视图'
@AccessControl.authorizationCheck: #CHECK
define view ZSD_POS_IDOCas select distinct from edidc       as Ainner join            srrelroles  as b  on  b.objkey  = A.docnumand b.objtype = 'IDOC'inner join            idocrel     as c  on c.role_a = b.roleidinner join            srrelroles  as b2 on b2.roleid = c.role_bleft outer join       cepct       as d  on  d.prctr = A.sndprnand d.kokrs = 'TQ00'and d.spras = $session.system_languageleft outer join       vbrk        as e  on e.sfakn = left(b2.objkey, 10)left outer join       nsdm_e_mseg as f  on  f.smbln = left(b2.objkey, 10)and f.sjahr = substring(b2.objkey, 11, 4){''                             as Light,A.docnum                       as IDocNumber,A.sndprn                       as StoreId,d.ktext                        as StoreName,A.idoctp                       as IDocType,A.mestyp                       as MessageType,A.credat                       as CreateAt,A.cretim                       as CreateOn,//    b2.objkey                      as ObjectKey,b2.objtype                     as ObjectType,case when b2.objtype = 'VBRK'thenleft (b2.objkey, 10)else '' end                    as BillNumber,case when b2.objtype = 'BUS2017'thenleft (b2.objkey, 10)else '' end                    as MatMovNumber,case when b2.objtype = 'BUS2017'thensubstring (b2.objkey, 11,4)else '' end                    as MatDocYear,case when b2.objtype = 'VBRK' then e.vbelnwhen b2.objtype = 'BUS2017' then f.mblnrelse '' end                    as ReversalDoc,cast( '' as abap.char( 100 ) ) as Meg
}
whereb2.objtype = 'VBRK'or b2.objtype = 'BUS2017'

四、集中监控

1、WE02 显示Idoc

可以按照树状结构及清单结构显示特定信息,特定状态的统计及明细内容

2、BD87  ALE消息状态监视器

按树状结构显示特定状态/消息的IDOC数量, 并针对节点发起重处理

五、集中处理

1、BD20发送到应用程序 的 IDOC

可以并发处理64的IDOC

2、BD87                 ALE 消息的状态监视器

监控器也可以处理IDOC

六、常用事务代码

区域菜单 WEDI 整合了所有IDOC相关事务代码,下面列举一些常用的事务代码或程序:

BD19 对失败的IDOC进行测试

BD20 对状态64的IDOC的后续处理

BD87 部分单据错误的IDOC的后续处理

BD73 IDOC ( ALE ) 的重过账

BD83 ALE出现错误后发送 idocs,

如果外向IDOC报错( 如合作伙伴没有维护 ),解决问题后不能用BD87处理,如果直接用BD87处理,状态会变成01,无法再处理,

需要用BD83处理,此时状态是30,然后再用BD87处理,成功后状态时03.

WPER 零售相关的IDOC的监控及重处理

程序:RC1_IDOC_SET_STATUS 修改IDOC状态

WLF_IDOC 新的标准IDOC监控程序. 有些版本执行会报错 取代 WE02

BD52配置自定义的字段的变化指针

BD73    IDocs (ALE) 的重过帐

程序: RBDMANI2  并发处理失败51状态的IDOC

程序: RWPOS_PARA_ENQUEUE 并发按地点队列处理64或51状态的IDOC

七、总结

IDOC整合了几乎所有的主数据,单据的处理到一个统一的逻辑中. 集成了异步接口的重要功能:

  • 数据存储

  • 数据集中处理

  • 报错数据的重处理

在接口开发中,尤其是ECC入站异步接口, 使用IDOC会给接口的开发及管理带来大量的便利.

IDOC 基础篇 ( 一 )相关推荐

  1. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

    目录 1.信号与槽的概念 2.信号与槽的基础函数 2.1.创建信号函数 2.2.连接信号函数 2.3.断开信号函数 2.4.发射信号函数 3.信号和槽的使用方法 3.1.内置信号与槽的使用 3.2.自 ...

  2. Python Qt GUI设计:窗口布局管理方法【强化】(基础篇—6)

    目录 1. 水平布局类(QHBoxLayout) 2.垂直布局类(QVBoxLayout) 3.网格布局类(QGridLayout) 3.1.单一的网络布局 3.2.跨越行.列的网络布局 4.表单布局 ...

  3. Python Qt GUI设计:窗口布局管理方法【基础】(基础篇—5)

    目录 1.布局管理器进行布局 2.容器控件进行布局 3.geometry属性:控件绝对布局 4.sizePolicy属性:微调优化控件布局 Qt Designer提供4种窗口布局方式,分别如下: Ve ...

  4. ES6 你可能不知道的事 – 基础篇

    ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES ...

  5. python多线程并发_Python进阶记录之基础篇(二十四)

    回顾 在Python进阶记录之基础篇(二十三)中,我们介绍了进程的基本概念以及Python中多进程的基本使用方法.其中,需要重点掌握多进程的创建方法.进程池和进程间的通信.今天我们讲一下Python中 ...

  6. 基础篇9-python基本数据结构-列表

    基础篇9-python基本数据结构-列表 一.列表: 1.有序的集合 2.通过偏移来索引,从而读取数据 3.支持内嵌 a =[[1,2,3],[4,5,6]] 4.可变类型 a[0][1] = 7 二 ...

  7. Linq初级班 Linq To XML体验(基础篇)

    LINQ To XML体验(基础) 这两天开始学习LINQ to XML的知识,我会继续把自己的感想和示例发布给初学者们学习的,一样欢迎高手们多多指点,请勿使用过激语言,针锋相对,我是个初学者,自知还 ...

  8. php 爬虫_Scrapy 爬虫完整案例-基础篇

    1 Scrapy 爬虫完整案例-基础篇 1.1 Scrapy 爬虫案例一 Scrapy 爬虫案例:爬取腾讯网招聘信息 案例步骤: 第一步:创建项目. 在 dos下切换到目录 D:爬虫_scriptsc ...

  9. class括号里的object_Python入门 类class 基础篇

    记住一句话:类是模板,而实例则是根据类创建的对象. 我初学时对类的理解是从类的字面上,可以片面的认为它是一个种类,它是相似特征的抽像,也就是相似的东西,可以把相似特征的事务抽象成一个类.(事务可以是具 ...

最新文章

  1. 基于点云曲率的图像特征提取方法
  2. 昨日之我,今日之我与明日之我
  3. tf initializer
  4. 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
  5. JVM系列之:详解java object对象在heap中的结构
  6. Configured default database db1 doesn‘t exist in catalog myhive.
  7. jmeter插件监控cpu小节点
  8. Web前端开发神器--WebStorm(JavaScript 开发工具) 8.0.3 中文汉化破解版
  9. 小米一加等手机如何正确的刷入PixelExperience_Plus系统-完整谷歌服务
  10. 进出口流程 报关单据
  11. 如何在安装时备份sis文件
  12. 教你学java_教妹学Java:Spring 入门篇
  13. 香港美食(3)——源记喳咋
  14. 我又来分享来了,发现一个好的ide,免费的国产的,优秀的,自带md阅读器.那就是uni-app
  15. 安装6.0之后,防止应用进入DOZE状态,导致无法后台请求服务器,或者其他请求。
  16. bootstrap 检验 法 原理_Stata:刀切法/留一法/Jackknife 简介
  17. 微信小程序获取用户信息-头像、昵称......
  18. VC++几种加载图片方法的讨论(附源码)
  19. word自带的公式编辑器——用法技巧总结
  20. 偷袭“懒人经济“的自热食品,是一门赚钱的好生意吗?

热门文章

  1. 【读书】如何改善拖延——《拖延心理学》
  2. go语言圣经学习第一天——程序结构总结
  3. Java 自学秘籍(学习之路)
  4. 美国宇航局研制“刺猬”机器人探索火卫一
  5. ios-safari浏览器存储问题
  6. python 图形界面“诈金花”游戏,更新了!附完整代码
  7. 零基础10小时学会3D基础建模,可能性有多大?现学现用现演示
  8. 电脑桌面上惊现 爱淘宝 快捷方式图标
  9. 寻路者华为云:在产业AI迷宫里走直线
  10. 视频教程-大数据分析师实战课-大数据