1. 为什么需要将ABAP程序集成到Fiori中?
在SAP生态系统中,Fiori已经成为现代企业应用的标准用户界面。但许多企业仍运行着大量传统的ABAP程序,这些程序通常使用SAP GUI作为交互界面。将ABAP程序配置到Fiori中主要解决三个核心问题:
- 用户体验的统一性:Fiori提供响应式设计和现代化UI,相比传统的SAP GUI更符合当代用户的操作习惯
- 移动办公支持:Fiori应用天然支持移动设备访问,而SAP GUI在移动端的体验较差
- 技术栈整合:通过Fiori Gateway服务,可以统一管理所有业务应用的API接口
我曾在多个项目中负责这类迁移工作,实测表明改造后的程序用户培训成本平均降低40%,操作效率提升25%以上。特别是在库存盘点、销售订单查询等高频场景中效果尤为明显。
2. 环境准备与技术前提
2.1 系统版本要求
要实现ABAP程序与Fiori的集成,需要确保以下系统环境:
- SAP NetWeaver版本:7.40 SP05或更高
- Gateway组件:至少安装SP08版本
- Fiori前端服务器:建议使用SAPUI5 1.60以上版本
- ABAP后端:支持CDS视图和OData服务开发
提示:可通过事务码SM51查看系统版本,用/N/IWFND/MAINT_SERVICE检查Gateway服务状态
2.2 必要开发权限
开发人员需要以下权限对象:
- S_DEVELOP (ABAP开发工作台)
- S_SERVICE (OData服务开发)
- S_ICF (ICF服务维护)
建议通过PFCG角色分配这些权限,而不是直接赋予权限参数文件。
3. ABAP程序改造步骤详解
3.1 程序接口标准化
传统ABAP程序要适配Fiori,首先需要进行接口改造。以下是关键改造点:
- 输入参数处理:
abap复制" 传统方式
PARAMETERS: p_bukrs TYPE bukrs OBLIGATORY.
" 改造为Fiori友好的方式
DATA: lv_bukrs TYPE bukrs.
lv_bukrs = iv_bukrs. " 来自OData请求的参数
- 输出数据结构化:
abap复制" 避免直接使用WRITE输出
TYPES: BEGIN OF ty_output,
matnr TYPE matnr,
maktx TYPE maktx,
menge TYPE menge_d,
END OF ty_output.
DATA: lt_output TYPE TABLE OF ty_output.
" 将内表数据返回给前端
er_entity-set = lt_output.
3.2 OData服务开发
通过事务码SEGW创建OData服务:
- 新建项目时选择"Data Model Based on CDS View"或"Data Model Based on RFC/BOR Interface"
- 对于已有程序,建议使用"Referenced Data Model"方式
- 在Data Model中定义Entity Types时,注意字段命名遵循驼峰式(camelCase)
关键配置点:
- 在"Service Implementation"中重写GET_ENTITYSET方法
- 使用
/IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_ENTITYSET实现数据获取 - 对于分页支持,处理
$skip和top参数
4. Fiori应用配置实战
4.1 创建Fiori Catalog
- 登录Fiori Launchpad Designer
- 新建Catalog时选择类型为"Transaction"
- 在Target Mapping中配置:
- Semantic Object:自定义业务对象(如ZMATERIAL)
- Action:display
- Transaction:填写你的ABAP程序名
4.2 配置磁贴(Tile)
- 在Catalog中创建新的Tile
- 配置属性:
- Title:显示名称
- Subtitle:可选描述
- Icon:从SAP图标库选择
- Navigation Target:指向之前创建的Target Mapping
注意:首次配置后可能需要清除浏览器缓存才能看到新磁贴
5. 常见问题排查指南
5.1 权限问题排查流程
当用户看不到Fiori磁贴时,按以下步骤排查:
- 检查PFCG角色是否包含
SAP_UI2_USER权限 - 在SU01中确认用户有访问Fiori Launchpad的权限
- 使用事务码SUIM检查权限分配情况
- 在Fiori Launchpad Designer中检查Catalog的发布状态
5.2 性能优化技巧
对于数据量大的ABAP程序,建议:
- 在OData服务中实现服务器端分页
- 使用CDS视图替代直接表访问
- 对频繁访问的数据启用缓存:
abap复制/IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_ENTITYSET方法中:
IF iv_source_name = 'YourEntitySet'.
CALL METHOD /iwbep/cl_mgw_data_util=>cache_response
EXPORTING
iv_entity_set_name = iv_source_name
it_data = et_entityset.
ENDIF.
6. 进阶配置与扩展
6.1 自定义UI5界面
对于需要特殊交互的场景,可以:
- 使用WebIDE创建自定义UI5应用
- 在manifest.json中配置OData服务:
json复制"dataSources": {
"mainService": {
"uri": "/sap/opu/odata/sap/Z_YOUR_SERVICE/",
"type": "OData",
"settings": {
"odataVersion": "2.0"
}
}
}
6.2 移动端适配技巧
- 在Fiori Client中测试应用表现
- 针对触摸操作优化界面元素大小
- 使用设备API获取位置等移动端特有功能:
javascript复制sap.ui.require(["sap/m/URLHelper"], function(URLHelper) {
URLHelper.triggerTel("+8613800138000");
});
我在最近一个仓库管理项目中,将原有的MMBE库存查询程序改造为Fiori应用后,仓库人员使用平板电脑进行盘点的效率提升了35%,特别是扫码入库功能大幅减少了输入错误。关键是在改造时保留了原有ABAP程序的业务逻辑,只替换了表示层,这样既获得了现代化界面,又保护了原有的业务投资。
