SAP小技巧 商品编码去掉前置0-补充

点击蓝字 关注我们

前言

之前曾经写过一篇文章 怎么去掉商品编码的前置0

详见链接

无峰,公众号:ABAP开发技巧SAP小技巧之 商品编码去掉前置0

当时的应用场景是去掉数据库表中的前置0. 同时系统商品编码使用外部给号方式.

这样可以保留0开头的商品编码与非0开头的商品编码同时存在

比如 0123 与 123 可以作为两个不同的商品编码存在.

但是如果期望商品编码使用内部给号方式,同时又不想保留数据表中的前置0.

那就是本文补充讨论的范畴了.

本文主要讨论怎么在使用SAP ECC/S4系统内部获取商品编码的同时去除表中前置0

标准配置

配置表 TMCNV(维护视图V_TMCNV)

标准配置的帮助中已经详细说明. 勾选<辞典编撰>后,系统将严格按照外部给的号码显示并存储商品编码.

但是如果是内部给号,则会添加前置0.

标准帮助文本

如下文字来自系统标准配置的帮助文档. 

如果还没有在系统中使用数字物料编号,因为它们在设置或重置此标识后不再是可说明的,那么才有可能设置或重置(取消)此标识。

  • 如果未设置此标识,那么数字物料编号用前导零填充并右对齐存储(例1)。

    包含至少一个非数字符的物料编号左对齐存储(例2)。

例1

定义的长度: 8 个字符

内部/外部分配的编号:,,123

存储的编号: 000000000000000123

例 2

定义的长度: 8个字符

外部分配的编号: 1A3

存储的编号: 1A3

  • 如果未设置此标识, 那么物料编号存储如下:

  • 如果物料编号(数字的或不完全数字的)外部地分配输入的时候左对齐存储。

示例

定义的长度: 8个字符

外部分配地编号: 123

存储的编号: 123

注释

也存储可能已输入的前导零。这使得在编号123和0123中进行区分成为可能。

  • 如果物料编号(仅数字的)内部地分配 ,那么它用前导零填充到定义的长度并左对齐存储。

示例

定义的长度: 8 个字符

内部分配的编号: 123

存储的编号: 00000123

系统的缺陷

对于内部给号的,无法取消商品编码的前置0. 勾选词典编撰后,反而会导致前台也显示前置0. 反而让事情变得更加糟糕.

期望

假设项目中期望商品编码长度8位, 同时需要内部给号,并且期望数据库中保存的编号不带有前置0.

解决方案

那么怎么解决这个问题呢?

01

方案一

可以尝试通过标准的配置尝试解决. 配置表 TMCNV中配置编号长度 8 , 同时勾选<词典编撰>

通过MM41测试获取商品编码, 可以正常获取,并且保存的商品编码也是没有前置0.

但是尝试一般商品时, 系统报错,这个报错的原因是标准商品编码体系对变式商品会按一般商品编码补充3位数字作为变式商品编码, 因为限制了总商品长度为8,系统就会检查一般商品不能超过5位,给变式商品留出空间.

02

方案一总结

标准配置方案可以解决单一商品的给号长度问题, 但是因为一般商品产生变式商品会补充3位数字, 系统检查了单一商品的编号不能超过5位(8-3). 所以方案一不适合与同时使用单一商品和一般商品的项目. 

方案一的另外一个局限是物料编号长度限制为8后, 之前超过8位的物料编号也就不能再使用了. 同时也限制了其它类型的商品不能超过8位.

同时方案一也不适用于不同商品类型编码长度不一致的情况

说明

商品编码通过号码组可以同时设置一个内部号码范围, 一个外部号码范围分配给商品类型. 这就意味着, 同一个商品类型,同时允许内部给号和外部给号,比如下图的Z004同时分配了两个间隔 20(内部给号) 21(外部给号)(分配的结果存放在表T134-NUMKI (内部给号范围) T134-NUMKE(外部给号范围)

03

方案二

商品号码范围正常配置. 按可能的最大长度定义物料编码长度. 可以保留默认配置18

勾选 <词典编撰>

创建一个自定义的号码范围ZBC_MATNR及物料类型与号码间隔的对应关系表,用来维护一个自定义的内部号码获取

标准配置的给号间隔. 标准的外部给号间隔需要保留前置0

自定义号码对象的间隔,注意需要确保自定义号码间隔和标准号码范围外部给号间隔一致

因为自定义间隔无法去掉前置0 , 需要修改NRIV表, 去掉前置0.并且确保自定义间隔和外部给号间隔号码范围一致(忽略前置0的情况下一致,系统检查外部给号时会附加前置0后执行检查)

在MM41的屏幕字段 SAPLMGMW(100)

在MODULE LESEN_MAT_ANKER 开头添加代码(因为MODULE不能使用隐式增强,只能通过源代码修改的方式添加代码) 判断 变量RMMW1-MATNR 为空时, 同时商品类型 RMMW1-MTART 非空,通过配置表获取一个间隔,读取一个号码赋值到RMMW1-MATNR即可.

这样,这就解决了前台MM41创建商品编码的给号增强(系统配置外部给号, 实际通过自定义号码范围内部给号). 基于商品长度配置中 <词典编撰> 字段的帮助说明. 对于系统来说,实际是外部给号. 就会确保商品的显示及底表都不带有前置0 .

如果开发尝试使用BAPI或IDOC创建商品. 只需要通过读取配置表获取间隔, 调用函数NUMBER_GET_NEXT获取一个号码作为外部号码写入BAPI或IDOC的商品编号字段即可.

代码很简单,如下图(需要创建一个配置表ZTMARA_NR)

方案对比

方案一比较简单, 只需要配置即可. 但是限制了使用的范围(不能创建变式商品, 同时所有商品号码都是相同长度)

方案二较复杂,因为本质是外部给号(对系统来说是外部给号, 对用户来说是内部给号),没有违背系统的标准逻辑. 可以完解决了系统标准商品编码内部给号无法去掉前置0的问题.

总结

商品编码的前置0 在很多项目上都会一定程度的困扰开发,尤其是接口开发. 很多时候需要做商品编码的内外转换. 在一些底层代码逻辑随时需要考虑商品编码的实际长度18与业务使用长度的差异.

通过本文的方案可以确保商品编码表里如一(显示及存储的编号一致). 给后续开发带来一些便利.

THE

END

约定

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



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容