在故事脚本中使用 setVariableValue API

学习目标

  • 使用 setVariableValue API 可以在故事脚本中设置多个变量。

本课适用于使用来自 SAP Business Warehouse (SAP BW) 系统的查询作为故事数据源的故事开发人员。

要点

在决定是否要在脚本中使用来自 SAP BW 系统的 BEx 查询中的变量时,需要考虑两点,因为这些变量从性能角度来看是非常昂贵的对象。

  1. 在使用之前,需要先验证你设置为变量值的所有值 。 验证意味着需要额外的后端请求。 在"性能洞察"对话框中,这些验证请求将显示为额外的查询模型元数据请求。 SAP Performance Insights 对话框,显示其他验证请求,显示为其他查询模型元数据请求。

  2. 更改单个变量可能会导致重新渲染多个微件 。 根据变量处理设置(故事范围或微件特定),故事设计本身,如果变量在多个微件中使用,则更改单个变量可能会导致再次渲染多个微件。

建议

在考虑了使用变量对故事性能的影响后,有两个建议可以有效地使用变量。这些只是一般建议,不意味着作为严格规则遵循,因为可能会根据特定故事设计产生差异。

  1. 使用多个变量值 。 如果要在脚本中设置多个变量值,请将 setVariableValue() API 保持在一起,最好是逐行排列。在可能的情况下,它们会自动合并到一个请求中。这会减少后端往返次数并提高性能。例如:

Table_1.getDataSource().setVariableValue("U00_VAR_MON_001","201507");
Table_1.getDataSource().setVariableValue("U00_VAR_MON_002","201508");

性能洞察对话框,显示选择 BTN_2var 时 onClick 事件脚本的性能。使用的代码写入图像上方。 如果您出于任何原因无法一起写入,请注意某些 API(例如,引用数据源的 API、对值排序等)会阻止系统合并请求。例如:

Table_1.getDataSource().setVariableValue("U00_VAR_MON_001","201507");
Table_1.sortByMember("0D_NW_PRID__0D_NW_PRCAT",SortOrder.Descending);
Table_1.getDataSource().setVariableValue("U00_VAR_MON_002","201508");

性能洞察对话框,显示选择 BTN_VarSortVar 时 onClick 事件脚本的性能。使用的代码写入图像上方。 2. 使用过滤器而不是变量 。 如果查询中的变量仅用于让用户为维选择筛选器,则考虑改用筛选器。 通常,使用 setDimensionFilter() API 设置过滤器值不需要额外的验证往返行程。