设想了一个外部供应商,通过FIORI APP,依据已存在的PO采购订单进行创建配送单并发货,操作的功能,
最后SAP再对此供应关配送的信息进行MIGO收货。以上演示的只是供应商用户创建,维护配送单的FIORI APP,其中用到的用户KEY,可使用:a1234567 或者b1234567 ,进行测试
1.最终演示地址:
测试时默认了登陆用户,使用中使用用户KEY来测试,可用的用户KEY有两个:a1234567 或者b1234567 ,进行测试
只为了练习,所以假想了一个需求,就是甲方在自己的SAP系统里创建采购订单(SAP gui),然后货品供应商在网页中打开网页( fiori APP)查找需要配送的货品(可以按计划交易日期来,或者甲方告诉供应商采购订单)创建配送单,供应商可按自己实际库存修改配送量(不能大于采购订单量),然后确认配送,最后供应把货品送到甲方,甲方在SAP 中操作进行采购收货。
此实际代码使用SAP RAP的 ELEMENTS方式实现,使用ODATA V2,保证最大程度的使用后端ABAP开发,不使用JS前台代码。
2.注意事实
- 在开发中要注意所有可以使用单引号标注的内容,都是区分大小写的,比如在CDS中定义按钮的dataAction: ‘cancelApproval’,这里是区分大小写的,这时,在behavior中定义使用此ACTION时action (features: instance) cancelApproval ;没有单引号,但在这里是要区分大小写的,不能写错
- 在ODATA V4时,执行完成按钮后,LIST不会自动刷新(V2会自动刷新),需要前台执行手动刷新(这个现没找到解决办法,所以我只能用了V2)
- ODATA V4时,好多代码逻辑都需要很严谨,好多代码在V2时可以执行出结果 ,但V4时就得细节都照顾到。比如ZI_Delivery_H中的behavior,在V2时,不用处理draft action ( features : instance ) Edit,只要在GET_INSTANCE_FEATURES中设置%FEATURES-%UPDATE= ‘01’(不可更新)时此节点“编辑”按钮就不会出现,但在V4时就不行,必须还要指定EDIT,并控制EDIT的可用性。
- 在CDS中定义了@UI.selectionPresentationVariant用于显示默认变式,不生效,但使用VSCODE引入设置后却可以使用变式。
- 为了打开FIORI不输入用户密码,需在SICF中设置ODATA,及对应的FIORI APP使用默认登陆用户,另外还需要设置CATALOGSERVICE,LREP这两使用默认登陆,这两个是全局的,不太确认会有什么影响。并且SICF设置ODATA时,服务数据–GUI 配置中设置:~CHECK_CSRF_TOKEN= 0
- 本想发布OData V4服务,使其可以在公共网站上使用并且不需任何身份验证,但测试后才发现S/4HANA本地系统中发布的ODATA V4,在SICF中/sap/opu/odata4/下不会生成ODATA服务,实现不了默认登陆用户密码,不像ODATA V2,会在/sap/opu/odata/下生成每一个ODATA的服务节点,可在对应的ODATA服务节点上设置默认登陆的用户密码,但从网络上查询得到ODATA V4没办法为每天一个独立的服务设置默认用户密码,所以服务最终只能换为ODATA V2了。
所以此功能设想了两个FIORI APP:
1.按采购订单创建配送单;
2.配送单的修改,审批,确认配送等功能;


3.实现逻辑
代码太长,完整代码可从这里看,地址为GITHUB库,需要在SAP GUI中安装GITHUBABAP下载使用,不会用的不要可以百度,或者要不要购买。
以下标记了一些关键点:
