混合的.net / sap系统是否有意义?

时间:2009-09-24 13:28:14

标签: c# .net sap abap

这可能是一个模糊的问题,但现实生活就是这样。

我们公司正在推出SAP系统。我知道他们现在做Web服务,所以我们可以同时推出.NET的东西,我们知道我们可以用C#做​​什么。

SAP-.NET集成方面的缺陷是什么?我理解SAP的逻辑与“标准”编程完全不同,但我希望将“业务”部分与“演示”部分分开,用ASP.NET编写。

7 个答案:

答案 0 :(得分:12)

我是SAP ABAP和Microsoft.NET开发人员。我在一家使用SAP和其他平台创建软件的公司工作,例如Microsoft.NET,Java和RoR。

由于您的公司正在推出SAP,您应该获得ECC 6.0后端,它可以使用RFC或Web服务。

SAP有一个称为Business API(即BAPI)的标准API。您可以在BAPI交易中试用它们。

这是一个很好的例子:BAPI_USER_GET_DETAIL

此BAPI负责返回有关任何SAP用户的信息。 BAPI只需要一个名为USERNAME的输入参数,并返回包含用户信息的不同数据结构,例如电子邮件,名字和姓氏,用户配置文件等。

在ABAP内部,调用此BAPI的模板应该是这样的:

CALL FUNCTION 'BAPI_USER_GET_DETAIL'
EXPORTING
USERNAME = sy-UNAME
* IMPORTING
* LOGONDATA =
* DEFAULTS =
ADDRESS = L_IT_RETURN1
* COMPANY =
* SNC =
* REF_USER =
* ALIAS =
* UCLASS =
* LASTMODIFIED =
* ISLOCKED =
TABLES
* PARAMETER =
* PROFILES =
* ACTIVITYGROUPS =
RETURN = L_IT_RETURN
ADDTEL = i_Tel
* ADDFAX =
* ADDTTX =
* ADDTLX =
* ADDSMTP =
* ADDRML =
* ADDX400 =
* ADDRFC =
* ADDPRT =
* ADDSSF =
* ADDURI =
* ADDPAG =
* ADDCOMREM =
* PARAMETER1 =
* GROUPS =
* UCLASSSYS =
* EXTIDHEAD =
* EXTIDPART =
* SYSTEMS =.

现在,每个BAPI都启用了RFC(远程函数调用)。这意味着,如果在应用程序中实现SAP RFC API,则可以调用SAP中设置为启用RFC的任何BAPI或其他功能。

在旧版本中,您可以使用标准SAP RFC API,或使用SAP向导连接器,如SAP .NET Connector或SAP Java Connector。

在较新的版本中,SAP已将Web服务器附加到其ABAP应用服务器,以便为ABAP运行ITS,BSP和WebDynpro等服务。通过使用此Web服务器,您可以将任何RFC发布为WebService。

但是,从我的日常经验来看,SAP R / 3的表现并不是那么好。对函数进行简单的RFC调用,对两个数字求和并返回结果可能需要1到5秒,具体取决于服务器的可用性。

这种情况的发生主要是因为当您使用SAP .NET Connector或WebServices时,会出现多种抽象级别。

因此,如果您希望您的系统可用于日常交易(例如每天从您的电子商务应用程序创建5.000个客户,或在线销售约40.000个),我强烈建议您使用Java Connector,或者实施您自己的RFC API。

否则,如果您的应用程序将由更少的人在内部使用,我建议您使用SAP .NET Connector或WebServices,因为它们完全是面向GTD的。

希望这有帮助!

