最近由于升级,sap的F4 Help对话框变成了MODAL对话框,以前编写的程序出现一些问题(DYNP_VALUES_UPDATE和F4IF_INT_TABLE_VALUE_REQUEST) 。解决办法如下:
1、用sap *用户登录系统,点击菜单HELP->Settings...->F4 Help的Display选择Control方式。该参数将存在USR05表中,将影响F4GMETHOD参数。
2、用新的登录用户登录 ,点击菜单HELP->Settings...->F4 Help的Display选择Control或者System Defaults方式。该参数将存在USR05表中,将影响F4METHOD参数。
3、修改F4IF_INT_TABLE_VALUE_REQUEST代码如下:* immer modal laufen*{ INSERT PRDK900023 1 IF dynp_update = space OR return_tab IS REQUESTED or callcontrol-pvalues ne 'D'.*} INSERT CLEAR: ocx_help_info-dynpprog, ocx_help_info-dynpro.*{ INSERT PRDK900023 2endif.*} INSERT就可将Modal窗口变为非Modaless窗口。
4、对F4METHOD和F4GMETHOD访问的SAP标准代码FORM CHECK_OCX_SWITCHED_ON CHANGING ACTIVEX. DATA: ASK_ACTIVEX(10). statics: is_webgui, is_mozilla.* L鋟ft der GUI im ITS?
CALL FUNCTION 'ITS_PING' EXCEPTIONS ITS_NOT_AVAILABLE = 1 OTHERS = 2. IF SY-SUBRC = 0.* ITS l鋟ft. data: oldservice(128) type c. types: begin of struc, oldservice(128) type c, end of struc. data: oldservice_tab type table of struc with header line.* Do we have a webgui service if is_webgui is initial. call function 'ALEWEB_GET_CONTEXT' EXPORTING fieldname = '~WEBGUI' fieldindex = 1 TABLES DATA_TAB = oldservice_tab EXCEPTIONS INVALID_INDEX = 1 SYSTEM_FAILURE = 2 ITS_NOT_AVAILABLE = 3 COMMUNICATION_FAILURE = 4 OTHERS = 5. IF SY-SUBRC <> 0. endif. if oldservice_tab eq '1'. is_webgui = 'Y'. else. is_webgui = 'N'. endif. endif.* the search help control support for Mozilla starts with Rel. 700 if is_mozilla is initial. CALL FUNCTION 'ALEWEB_GET_CONTEXT' EXPORTING FIELDNAME = '~USERAGENTTYPE' FIELDINDEX = 1 TABLES DATA_TAB = oldservice_tab EXCEPTIONS INVALID_INDEX = 1 SYSTEM_FAILURE = 2 ITS_NOT_AVAILABLE = 3 COMMUNICATION_FAILURE = 4 OTHERS = 5. IF SY-SUBRC <> 0. ENDIF. if oldservice_tab eq 'msiexplorer'. is_mozilla = 'N'. else. is_mozilla = 'Y'. endif. endif.* Is it an EWT data: is_ewt. call function 'NAVIGATION_CHECK_TCODE_TYPE' EXPORTING transaction_code = sy-tcode WITH_MESSAGE = ' ' EXCEPTIONS EASY_WEB_TRANSACTION = 1 NOT_HTML_ENABLED = 2 OTHERS = 3. if sy-subrc eq 1. is_ewt = 'X'. endif. IF SY-SUBRC <> 0. endif. if is_mozilla eq 'Y' and is_webgui eq 'Y'. clear activex. exit. endif. if is_webgui ne 'Y' or not is_ewt is initial. activex = 'X'. exit. endif. ENDIF. GET PARAMETER ID 'F4GMETHOD' FIELD ASK_ACTIVEX. IF SY-SUBRC NE 0. PERFORM GETSYSTEMACTIVEXSETTINGS CHANGING ASK_ACTIVEX. SET PARAMETER ID 'F4GMETHOD' FIELD ASK_ACTIVEX. ENDIF. IF ASK_ACTIVEX EQ 'ActiveX'. " Its the system default ACTIVEX = 'X'. GET PARAMETER ID 'F4METHOD' FIELD ASK_ACTIVEX. IF SY-SUBRC EQ 0. IF ASK_ACTIVEX EQ 'NoActiveX'. CLEAR ACTIVEX. ENDIF. ENDIF. ELSE. " Old style is the default GET PARAMETER ID 'F4METHOD' FIELD ASK_ACTIVEX. IF SY-SUBRC EQ 0. IF ASK_ACTIVEX EQ 'ActiveX'. ACTIVEX = 'x'. ENDIF. ENDIF. ENDIF.endform. "CHECK_OCX_SWITCHED_ONxiang
相关连接:http://blog.csdn.net/CompassButton/archive/2007/01/24/1492229.aspx
