修改EDT长度

最初的要求是修改ItemId长度变成30,后来运行了一段时间发现如果不修改ItemRelationKeyValue的长度,到运行BOM/Route Calculation的时候还是会出问题(上面两个EDTItemId没有直接关系)。

 

但终究不能碰到问题才去找哪些EDT遗漏了于是想到系统自带的修改EDTform(系统管理==》设置==》系统==》修改数据类型)。

 

其实这个form并不是简单的只修改一个EDT,而是把它的父EDT揪出来并且找到它整棵EDT树的所有EDT。ItemId为例它整棵EDT树包括ItemIdBase,ItemIdAlternative,ItemIdProduction,等等

 

然而这还没有完那张form会继续寻找所有Tables的所有relations,一旦发现和之前找出的EDT树有关的field,而且长度小于我们的目标长度的就把它列入修改清单

 

BOMCalcTrans为例它的relations InventTableItem正是有一条关于ItemIdKeyValue的关系由这个关系系统便知道KeyValue其实也是需要修改的(事实上系统只在长度小于目标长度的时候修改拿我们的ItemId为例原本只有20长度现在改到30,系统检测到KeyValue依然只有20的长度如果保持这个长度那么传递过来的30长度的ItemId就会被切断所以有必要变长而相反如果我们ItemId长度改为10,KeyValue则没有必要修改原因是KeyValue可能还对应别的Relation,鲁莽缩小它可能会导致别的传递进来的值被切断)。

 

由上面基本可以想到,无论怎么修改EDT长度最好还是通过那个form来实现。最后一个问题那个form默认只处理几个EDT,如何让它处理一些之前没有列出的EDT其实实现很简单

找到SysEDTSetup这张form,并打开它的fillView方法插入如下的代码(插入的EDT类型只能是string或者real,这张form只支持这两个类型)。

修改后的长度需重启clientapplication才能看到。

 

  摘自秋毫论坛。

 

posted @ 2012-08-28 11:21  Sprite.z  Views(241)  Comments(0Edit  收藏  举报