存储值以供以后使用SAP MDK

2020-08-15 17:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嘿社区,

我面临着巨大的挑战。 我在后端有一个解析查询,我想比较一些值并用它们计算。 我能够创建一个可以与其他价值进行比较的规则,并且我也能够进行计算。 不幸的是,我的程序真的很慢,因为我在一页上使用了大约4条规则,并且每次有一个后端的odata调用都会花费很多时间(每页10到20秒)。

以下是我想做的简短描述:

获取按产品分类的上个月的KPI(值1)。
获取按去年分组的KPI(值2)。

将值1与值2进行比较,然后返回偏差。

等...

问题是我无法存储值1并以后在其他规则中使用它。 结果是,当有新规则时,我必须从后端再次获取值。 我也不能在一条规则中使用" .read(Services,Entity,QueryOption等)"两次并比较这些值,因为当我尝试使用它们时它们是对象:(

所以,在 最终它可以正常工作,但是真的很慢。我听到了一些关于clientData的信息,但我不确定如何在运行时将值存储在某个地方:(如果您能提供帮助,那将是很好。这是我的规则示例:
< br> export默认函数GetPicturePath(context){/这是第一个值。我使用queryoptions来获取本周的值。稍后,我将其与.read
var binding = context.getBindingObject()。SL;返回context.read('/ServiceLevel/Services/AllSL.service','Z_Q_SL',[],'$ filter = LastMonth eq \''+ 1 +'\'&$ select = ArticleName,SL')。then(函数(结果){如果(result.length> 0){var ServiceLevel = result.getItem(0).SL; return(binding-ServiceLevel).toFixed(2);)else {return 200;}})。catch(function(error){alert(error);});}

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嘿社区,

我面临着巨大的挑战。 我在后端有一个解析查询,我想比较一些值并用它们计算。 我能够创建一个可以与其他价值进行比较的规则,并且我也能够进行计算。 不幸的是,我的程序真的很慢,因为我在一页上使用了大约4条规则,并且每次有一个后端的odata调用都会花费很多时间(每页10到20秒)。

以下是我想做的简短描述:

获取按产品分类的上个月的KPI(值1)。
获取按去年分组的KPI(值2)。

将值1与值2进行比较,然后返回偏差。

等...

问题是我无法存储值1并以后在其他规则中使用它。 结果是,当有新规则时,我必须从后端再次获取值。 我也不能在一条规则中使用" .read(Services,Entity,QueryOption等)"两次并比较这些值,因为当我尝试使用它们时它们是对象:(

所以,在 最终它可以正常工作,但是真的很慢。我听到了一些关于clientData的信息,但我不确定如何在运行时将值存储在某个地方:(如果您能提供帮助,那将是很好。这是我的规则示例:
< br> export默认函数GetPicturePath(context){/这是第一个值。我使用queryoptions来获取本周的值。稍后,我将其与.read
var binding = context.getBindingObject()。SL;返回context.read('/ServiceLevel/Services/AllSL.service','Z_Q_SL',[],'$ filter = LastMonth eq \''+ 1 +'\'&$ select = ArticleName,SL')。then(函数(结果){如果(result.length> 0){var ServiceLevel = result.getItem(0).SL; return(binding-ServiceLevel).toFixed(2);)else {return 200;}})。catch(function(error){alert(error);});}

付费偷看设置
发送
4条回答
Bunny_CDM
1楼-- · 2020-08-15 17:44

Fabian

有两种方法可以轻松地将值持久保存在MDK应用程序中。

如果需要在应用程序的各个启动之间保留这些值,则可以使用应用程序设置。 请记住,如果您重置/注销应用程序,请清理您的值。 如果删除该应用程序,则所有保存的值都将自动清除。

如果只需要将它们存储在当前会话的内存中,则可以使用客户端数据。 客户端数据与UI元素相关联,并将仅在该元素的生命周期内持续存在。 如果要在应用程序的整个生命周期内存储状态,则通常将其存储在客户端级别的"客户端数据"中,因为通常在应用程序执行期间,该主页通常只加载一次,而不重新加载。

In 您的规则便可以检索存储的值,并在比较中使用它,而不必重新计算该值。

—比尔

哎,真难
2楼-- · 2020-08-15 18:10

嘿比尔,

感谢您的回答!
我仍然无法设置此值并在以后的其他规则中获取它。
我现在有两个规则:
#1
导出默认函数SetValueOne(clientAPI){

var pageproxy = clientAPI.evaluateTargetPath('#Page:Main/#Control:SectionedTable0/#Value');

pageproxy.setValue(5);

}

#2

导出默认函数GetValueOne(clientAPI){}

但是我的结果仍然是空的:(
如果您能在这里再次提供帮助,那将是非常好的:)某些示例代码片段将非常有用。 :)

亲切的问候
Fabian

95年老男孩
3楼-- · 2020-08-15 17:44

在客户端数据中设置值

导出默认功能SetClientData(context){
//通过为适当的对象调用getClientData()来检索客户端数据
//在此示例中,下一行将获取应用程序主页的客户端数据
 让clientData = context.evaluateTargetPathForAPI('#Page:Main')。getClientData();
//客户数据是一个javascript对象。 在客户端数据上设置所需的任何属性
 clientData.Message ='我的客户数据值';
 } 

要使用动态目标路径绑定来检索元数据中的值

 {
 " Message":" {{##:Main/#ClientData/#Property:Message}}",
 " OKCaption":"确定",
 " Title":"主页ClientData",
 " _Type":" Action.Type.Message"
 }
 

要检索规则中的值,只需再次获取客户端数据并引用属性

导出默认功能ReadClientData(context){
//通过为适当的对象调用getClientData()来检索客户端数据
//在此示例中,下一行将获取应用程序主页的客户端数据
 让clientData = context.evaluateTargetPathForAPI('#Page:Main')。getClientData();
 console.log(`从客户端数据中获取的值为:$ {clientData.Message}`);
 } 
天桥码农
4楼-- · 2020-08-15 17:55

要在应用程序设置中获取并设置值

导出默认功能UseAppSettings(context){
    //获取appSettings模块参考
    //该模块的参考信息在这里https://docs.nativescript.org/ns-framework-modules/application-settings
     让appSettings = context.nativescript.appSettingsModule;
     var storageValue;
    //查看密钥是否存在于appSettings中
     如果(appSettings.hasKey(`MyAppSettingsValue`)){
         storedValue = appSettings.getString(`MyAppSettingsValue`);
     }其他{
         appSettings.setString(`MyAppSettingsValue`,'我的存储的应用程序设置字符串');
     }
 }
 

应用程序设置值在应用程序启动之间保持不变。 如果用户从您的应用程序注销返回到欢迎屏幕,那么在注销过程中,您应删除您设置的所有应用程序设置值。 不要盲目地在应用程序设置上调用clear方法,因为客户端也会在其中存储值,清除应用程序设置会导致问题。

一周热门 更多>