前言

    如果你和我一样, 还不知道SAP FPM 是什么东西, 那就和我一起来学习一下吧. 这篇文章是转载以前项目中的一位同事的, 多谢他给了我们这个学习的机会. 后面的文章在转载的基础上补充了一些内容. 方便初学者理解内容. 为了区别: 所有调整原文的位置我都会标记一下 .




调整部分:

1.FPM支持的几种UI配置界面接口:

Object Instance Floorplan (OIF)

Overview Page Floorplan (OVP)

Guided Activity Floorplan (GAF)

Quality Activity Floorplan (QAF)

2.FPM可配置的区域:

Identification Region (IDR)

Message Region (MR)

Context Navigation Region (CNR)

Roadmap Element

3.UIBBs:UI building blocks (IF_FPM_UI_BUILDING_BLOCK)

文中没有说明的部分: 

  1. 控件之间的数据怎么传递(这部分我也没太弄清楚, 如果你知道的话,请不吝指点一下): 大概有两种交互方式 :一种是通过自定义的函数组全局变量或者类全局变量通讯. 另一种应该是WEB DYNPRO 程序的自身通讯机制-有待了解

  2. 列表对象定义部分参数的结构必须是内表结构. 否则系统会报错

  3. 通过框架生成的对象,可以从事务代码:SICF 中查询并获取到调用链接地址.

  4. 生成的对象可以通过 配置工具->编辑平面布置管理器的配置工具修改

  5. FPM工作原理类似于我们调用ALV函数时填写的回调参数(告诉ALV函数特定部分执行指定程序的FORM). FRM框架中配置的回调类就是开发编写业务逻辑的部分. 开发只需要了解回调类怎么和界面对象交互数据以及各回调类之间怎么通讯就可以了.

  6. 我使用的系统无法用谷歌浏览器, 只能使用IE浏览器配置与测试. 如果你知道原因也请赐教一下 系统版本 S4 HANA 1709

  7. 一个了解回调类的方法的途径是在回调类中添加外部断点, 通过执行页面功能时,断点的中断顺序及中断时的变量来理解FPM界面与回调类的工作逻辑

引用的正文部分

FPM作为SAP完善的WEB框架,对传统的WDA进行了封装,使得开发过程简单稳定且标准化。

常见的框架有OVP, OIF, GAF几种,对概念感兴趣的朋友可以研读专业的介绍文档,我们这里只介绍较为常用的OVP的简单创建流程。


本文将要画出一个基于FPM的页面,并成功展示出想展示的数据,如下图:

接下来我们看下详细的创建过程:

1.在SAP中,启动事务码: FPM_WB 进到配置界面,如下图

2.点击这里进行创建

3.填上应用的名字和描述并选上我们文初说到的,OVP-概览页面

4.点击下一步,分配包,传输请求之后,我们就可以进一步编辑配置了

5.这里可以配置第一个页面的页面标识,标题以及各种常规设置

常规设置中,可以对很多内容进行配置

6.接下来就到了UIBB的介绍了

6.1.UIBB如何理解呢,可以理解为一个控件,或一个'块' block的概念,如下图中,搜索框是一个UIBB,而查询到的结果表则是另一个UIBB

6.2.SAP内置了大量的标准接口来实现代码的标准化,我们在创建UIBB的时候,只需要将对应的接口实现,作为FeederClass,再将FeederClass绑定即可

常见的标准控件如下:

7.添加搜索UIBB

7.1.我们依据具体的业务场景选择合适的UIBB,先选择搜索组件

7.2.配置config ID,填标题等

7.3.选中添加的UIBB,点击配置UIBB

7.4.按照提示一步一步的保存即可进入下一配置界面

7.5.当系统提示需要绑定FeederClass的时候,我们就知道需要创建一个对应的FeederClass了

每一个UIBB都需要绑定一个对应的FeederClass,而这个FeederClass需要我们在系统中建出来

7.6.创建FeederClass

7.6.1.SAP中通过事务码 SE24 进入类的创建

7.6.2.写入标准接口

回车后会自动带出

7.6.3.接下来我们只需要实现所需要的方法就可以了;FPM的事件就不在本文中介绍了

7.6.4.IF_FPM_GUIBB_SEARCH~GET_DEFINITION 定义的方法

参考创建好的结构定义

7.6.5.IF_FPM_GUIBB~INITIALIZE 负责初始化的逻辑

IF_FPM_GUIBB_SEARCH~GET_DATA 负责写入一些默认值的逻辑

7.6.6.接下来回到绑定FeederClass的界面,将刚刚创建的类绑定

7.6.7.再之后,我们就可以添加选择条件了,可以看到这些可供选择的搜索条件事实上就是刚刚我们创建的结构中的字段,结构通过GET_DEFINITION的绑定,就可以再配置页面添加了

7.6.8.完成以上的步骤,保存之后,一个难看的页面就产生了,美观上大家在具体工作时自由发挥哈

8.添加关联的列表UIBB

8.1.搜索UIBB添加完后,我们开始添加列表UIBB,这样点击查询后,就可以查出来数据展示了。多说一句,FPM的UIBB都是可以复用的,如果有一些通用组件,我们直接在其他想使用的地方添加configID即可

8.2.依照上面同样的方式,创建LIST UIBB需绑定的的FeederClass

8.3.GET_DEFINITION方法,定义部分,我们在这里定义出列表要展示的字段

8.4.回到配置,在LIST UIBB中绑定刚刚创建的FeederClass,

