2022年9月

你是UI5Fiori的新手?来对地方了。

对我来说,今年是不得不“跟上时代”去提升自己ABAP世界以外的技术技能的困难的一年。幸运的是,有很多可免费获得的信息和课程可以帮你实现这个跳跃。不要等着别人送你去训练——自己花时间提高技能!

 

学习web技术技能

  了解UI5的基础部分HTML, CSS, Javascript和JQuery是个好主意,有助于你理解自定义的UI5应用的基本特性。如果你对它们不熟悉的话,codecademycodeschool有一系列好的课程,可以帮助你理解这些技术的语法和特性。我建议你按以下路径学习:

  • HTML & CSS(七小时)
  • Javascript(十小时)
  • jQuery(三小时)

  (不喜欢英文的话,天朝也有不少类似网站,比如慕课网——译者注)

  一旦你理解了这些语言的机制,我建议你建立一个个人网站来向你的潜在雇主展示你的技能。也许可以是一个你自己的简历网站?

了解如何使用浏览器调试工具

  如果你花过很多时间在SAP的优秀的ABAP调试器上面,你会想要了解下可以使用的美妙的浏览器调试工具。我稍微偏好谷歌Chrome浏览器开发者工具,尽管如此,这不会影响到你探索下面中的任何一个,如果你工作的环境有多个浏览器的话:

  离开浏览器调试工具,我会活不下去的!

(译者注:Firebug现已逐渐集成到火狐浏览器开发者工具中)

理解RESTful APIs的工作原理

  如果你不熟悉RESTful APIs的基础,这个页面有不错的综述和教程。

上手OData

  1. OData是一种RESTFul协议,它的主页里有一些很值得阅读的信息。
  2. 我建议从下载并安装Chrome扩展Postman上手OData。
  3. 一旦你有了Postman,你就可以学基本OData教程了。
  4. 等你做完了这些,可以上SCN找一些有关如何在SAP Netweaver Gateway system上构建这些的相关指导。

学习git, github, gist和jsbin

  • Git是一个很好的开源代码库,所有SAP开发者都需要把它列在学习列表中。
  • CodeSchool有一些优秀的免费的交互课程,你可以从它们开始。
    1. Try Git
    2. Git Real
    3. Git Real 2

  如果你的把UI5学得不错,感觉有时间回馈社区并且在Github或者JSBin分享你的例子。DJ Adams有篇有关github和gists的好文章:帮我们帮你——分享你的代码

学习SAP Fiori和UI5

  下面的SAP课程非常好,将会让你在Fiori相关主题的各方面快速提高:

阅读UI5开发者工具包中的“Get Started”

  在我的整个UI5之旅中,很多时候在使用谷歌搜索前,UI5开发者工具包便解答了我的疑问。如果你是一个新人,可以通过“Get Started”部分从草稿建立一个app。你将发现随着过程的进行,自己会开始参考各种不同的、对于你来说是全新的陌生章节,如果能坚持住,你会理解它们。

理解Axure的线框模型

重要的参考

  一旦你建立了UI5方面的自信,可以把以下页面存书签,以方便参考!

  • Fiori Design Guidelines-在如何设计UI5应用的最佳实践方面,这是我的圣经。 我不是一个经过训练的设计者、也不是那些已经在网页设计领域研究了这些指导方针多年的专家。有关设计UI5应用的好资源。
  • Experience SAP – SAP的用户体验社区网站,一个教育自己如何设计的好地方。
  • Fiori Application Library - 一个参考技术设置的好网站,也可以借此观察什么样的Fiori应用对你的用户来说是可用的。
  • Fiori Demo - 一个快速了解Fiori应用演示例子的好网站。
  • W3schools - 当你精通了HTML, CSS, Javascript, jQuery——有些时候你需要一个参考去看什么是可行的、或者如何实现某些东西。
  • UI5 Developer Toolkit - UI5开发圣经,每访问一次,我都会提高一次!

  愉快地学习吧,如果你有任何好的资源要分享,请不要拘束,添加在下面的评论里面。

 

本文地址:http://www.cnblogs.com/hhelibeb/p/5810449.html

英文原文:A beginner’s guide to skilling up for SAP Fiori and UI5

转载请注明

 

2018.03.22更新,也可以参考:All Things SAP Fiori

如名所示,该页面整合了有关Fiori的很多重要内容,包含AccessibilitySAP Fiori CloudConfigurationExtensibilityDeveloping Custom Apps等子主题,可以作为参考。

