SAP小技巧 允许EAN条码带有前置0

点击蓝字 关注我们

前言

SAP 标准的条码字段 EAN11 不允许出现存在前置0的编码.

比如 02010101 输入到EAN11中会变成2010101 前置0会丢失. 这个特性将导致客户原有系统中的还有前置0的条码无法录入到ECC系统的标准EAN字段中.

解决方案一

创建一个自定义表,用来存放有前置0的EAN和没有前置0的EAN的对应关系. 这个方案比较麻烦,因为很多地方都需要去访问这个对应表,转换一下. 提出这个方案的目的仅仅是为了抛砖引玉.

解决方案二

增强调整系统标准功能,允许标准字段存放带有前置0的编码.

通过标准逻辑的跟踪. (跟踪过程比较麻烦,忽略, 直接说结果),调整以下配置和增强即可实现.

增强的目的都是为了实现不做条码编码内容转换. 

01

配置调整

条码的条码号码范围配置调整为

 0-ZZZZZZZZZZZZZZZ

以便允许输入所有可能的条码

02

增强转换函数

增强函数转换函数

CONVERSION_EXIT_EAN11_INPUT

CONVERSION_EXIT_EAN11_OUTPUT

在函数开始处使用隐式增强添加如下代码,确保转换函数直接输出输入的值, 不执行标准转换逻辑

 OUTPUT = INPUT.

 RETURN.

03

增强标准函数

同时在函数EAN_SYSTEMATIC 开始,结尾处增强添加隐式增强,添加的逻辑目的也是为了避免系统转换条码内容. 开始自定义变量保存传入的条码, 结尾把转换的条码替换成传入的条码

开头添加代码

DATA: LV_EAN TYPE EAN11.

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.

04

效果验证

进过上述调整后,系统标准的条码字段就可以直接录入或显示带有前置0的条码了.

总结

这个调整对系统的影响比较大.请确保无需使用系统标准生成EAN条码的逻辑.条码全部通过外部输入.

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EAN条形码的编码规则比较复杂,但是可以通过一些公式来计算每个数字所对应的编码。这里提供一种简单的方法,使用以下公式来计算每个数字的编码: - 对于左侧的6位数字,将其分成3组,每组两个数字,分别计算其编码。第一组的编码是A组,第二组的编码是B组,第三组的编码是C组。具体的计算方法可以参考EAN-13条形码的编码规则。 - 对于右侧的6位数字,将其分成2组,每组三个数字,分别计算其编码。第一组的编码是A组,第二组的编码是C组。 这样就可以得到整个EAN条形码的编码。在QT Creator中使用QPainter生成EAN条形码的过程如下: 1. 在绘图事件中创建QPainter对象: ``` void BarcodeWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); // 绘制条形码 } ``` 2. 设置绘制参数,例如条形码的宽度和高度,以及条码的起始位置: ``` int barWidth = 2; int barHeight = 60; int startX = 10; int startY = 10; ``` 3. 计算每个数字的编码,并将其转换为二进制格式: ``` QString barcode = "123456789012"; QString leftCode = getLeftCode(barcode.left(6)); QString rightCode = getRightCode(barcode.right(6)); QString code = "101" + leftCode + "01010" + rightCode + "101"; ``` 其中,getLeftCode和getRightCode是计算左侧和右侧数字编码的方法,可以参考EAN-13条形码的编码规则。 4. 绘制条形码: ``` for (int i = 0; i < code.length(); i++) { if (code.at(i) == '1') { painter.fillRect(startX, startY, barWidth, barHeight, Qt::black); } else { painter.fillRect(startX, startY, barWidth, barHeight, Qt::white); } startX += barWidth; } ``` 其中,如果某个数字的二进制编码为1,则使用黑色填充,否则使用白色填充。 这样就可以使用QT Creator的QPainter生成EAN条形码了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值