首页 > SAP > ABAP > ABAP 数值压缩,及26进制转换
2019
08-29

ABAP 数值压缩,及26进制转换

现需要把一个数值的字符进行压缩,当前想到的简单办法就是把数值进行进制转换,比如把4位的10进制的数值,转换成26(只26个大写字母)进制的字符,这样三位的26进制字母就可以表示,26*26*26 = 17576 的10进制值了,这样,至少我们也就可以把4位的10进制值(最大9999),转换成3位的26进制,

也就是四位长度10进制数值变成用三位长度的26进制进行表示,来达到了压缩的目的,这也是一个26进制转的例子,

具体结果验证在在https://tool.lu/hexconvert/进行对比度验证,

此方法压缩率并不高,如需要压缩时,可使用

哈夫曼压缩算法(Huffman compression)关于此方法的具体说明可以从百度找到很多细节,在SAP中,也使用了此方法,SAP保存的程序时,就是通过此方法压缩后保存到表REPOSRC中的DATA字段中的,

但此压缩算法对短字符(几十个长度以下)串的压缩率不高,对长字符串有很好的压缩率,此方法我在SAP没找到直接的可使用的函数,但如需要时我们可以考虑如下方法使用

其它加密码算法:AES加密可参看:https://github.com/Sumu-Ning/AES

新版本的可以试试下面这个,

ABAP  数值压缩,及26进制转换 - 第1张  | 优通SAP

=======================================================

1.1.加压缩(加密):

INSERT REPORT REP FROM SRC PROGRAM TYPE SUBC.

把字符串,当做一个程序内容保存,然后从表REPOSRC中读出DATA字段的值,就是加密后的内容了,此方法对长数据有很大的压缩率,由于加密后数据有数据头,所以短数据时也有固定长度。

2.2.解压缩(解密):

直接把需解压的字符串使用UPDATE(INSERT)表REPOSRC的DATA字段值,

然后READ REPORT REP INTO SRC.就能得到解压的值了

———————————————————————————————

3.10进制与26进制转换

的描述及代码:

自然数[0-25] 分别表示 [A-B]

比如:0  ->  A

1->B

2->C

25->Z

26->BA

2019->CZR

一、10进制数值转换为26进制(只26个大写字母)

二、26进制(只26个大写字母)转换为10进制数值。

最后编辑:
作者:yangsen
本站为个人博客网站,全由我个人维护,我从事SAP开发13年,其它ERP开发7年,基本都是零售行业。本站记录工作学习的过程, 有SAP相关询问专、兼职工作可随时联系我。 有网站相关的问题可直接在文章下方留言,或者联系我。 邮件:yan252@163.com给我。 QQ:415402519

留下一个回复

你的email不会被公开。