wenmo8 发布的文章

 

ABAP Development Tools for Eclipse(简称ADT)是一个基于Eclipse的全新ABAP IDE,这篇文档试图回答有关ADT的最重要的常见问题。这只是一个开始,如果你对更多问题感兴趣,请看这个论坛,或者直接在本文下面回复。有关ABAP development tools的更多信息请看它的文档Getting Started Guide以及Quick Launch Sheet

一般问题

  • 为什么SAP选择了Eclipse平台建立一个新的ABAP IDE?

     开源的Eclipse平台提供了一流的用户体验,强大的平台潜力,以及可以让人们贡献增强和拓展的广泛而有活力的生态系统。因此,作为Eclipse基金会的活跃贡献者和战略开发者,SAP持续投入资源给ADT或者是SAP HANA Studio这样的Eclipse平台,以提高开发者的生产力,并且实现特定的跨工具交互。

 

  • 新的ABAP IDE有什么特别好处?

     除了Eclipse平台本身的优点之外,ADT提供了具备多路ABAP应用服务器系统故障切换的在线开发环境,高级代码编辑和重构的支持,强大的搜索和导航能力,理想的任务导向和测试驱动开发,以及通过丰富的扩展点(见下文)实现内建的扩展性。有关ADT的更多信息请参考Getting Started Guide. 

 

  • ABAP development tools需要额外的许可证吗?

     不需要,SAP NetWeaver的开发许可证中已经包含了它。

 

  • ABAP development tools for Eclipse是开源软件吗?

     不是。因为法律义务,我们没有获得发布源代码的许可。尽管如此,SAP已经提供了一个ABAP development tools的软件开发套件,从而允许社区和用户以及合作者扩展或增强IDE(见下文)。

 

  • ADT支持的最低的SAP NetWeaver版本是多少?

     目前,ADT兼容NetWeaver 7.31/7.03 SP04之后的版本,更多信息请看此博客

 

  • 哪些ABAP应用服务器版本支持ADT的特性?

     某些ADT特性需要后台的支持,请看Thomas Fiedler的博客以获取有关ABAP应用服务器和ADT之间关系的信息。

 

  • SAP会停止开发ABAP workbench (SE80)甚至禁用它吗?

     不是的,SAP仍然会提供SE80的支持,但是未来更多新的特性将会成为ADT独占。在目前的时间点,ADT是一个附加的产品,并没有完全替代SE80。

 

  • 我能平行地使用ADT和SE80吗?

      对,这是可行的。两个IDE共享同一个源代码库和锁机制。

 

安装问题

  • 哪些系统支持ADT?

     目前,官方支持的版本可以在Microsoft Windows, Mac OS X 和 Linux上运行。

 

  • 我要怎么安装ABAP development tools for eclipse?

      安装ABAP development tools for eclipse最简单的方式是使用SAP Tools Updatesite:
      https://tools.hana.ondemand.com/#abap
      在这里你将找到安装前需要做的准备和安装指南。

 

  • ABAP后台需要做什么?

     为了使用ADT,你需要在ABAP服务器上面做一点小的调整。请在这篇文档中寻找更多信息:
     Configuring the ABAP Back-end for ABAP Development Tools

 

  • ADT有实验性版本吗?

      是的,已经有ADT的实验性版本和与之兼容的SAP NetWeaver ABAP应用服务器后台。下载链接和更多信息请参考这篇文档

 

