我正在扩展hcm.emp.payslip app并需要在页脚中添加一个按钮....这样做的正确方法是什么?...
选项1:按照此pdf的第13页所述放置扩展点.. - 它没有工作......我完全遵循上述步骤。或者这不会起作用,因为我们正在插入一个自己的扩展点,现在不支持。?
选项2:按照here所述扩展UI控制器挂钩 - 我无法尝试这个,因为文档非常简短,而且我是初学者......我也不确定是否我们可以通过扩展控制器来改变视图
我正在使用eclipse,并安装了工具包插件,我看到他们推荐使用Web IDE的一些地方,但我们希望使用工具包,因为我不确定我们是否有云HANA访问。或者仍然可以使用UI工具包方式..
希望通过详细步骤建议正确的方法......
答案 0 :(得分:1)
您的选项1 是不可能的(为什么?因为要向页脚添加按钮,有controllerHook
而不是UI扩展点)
使用选项2 ,所有控制器中都已提供extensionHooks( S3.controller.j s和 S3_phone.controller.js )应用程序的详细信息页面。
controllerHook:extHookChangeFooterButtons
默认情况下SAP构建headerFooterOptions并将该对象发送到您的扩展程序Hook
/**
* @ControllerHook Modify the footer buttons
* This hook method can be used to add and change buttons for the detail view footer
* It is called when the decision options for the detail item are fetched successfully
* @callback hcm.emp.payslip.view.S3_Phone~extHookChangeFooterButtons
* @param {object} objHdrFtr-Header Footer Object
* @return {object} objHdrFtr-Header Footer Object
*/
if (this.extHookChangeFooterButtons) {
objHdrFtr = this.extHookChangeFooterButtons(objHdrFtr);
}
所以你在扩展控制器中,收到相同的追加:
extHookChangeFooterButtons: function (objHdrFtr) {
//first if the buttonsList is empty, create one.
//Actually in S3.controller.js buttonsList is not defined since there are no buttons
if (!objHdrFtr.buttonList) {
objHdrFtr.buttonList = [];
}
//then create a button:
var extendedButton = {
sId: "EXT_BUTTON",
sI18nBtnTxt: "SAMPLE", //make sure you add texts in respective i18n files
bEnabled: true,
onBtnPressed: function (evt) {
that.handleExtButtonPress(evt);
}
};
objHdrFtr.buttonList.append(extendedButton)
//as you can see SAP says to return the object
return objHdrFtr;
}
建议:在Web IDE中很容易实现。 为什么?
答案 1 :(得分:1)
对于Fiori收件箱中的上述示例,请使用B.aButtonList.push(extendedButton);会将按钮添加到列表的末尾(而不是追加)