生成SLUTION MANAGER KEY 的ABAP程序
?
?
*&---------------------------------------------------------------------*
*&?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程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找出口和BADI的ABAP程序
- 下一篇: 利用SAP内置功能生成Search He