此外SAP出版的图书 SAP Fiori Implementation and Development 也是很好的资料

 

  

  这个(BOL里面)最重要的类值得一看。

  BOL中的每条记录都会在CL_CRM_BOL_ENTIT中表示。至今,我们已经写过一些事件处理器,并且我们已经直接或间接的通过这个类工作。在业务场景中,我们也许会处理合同、订单、线索、确认等等....

  在Web UI层面,所有的这些业务对象信息都可以使用这个类来表示。这是BOL(业务对象层)的灵活性的体现。也许程序中需要用到100个不同的对象,但是我们只使用一个单一的类来表示信息。

  让我们看看调试过程中的数据。

  在搜索页面的search事件处理器中设置一个外部断点。运行应用,并且进行搜索。

 

  一旦断点触发,双击lr_result,点击F6以运行第14行。这是拥有所有记录的集合:

 

  双击右侧的lr_result。这是包含ENTITY LIST的集合类,ENTITY LIST存储了记录,双击它。

 

  可以看到对象引用列表,每一个引用都是CL_CRM_BOL_ENTITY类型。

  这个集合拥有10条记录。双击任意一个记录,我们可以看到如图示的CONTAINER PROXY属性,双击它。

  你可以看到DATA_REF属性,双击它。你将得到如下的屏幕,双击高亮区域。

  在下一个屏幕,我们可以观察到名为BTQRSrvcoon的对象。这有一个属性ATTRIBUTE_REF,双击它。

  现在我们可以看到数据了。

  我们需要经过几个屏幕来观察到数据。过程如上。

  CL_CRM_BOL_ENTITY->CONTAINER_PROXY->DATA_REF->ATTRIBUTE_REF.

  这是从任一CL_CRM_BOL_ENTITY对象中观察到数据的方法。

 

原文地址:LOOKING AT DATA OF CL CRM BOL ENTITY IN DEBUGGING

本文地址:http://www.cnblogs.com/hhelibeb/p/5983816.html

更多参考:如何在debugger里访问BOL core instance和其他重要entity的信息

网络上可以找到一些使用BOL查询、维护数据的DEMO,但几乎都是单纯的代码,缺乏说明,难以理解。本文除了代码外,还给出了详细的注释,有助于理解BOL编程中的一些基本概念。

这是一篇翻译的文章,你可能会发现部分内容不是很明确,这时可以直接阅读原文。

原文所在的sapcrmwebui.com是一个不错的博客,里面有较为完整的Web UI入门教程,然而网站不是很稳定,偶尔会连接不上,建议使用Internet Archive访问。

如果你访问不了Internet Archive,说明你需要一点过墙的手段。

 

 本文链接:http://www.cnblogs.com/hhelibeb/p/5985110.html 

 原文链接:BASICS OF BOL PROGRAMMING

如果觉得本文有用,请记得在页面底部点个赞~

 

2016.12.31 更多示例代码请参考:BOL Programming(WebUI), AbapLog

搜索操作

***********************************************BOL 编程*SAP CRM WEBCLIENT*包含一些基本的操作,比如bol中的查找、创建、更新*通过编程来介绍业务对象层的主要的类和方法**********************************************

*需要的数据
DATA: lr_core TYPE REF TOcl_crm_bol_core.*为了使用BOL中的服务,我们需要通过CORE类启动模型(组件集)
lr_core= cl_crm_bol_core=>get_instance( ).*一旦我们有了实例,之后便可以加载组件集*这里我们将使用ONEORDER组件集

*在Web UI上面,这个将会由框架操作。这里我们正在report程序中编程,因此需要自己来操作


