在故事脚本中使用 setVariableValue API
学习目标
使用 setVariableValue API 可以在故事脚本中设置多个变量。
本课适用于使用来自 SAP Business Warehouse (SAP BW) 系统的查询作为故事数据源的故事开发人员。
要点
在决定是否要在脚本中使用来自 SAP BW 系统的 BEx 查询中的变量时,需要考虑两点,因为这些变量从性能角度来看是非常昂贵的对象。
在使用之前,需要先验证你设置为变量值的所有值 。 验证意味着需要额外的后端请求。 在"性能洞察"对话框中,这些验证请求将显示为额外的查询模型元数据请求。

更改单个变量可能会导致重新渲染多个微件 。 根据变量处理设置(故事范围或微件特定),故事设计本身,如果变量在多个微件中使用,则更改单个变量可能会导致再次渲染多个微件。
建议
在考虑了使用变量对故事性能的影响后,有两个建议可以有效地使用变量。这些只是一般建议,不意味着作为严格规则遵循,因为可能会根据特定故事设计产生差异。
使用多个变量值 。 如果要在脚本中设置多个变量值,请将
setVariableValue()API 保持在一起,最好是逐行排列。在可能的情况下,它们会自动合并到一个请求中。这会减少后端往返次数并提高性能。例如:
Table_1.getDataSource().setVariableValue("U00_VAR_MON_001","201507");
Table_1.getDataSource().setVariableValue("U00_VAR_MON_002","201508");
如果您出于任何原因无法一起写入,请注意某些 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");
2. 使用过滤器而不是变量
。
如果查询中的变量仅用于让用户为维选择筛选器,则考虑改用筛选器。
通常,使用 setDimensionFilter() API 设置过滤器值不需要额外的验证往返行程。