0

使用 Postman 版本 7.34.0 (7.34.0)
从技术上讲,我在我的应用程序中使用 Django / Python,但我正在使用 Postman 进行测试,我将在调用 Success Factors ATS 时使用相同的有效负载。
SuccessFactors 的文档:链接

我正在尝试使用该候选实体上​​的 custom 更新候选实体,尤其custom 。 我得到了每个 Picklist 的值列表,如下所示:Picklist PicklistOptions

Field ID: "myCustomPicklist" (used as name field in the payload)
Field label: Some Label (irrelevant - used for UI display)
Field Type: Picklist 

对于 Picklist 的每个选项:

...
PicklistOption value: <Str, "some_value"> (value string displayed in the UI)
PicklistOption external code: <Str, "picklistOption_external_code">
PicklistOption external ID: <Int, picklistOption_id >
...

我能够Picklist使用外部 ID 更新候选人的字段PicklistOption,这样:
POST: https://<subdomain>.successfactors.eu/odata/v2/upsert
有效负载:

{
    "__metadata": {"uri": "Candidate(<candidate_id>)"},
    "firstName": "some_name",
    "lastName": "some_last_name",
    ...
    "myCustomPicklist": {
        "__metadata": {"uri": "PicklistOption('<picklistOption_id>')"},
        "optionValue":"<picklistOption_id>"
    }
}

回复:

...
<d:status>OK</d:status>
<d:editStatus>UPDATED</d:editStatus>
<d:message>Candidate has been updated successfully</d:message>
<d:index m:type="Edm.Int32">0</d:index>
<d:httpCode m:type="Edm.Int32">204</d:httpCode>
...

问题:
我知道这PicklistOption.external-id是来自数据库的 ID,这意味着我必须获得不同的 ID 才能在不同的环境中进行交互——这将迫使我创建一个特殊的地图,而我不希望这样。

我的问题:
我该如何使用picklistOption_external_code呢?
我正在寻找正确的语法,因为我无法在文档中找到它。
这将允许我拥有一个字段映射,因为代码(命名)不会在环境之间改变,而 ID 会改变。

谢谢!

编辑 1
这有效:

"myCustomPicklist": {
    "__metadata": {"uri": "PicklistOption('<picklistOption_id>')"},
    "externalCode":"<picklistOption_external_code>"
}

但我找不到用于替换最后一次出现的picklistOption_id语法metadata

编辑 2
这也有效。好吧,几乎:

"myCustomPicklist": {
    "__metadata": {"uri": "PicklistOption('<PicklistOption_value>')"},
    "externalCode":"<picklistOption_external_code>"
}

这似乎通过了验证:

<d:message>Candidate has been updated successfully</d:message>

PicklistOption_value是一个合法的描述符PicklistOption- 但 SuccessFactors 中的 UI 似乎用null值覆盖了字段的显示内容。
我验证了如果我使用假货PicklistOption_value,我会看到一个错误:

<d:message>Candidate upsert failed: myCustomPicklist invalid,  with the index 0</d:message>
4

1 回答 1

0

对于任何给定的 SAP SuccessFactors 实体(表),选择列表必须与 OptionID 或 externalCode 一起使用的方式由 SAP 在产品中预定义。

对实体使用 OData 字典,对于字段的导航数据,检查类型列。它将是:PicklistOption 或 PickListValueV2。

请参阅 SAP KBA 2773713:https ://launchpad.support.sap.com/#/notes/2773713

如您所述,如果使用 OptionID,则您的解决方案必须考虑不同 SuccessFactors 实例中的不同数值。

于 2021-06-18T14:23:41.037 回答