想用SAP UI5 做一写界面,又不想给用户用标准的Fiori APP怎么办?我觉得可以用可配置物料标准功能的思路,在SAP GUI中显示UI5界面,而不是跳转到浏览器。
代码实现后的效果如下:
1、调用UI5应用,适用于自开发的,参考前几篇文章做的应用,没有配置Fiori LanuchPad。
2、调用 Firoi lanuchPad,然后显示的应用,标准的应用,这种走远了。用户容易既要又要的。
实现原理很简单,逻辑就是采用HTML控件调用URL地址,且不要跳转到浏览器,直接显示在SAP GUI 中。代码如下:
DATA: lo_html_control TYPE REF TO cl_gui_html_viewer,
fcode LIKE sy-ucomm,
lo_container TYPE REF TO cl_gui_custom_container,
lo_http_client TYPE REF TO if_http_client,
lv_url(2048).
START-OF-SELECTION.
SET SCREEN 100.
" 创建屏幕容器
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
IF lo_container IS INITIAL.
lo_container = NEW cl_gui_custom_container(
container_name = 'CO1'
).
ENDIF.
" 创建 HTML 控件
IF lo_html_control IS INITIAL.
lo_html_control = NEW cl_gui_html_viewer(
parent = lo_container
).
IF sy-subrc NE 0.
RAISE cntl_error.
ENDIF.
ENDIF.
" 设置 SAPUI5 应用的 URL(需替换为实际地址)
lv_url = 'https://IP:Port/sap/bc/ui5_ui5/sap/zbook'.
IF sy-subrc = 0.
IF sy-subrc = 0.
* lo_html_control->enable_sapsso( enabled = 'X' ).
"加载页面
lo_html_control->show_url( url = lv_url )."不跳转到浏览器
* lo_html_control->detach_url_in_browser( url = lv_url ).
cl_gui_cfw=>flush( ).
ENDIF.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE fcode.
WHEN 'BACK'.
IF NOT lo_html_control IS INITIAL.
CALL METHOD lo_html_control->free.
FREE lo_html_control.
ENDIF.
IF NOT lo_container IS INITIAL.
CALL METHOD lo_container->free
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
ENDIF.
FREE lo_container.
ENDIF.
LEAVE PROGRAM.
WHEN OTHERS.
CALL METHOD cl_gui_cfw=>dispatch.
ENDCASE.
CLEAR fcode.
ENDMODULE.
SSO,采用SAP GUI 当前用户账号密码直接登录的代码如下:
lo_html_control->enable_sapsso( enabled = 'X' ).
增加SSO认证代码后,如果出现以下问题:
按照note 612670解决办法,通过事务代码SE38执行执行 SAPHTML_SSO_DEMO
测试标准demo程序能不能正常运行,可以验证是系统设置问题还是代码问题。
调用deepseek网页,效果一样的,在GUI里摸鱼。