1

我正在编写自定义 Fiori 以使用网关从 SAP ERP 后端系统访问销售数据。

用例是“客户登录启动板,打开 Fiori 应用程序并根据客户 ID 查看他/她的所有销售项目”。客户 ID 存储在 SAP 表中kna1-kunnr的选择中,并且必须包含在其中。vbak没有什么花哨。

现在我问自己:我如何获得客户 id / kunnr?我从当前登录的用户那里得到了什么?在调试我的网关项目代码时,它实际上是存储在其中的名称sy-uname还是我可以得到更好的东西?

我应该如何继续获取客户 ID/kunnr?SAP ERP中是否有一些功能模块喜欢GET_CUSTOMER_ID_OF_USER调用?

或者实际上是为一个用户获取销售文档的其他/更好的方法?

更新 感谢您到目前为止的回答。我将检查默认的 Fiori 实现以了解其中的一些内容。但是,既然我们已经在这里了,我想再详细说明一下我的问题:

假设我在 Component.js 中创建了一个 OData 模型,如下所示:

    var oModel = new sap.ui.model.odata.ODataModel("[...]/sap/opu/odata/sap/Z_MYODATA_SRV/",
        false, "user", "password" );

user并且password应该是当前在 Fiori Launchpad 中作为用户凭据输入的那些。我怎样才能访问这些?是否有一些 SAPUI5 apigetCurrentUsergetCurrentSession?我真的必须做这个用户检查吗?

4

3 回答 3

2

您是正确的,要识别客户的所有销售订单,您需要从中读取它们VBAK(或使用BAPI_SALESORDER_GETLIST等)。

登录用户和客户之间的关系在每个 SAP ECC 系统中并不相同。您可能会发现登录用户与客户编号相同,但带有前缀 - 例如,登录用户C12345678为 customer 0012345678。或者可能有一些其他类型的关系存储在客户主数据本身的自定义字段中。最好的选择是与负责销售和分销中配置的人员核实。只有这样,您才能知道如何为已登录的客户用户确定客户。

于 2015-08-04T07:29:21.997 回答
1

回答你的问题

现在我问自己:我如何获得客户 id / kunnr?我从当前登录的用户那里得到了什么?

它是通过标准定制在后端完成的,而不是像您打算那样通过 OData 方法完成。

Mikael 给了你一个粗略的想法,但没有完成,所以我会给出更全面的答案。

我们需要区分前端和后端授权,对于 Fiori 应用程序运行,您需要角色/授权类型:

  1. 定义向用户显示哪些 Fiori 应用程序的 SAP Fiori 角色
    • 启动板授权
    • 一般 OData 授权
    • 受信任的 RFC 后端连接授权
  2. 包含显示相关业务数据的权限的后端权限和角色

下图描绘了这个概念

在此处输入图像描述

这里描述了前端的分配,现在超出了范围。现在我们专注于第 2 点。

每个 Fiori 应用程序都有其角色模型,并且应该遵循应用程序描述中给出的实现。让我们根据销售订单创建应用程序 (F0018)示例来考虑它是如何完成的:

  1. 返回业务数据的 OData 服务是SRA017_SALESORDER_CREATE_SRV,因此要运行它需要前端角色SAP_SD_BCR_FIELDSALESREP_X1和后端角色SAP_SD_SO_CRE_APP
  2. 应用程序描述还为我们提供了以下先决条件:
Before implementing the Create Sales Order app, you must ensure the following:

That an employee master record is created with the following attributes:

If you have implemented SAP ERP HCM and maintained employees in the HCM personnel records, ensure that the employee personnel record has the infotype Communication, with a subtype of System User Name (SY-UNAME) (Infotype 0105, Subtype 0001).

If you have not implemented SAP ERP HCM, implement the Sales and Distribution configuration around Use Sales Employees with HR (Tcode: PULT). This IMG setting copies the appropriate HCM tables from the 000 Client and allows the setup of the employee record with the Infotype Communication and a Subtype of System User Name (SY-UNAME) (Infotype 0105, Subtype 0001).

It associates the USERID of the employee with the personnel number assigned as a partner function sales employee in the customer master.

实施上述客户 SAP 用户 id 将绑定到他的员工 ID (PERNR),因此他的员工 ID 将绑定到 XD02 中的合作伙伴功能。

这还不是全部,接下来会发生什么?

  1. 以下订单参数应保存在SIMGHtcode 中,以便客户查看他的订单并创建新订单。
Call transaction SIMGH to open the Create Sales Orders node and configure user information in Customizing activity Define Configuration Parameters using the parameters listed below. For more information, see the documentation available for the Customizing activity.

Document Type (DOCTYPE)

By default, the app uses the standard order document type (technical key TA resp. OR). Changing this to something other than a sales order may significantly impact the functionality of the application.

Order Period (ORDPERIOD)

This defines how many days into the past sales orders are retrieved. The suggested value is 30 days.

Search Period (SEAPERIOD)

This defines how many days into the past a search must look for sales orders that match the search criteria. The suggested value is 90 days.

Ship To Party (SHIP_TO/PARTNER_ROLE)

This defines which partner role in the customer master is used for the ship-to party. The suggested value is WE.

Forwarding Agent (FORWARDING_AGENT/PARTNER_ROLE)

This defines which partner role in the customer master is used for the forwarding agent. The suggested value is SP.

在此处输入图像描述

甚至这还不是全部

  1. 应用程序描述提供了以下要实现的 BADI 以启用此类链接
Implement the following BAdIs:

Customer Association to Employee

You can use this BAdI to associate employees with specific customers.

在此处输入图像描述

只有在完成上述所有步骤后,客户才能订购和/或查看他的销售商品。

寓意:始终彻底检查应用程序描述,因为角色模型因应用程序而异。

于 2020-07-03T09:16:16.820 回答
0

看看标准的 Fiori 应用程序。例如,在创建销售订单中,提供了一个 BADI 来实现您正在寻找的关系(但对于员工与客户的关系)。在标准设置中,客户主数据的合作伙伴功能用于映射员工可见的客户。

如果您的客户实际上在您的系统中拥有用户帐户,那么您很可能已经进行了类似的设置。如果可以作为用户的参数或(自定义?)合作伙伴角色。

http://help.sap.com/saphelp_fiorierpx1_100/helpdata/en/6d/135652f9c21457e10000000a445394/content.htm

于 2015-08-04T14:50:08.260 回答