当前位置: 首页 > Web前端 > HTML

当年用的SAPIDE

时间:2023-04-02 14:32:58 HTML

,在谷歌上以“程序员鄙视链”为关键词搜索,得到68万多条结果。眼花缭乱的搜索结果中,有着许多按不同维度划分的鄙视链。其中一个维度是对编程工具的蔑视链。例如,我在SAP中所做的所有开发都使用IDE而不是文本编辑器。看来我将不可避免地落在鄙视链的末端。在这篇文章中,我想介绍一些我使用过的SAPIDE的环境。希望你看完之后有所收获。而像Eclipse、VisualStudio这样的IDE在SAP圈外的使用更为广泛,本文不再赘述。本文提到的所有IDE都是基于Windows版本的,这让我再次鄙视:用MacOS的程序员鄙视用WindowsOS的程序员。我在SAP工作期间使用的IDE列表如下:(名称中不含SAP,说明该IDE不是SAP开发的)SAPGUISAPABAP开发工具SAPCloudApplicationStudioSAPWebIDE(codepen,jsbin)SublimeText(text小编)AndroidStudio(Cloud9)VirtualBox+PuttySAPGUISAPGUI是所有ABAPers养家糊口的工具。它见证了SAP从只有5名员工的默默无闻的一代到企业管理软件的巅峰之路。严格来说,SAPGUI不仅仅是一个IDE,也是很多使用SAP传统管理软件进行日常工作的商务人士使用的工具。有个笑话,同事去苏宁买电器。在柜台结账时,售货员说:“等一下,系统有问题,无法下单。”同事上前看了看屏幕说:“哟,出错了?让我F1看看错误详情,再看看/h能不能用。”用过SAPGUI的读者一定明白我在说什么,在这篇文章中,我尝试分享一些我的原创想法和一些不是每个朋友都知道的小技巧。2013年看到SAP社区的一些朋友在讨论SAPGUI命令行用到的事务码列表存放在哪里:得到的答案是如果是Windows系统,存放在操作系统的注册表里:具体讨论见以下链接:https://blogs.sap.com/2013/10...当时觉得挺有意思的,后来就想有没有什么通用又快速的方法可以找到SAPGUI中设置,是的,具体存放在注册表的什么地方。也是在2013年写了一篇博客:六种调试技巧找到抛出消息的源代码要求是在SAPGUI中看到一条错误消息,如何通过六种不同的方式找到具体的行这个错误消息是由ABAP代码。最后使用ST05跟踪的思路同样适用于现在讨论的Windows操作系统注册表中如何找到SAPGUI配置的具体存储位置:1、修改SAPGUI配置前,将注册表导出保存为A;2、修改SAPGUI配置,然后导出注册表,另存为B;3、用工具比较A和B的区别,可以得到配置在注册表中的存放位置。第一次遇到需要将SAPGUI中的某段ABAP代码导出为PDF格式时,我总是先新建一个word文档,在ABAP代码上CtrlC,然后CtrlV到word文档,最后将word文档转换到PDF。其实SAPGUI自带了代码一键导出PDF的功能。只需在下图的配置中为导出PDF功能分配对应的快捷键即可:然后一键保存为PDF:值得一提的是,因为SAPGUI中所有的事务代码也是通过ABAP开发的,包括那些用于开发的事务代码SE80本身。因此,这些事务代码本身也可以通过ABAP来增强。比如在SE80的开发对象类型中,我自定义了一个新的开发对象类型,名称为“Jerry'sProduct”,可以像其他所有开发对象一样通过右键菜单创建:新建一个开发对象实例,维护名称:实例创建成功后,你可以在SE80中继续维护其他细节:再比如,如果你对SAPGUI中ABAP编辑器的标准ABAP语法检查不满意,想要加强,这当然是可以的。具体步骤可以参考我的博客:ImplementCustomSyntaxCheckinSAPGUI一个语法增强的应用例子,可以参考我的公众号文章Jerry'sABAP,JavaandJavaScriptStew:CovarianceinJavaandsimulationinABAP。写这篇博??客的背景是为SAP成都研究院的一次内部技术培训准备教材。本文首先介绍了Covariance和Contravariance的概念,然后描述了Covariance在Java中的实现,最后给出了Covariance在ABAP中的模拟实现,以及如何增强ABAP编辑器的语法检查使其能够自动检测代码这违反了协方差规范。记得2011年的时候,WebIDE的概念还比较火。WebIDE允许开发人员只用浏览器编写代码,并在WebIDE提供的终端环境中运行。当时觉得很尴尬,因为类似于WebIDE的概念,其实SAPGUI早就支持了。SAPNetweaver中有一个模块叫做SAPInternetTrasactionServer,它允许SAPGUI中的进程在浏览器中运行。关于这个模块的详细介绍可以参考SAP帮助文档:SAPNetWeaverApplicationServer中的SAPITS例如:我可以把SAPGUI中的SE80放到FioriLaunchpad中,点击Tile,在浏览器中就可以直接使用SE80.如下图所示:只需要一些简单的配置就可以达到上面的效果。具体步骤可以看我的博客:OpenyourSAPGUItransactioninFiorilaunchpad原理介绍,可以看我的另一篇博文:HowisoldSAPGUItransactionembeddedintoFiorilaunchpad文章中也提到了S/4HANA中大量的Fioritile利用这个技术,也就是通过ITS,让一些非常古老的交易代码如MM01继续在浏览器中运行。下面第一张图是在SAPGUI中使用事务码MM01打开的素材创建页面,第二张图是事务码通过ITS在浏览器中运行的截图。可以看出两个页面的布局是完全一样的。回到IDE的话题,通过我上面博客中提到的方法直接在浏览器中运行SE80其实并不是严格意义上的WebIDE,因为它缺少语法高亮。这一限制在S/4HANA中得到了改进。S/4HANA中有一个应用叫做CustomLogic,它可以让我们直接在浏览器中编辑ABAP代码,并且支持语法高亮,如下图所示:刚刚研究了ABAP语法高亮在Chrome中的工作原理,不久前实现在浏览器。对技术细节感兴趣的可以参考我的博客:浏览器启动的WebIDE如何实现ABAP语法高亮SAPABAPDevelopmentTools以前SAP喜欢在Eclipse中称这个IDE为ABAP。目前的正式名称是ABAPDevelopmentTools。本质上,SAP以插件的形式对Eclipse进行了一些扩展。很多有Java开发经验的朋友喜欢使用ABAPDevelopmentTools进行ABAP开发。2014年研究ABAP开发工具IDE的Java实现代码如何通过RFC(RemoteFunctionCall)调用到ABAP后台。分析的关键是使用IDE中的日志功能:ABAPDevelopmentTools后台实现细节,请参考我的博客:一个例子,帮助你理解ADT是如何工作的IDE端的Java实现细节,可以把.class文件反编译,自己学习:SAPHANAStudio和ABAPDevelopmentTools一样。HANAStudio也是一个基于Eclipse的IDE,但是它有SAP自研插件和ABAPDevelopmentTools的区别。由于需要在此IDE中连接SAPHANA数据库,因此大多数插件都以命名空间com.sap.ndb.studio开头。这里的ndb其实是SAP在HANA刚刚诞生时的内部名称:NewDB的缩写。既然是基于Java连接HANA数据库的插件,那么JDBC肯定少不了。HANAStudio中的大部分操作都使用插件com.sap.ndb.studio.jdbc:实现代码也可以从插件文件夹中的.class文件中反编译出来查看。SAPCloudApplicationStudioSAPBusinessbyDesign和SAPCloudforCustomer的合作伙伴使用该IDE进行二次开发。IDE基于VisualStudioShell开发,与后者的关系类似于SAPABAPDevelopmentTools/SAPHANAStudio和Eclipse。我从2011年到2012年参与了这个IDE的开发,使用的编程语言是C#。CloudApplicationStudio的工作原理与ABAPDevelopmentTools类似。C#端通过RFC调用ABAP后台暴露的API。例如在IDE中的右键菜单中选择Activate后,会执行下图C#代码中的ActivateContent函数,激活ABAP后台相应的资源。图中的C#代理类PDI_RI_CONTENT_ACTIVATE对应ABAP后台的同名函数。执行完图中最后一行代码jsonClient.callFunctionModule(proxy),就会远程调用ABAP后台函数PDI_RI_CONTENT_ACTIVATE。SAPWebIDE2014年到2016年我都是用这个IDE做Fiori产品开发的,关于这个WebIDE的更多细节可以参考我的另一篇公众号文章:Jerry的博客合集通过CDS视图+智能模板开发Fiori应用如果我只是写一些小的网页程序,我也喜欢用一些其他的工具,比如CodePenhttps://codepen.io:或者jsbin。这些工具支持开发者直接在浏览器中编码运行,非常方便。MyCloudforCustomer开发同事也喜欢使用Atom和WebStorm进行前端开发。SublimeText(文本编辑器)这个文本编辑器的一大特点是它为程序员提供了一种非常简单的方法来开发自己的插件,可以提高他们的工作效率。作为例子你可以参考我的博客:一步一步开发你自己的SublimeText插件我喜欢SublimeText的另一个特点是它还有一个支持ABAP语法高亮的插件:你可以通过这个链接获取它。AndroidStudio用于SAPCloudforCustomer移动Android平台。作为一个Android爱好者,平时也会写一些Android小程序。我不会打开相对繁琐的AndroidStudio,而是使用一些AndroidWebIDE,比如Cloud9:VirtualBox+Putty的组合其实不算IDE,大大提升了我的体验。日常工作效率。VirtualBox安装的ubuntu默认配置下的console模式有一些让我觉得使用起来不方便的地方,比如不支持从windowsOS复制粘贴,不支持自定义字体类型和大小等等,而后者则不是对我来说很重要。因此,我会选择先用VirtualBox启动ubuntu实例,然后再用Putty远程登录。之后所有在ubuntu上的操作都在Putty中完成。并且Putty支持复制粘贴、自定义字体等。下图是VirtualBox原生ubuntu控制台的截图。下图是使用Putty远程登录ubuntu后的操作界面。通过对比可以发现,在Putty中,我把字体类型改成了我喜欢的Inconsolata,字号改成了20。可能有朋友会觉得这两张图其实长得差不多。好吧,作为一个程序员,我每天看这些接口的时间比我老婆还多。花更多的心思将这些接口设置成最合我的眼色,将有助于确保我始终有一个舒适的心情来编程。当然,SAP的产品线很多,开发工具也应有尽有。一个程序员不可能访问所有的开发工具。本文只是列举了一些我在工作中使用的IDE,感谢阅读。