根据凭证上的核算维度信息取具体的编码名称

经常遇到有人希望根据凭证上的核算维度信息,取到具体的维度值。如凭证上某科目挂了【部门】和【城市】两个核算维度,具体是部门“采购部”和客户“长安”,而实际上该凭证只记录了由这两个维度值共同组合而成的一个ID值,无法直接得到“采购部”和“长安”,那么,到底要如何得到这两个值呢,下面的知识很重要。
凭证上记录核算维度组合信息的字段的是凭证分录表(T_GL_VOUCHERENTRY)中的FDETAILID字段,它通过外键关联的是T_BD_FLEXITEMDETAILV表的主键FID。

T_BD_FLEXITEMDETAILV表是整个核算维度体系的核心。它的列是动态生成的除了FID、FOPCODE和FCALCOL三列。这些动态列对应着相应的核算维度,如FFLEX4表示“供应商”,它的值就是【供应商】表中的某个具体记录的FMASTERID或FPKID的值。也就是说,通过FFLEX4的值,可以找到供应商的编码、名称等全部信息。

但如何知道每一列代码哪个核算维度呢?这就要看T_BD_FLEXITEMPROPERTY表啦,该表是系统中所有核算维度的列表,其中的FFLEXNUMBER字段记录了该维度在T_BD_FLEXITEMDETAILV表中的字段列。每增加一个核算维度,T_BD_FLEXITEMPROPERTY表就会增加一行,维度审核通过后,会自动在T_BD_FLEXITEMDETAILV表中生成相应的数据列。我们知道,核算维度的来源分为基础资料和辅助资料,在T_BD_FLEXITEMDETAILV表中,字段FVALUETYPE的值0代表基础资料,1代表辅助资料,二者最大的区别在于取数方式不同。这一点很重要。

一,基础资料取数:
如何知道具体核算维度(如【客户】)最终的表呢?这就要通过T_META_LOOKUPCLASS表啦。该表中FFORMID与T_BD_FLEXITEMPROPERTY表的FVALUESOURCE字段关联,即通过【客户】的FVALUESOURCE值“BD_CUSTOMER”可以在T_META_LOOKUPCLASS表中找到对应的记录,包含对应的表名,主键字段,MASTERID字段,主键字段类型等待关键信息。根据这些信息,就可以直接查询啦。

二,辅助资料取数:
辅助资料取数相对简单直接,可以直接在T_BAS_ASSISTANTDATAENTRY表中根据维度具体的ID值查询。

按上面的例子,我们要取科目上挂的部门】和【城市】两个核算维度的具体数据,方法为:
1,在T_GL_VOUCHERENTRY表中查询到该科目所在的分录行,得FDETAILID字段值,假设为54321,。
2,在T_BD_FLEXITEMDETAILV表中,根据FID=54321,查询到该核算维度组合ID对应的具体维度及其值。
3,在T_BD_FLEXITEMPROPERTY表(必要时可以关联该表的多语言表——表名后加“_L”),找出部门和城市这两个维度在T_BD_FLEXITEMDETAILV表中的字段名和维度类型,如查得部门的字段名为FFLEX5,类型为
根据凭证上的核算维度信息取具体的编码名称
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