(请将http://前缀添加到下面的链接中,因为我没有足够的声望来发布链接:()

RFC API:help.sap.com/printdocu/core/Print46c/EN/data/pdf/BCFESDE4/BCFESDE4.pdf

SAP .NET Connector:help.sap.com/saphelp_nw04/Helpdata/EN/e9/23c80d66d08c4c8c044a3ea11ca90f/content.htm

SAP Java Connector:help.sap.com/saphelp_nw04/helpdata/en/6f/1bd5c6a85b11d6b28500508b5d5211/content.htm

使用ABAP创建Web服务:wiki.sdn.sap.com/wiki/display/stage/Service+Enabling+in+ABAP

答案 1 :(得分:6)

如果您的应用程序不需要SAP Portal集成,并且您的客户不要求具有类似SAP的外观,那么您可以自由使用您喜欢的任何表示层。

我不同意您选择进行SAP集成时必须使用sap工具的立场。像NWDI或旧NWDS这样的产品是一个令人头疼的问题(我在这里不会详细说明,这是一个长篇故事),如果你不是100%专注的sap集成商,培训人们学习Webdynpro在我看来不值钱。

答案 2 :(得分:3)

不要打架。如果您正在实施SAP,只需实施SAP。它几乎可以保证不值得为它而战。

如果您不喜欢GUI(BSP,WDJ,WDA),SAP可以使用工具来处理演示文稿。我不会尝试实施第三方前端,除非你真的必须这样做。

答案 3 :(得分:3)

很少有一般建议。

  • 在我看来,你正在寻找一些“黄金之路”或类似的东西。算了吧。在sapland中没有任何东西是容易的,直接的,或者,正常的。各个方向都存在障碍和陷阱。但不要绝望。在疼痛消退之后,闷棍做了它的企业(不管它是什么)的事情非常好。
  • 对于硬核用户(处理财务,人力资源,库存等的用户),您必须使用sap提供的服务。 gui会很糟糕,但是人们的适应能力非常强。如果他们没有其他选择,那么他们将会爱上sap所能提供的东西。
  • 对于临时用户(例如费用报告),在gui(web或桌面sapgui)的sap中提供它是浪费资源。用户将找到避免这些应用的创新方法。 So.net是要走的路。你会遇到很多问题。但请记住,另一种选择更糟糕。

对评论的回应: 首先,我不认为报告不应该在闷棍中完成。报告本质上是丑陋的,而狡猾的诡计。我在考虑一些不是用户主要工作的应用程序。就像报告费用,管理层批准购买请求等等。 关于哪里可以找到上述路障的材料。你不能。你必须首先找到它们。

答案 4 :(得分:2)

充分考虑使用.NET背后的原因:

  • 不要只使用.NET ,因为你知道你可以做到这不是一个好理由,但是如果有一个有效的商业理由使用.NET那么就去吧
  • 保持一致。定义表示层何时必须是.NET以及何时不合适。
  • 不要试图通过强制它以与其意图不同的方式运行来“智取”SAP标准功能。 (我不是说不自定义 - 我说使用SAP优先选项,如增强功能,用户退出等,你将获得更好的产品和更好的SAP支持。如果不试图理解产品,你就无法实现SAP完全)
  • 您需要了解“只需一条规则”才能了解用户/客户的需求,并且因为您将.NET用于面向客户的网站并不意味着您无法使用业务对象进行管理报告或适用于大部分报告的简单ALV网格
  • 对于ABAP开发人员而言,WEB Dynpro并不难学,如果您需要从SAP空间以外培训开发人员,那么WEB Dynpro将是学习曲线中最少的。 SAP业务逻辑要困难得多,如何在不破坏核心的情况下以受支持的方式重用SAP标准比学习ABAP工具集更具挑战性。

答案 5 :(得分:1)

我参与了许多.NET / SAP实施。一方面,我建议不要使用.NET而不是在ABAP中编写你想要的东西,但另一方面,它可以使其工作得相当好。如上所述,对于小型交易,Web服务的开销可能很高,因此请尝试进行设置,以便一次传递大量数据(即整个屏幕已满)。这样做也意味着SAP可以在内部处理整个事务或更多事务,而不是一次传递少量内容并且必须处理状态。业务逻辑应该在SAP中实现,.NET部分仅处理数据的表示/交换。

我将对费用界面的说法进行说明。大多数人都在外部使用其他供应商的软件,但您不必使用花哨的实时.NET内容来导入费用数据,只需要一个简单的批处理作业,每天导入一次。有时最简单的方法是最好的。

答案 6 :(得分:1)

在我的公司,我们处于同样的境地。我们正在使用.NET

与SAP进行集成项目

您可以通过直接从.NET执行BAPI函数来避免避免Web服务。今天我了解到标准RFC函数也可以作为BAPI函数公开。

我们正在使用theobald软件中的 ERP Connect 来直接执行bapi / RFC功能,因为在本次讨论中没有提及,我认为您可能会从中受益。

它不是免费的,但我认为它会让开发人员的生活更轻松。

请注意我与theobald软件没有任何关联。