如有转载请注明出处:http://blog.csdn.net/donkey2004112103/archive/2009/05/03/4145450.aspx
程序中经常会要根据客户或者供应商编号得到他们的描述信息,或者公司代码,分销渠道等等,都是要根据代码得到描述信息,如果在select语句中做内连接是可以做到,只是比较麻烦,不是很灵活。SAP中提供了很多读取这些信息的函数。总结下。
1.function group APAR_MASTER
这个函数组下面有四个函数,功能名称分别如下。
KNA1_READ_SINGLE :根据客户编码得到客户的信息
KNB1_READ_SINGLE:得到客户主数据 (公司代码)信息
LFA1_READ_SINGLE:根据供应商编码得到供应商信息
LFB1_READ_SINGLE:得到供应商主数据(公司代码)信息
函数赏析:
这个function group下的函数写的思路都一样,比较巧妙的地方是用了statics变量用来存储之前读过的5次记录,而且是队列的形式插入,保证最近查询记录会保存下来,从而提高命中率。这部分写的非常不错,摘录下来:
INSERT ES_KNA1 INTO ST_KNA1 INDEX 1.
DESCRIBE TABLE ST_KNA1 LINES LD_BUFFER_LINES.
IF LD_BUFFER_LINES GT GC_KNA1_MAX_LINES.
DELETE ST_KNA1 INDEX LD_BUFFER_LINES.
ENDIF.
以上这部分代码保证查询的结果先入先出,后入后出,提高查询命中率。
2.function group MG05
此函数组里包含很多function module,不过目前我用到的就是T001_SINGLE_READ。和上面的命名规则有点不同,不知道是sap故意还是不小心犯的错误,READ和SIGNLE单词顺序发生了变化。
T001_SINGLE_READ:根据公司代码得到公司信息
函数赏析:
同样用到了STATICS变量来保存查询结果,但是值保存了一条记录。不知道为什么SAP这个时候只保存一条记录,从哪方面考虑的。用了FEHLER(1)这样一个变量去记录是否有查询的结果存在。
3.function group MG46
此函数组下的几乎所有function都已SINGLE_READ结束,目前用过的函数如下。
TVKOT_SINGLE_READ:根据销售组织和语言代码得到销售组织的文本信息。
TVTWT_SINGLE_READ: 根据分销渠道代码和语言得到分销渠道的文本信息。
4. 总结
为了得到文本描述信息,可以在SE37中通过关键字搜索这些函数。还有一个更通用的方法以VKORG为例,在表VBRK中点击entry help/check,再双击进入VKORG的check table:TVKO。进入后选择Goto->文本表可以找到对应的主记录存在那张表里。如图:
再根据文本表去SE37中搜索就能很快找到你要的函数了。