核心概念

  • 入门ABAP in Eclipse的最简单方式是什么?

     使用Feature Explorer进行初学者之旅是学习Eclipse的操作和基本特征的最简单方式。更多细节请见这个博客:Get more out of ABAP in Eclipse with the Feature Explorer

 

  • Ecplise中的ABAP project和标准project有什么区别?

     在ADT中如果你通过SAP GUI和一个ABAP应用服务器后台进行连接的话,project代表了一个与ABAP应用服务器后台(server/client/user)间的预定义连接。因此,你可以同时开发并且比较不同的后台系统中的对象。有关组织project的更多信息请参考ADT文档。

 

  • 我必须像使用JDT(Java Development Tools)一样提交和审查自己的ABAP代码吗?

     不是的,ADT使用和ABAP workbench中一样的广为人知的ABAP应用服务器生命周期管理服务(e.g. TMS)。

 

  • 基于表单的函数和类创建器在哪里?

     我们的用户体验研究已经表明:一个强有力的源代码编辑器比使用多个表单编辑碎片化的代码更加有效率。新的大纲视图和快速大纲窗口通过为你的源代码提供方便的导航能力和结构化视图为新的代码编辑器补充了这方面的功能。

 

  • 我找不到一些重要的工具了,它们在哪?

     截至目前,并不是每一个工具都被迁移到了Eclipse平台。原因是多样的:有的将会在未来的ADT版本中出现,还有一些我们正在评估一些新的想法,使之更好的适应SAP的新战略。在这些情况下,现在你可以使用紧凑的SAP GUI集成,它允许你使用现存的包含上下文感知的导航(context-aware navigation)的事务。更多的信息请查阅文档。

 

  • 我如何在Eclipse中调试应用?

     如果你将ABAP应用服务器系统升级到了SAP Kernel 7.21(或者更高),你可以使用原生的ADT调试器。不然的话,你必须要用基于GUI的调试器。

 

  • 开放的Ecplise平台提供了一流的扩展点(extension points),ADT的扩展性怎么样?

     是的,SAP已经在为ADT提供一个软件开发套件。更多信息请下载SDK和阅读Michael Schneider的博客.

 

  • 我能在Eclipse开发经典的dynpros吗?

     我们暂时没有在Eclipse内提供一个本地的dynpro开发工具的计划。但是我们可以使用一体化的SAP GUI在Eclipse内运行标准的工作台工具,比如屏幕绘制器、菜单绘制器。

 

  • 我要怎样在Eclipse中创建异常类?

     在Eclipse里,我们目前不支持生成异常ID的向导程序。在这个页面你可以看到如何使用模板做这项工作。
     Creating Exception Classes using Code Templates

原文链接:FAQs - ABAP Development Tools for Eclipse

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

转载请注明

 

  在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑。它仅仅是一种被逗号分割的文本文档吗?

  让我们先来看看接下来可能要处理的几个相关组件的词汇的语义。

  Separator:两个字段之间的界线,在CSV文件中即是“,”。

  Delimiter:这种符号的开端和结束,代表了某种东西的界限。举个例子“测试字符串”有两个delimiters,即两个双引号。在文本中包含很多逗号的情形下,CSV文件会使用双引号作为Delimiter.

  Terminator : 代表片段的结束。在CSV文件中,我们可以把换行看成terminator.

  如果我们不确定逗号或者双引号是否被允许在数据内出现,请看CSV的说明书:

  假如你想看CSV的全部标准的话,这里是CSV的实际标准

      http://tools.ietf.org/html/rfc4180

CSV格式的定义

  1,  每条记录位于单独的行上,由换行符分隔。

  2,  最后一条记录的换行符可有可无。

  3,  文件的第一行可以有一个可选的头部,其格式与普通行相同。

  4,  在头部和每条记录中,可以存在一个或多个字段,由逗号分割。整个文件中的每行应当包含同样数量的字段。空格被视为字段的一部分,不会被忽略。记录的最后一个字段的后面不可以存在逗号。

  5,  每个字段可以被双引号包围,也可以不这样做。(然而在某些程序中,比如Microsoft Excel, 完全不使用双引号)。如果字段没有被双引号包围,那么双引号不会在字段内部出现。

  6,  字段在包含换行符、双引号和逗号的情况下应当被双引号包围。

  7,  如果双引号被用作包围字段,而字段内部出现的双引号需要通过使用另一对双引号将其包围的方式转义处理。

在我的经验中,第七点是最容易被坑的地方。CSV作为由逗号分隔的值,给人带来了一种印象即逗号是separator并且给出的excel中不含逗号,这样容易造成混淆。

  那么看几个例子:

  基本例子:

  10, Vikas , Sydney

      数据内部有separator / delimiter的:

     "11", "Vikas", "Sydney, AU"      <-- 数据中包含逗号

     "12", "Vikas", "Sydney, "NSW" AU"   <-- 数据包含逗号和双引号

ABAP中的相关操作

  假设我们读取一个文件,这个文件可以从用户的桌面上传或者从服务器端读取。

1)   写下你的代码

  这个在一开始很简单,但随着时间的进行,它可能变得复杂。

  以字符串格式获取数据,使用逗号分割他们:

split lv_data at ',' into lw_struct-test1 lw_struct-test2 lw_struct-test3.

你是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.