先看最后实现的效果:
我有一个字段,用户既手动输入Employee ID,也可以点击字段的矩形框,打开Value help:
假设我选中ID为1的Employee,则其first name和last name,会自动填充到UI 对应字段上,即SAP 从业人员经常说的“自动带出来”。
下面是详细的实现步骤。
- 按照这篇文章SAP Cloud for Customer(C4C)里如何定义跨BO间的association的介绍,定义出ParkingSpace这个子节点和ToEmployee association:
- 在UI Designer里,将要分配Object Value Selector的UI字段,绑定到BO 子节点ParkSpace的ParkingSpace_AssignedEmployeeID上去。
完整绑定路径如下:
./InputField->http://refsystems.sap.com/YS5XJ942Y_->Root-.ParkingSpace-~ParkingSpace_AssignedEmployeeID
Appearance下的Display Type,维护成Object Value Selector:
Value Help指定成:/SAP_BYD_APPLICATION_UI/publicovs/employeeid/EmployeeID.OVS.uicomponent
- 将自动贷出来的Given Name和Family Name,分别绑定到ToEmployee association上指向Employee节点的GivenName和FamilyName字段上。
完整的绑定路径分别为:
- ./GivenName->http://refsystems.sap.com/YS5XJ942Y_->Root-.ParkingSpace-.ToEmployee-.CurrentCommon-Person-Name-~GivenName
- ./FamilyName->http://refsystems.sap.com/YS5XJ942Y_->Root-.ParkingSpace-.ToEmployee-.CurrentCommon-Person-Name-~FamilyName
- 最后,在子节点ParkingSpace上,创建AfterModify并实现:
ABSL实现最核心的逻辑就是,将用户输入的employee ID作为输入参数,调用employee BO提供的QueryByEmployeeAttributes,去Cloud for Customer数据库查询Employee实例数据,并将其Root节点返回给自定义BO的toEmployee association.
以上就是完整的实现步骤。
更多Jerry的原创文章,尽在:"汪子熙":