SAP加密和安装自己的源代码
SE37:新建函数:ZINSTALL
包含文件:ZINSTALL
1 IF report IS INITIAL. 2 CALL FUNCTION 'RSS_PROGRAM_CREATE' 3 IMPORTING 4 e_program_name = report. 5 ENDIF. 6 INSERT REPORT report FROM code. 7 IF sy-subrc = 0. 8 COMMIT WORK. 9 str = '程序:' && report && '安装成功!'. 10 ELSE. 11 ROLLBACK WORK. 12 str = '程序:' && report && '安装失败!'. 13 ENDIF. 14 REFRESH:code.
包含文件:ZENCRYCODE
1 TRY. 2 CONDENSE:report. 3 DATA:lv_str TYPE string, 4 ls_data TYPE REF TO data, 5 lt_data TYPE TABLE OF reposrc, 6 lo_sql TYPE REF TO cl_sql_statement, 7 lx_sql TYPE REF TO cx_sql_exception, 8 lo_result TYPE REF TO cl_sql_result_set, 9 lv_uflag TYPE i VALUE 1, 10 lv_dbname TYPE dbcon_name, 11 lv_dbuser TYPE dbcon_uid, 12 lv_dbtab TYPE tabname. 13 DATA:e TYPE REF TO cx_root, 14 err_text TYPE string. 15 DATA:lv_code TYPE reposrc-data. 16 * SELECT SINGLE * INTO @DATA(ls_prog) FROM reposrc WHERE progname = @report. 17 * lv_code = ls_prog-data. 18 lv_dbname = 'DEFAULT'. 19 SELECT SINGLE schemaname INTO lv_dbuser FROM db6navsyst WHERE sysid = sy-sysid. 20 lv_dbtab = 'REPOSRC'. 21 CREATE OBJECT lo_sql EXPORTING con_ref = cl_sql_connection=>get_connection( lv_dbname ). 22 lv_dbtab = lv_dbuser && `.` && lv_dbtab. 23 24 lv_str = `SELECT * FROM ` && lv_dbtab && ` WHERE PROGNAME = '` && report && `'`. 25 lo_result = lo_sql->execute_query( lv_str ). 26 GET REFERENCE OF lt_data INTO ls_data. 27 lo_result->set_param_table( ls_data ). 28 lo_result->next_package( ). 29 lo_result->close( ). 30 IF lines( lt_data ) > 0. 31 READ TABLE lt_data INTO DATA(ls_dataline) INDEX 1. 32 lv_code = ls_dataline-data. 33 ENDIF. 34 lv_str = `UPDATE ` && lv_dbtab && ` SET DATA = '` && lv_code && `' WHERE PROGNAME = '` && report && `'`. 35 lv_uflag = lo_sql->execute_update( lv_str ). 36 IF lv_uflag = 1. 37 str = str &&'程序:' && report && '加密成功!'. 38 ELSE. 39 str = str && '程序:' && report && '加密失败!'. 40 ENDIF. 41 * CALL FUNCTION 'LIST_FREE_MEMORY'. 42 CATCH cx_root INTO e. 43 err_text = e->get_text( ). 44 WRITE:icon_red_light,err_text. 45 ENDTRY.