我正在编写自定义Fiori,以使用网关从SAP ERP后端系统访问销售数据。
用例是“客户登录启动板,打开Fiori应用程序并根据客户ID查看他/她的所有销售项目”。客户ID存储在kna1-kunnr
中,并且必须包含在SAP中vbak
表的选择中。没什么好看的。
现在我问自己:我如何获得客户ID / kunnr?从当前登录的用户中我可以获得什么?在调试我的Gateway项目代码时,它实际上是存储在sy-uname
中的名称还是我可以获得更好的东西?
我应该如何继续获得客户ID / kunnr?是否有一些功能模块如GET_CUSTOMER_ID_OF_USER
可以在SAP ERP中调用?
或者是获得一个用户的销售文档的其他/更好的方法吗?
更新 到目前为止,感谢您的回答。我将检查默认的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 api,如getCurrentUser
或getCurrentSession
?我真的必须做这个用户检查吗?
答案 0 :(得分:2)
您是正确的,以确定客户需要从VBAK
(或使用BAPI_SALESORDER_GETLIST
等)阅读的所有销售订单。
登录用户和客户之间的关系并不是每个SAP ECC系统中的相同之处。您可能会发现登录用户与客户编号相同,但带有前缀 - 例如,登录用户C12345678
以获取客户0012345678
。或者可能存在一些其他类型的关系存储在客户主人自己的自定义字段中。最佳选择是与销售和分销中负责配置的人员核实。只有这样,您才能知道如何为登录的客户用户确定客户。
答案 1 :(得分:1)
回答您的问题
现在,我问自己:如何获取客户ID / kunnr?从当前登录的用户那里我能得到什么?
这是通过标准自定义在后端完成的,而不是像您打算的那样通过OData方法完成。
Mikael给了您一个大概的想法,但是还没有完成,所以我会给出更全面的答案。
我们需要区分front-end and back-end authorizations,对于Fiori应用程序的功能,您需要角色/授权的类型:
此concept如下图所示:
前端is described here的分配现已超出范围。现在我们将重点放在项目符号2上。
每个Fiori应用都有其榜样,应该遵循应用说明中给出的实现。让我们根据Sales Order creation app (F0018)示例来考虑如何完成此操作:
SRA017_SALESORDER_CREATE_SRV
,因此要运行它,需要前端角色SAP_SD_BCR_FIELDSALESREP_X1
和后端角色SAP_SD_SO_CRE_APP
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中的合作伙伴功能。
这还不是全部,接下来是什么?
SIMGH
tcode中维护以下订单参数,以便客户查看其订单并可以创建新订单。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.
那还不是全部
Implement the following BAdIs:
Customer Association to Employee
You can use this BAdI to associate employees with specific customers.
只有完成上述所有步骤,客户才能订购和/或查看其销售商品。
道义:由于角色模型因应用程序而异,因此请始终彻底检查应用程序描述。
答案 2 :(得分:0)
查看标准的Fiori应用程序。例如,在“创建销售订单”中,提供了一个BADI来实现您要查找的关系(但对于员工而言,是客户)。在标准设置中,客户主数据库的合作伙伴功能用于映射客户对员工可见的内容。
如果您的客户在您的系统中实际拥有用户帐户,则很可能已经有类似的设置。如果可以作为用户的参数或作为(自定义?)合作伙伴角色。
http://help.sap.com/saphelp_fiorierpx1_100/helpdata/en/6d/135652f9c21457e10000000a445394/content.htm