“你说 我听着呢 我在这
不让你一个
不让你孤着
你说我听着呢
我在这 最孤单的时刻
不让你一个人
叫喊没人听见
在这城市的边缘
不只你一个“
上篇《VC之相关性Dependency介绍》介绍了相关性的用法,本篇主要分享300分类上的特性/特性值的局部相关性的BAPI及这个BAPI的BUG处理。
在使用VC的项目中,会创建类,每个类又会包含多个特性。在一些复杂的业务中,我们会对特性/特性值创建相关性。
我们先看一个300类的界面:
当我们对特性/特性值创建相关性的时候,有两种类型:全局相关性、局部相关性。
全局相关性:特性/特性值分配到不同的类中,其相关性是一致、共用的。一般使用外部编号,例如上图中的”CAL“。
局部相关性:相关性仅针对当前类有效,其他类不可用。一般使用内部编号,例如上图中的”0000063380“。
下面分享一下相关性的bapi的bug及处理方法:
背景:客户是有多个系统的,分类先在一个系统创建然后通过开发的同步平台同步到其他系统(为啥没有用IDOC我也不清楚)。
局部相关性的创建使用了这两个BAPI :(文末附有相关性的全部BAPI)
BAPI_CLASS_CHAR_LOCAL_DEP
BAPI_CLASS_CHARVALUE_LOCAL_DEP
分别对应的是特性的局部相关性和特性值的局部相关性。
当用户在前台分配多个局部相关性的时候,如下:
调用上面的BAPI 去创建的时候,当创建第二个局部相关性的时候,它会自动将前面的相关性覆盖(删除)掉,最终导致只会留下最后一个局部相关性。
分析:前台操作可以新增多个局部相关性,按道理来讲,BAPI也应该支持创建多个局部相关性。
可bapi的相关性参数是单值输入的,一次只能传入一个相关性?
网络上搜索一番,也没有发现有类似的需求。
只好自己想办法解决了,又仔细看了看Bapi的源代码:
发现BAPI内部调用的函数其实是支持多个局部相关性的。
于是把这个BAPI稍微改造一下,一次可以传入多个相关性,然后问题完美解决。
相关性的bapi:
BAPI_CLASS_ALLOC_GLOB_DEP BAPI: Assign Global Dependencies to Class
BAPI_CLASS_CHANGE BAPI: Change Class
BAPI_CLASS_CHARVALUE_DEL_DEP Class BAPI: Delete Local / Global Dependencies for Characteristic Valu
BAPI_CLASS_CHARVALUE_GLOB_DEP Class BAPI: Assign Global Dependencies to Characteristic Value
BAPI_CLASS_CHARVALUE_LOCAL_DEP Class BAPI: Maintain Local Dependency for Characteristic Value
BAPI_CLASS_CHARVALUE_READ_ALLO Class BAPI: Read Dependencies for Characteristic Value
BAPI_CLASS_CHAR_ALLOC_GLOB_DEP Class BAPI: Global Dependencies for Characteristic
BAPI_CLASS_CHAR_DELETE_DEP Class BAPI: Delete Global / Local Dependency for Characteristic
BAPI_CLASS_CHAR_LOCAL_DEP Class BAPI: Assign / Delete Local Dependency for Characteristic
BAPI_CLASS_CHAR_READ_ALLOC Class BAPI: Read Dependencies for Characteristic
BAPI_CLASS_CHAR_VALUE_TEXT_DEL Class BAPI: Delete Overwriting of Long Text for Characteristic or Value
BAPI_CLASS_CHAR_VALUE_TEXT_OVR Class BAPI: Overwriting of Long Text for Characteristic or Value