EKBE-BUZEI显示空值

情景

一直好好运行的报表,某天突然有用户反馈说某张STO的某几个行项目系统发票列为空,明明开了发票的,也没有做冲销,应该要显示出来才对。

本文记录一次日常问题分析的方法,提出一些思考和解决方案。

问题排查

作为平时要斗智斗勇的内部顾问,首先的反应是”报表一直运行好好的,怎么就这个单子出问题呢?多半是操作问题、数据问题?“。于是检查了PO、主数据、前序单据、权限,咋一看,没看出有什么问题,再仔细看还是没看出有什么问题。

作为能做凭证,也能写代码的攻城狮,被技术问题挑战是不爽的。文的不行,那就来武的,看代码!从代码中可知,通过EKBE表的BELNR和BUZEI关联发票表取发票信息,如果发票确实开了但取不到信息,那么应该是JOIN的条件出问题。

EKBE-BUZEI显示空值

果然,这个PO的凭证流中,交货单的BUZEI栏位在数据库中为空,空值去关联VBRP肯定是取不到数据的。那么问题的分析点就转移到“为什么EKBE-BUZEI”是空的了。

EKBE-BUZEI显示空值

那么,为什么一直运行好好的系统,就这张单据的某些行项目BUZEI为空呢?更新失败?相关程序有Bug?…… 与系统的对话一度陷入了安静。

EKBE-BUZEI,TYPE NUMC,LENTGH4。 出问题的行项目号10000…… Bingo!又被SAP的底层设计坑了。

EKBE-BUZEI显示空值

思考与解决

针对报表:

由于是第一次出现这个问题,且单据已经生成、系统底层架构经不住考验,那么就不去动凭证了,让用户手动填入系统发票信息。

针对此问题:

把PO、DN、Billing的凭证行项目步长调小,默认是10、20、30这样以10为步长增加的,调小后同一个单据中就能记录更多的行项目了。

EKBE-BUZEI显示空值

其实出问题的这个单据,真实的行项目只有1000多行,但由于步长是10,凭证里显示的行项目号超过了9999,系统无法承受、也不报错(不报错还默默的更新表,这一点太过分了,是Bug啊)。可以把步长改成1或者小于10,那么单个凭证可以承载的行项目数就成倍增加了,真正需要超过9999行的情况应该不多。

EKBE-BUZEI显示空值

更多思考:

其实关于类似的瓶颈问题,ECC时代就有很多地方有暴露。例如供应商主数据中的税号和银行账号字段长度不够、会计凭证行项目不能超过999、物料号字段太短。

有的问题,SAP已经通过后续的升级包解决,有的问题却一直不解决(例如,发明了ACDOCA,但仍然绕不过BSEG行项目999的问题),令人心痛。

SAP不论架构、前瞻性、扩展性、稳定性都全面、全方位碾压同类系统,但还是有很多值得改进的地方,望加油!

如若转载,请注明出处:https://www.gavindong.com/6865.html

微信沟通