生成SLUTION MANAGER KEY 的ABAP程序
相装ECC5、6的朋友,不用担心SLUTION MANAGER KEY 的问题了,下面的ABAP程序可以帮你生成,ECC6测试通过
*&---------------------------------------------------------------------*
*& Report ZSLM_KEY *
*& *
*&---------------------------------------------------------------------*
*& *
*& 得到SOLUTION MANAGER KEY *
*&---------------------------------------------------------------------*
REPORT ZSLM_KEY.
types: begin of dswpclientkey,
INSTNO type num10,
DBID(3),
BUNDLE_ID(8),
SERVICE_KEY(40),
end of dswpclientkey.
*data: dswpclientkey_w type standard table of dswpclientkey.
DATA: P_VALUE(10),
P_INSTNO(10).
PARAMETERS: P_SID(3),
P_SYSNO(2),
P_SERVER(15).
START-OF-SELECTION.
PERFORM GET_SP_VALUE USING P_SID
P_SYSNO
P_SERVER
P_INSTNO
CHANGING P_VALUE.
END-OF-SELECTION.
WRITE P_VALUE.
*&---------------------------------------------------------------------*
*& Form get_sp_value
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PF_SID text
* -->P_PF_SYSNO text
* -->P_PF_SERVER text
* <--P_PF_VALUE text
*----------------------------------------------------------------------*
FORM get_sp_value USING P_PF_SID
P_PF_SYSNO
P_PF_SERVER
P_PF_INSTNO
CHANGING P_PF_VALUE.
CONSTANTS: lc_part_len TYPE i VALUE 5,
lc_pw_len TYPE i VALUE 10,
lc_allowed_chars(38) TYPE c VALUE
'-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_'.
data: lf_string(20) type c,
lf_key type i,
ls_key type dswpclientkey,
lf_part(lc_part_len) type c,
lf_finalf(lc_pw_len) type c,
lf_finalx type xstring,
lf_xbuffer type xstring,
lf_opf(10) type c,
lf_langu like sy-langu,
lf_subrc like sy-subrc,
lf_len type i,
lo_conv_to_x TYPE REF TO cl_abap_conv_out_ce.
clear: lf_string, lf_finalx, lf_opf.
concatenate p_pf_sid p_pf_sysno p_pf_server into lf_string.
* Large letters only
translate lf_string to upper case.
lf_langu = sy-langu.
SET LOCALE LANGUAGE 'E'.
lo_conv_to_x = cl_abap_conv_out_ce=>create( encoding = '1100' ).
lf_len = STRLEN( lf_string ).
IF lf_string(lf_len) CN lc_allowed_chars.
else.
* Fold the input string to a lc_part_len long string
WHILE lf_len > 0.
lf_part = lf_string(lc_part_len).
SHIFT lf_string BY lc_part_len PLACES.
lf_len = STRLEN( lf_string ).
CALL METHOD lo_conv_to_x->reset.
CALL METHOD lo_conv_to_x->write( data = lf_part n = -1 ).
lf_xbuffer = lo_conv_to_x->get_buffer( ).
lf_finalx = lf_finalx BIT-XOR lf_xbuffer.
ENDWHILE.
lf_key = 12.
PERFORM scramble USING lf_finalx
lf_key
lc_part_len
CHANGING lf_finalf
lf_subrc.
if not lf_finalf is initial.
p_pf_value = lf_finalf.
ls_key-dbid = p_pf_sid.
ls_key-instno = p_pf_instno.
ls_key-bundle_id = 'SM_KEY'.
ls_key-service_key = lf_finalf.
if not p_pf_instno is initial.
* insert dswpclientkey_w from ls_key.
if sy-subrc <> 0.
* update dswpclientkey_w from ls_key.
endif.
endif.
else.
clear p_pf_value.
endif.
endif.
ENDFORM. " get_sp_value
*&---------------------------------------------------------------------*
*& Form scramble
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LF_FINALX text
* -->P_LF_KEY text
* -->P_LC_PART_LEN text
* <--P_LF_finalf text
* <--P_LF_SUBRC text
*----------------------------------------------------------------------*
FORM scramble USING iv_xstring TYPE xstring
iv_key TYPE i
iv_src_len TYPE i
CHANGING lf_finalf
lf_subrc LIKE sy-subrc.
CONSTANTS: lc_max_len TYPE i VALUE 20,
lc_mask(4) TYPE x VALUE '0000003F',
lc_random(64) TYPE x VALUE
'F0ED53B83244F1F876C67959FD4F13A2' &
'C15195EC5483C234774943A27DE26596' &
'5E5398789A17A33CD383A8B829FBDCA5' &
'55D702778413ACDDF9B83116610E6DFA'.
DATA: lv_key_index(4) TYPE x,
lv_rand_index(4) TYPE x,
lv_xkey(4) TYPE x,
lv_xkey_shl_1(4) TYPE x,
lv_xkey_shr_5(4) TYPE x,
lv_scramble_byte TYPE x,
lv_dest(lc_max_len) TYPE x,
lv_index TYPE i,
lv_len TYPE i.
CLEAR lf_subrc.
IF iv_src_len EQ 0. EXIT. ENDIF.
lv_len = XSTRLEN( iv_xstring ).
IF iv_src_len GT lc_max_len OR
iv_src_len GT lv_len.
lf_subrc = 2.
EXIT.
ENDIF.
lv_xkey = iv_key.
lv_xkey_shl_1 = iv_key * 2.
lv_xkey_shr_5 = iv_key DIV 32.
lv_rand_index = lv_xkey BIT-XOR lv_xkey_shr_5 BIT-XOR lv_xkey_shl_1.
lv_rand_index = lv_rand_index BIT-AND lc_mask.
lv_index = 0.
DO iv_src_len TIMES.
CATCH SYSTEM-EXCEPTIONS compute_int_times_overflow = 1.
lv_key_index = ( iv_key * lv_index * lv_index ) - lv_index.
ENDCATCH.
IF sy-subrc <> 0.
lf_subrc = 1.
EXIT.
ENDIF.
lv_scramble_byte = lc_random+lv_rand_index(1) BIT-XOR
lv_key_index+3(1).
lv_dest+lv_index(1) = iv_xstring+lv_index(1) BIT-XOR
lv_scramble_byte.
lv_index = lv_index + 1.
lv_rand_index = lv_rand_index + 1.
lv_rand_index = lv_rand_index BIT-AND lc_mask.
ENDDO.
IF lf_subrc <> 0.
EXIT.
ENDIF.
WRITE lv_dest(iv_src_len) TO lf_finalf.
ENDFORM. " scramble
生成SLUTION MANAGER KEY 的ABAP程序相关推荐
- 生成转储拣配单的ABAP程序
report ZE_MM_SCPSDD no standard page heading line-size 150. *---------------------------生成转储拣配单的 ...
- 解除ABAP程序编辑锁的方法
方法1:在已有SE38创建修改权限的情况下 REPORT ZUNLOCK.TABLES: TRDIR. "System table TRDIRPARAMETERS: PROGRAM LIKE ...
- ABAP程序中的七大危险漏洞
概述 SAP的企业资源规划(ERP)系统已成为企业各项关键业务:财务管理.薪资管理.人力资源管理.供应链管理.客户关系管理等的基础平台.然而,在每个SAP的安装实施过程中,都会基于客户的需求进行不同程 ...
- YLAN_TRANSLATE ABAP程序批量翻译工具
工具用途 ABAP程序批量翻译,根据程序名检索代码中的中文,自动更新代码为可翻译文本,批量下载上传翻译文本并写入传输请求. 即此工具可以把程序里写死的硬代码变成可翻译文本,如果需要自动call api ...
- 19. 如何使用 ABAP 程序消费 SAP ABAP OData 服务
本教程到目前为止,我们已经创建了一个支持增删改查的图书管理 OData 服务.本步骤介绍如何使用 ABAP 程序,来消费这个 OData 服务. 假设我们开发 OData 服务的 SAP ABAP 系 ...
- SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错
SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错 BP,试图创建一个新的vendor code, 角色是ZGM001, Grouping是G001, ...
- ABAP 程序中退出操作(CHECK, EXIT, RETURN, LEAVE PROGRAM...)
ABAP 程序中退出操作(CHECK, EXIT, RETURN, LEAVE PROGRAM...) 这里总结一下几个常用的退出操作: CHECK.(SAP官方推荐只在循环中使用) 1)CHECK ...
- windows下生成github ssh key详解
一.引子: 什么是ssh:ssh是Secure Shell(安全外壳协议)的缩写,建立在应用层和传输层基础上的安全协议.为了便于访问github,要生成ssh公钥,这样就不用每一次访问github都要 ...
- ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍
很多 ABAP 初学者通过各种社交平台向我提出这个问题: ABAP初学者如何系统地学习ABAP编程? 所以我专门写了一篇同名的文章来回答. 文章里提到,我的 ABAP 学习之路,其实并没有阅读过中文的 ...
最新文章
- 谷歌AI智商达苹果Siri两倍 但不及6岁儿童
- P3979 遥远的国度
- 邪恶的Java帝国是怎么欺负小函数的?
- mysql句柄是什么_MySQL与句柄
- 12306春节高速抢票
- python canvas画移动物体_如何实现Canvas图像的拖拽、点击等操作
- git 分支的创建和切换
- python计算器程序代码_7_python之路之python计算器
- 汉化几乎所有编程软件
- 国内博客(blog)搬家工具(服务)大全
- java定时任务之quartz
- 百度竞价该如何选择关键词?
- 手机号归属地 mysql脚本_手机号码归属地能否取消? 这些热点问题,工信部回复了...
- BottomNavigationBar+viewpager底部导航切换,出现 Fragment already added
- 【Python实战】爬取5K分辨率超清唯美壁纸
- 《石油地球物理测井——在井下看油气藏》 知识整理
- python之WeChat撩妹神奇
- LED通信的ID识别报告
- android app被回收,Android app被回收之后会导致的问题
- 基于JavaSpringboot+vue国风汉服文化交流宣传系统
热门文章
- Spark UDF变长参数的二三事儿
- I.MX6 GPS JNI HAL register init hacking
- StoreFront web 无法启动指定的应用
- 做iOS开发的这2年:30而立投身iOS开发嫌晚?
- 你到底有几个邮箱?码云账号增加多邮箱支持!
- maven junit scope test坑
- 【Spark篇】---Spark中Master-HA和historyServer的搭建和应用
- service-mesh
- kvm 虚拟机 实用工具笔记(方便查看ip 磁盘复制和修改文件等)
- 如何解决python3.5.2安装scrapy的无法查找到vsvarall的问题