经常有用户反馈说他们的在使用SAP时,SAPGUI用不了几分钟就与服务器开连接了。来问我有什么方法没有。我只到用basis的方法是可以设定的,但我重启服务器是个麻烦事。而且默人给用连接这么长时间消耗不少的服务器资源。我查了下资料找写了一个小程序程序可以直接使用,可以让用户自定设定多久不断线。用户使用后好评如潮。我把代码分享给大家。喜欢的点下赞。有不懂的可以留言提问,我有空会回答的。谢谢了。
程序效果如下图,用户输入保持连接3800秒,SAP GUI就会与服务器保持3800秒连接。程序启动后,会有个一窗口不断的刷新。而且还会自动打开一个新的窗口来给用进行正常的业务操作。
代码如下,可以直接Copy使用:
代码语言:javascript复制REPORT ZSTAY_LONGER.
"REPORT ztestt1.
DATA: text TYPE string,
time TYPE i.
time = 0.
PARAMETERS s_time type p DEFAULT 3800.
INITIALIZATION.
START-OF-SELECTION.
IF s_time > 7600 .
MESSAGE '时间不要设置超过3600秒'type 'E' DISPLAY LIKE 'S'.
ENDIF.
CHECK s_time <= 7600.
IF sy-langu = '1'.
CONCATENATE '此程序是为了使SAP保持在线,请使用其他会话进行工作' '!' INTO text.
ELSE.
CONCATENATE 'Please use another session for working' '!' INTO text.
ENDIF.
DATA:gt_info TYPE TABLE OF uinfo2,
gv_num TYPE i.
"获取当前用户的会话数
CALL FUNCTION 'TH_LONG_USR_INFO'
EXPORTING
user = sy-uname
TABLES
user_info = gt_info.
DESCRIBE TABLE gt_info LINES gv_num.
"对当前打开的会话数进行判断,如果只打开了一个,那么再另外打开一个新的会话供用户使用
IF gv_num = 1.
CALL FUNCTION 'TH_CREATE_FOREIGN_MODE'
EXPORTING
client = sy-mandt
user = sy-uname
* TCODE =
* RETURN_ERROR = 1
* CREATE_EXCLUSIVE = 0
EXCEPTIONS
user_not_found = 1
cant_create_mode = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
data k type i.
DO.
k = k 1.
IF k >= s_time .
MESSAGE '对话框停留时间结束'type 'S'.
exit.
ENDIF.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = time
text = text
EXCEPTIONS
OTHERS = 1.
time = time 1.
IF time = 101.
time = 0.
ENDIF.
WAIT UP TO 1 SECONDS.
ENDDO.