data: key(8) value '12345678'. DATA: I TYPE I, J TYPE I. DATA: BEGIN OF A, 1(2)TYPE X,2(2)TYPE X,3(2)TYPE X,4(2)TYPE X, 5(2)TYPE X,6(2)TYPE X,7(2)TYPE X,8(2)TYPE X, END OF A. DATA: BEGIN OF B, 1(2)TYPE X,2(2)TYPE X,3(2)TYPE X,4(2)TYPE X, 5(2)TYPE X,6(2)TYPE X,7(2)TYPE X,8(2)TYPE X, END OF B. DATA: BEGIN OF C, 1(2)TYPE X,2(2)TYPE X,3(2)TYPE X,4(2)TYPE X, 5(2)TYPE X,6(2)TYPE X,7(2)TYPE X,8(2)TYPE X, END OF C. DATA: BEGIN OF D, 1(2)TYPE X,2(2)TYPE X,3(2)TYPE X,4(2)TYPE X, 5(2)TYPE X,6(2)TYPE X,7(2)TYPE X,8(2)TYPE X, END OF D. DATA: BEGIN OF E, 1(2)TYPE X,2(2)TYPE X,3(2)TYPE X,4(2)TYPE X, 5(2)TYPE X,6(2)TYPE X,7(2)TYPE X,8(2)TYPE X, END OF E. FORM Encrypt using value(line) changing line2. J = STRLEN( line ). I =0. CALL METHOD cl_abap_container_utilities=>READ_CONTAINER_C EXPORTING im_container = key IMPORTING EX_VALUE = A EXCEPTIONS illegal_parameter_type =1 OTHERS =2. DO. CALL METHOD cl_abap_container_utilities=>READ_CONTAINER_C EXPORTING im_container = line+I IMPORTING EX_VALUE = B EXCEPTIONS illegal_parameter_type =1 OTHERS =2. E = B. IF SY-INDEX =1. B-1= A-1+ B-1.B-2= A-2+ B-2.B-3= A-3+ B-3.B-4= A-4+ B-4. B-5= A-5+ B-5.B-6= A-6+ B-6.B-7= A-7+ B-7.B-8= A-8+ B-8. ELSE. B-1= C-1+ D-1+ B-1.B-2= C-2+ D-2+ B-2. B-3= C-3+ D-3+ B-3.B-4= C-4+ D-4+ B-4. B-5= C-5+ D-5+ B-5.B-6= C-6+ D-6+ B-6. B-7= C-7+ D-7+ B-7.B-8= C-8+ D-8+ B-8. ENDIF. D = B. C = E. CALL METHOD cl_abap_container_utilities=>FILL_CONTAINER_C EXPORTING IM_VALUE = B IMPORTING EX_CONTAINER = line2+I(8) EXCEPTIONS illegal_parameter_type =1 OTHERS =2. I = I +8. IF I >= J. EXIT. ENDIF. ENDDO. ENDFORM. FORM Decrypt using value(line) changing line2. J = STRLEN( line ). I =0. CALL METHOD cl_abap_container_utilities=>READ_CONTAINER_C EXPORTING im_container = key IMPORTING EX_VALUE = A EXCEPTIONS illegal_parameter_type =1 OTHERS =2. DO. CALL METHOD cl_abap_container_utilities=>READ_CONTAINER_C EXPORTING im_container = line+I IMPORTING EX_VALUE = B EXCEPTIONS illegal_parameter_type =1 OTHERS =2. E = B. IF SY-INDEX =1. B-1= B-1 - A-1.B-2= B-2 - A-2.B-3= B-3 - A-3.B-4= B-4 - A-4. B-5= B-5 - A-5.B-6= B-6 - A-6.B-7= B-7 - A-7.B-8= B-8 - A-8. ELSE. B-1= B-1 - C-1 - D-1.B-2= B-2 - C-2 - D-2. B-3= B-3 - C-3 - D-3.B-4= B-4 - C-4 - D-4. B-5= B-5 - C-5 - D-5.B-6= B-6 - C-6 - D-6. B-7= B-7 - C-7 - D-7.B-8= B-8 - C-8 - D-8. ENDIF. D = B. C = E. CALL METHOD cl_abap_container_utilities=>FILL_CONTAINER_C EXPORTING IM_VALUE = B IMPORTING EX_CONTAINER = line2+I(8) EXCEPTIONS illegal_parameter_type =1 OTHERS =2. I = I +8. IF I >= J. EXIT. ENDIF. ENDDO. ENDFORM.
None-Unicode版本:
PARAMETERS: STRING(96), KEY(8). PARAMETER ENCRYPT RADIOBUTTON GROUP RB. PARAMETER DECRYPT RADIOBUTTON GROUP RB. DATA: I TYPE I, J TYPE I. DATA: BEGIN OF A, 1TYPE X,2TYPE X,3TYPE X,4TYPE X, 5TYPE X,6TYPE X,7TYPE X,8TYPE X, END OF A. DATA: BEGIN OF B, 1TYPE X,2TYPE X,3TYPE X,4TYPE X, 5TYPE X,6TYPE X,7TYPE X,8TYPE X, END OF B. DATA: BEGIN OF C, 1TYPE X,2TYPE X,3TYPE X,4TYPE X, 5TYPE X,6TYPE X,7TYPE X,8TYPE X, END OF C. DATA: BEGIN OF D, 1TYPE X,2TYPE X,3TYPE X,4TYPE X, 5TYPE X,6TYPE X,7TYPE X,8TYPE X, END OF D. DATA: BEGIN OF E, 1TYPE X,2TYPE X,3TYPE X,4TYPE X, 5TYPE X,6TYPE X,7TYPE X,8TYPE X, END OF E. WRITE: / STRING. * encrypting J = STRLEN( STRING ). A = KEY. DO. B = STRING+I. E = B. IF SY-INDEX =1. B-1= A-1+ B-1.B-2= A-2+ B-2.B-3= A-3+ B-3.B-4= A-4+ B-4. B-5= A-5+ B-5.B-6= A-6+ B-6.B-7= A-7+ B-7.B-8= A-8+ B-8. ELSE. B-1= C-1+ D-1+ B-1.B-2= C-2+ D-2+ B-2. B-3= C-3+ D-3+ B-3.B-4= C-4+ D-4+ B-4. B-5= C-5+ D-5+ B-5.B-6= C-6+ D-6+ B-6. B-7= C-7+ D-7+ B-7.B-8= C-8+ D-8+ B-8. ENDIF. D = B. C = E. STRING+I(8)= B. I = I +8. IF I >= J. EXIT. ENDIF. ENDDO. WRITE: / STRING. * decrypting J = STRLEN( STRING ). I =0. A = KEY. DO. B = STRING+I. E = B. IF SY-INDEX =1. B-1= B-1 - A-1.B-2= B-2 - A-2.B-3= B-3 - A-3.B-4= B-4 - A-4. B-5= B-5 - A-5.B-6= B-6 - A-6.B-7= B-7 - A-7.B-8= B-8 - A-8. ELSE. B-1= B-1 - C-1 - D-1.B-2= B-2 - C-2 - D-2. B-3= B-3 - C-3 - D-3.B-4= B-4 - C-4 - D-4. B-5= B-5 - C-5 - D-5.B-6= B-6 - C-6 - D-6. B-7= B-7 - C-7 - D-7.B-8= B-8 - C-8 - D-8. ENDIF. D = B. C = E. STRING+I(8)= B. I = I +8. IF I >= J. EXIT. ENDIF. ENDDO. WRITE: / STRING.
Unicode版本的使用:
data: begin of lines occurs 0, line(200), end of lines. FORM OUT2INTERFACE. data: amount(15), tmp_line(200). refresh lines. loop at s_itab. amount = s_itab-net_pay. concatenate s_itab-name amount s_itab-zweck s_itab-zbankdesc into tmp_line separated by ','. perform encrypt using tmp_line changing lines-line. append lines. clear lines. clear tmp_line. endloop. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING * codepage= '8400' FILENAME = 'c:homedirpaylist.txt' FILETYPE = 'BIN' TABLES DATA_TAB = lines EXCEPTIONS INVALID_FILESIZE =1 INVALID_TABLE_WIDTH =2 INVALID_TYPE =3. **** Just for Test****** *data: begin of lines2 occurs 0, * line(200), * end of lines2. * refresh lines2. * refresh lines. * CALL FUNCTION 'GUI_UPLOAD' * EXPORTING ** codepage= '8400' * FILENAME = 'c:homedirpaylist.txt' * FILETYPE = 'BIN' * TABLES * DATA_TAB = lines * EXCEPTIONS * INVALID_FILESIZE =1 * INVALID_TABLE_WIDTH =2 * INVALID_TYPE =3. * * loop at lines. * clear lines2. * perform decrypt using lines-line changing lines2-line. * append lines2. * endloop. * * CALL FUNCTION 'GUI_DOWNLOAD' * EXPORTING * codepage= '8400' * FILENAME = 'c:homedirpaylist2.txt' * FILETYPE = 'ASC' * TABLES * DATA_TAB = lines2 * EXCEPTIONS * INVALID_FILESIZE =1 * INVALID_TABLE_WIDTH =2 * INVALID_TYPE =3. ENDFORM."Out2Interface