TRY.CALL METHOD lr_core->load_component_setEXPORTINGiv_component_set_name= 'ONEORDER'.CATCHcx_crm_genil_general_error .ENDTRY.*组件加载了,因此我们可以使用BOL服务。让我们搜索一个特定的合同。为了实现这个目的,我们需要获取一个dquery服务对象的实例。
DATA: lr_query TYPE REF TOcl_crm_bol_dquery_service,
lr_result
TYPE REF TOcl_crm_bol_bo_col.*****搜索操作*********************** "获取动态搜索对象的实例,它会被用于搜索服务合同。 lr_query ?= cl_crm_bol_dquery_service=>get_instance( iv_query_name = 'BTQSrvCon')."每一个动态搜索对象将会有他自己的结果类型对象,这里BTQSrvcon的结果对象是BTQRSrvcon"因此在结果列表里面,所有的对象都是BTQRSrvcon的类型。 "我们得到了实例,之后我们需要设置选择条件值,取得所有描述是‘testing’的合同。"你可以多次使用这个方法,来添加不同的选择参数。 lr_query->add_selection_param( iv_attr_name = 'DESCRIPTION'iv_sign= 'I'iv_option= 'EQ'iv_low= 'testing')."获取以集合(collection)形式存在的的、匹配选择条件值的合同列表 "集合不过是一个保存记录的容器,我们可以把它和内表相类比 "它保存了记录. lr_result ?= lr_query->get_query_result( )."让我们输出集合中所有的合同ID和描述 "cl_crm_bol_entity用于表现业务对象层中的记录 DATA: lr_entity TYPE REF TOcl_crm_bol_entity,
lv_objectid
TYPE string,
lv_descr
TYPEchar40."读取集合中的第一条记录 lr_entity ?= lr_result->if_bol_bo_col~get_first( )."下面的while循环机制用于访问集合中的每一条数据 WHILE lr_entity ISBOUND."读取合同ID. "get property as string方法将返回字符串格式的属性,因此我们将lv_object声明为字符串。 lr_entity->get_property_as_string( EXPORTING iv_attr_name = 'OBJECT_ID'RECEIVING rv_result=lv_objectid )."get property as value将返回值本身的类型,因此我们使用数据元素来声明DESCRIPTION lr_entity->get_property_as_value( EXPORTING iv_attr_name = 'DESCRIPTION' IMPORTING ev_result =lv_descr ).WRITE: lv_objectid, lv_descr.WRITE /:."读取集合中的下一条数据. lr_entity ?= lr_result->if_bol_bo_col~get_next( ).ENDWHILE.

  多数情况下,在Web UI为一个特定的字段提供搜索帮助需要在事务SE11中创建搜索帮助。

  (注:也可以通过在SE24中创建一个类并实现实现IF_BSP_WD_CUSTOM_F4_CALLBACK接口来提供搜索帮助。)

  让我们首先在SE11中创建搜索帮助。

  前往事务SE11,创建搜索帮助,输入下图中展示的值。这里我们想要在搜索视图提供一个用于合作伙伴功能字段的搜索帮助。

  

  

  Selection method是值所在的表名。激活搜索帮助。

  前往用户界面组件工作台中需要提供搜索帮助的字段。这里我们想要为搜索视图汇总的PARTNER FUNCTION字段提供F4搜索帮助。

  展开这个字段,生成v-GETTER方法。

  

 

  方法生成后,复制粘贴下图中的代码。

  

 

  为了开发者的便利,SAP提供了标准类CL_BSP_WD_VALUEHELP_F4DESCR。我们只需要使用某些信息来创建一个该类的实例(以提供搜索帮助)。

  1. Help id: 在SE11中创建过的搜索帮助ID。
  2. Input mapping: 提供上下文节点属性和搜索帮助属性之间的映射。这里我们为PARTNER FUNCTION字段提供了F4帮助。在第9行,我们已经将‘STRUCT.PARTNER_FCT’ 赋给了input mapping的CONTEXT_ATTR。在下一行,我们将其映射到SE11搜索帮助中的 ‘PARTNER_FCT’。
  3. Output mapping: 一旦用户选择了F4帮助中的值,我们需要将选择的值返回给相应字段。这个信息将会由output mapping给出。在14行和15行,我们已经通过告诉框架从‘PARTNER_FCT’传递值给上下文节点中的属性‘STRUCT.PARTNER_FCT’

  激活方法并且测试应用。

  

  我们可以看到图上方有两个字段, partner function, 搜索条目文本(text)。这些字段出现在这里是因为我们在SE11中创建搜索帮助时在SPos字段填写了‘1‘和’2’。如果使此列空白,则不会出现这些字段。

  选择任意值,该值会被自动地传递到partner function字段。

  我们可以通过发送如下的参数来设定搜索结果的初始限制值:

  '\''Z*\'''

  注释掉第9行的‘STRUCTU.PARTNER_FCT’ ,取消上面的代码的注释。激活方法,测试应用。这时你的F4将会变成下面展示的样子,所有以Z开头的条目将会被默认搜索到。

  

 

本文链接:http://www.cnblogs.com/hhelibeb/p/6000412.html

原文链接:PROVIDING F4 HELP

  

  在设计任何视图或组件的时候,我们需要以可复用的方式来设计它。UI组件设计的主要目标即可复用。

  例如:几乎每个事务都要处理合作伙伴(客户)。如果我们想要在Web UI显示那些合作伙伴,需要设计一个视图。我们将不会为服务合同设计一个单独的合作伙伴视图、为服务订单设计一个、为服务确认设计一个、再为机会设计一个。

  相反,我们应该做的是,设计一个视图,并且在不同的事务中复用它

  为了使视图可复用,我们需要做一些步骤。

  首先,我们需要把视图设计为可以从外部获取数据的形式。

  第二,我们需要把视图分配给一个窗口。

  第三,窗口应当暴露在运行时资源库中的接口视图(InterfaceView)部分。

  第四,需要的组件控制器的上下文节点应暴露在ComponentInterface->InterfaceController->Context。

  之后我们可以通过创建组件用法(Component Usages)在任意组件复用这个视图。

  让我们通过一个练习例子一一地在细节上讨论所有要点。在本文的最后一节,我们将尝试复用组件BTPARTNER中的一个视图 ‘PARTNER’。

1,视图必须可以从外部获取数据

  通常的外部数据(从另一个UI组件中而来的),提供给组件控制器的上下文节点。因此,应当在组件控制器的上下文节点和视图的上下文节点之间创建绑定。并不需要直接地绑定,我们只需要确保从组件控制器上下文节点到我们希望复用的视图的上下文节点的数据流。

  

  

   可以看到视图PARTNER中的BTPARTNERSET上下文节点被绑定给了组件控制器的上下文节点。

2,将视图分配给窗口

  视图应该被分配给一个窗口。之后,窗口会在运行时资源库中被暴露为一个组件的接口视图。

  前往运行时资源库。

  

  Partner视图被分配给了窗口。我们可以在这里添加其它窗口,并让每个窗口都有一个分配给它的视图,让每一个视图都成为可复用的单元。

3,窗口应当暴露为接口视图

   前往运行时资源库->ComponentInterface。添加窗口PartnerList,使之成为一个接口视图。

  

4,组件控制器节点

  需要的组件控制器的上下文节点应暴露在ComponentInterface->InterfaceController->Context。

  上下文节点BTPARTNERSET已经暴露在这个项。将一个上下文节点暴露在这个项会使其可以被不同的UI组件的其它上下文节点所绑定。我们可以使用一个特殊的组件控制器方法WD USAGE INITIALIZ来绑定不同UI组件的上下文节点。

  

  可以开始在我们自己的组件中复用这个视图了。接下来是在其它组件的操作。 

在另一个组件中复用视图

  前往组件->运行时资源库并且创建一个组件用法。点击编辑按钮,右击ComponentUsage,选择选项Add Component Usage.

  

  在出现的对话框中,为组件用法(Component Usage)和我们希望复用的接口视图(InterfaceView)命名。

  

  内容输入后,选择继续。现在这个接口视图会在你自己的组件中作为视图存在。

  把这个视图添加给OverviewPage概览页.

  

  保存运行时资源库。前往OverviewPage的配置标签页,添加新的视图以显示分配对象展示区(Assignment block)。

  现在我们需要注意数据。在先前的操作中,我们知道组件BTPARTNER中有一个上下文节点BTPARTNERSET。因此我们将在我们自己的组件控制器中创建一个新的、相同的上下文节点。

  前往组件控制器并且创建使用基本实体(base entity)BTPartnerSet创建一个上下文节点。

  

  

  为基本实体命名,完成向导。

  

 

  我们已经创建了上下文节点。接下来我们需要把数据交给这个上下文节点。

  无法通过配置来实现,让我们用代码来做它。

  如我们所知,在结果视图的事件处理器(用户点击超链接时触发),我们获取了BTAdminh实体。我们将从它获取相关的BTPARTNER SET并且将其提供给组件控制器的上下文节点。

  按照下图修改事件处理器。保存并激活之。 

  (这只是针对以上情景进行代码修改的部分,前面的代码保留原样。)

  一旦我们获取了BTAdminh的头实体,我们使用关系获取它的相关实体BTPARTBERSET。获取相关记录后我们将其添加到集合(collection)中,这个集合会被提供给组件控制器的上下文节点。

  向组件控制器提供数据完成。一件更重要的事是将你的组件控制器的上下文节点和BTPARTNER组件的上下文节点绑定。像上面说过的那样,我们将使用方法WD USAGE INITIALIZE来做这件工作。

  前往组件控制器并且重新定义上面提到的方法。

  

 

  重定义后,双击方法打开它,写下如下代码并激活。

  

  

  在不同的组件的上下文节点间分析数据的工作就这样完成了。

  测试该应用,如果服务合同有任何合作伙伴,数据将显示在合作伙伴的分配对象展示区中。

 

本文链接:http://www.cnblogs.com/hhelibeb/p/6000833.html

原文链接:WHAT IT TAKES TO REUSE A VIEW