还剩5页未读,继续阅读
文本内容:
如何自己生成Solution__nagerKeyhttp://___.cnblogs.com/qiangsheng/archive/2007/08/16/
858271.html今天偶然得到一个程序,是用来生成Solution__nagerKey的,有了它,以后装ECC版的SAP软件就不用到处找人了*---------------------------------------------------------------------** Report ZSLMKEY**---------------------------------------------------------------------****---------------------------------------------------------------------*REPORT ZSLMKEY.types: begin of dswpclientkey INSTNO type num10 DBID3 BUNDLE_ID8 SERVI___KEY40 end of dswpclientkey.*data: dswpclientkey_w type standard table of dswpclientkey.DATA: P_VALUE10 P_INSTNO
10.PARAMETERS: P_SID3 P_SYSNO2 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_chars38 TYPE c VALUE -01234567__ABCDEFGHIJKLMNOPQRSTUVWXYZ_. data: lf_string20 type c lf_key type i ls_key type dswpclientkey lf_partlc_part_len type c lf_finalflc_pw_len type c lf_finalx type xstring lf_xbuffer type xstring lf_opf10 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___. 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___=create encoding = 1100 . lf_len = STRLEN lf_string . IF lf_stringlf_len CN lc_allowed_chars. else.* Fold the input string to a lc_part_len long string WHILE lf_len
0. lf_part = lf_stringlc_part_len. SHIFT lf_string BY lc_part_len PLA__S. 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 = ___KEY. ls_key-servi___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___x_len TYPE i VALUE 20 lc___sk4 TYPE x VALUE 0000003F lc_random64 TYPE x VALUE F0ED5__83244F1F876C67959FD4F13A2 C15195EC5483C234774943A27DE26596 5E5398789A17A33CD383A8B829FBDCA5 55D702778413ACDDF9B83116610E6DFA. DATA: lv_key_index4 TYPE x lv_rand_index4 TYPE x lv_xkey4 TYPE x lv_xkey_shl_14 TYPE x lv_xkey_shr_54 TYPE x lv_scramble_byte TYPE x lv_destlc___x_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___x_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___sk. lv_index =
0. DO iv_src_len TIMES. CATCH SYSTEM-EX__PTIONS 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_index1 BIT-XOR lv_key_index+
31. lv_dest+lv_index1 = iv_xstring+lv_index1 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___sk. ENDDO. IF lf_subrc
0. EXIT. ENDIF. WRITE lv_destiv_src_len TO lf_finalf.ENDFORM. scramble。