SAP国际商品编码(EAN码)允许前导0增强

零售进口商品条码是0开头的,国际商品条码/商品通码通过BAPI写入或者MM41\MM42创建时发现,前台输入前导0的条码回车后前面的0会自动被忽略掉,后台表修改也无法写入前导0。
解决办法:
涉及到2张表,MARA和MARM,MARA表是保存基本单位对应的EAN码,MARM表保存了转换单位对应的EAN码,步骤如下:
1.EAN转换例程增强

在这里插入图片描述
在这里插入图片描述
在这2个转换函数的开头处隐式增强,如果有前导0,则OUTPUT = INPUT
在这里插入图片描述
IF input IS NOT INITIAL AND input+0(1) = ‘0’.
output = input.
EXIT.
ENDIF.
在这里插入图片描述
IF input IS NOT INITIAL AND input+0(1) = ‘0’.
output = input.
EXIT.
ENDIF.
2.MARA上EAN增强
在函数MARA_EAN11里开头和结尾处隐式增强,将开头处的EAN码赋值给结尾处的EAN码,不执行转换逻辑。
开头处:
在这里插入图片描述
if P_EAN11 IS NOT INITIAL AND P_EAN11+0(1) = ‘0’.
DATA(lv_ean11) = P_EAN11.
ENDIF.
结尾处:在这里插入图片描述
if lv_ean11 IS NOT INITIAL.
P_EAN11 = lv_ean11.
endif.
3.MARM上EAN增强
在函数EAN_SYSTEMATIC 开始,结尾处增强添加隐式增强,添加的逻辑目的也是为了避免系统转换条码内容. 开始自定义变量保存传入的条码, 结尾把转换的条码替换成传入的条码。
开头处:
在这里插入图片描述
DATA(lv_ean) = EAN_NEU.

结尾处:
在这里插入图片描述
if ean_neu <> lv_ean.

delete MARM_ITAB where ean11 = ean_neu.

delete MEAN_TAB where ean11 = ean_neu.

endif.

ean_neu = lv_ean.

ean_alt = lv_ean.

效果展示:
在这里插入图片描述
后台表MARA
在这里插入图片描述
后台表MARM
在这里插入图片描述
注:
另外创建一个自定义表或者标准表增强字段,用来存放有前置0的EAN和没有前置0的EAN的对应关系. 这个方案比较麻烦,因为很多地方都需要去访问这个对应表,转换一下,同时前台还得做屏幕增强,提出这个方案的目的仅仅是为了抛砖引玉,不推荐!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值