SAPUI5。我的收件箱。附件异步更新

SAPUI5. My Inbox. Attachments asynchronous update

我使用 SAP 标准库:Inbox。

在库 class S3.controller 通过点击附件图标是 onTabSelect 事件执行, 使

this.fnDelegateAttachmentsCreation();
this.fnFetchDataOnTabSelect("Attachments");
this.fnHandleAttachmentsCountText("Attachments");
this.fnHandleNoTextCreation("Attachments");
break;

fnFetchDataOnTabSelect 进行异步调用。在此调用期间 fnHandleAttachmentsCountText 已执行,因此附件计数更新发生在附件请求准备就绪之前。目前附件请求已准备就绪,没有执行标题更新。

屏幕截图上是 AttachmentCountText“Attachnents (1/1)”,它来自先前选择的项目。 应该是“附件(2/2)”。

此外,如果响应太快,则在收到请求的答复后将视图更改为加载视图。 如果附件列表已从请求回调中更新,则不应第二次更新。

这里好像有东西正在加载,但是请求已经完成了。

如何扩展收件箱,以便在请求准备好后更新附件 header 和内容?

使用的 SAPUI5-版本:1.71.4

其实我不知道这个应用程序是如何工作的,但我想试一试。

由于它是一个异步函数,您也可以随时等待该函数完成。所以在你的情况下,你可以尝试在函数前面设置一个 await 关键字。

await fnFetchDataOnTabSelect("Attachments");

它现在将在此位置等待,直到它完成函数调用,然后才会调用下一个函数。除此之外,您还需要将上层函数 onTabSelect 设置为 async。所以最后它应该看起来像这样。

onTabSelect: async function() {
    // ...
    this.fnDelegateAttachmentsCreation();
    await this.fnFetchDataOnTabSelect("Attachments"); 
    this.fnHandleAttachmentsCountText("Attachments");
    this.fnHandleNoTextCreation("Attachments");
    // ...
}

尽管网络 IDE 可能会向您显示错误,但它确实有效,因为它是官方 JavaScript API.

  • 您使用的是标准 bsp 应用程序 ca_fiori_inbox?
  • 您没有使用自定义编码创建应用程序 ca_fiori_inbox 的扩展项目?

如果是这样,那是 SAP 提供的标准应用程序中的错误。 SAP 发布所谓的 notes 以修复其标准应用程序中的错误。

您可以通过交易 SNOTE 在您的系统中导入笔记。可以向贵公司的 SAP Basis 管理员 寻求帮助。

以下注释准确描述了您的问题


如果您已经扩展了 SAP 标准应用程序 (MyInbox) 而未使用 ExtensionPoints 标准应用程序中的代码更改将不会影响您的自定义扩展。

When overriding a controller method, any functionality that was previously provided by it is no longer available. Likewise, any future changes made to the original controller method implementation will not be reflected in the custom controller.

在这种情况下,您仍然可以实施注释并检查系统上标准控制器与自定义控制器的变化,并更改自定义编码中的相应行。

不修复 SAP 编码。报告并获得修复。


注释 2873960 更正了 abap class 中的编码,而不是 bsp 应用程序 (ca_fiori_inbox) 中的编码。所以一定要导入笔记并检查它是否解决了你的问题。