点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
使用BI Platform 4.2 SP4 RESTful SDK通过文件夹查找文件夹的最有效方法是什么?
我在PowerShell中当前使用的方法是:#想找到一个路径为Foo/Bar/Baz的文件夹 $ path ='Foo/Bar/Baz' $ Token ='由另一个REST调用填充' #创建标题 $ url =" http://server:6405/biprws/v1/cmsquery" $ headers = @ {} $ headers.Add(" Content-Type"," application/xml") $ headers.Add(" Accept"," application/json") $ headers.Add(" x-sap-logontoken",$ Token) #创建一个查询,该查询将找到与最后一个节点(Baz)的名称匹配的所有文件夹 $ lastNode =($ path -split'/')[-1] $ Query =" SELECT * FROM ci_APPobjects,ci_INFOobjects,ci_SYSTEMobjects si_kind ='Folder'AND si_name ='$ lastNode'" $ payload =` @"$ Query " @ #POST查询到REST(将JSON自动转换为PsCustomObject [];返回进入节点的子项;处理每个子项,将SI_PATH转换为/path/to/folder;过滤与$ path不匹配的对象 (Invoke-RestMethod $ url-Method Post -Headers $ headers-Body $ payload)。 选择对象si_id,si_cuid,si_name,si_kind,si_path, @ {name ='Path'; 表达式= {$ p = $ _; ((($ _。SI_PATH [0] .SI_NUM_FOLDERS..1 |%{$ p.SI_PATH [0]。" SI_FOLDER_NAME $ _"})-加入"/")+"/" + $ _。SI_NAME}} | 哪里对象{$ _。Path -eq $ path}
我知道4.2 SP4不支持path://语法,还有更好的方法吗?
嗨,克雷格,
这是一种无需进行多次查询的方法,并且可能是最有效的。 (不要使用select *)
另一种方法是使用CMSquery返回具有所需名称的所有文件夹的ID,然后查询每个ID以查看其是否具有除"根文件夹"或用户文件夹根之外的父文件夹。
获取/biprws/v1/文件夹/<文件夹ID>
您可以通过解析响应中的来查看是否有父母。
如果" rel = up"链接中的响应在您要查找的路径中没有文件夹名称,则将其过滤掉并移至下一个ID。 并开始解析其路径。 如果您有很多同名文件夹,则此方法可能导致大量请求。
Dan
SELECT *上的好点。
如果将URI查询功能(尤其是" PATH://")添加到SDK,这将*真的*会有所帮助。
代替这一点,另一种选择是将路径包括在数据集中,特别是以允许服务器端过滤的方式。
一周热门 更多>