众所周知,更改凭证抬头表CDHDR和更改凭证项目表CDPOS中保存了SAP中业务数据的创建和变更历史。
但是在查询这两个表时,通常会面临不知道如何填写OBJECTCLAS和OBJECTID这两个字段的值。
![](http://www.baidusap.com/wp-content/uploads/2019-06-04_17-58-16-740x520.jpg)
对于OBJECTCLAS,可以通过表TCDOB查找到,以TABNAME为条件,查询对应的OBJECTCLAS。
比如下图,输入EKKO、EKPO...等表名就能找到对项目
采购订单抬头行项目,对应的对象名就是EINKBELEG;
销售订单抬头行项目,对应的对象名是VERKBELEG;
交货单抬头行项目数据,对应的对象名是LIEFERUNG。
![](http://www.baidusap.com/wp-content/uploads/2019-06-04_16-33-15-740x233.jpg)
对于对象值OBJECTID的查找稍微复杂一些,以采购订单的对象类EINKBELEG举例说明:
首先通过tcode SCDO找到对象类OBJECTCLAS的生成信息。
![](http://www.baidusap.com/wp-content/uploads/2019-06-04_16-34-35.jpg)
这里也可以看到对象类下所有的可以更改的表。
![](http://www.baidusap.com/wp-content/uploads/2019-06-04_16-35-13-740x378.jpg)
在生成信息中能找到更新函数EINKBELEG_WRITE_DOCUMENT
![](http://www.baidusap.com/wp-content/uploads/2019-06-04_16-36-04.jpg)
SE37,通过where use list找到所有用到EINKBELEG_WRITE_DOCUMENT的程序,找一个双击跳转到对应的程序中,
![](http://www.baidusap.com/wp-content/uploads/2019-06-04_16-37-29-740x252.jpg)
然后就看到这个对象值,objectID填写的是采购订单号(EKKO-EBELN)。通过此方法也可以找到其他对象类的对象值。
![](http://www.baidusap.com/wp-content/uploads/2019-06-04_16-38-01.jpg)
以上。