8.5.在这里可以选择想展示的列字段

8.6.这里也可以修改一些字段描述,当然这个步骤同样可以用代码动态实现

8.7.这里额外提一句,上面的LIST是在SEARCH组件中添加的,正常情况来讲我们同样可以在下图的位置添加想使用的任何UIBB

9.这个时候我们的页面就变成了这个样子,接下来我们写点代码简单加一些数据

9.1.在GET_DATA中填充一点数据

10.最后来看一下效果

注: 以上仅仅作为一个最基础的demo,便于对FPM一无所知的朋友做一些简单的了解和入门,在熟悉并了解FPM之后,大家就可以根据自己的习惯、方式、项目的要求来做分层,封装了;因网上现在FPM的中文资料太少了,所以发布了此文,后续也会陆续发一些技巧及细节的文章。

一起学FPM之 初识SAP_FPM相关推荐

  1. 跟我学jQuery(二) 初识jQuery

    跟我学jQuery教程目录: 跟我学jQuery(一)    前言 跟我学jQuery(二)    初识jQuery 跟我学jQuery(三)    无所不能的选择器1 跟我学jQuery(四)    ...

  2. 从零开始学前端:初识函数,合法属性与自定义属性 --- 今天你学习了吗?(JS:Day2)

    从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:初识JavaScript - 今天你学习了吗?(JS:Day1) 文章目录 从零开始学前端:程序猿小白也可以 ...

  3. 从零开始学前端:初识JavaScript --- 今天你学习了吗?(JS:Day01)

    从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:jQuery官网 - 今天你学习了吗?(CSS:Day26) 文章目录 从零开始学前端:程序猿小白也可以完全 ...

  4. 【零基础学Java】—初识Java(一)

    [零基础学Java]- 初识Java(一)

  5. 跟着王进老师学Python:初识Python-王进-专题视频课程

    跟着王进老师学Python:初识Python-165人已学习 课程介绍         2017年是人工智能(AI)的元年,AI已经成为当前火热的前沿技术:而Python也在去年正式被纳入高考,要加强 ...

  6. 1、零基础学工控——初识plc

    ☞☞☞点击查看更多优秀工控PLC博客☜☜☜ 大家好我是你们的朋友JamesBin,从今天开始我们将一起学习西门子的PLC这个自动化工具,这节课就让我们来一起看看什么是PLC吧! 初识plc 什么是PL ...

  7. 【看表情包学Linux】初识文件描述符 | 虚拟文件系统 (VFS) 初探 | 系统传递标记位 | O_TRUNC | O_APPEND

    爆笑教程<看表情包学Linux>

  8. 推荐学java——Maven初识

    关注每日干货 及时送达  Maven介绍 Maven 是 Apache 下开源的 Java 项目管理工具,对软件项目提供构建与依赖管理.其为 Java 项目提供了统一的管理方式,已成为业界标准. Ma ...

  9. 跟着太白老师学python 09day 初识函数

    函数的最主要的目的:封装一个功能 函数的优点: 减少代码的复用率, 增加代码的阅读性 def my_len(arvg): # arvg 形参 my_len函数名,应该具有代表性,让你一看就明白# 函数 ...

  10. 从零开始学区块链之初识dapp开发

    背景 之前对区块链的认知一直停留在挖矿.炒币的阶段.在国内封禁了挖矿和炒币之后,还以为区块链的风口就过去了.万万没想到,大家的NTF还挺火的.于是有了更深入了解的动力. 什么是DApp app大家熟悉 ...

最新文章

  1. 正道的光!这有个用TensorFlow做的小黄图过滤器
  2. 10-7 B2-1查找订单数最多的员工信息 (20 分)
  3. 【机器视觉】 endwhile算子
  4. CodeForces - 571D Campus(数据结构综合)
  5. vs2012中VC连接mysql
  6. 软件测试用例_软件测试用例设计实战场景法
  7. 2字节取值范围_C语言整数的取值范围以及数值溢出
  8. java linux怎么抓tcp包_Linux使用tcpdump抓取网络数据包示例
  9. linux内核C -- 第04课:Linux内核第一宏——container_of
  10. 用友java打不开_用友8.52的版本打不开UFO报表 显示UFOS MFC Application 已停止正常工作 重装软件也没用...
  11. 知其然知其所以然 itoa实现 整型转字符串
  12. 18位身份证标准及验证
  13. python变量贡献率排序_103,每个特征的贡献率是多少?
  14. 基于51单片机的超声波测距
  15. android 获取粗略位置_android – 如何使用Wifi或GSM或GPS获取粗略的位置,以哪一个可用?...
  16. 2020-07-24
  17. 第三方支付和第四方支付有什么区别?
  18. 2022广东省安全员A证第三批(主要负责人)考试题库模拟考试平台操作
  19. js实现图片上一张下一张点击
  20. 如何自己开发App?如何快速生成App?

热门文章

  1. C++实现IE缓存迭代器
  2. 解决No instances available for XXX
  3. java中return与finally的执行顺序分析(根据字节码分析)
  4. 工作中的十大棘手难题
  5. 微信小程序 java民宿客房预订系统springboot
  6. python如何设计一个排队系统
  7. 说说PHP中的命名空间相关概念
  8. pageadmin 网站建设教程:如何添加自定义页面
  9. wp网站,wordpress网站搭建,wp网站建设教程
  10. 图层蒙版和图层剪贴路径_PS图层蒙版与剪贴蒙版综合应用——水杯里的树