一般SAP服务器会设置当用户在SAP GUI中30分钟不操作时就会自动断开与SAP服务器的连接,有的只有5分钟,当运行耗时过长的程序时,如运行程序时间超过设置的30分钟时就会超时断开,最终不能运行程序,又或者有的只设置了5分钟的,可能你打开看一下其它的程序,可能也超时断开了(这种情况主要在外网Router连接时最常见),这样操作起来很麻烦 ,只能不重新登陆,
当然这可以找BASIS设计超时间来解决,以下是ABAP的解决办法 ,就是做一个程序,当程序运行时,就会定时与SAP服务器连接,这样就不会断开了

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
*&---------------------------------------------------------------------* *& Report Z_ROUTER *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT z_router NO STANDARD PAGE HEADING. CLASS cl_run_timer DEFINITION DEFERRED. DATA: go_time TYPE REF TO cl_gui_timer, " Object ge_time TYPE REF TO cl_run_timer. " Event AT USER-COMMAND. IF sy-ucomm = 'RECNT'. PERFORM frm_gui_statu. ENDIF. *----------------------------------------------------------------------* * CLASS CL_RUN_TIMER DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS cl_run_timer DEFINITION. PUBLIC SECTION. METHODS: handle_timer FOR EVENT finished OF cl_gui_timer. ENDCLASS. "CL_RUN_TIMER DEFINITION *----------------------------------------------------------------------* * CLASS CL_RUN_TIMER IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS cl_run_timer IMPLEMENTATION. METHOD handle_timer. CALL METHOD cl_gui_cfw=>set_new_ok_code EXPORTING new_code = 'RECNT'. CALL METHOD go_time->run "必须重新激活定时器 EXCEPTIONS OTHERS = 9. ENDMETHOD. "handle_timer ENDCLASS. "CL_RUN_TIMER IMPLEMENTATION SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-t01. PARAMETER: p_timer TYPE i DEFAULT 100 NO-DISPLAY. SELECTION-SCREEN END OF BLOCK blk1. START-OF-SELECTION. PERFORM frm_gui_statu. PERFORM frm_ini_timer. *&---------------------------------------------------------------------* *& Form FRM_GUI_STATU *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM frm_gui_statu . DATA: l_timer TYPE char8, l_title TYPE text50 VALUE ':每'. CLEAR: sy-tabix,sy-lsind. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = 50 text = '与服务器通信中......'. l_timer = p_timer. CONDENSE l_timer NO-GAPS. CONCATENATE l_title l_timer '秒与服务器通信一次【请勿关闭此窗口】' INTO l_title. CONCATENATE sy-title l_title INTO sy-title. WRITE: /1 ''. ENDFORM. " FRM_GUI_STATU *&---------------------------------------------------------------------* *& Form FRM_INI_TIMER *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM frm_ini_timer . CHECK go_time IS INITIAL. CREATE OBJECT go_time EXCEPTIONS OTHERS = 9. CREATE OBJECT ge_time. SET HANDLER ge_time->handle_timer FOR go_time. go_time->interval = p_timer. CALL METHOD go_time->run "激活定时器 EXCEPTIONS OTHERS = 9. ENDFORM. " FRM_INI_TIMER |