1.方法1:CL_ABAP_HMAC->CALCULATE_HMAC_FOR_CHAR
DATA: lo_digest TYPE REF TO cx_abap_message_digest,
lv_error_text TYPE string.
TRY.
* create the signature with the key and the request string
cl_abap_hmac=>calculate_hmac_for_char(
EXPORTING
if_algorithm = 'SHA256' "Hash Algorithm
if_key = cl_abap_hmac=>string_to_xstring( i_secret_key ) "HMAC Key
if_data = i_signing_string
IMPORTING
ef_hmacb64string = r_hmac_result "HMAC value as base64-encoded string
).
CATCH cx_abap_message_digest INTO lo_digest.
lv_error_text = lo_digest->if_message~get_text( ).
MESSAGE e000(zbc) WITH lv_error_text.
ENDTRY.
方法2:CL_SEC_SXML_WRITER=>HMAC
DATA: l_key TYPE xstring,
l_input TYPE xstring,
l_output TYPE xstring,
l_b64data TYPE string.
l_key = '617069476F536B2D38386331396130366265616334313736383335363533383435663561346333382D62657461'.
l_input = '504F53540A2F6F7264732F6F7264732D6D2F6F7264732D6D2F66696E2F61702' &&
'F67657456656E646F720A0A617069476F416B2D623430623830393164623766' &&
'34653939393631316562313835643831383663642D626574610A5468752C203' &&
'035204A616E20323032332030323A35373A303120474D540A686D61632D7261' &&
'6E646F6D3A5964723966494F776D6B5737366962567233524F754D594465415' &&
'4496F7473750A'.
l_output = cl_sec_sxml_writer=>hmac(
EXPORTING
key = l_key
input = l_input
hash_algorithm = cl_sec_sxml_writer=>co_alg_sha256
).
CALL FUNCTION 'SSFC_BASE64_ENCODE'
EXPORTING
bindata = l_output
IMPORTING
b64data = l_b64data
EXCEPTIONS
ssf_krn_error = 1
ssf_krn_noop = 2
ssf_krn_nomemory = 3
ssf_krn_opinv = 4
ssf_krn_input_data_error = 5
ssf_krn_invalid_par = 6
ssf_krn_invalid_parlen = 7
OTHERS = 8.