ITSmobile( Internet Transaction Server for Mobile)是实现移动设备应用的SAP技术,基于广泛应用Dynpro编程模式,是SAP提供并支持的一种面向企业移动化办公的解决方案,可以使移动设备(如条码枪)通过WEB的方式访问SAP系统应用程序,从而达到操作SAP系统的目的。
原理是通过ITS把SAP系统的DIALOG屏幕生成HTML界面,然后通过网络(无线网络)以访问IE的形式操作SAP系统的应用程序。鉴于移动设备可视化操作界面尺寸的限制,所以应用程序功能界面在实际开发中必须考虑界面限制的因素,使移动设备具备更好的操作性。
开发步骤
1.创建Dialog程序(此处需要设计屏幕)
2.创建INTERNET服务
通过事务代码SE80创建INTERNET服务对象,将开发的Dialog程序通过SE93创建好事务代码后填入即可。
3.创建HTML模板
4.发布服务
若HTML模板状态为’已保存/已发布’则代表发布成功。
5.配置ICF服务
事务代码:SICF
点击执行或指定好路径再执行。
路径:/default_host/sap/bc/gui/sap/its/
• 可以使用第六步的步骤,弹出的网址中显示了服务器的路径地址
此时,在its路径下是没有zitsdemo服务的,需要在此路径下创建。
配置点:
1)在服务数据页签下,点击GUI配置。
重要参数:
参数名称 | 描述 |
---|---|
~THEME | 主题 |
~TRANSACTION | 事务代码 |
~ITSMOBILE | 将服务定义为移动服务,默认值1。 |
~GENERATEDYNPRO | 0:不自动生成屏幕(如果没创建HTML模板会报错)1:自动生成屏幕 |
~SOURCES | 可以设定多个INTERNET服务对应同一个HTML模板 |
2)可设置免登录。
3)默认配置CL_HTTP_EXT_ITS处理器。
4)登录界面配置
配置完毕后进行激活服务。
6.测试服务
激活服务后进行服务测试。
也可以在SE80中打开网页进行测试。
注:每次修改Dialog程序后都要重新覆盖HTML模板才生效。
PDA报表展示(Step-Loop)
PROCESS BEFORE OUTPUT.
MODULE STATUS_9001.
LOOP AT gt_makt INTO makt CURSOR rlmob-tocnt.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_9001.
LOOP.
ENDLOOP.
上下翻页示例:
FORM frm_get_makt_list .
DATA:lv_size TYPE char10 VALUE 10.
SELECT * INTO TABLE gt_makt FROM makt WHERE spras = sy-langu.
IF gt_makt IS NOT INITIAL.
DESCRIBE TABLE gt_makt LINES rlmob-hucnt.
rlmob-hucnt = ceil( rlmob-hucnt / lv_size ).
rlmob-huload = /isdfps/cl_const_abc_123=>gc_1.
ENDIF.
CALL SCREEN 9001.
ENDFORM.
FORM frm_user_command_9001 .
DATA:lv_size TYPE char2 VALUE 10.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'PAGEUP'.
PERFORM frm_set_page USING gt_makt abap_true lv_size.
WHEN 'PAGEDW'.
PERFORM frm_set_page USING gt_makt space lv_size.
WHEN OTHERS.
ENDCASE.
ENDFORM.
FORM frm_set_page USING p_gt_makt TYPE STANDARD TABLE
p_abap_true TYPE char1
p_lv_size TYPE char2.
DATA:lv_tabix TYPE sy-tabix.
IF p_gt_makt IS NOT INITIAL.
DESCRIBE TABLE p_gt_makt LINES lv_tabix.
IF p_lv_size IS NOT INITIAL AND lv_tabix > p_lv_size.
IF lv_tabix MOD p_lv_size <> 0.
lv_tabix = ( lv_tabix DIV p_lv_size
+ /isdfps/cl_const_abc_123=>gc_1 ) * p_lv_size.
ENDIF.
ENDIF.
ENDIF.
IF p_abap_true IS NOT INITIAL. "上一页
IF rlmob-tocnt > p_lv_size.
rlmob-tocnt = rlmob-tocnt - p_lv_size.
ELSE.
rlmob-tocnt = /isdfps/cl_const_abc_123=>gc_1.
ENDIF.
ELSE. "下一页
IF rlmob-tocnt + p_lv_size - /isdfps/cl_const_abc_123=>gc_1 < lv_tabix.
rlmob-tocnt = rlmob-tocnt + p_lv_size.
ENDIF.
ENDIF.
rlmob-huload = rlmob-tocnt.
IF p_lv_size IS NOT INITIAL.
rlmob-huload = ceil( rlmob-huload / p_lv_size ).
ENDIF.
ENDFORM.