使用BI Platform 4.2 SP4 RESTful SDK通过文件夹路径查找文件夹的最有效方法是什么?

2020-09-24 18:14发布

         点击此处--->   EasySAP.com群内免费提供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://语法,还有更好的方法吗?

         点击此处--->   EasySAP.com群内免费提供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://语法,还有更好的方法吗?

付费偷看设置
发送
2条回答
灬番茄
1楼-- · 2020-09-24 18:54

嗨,克雷格,

这是一种无需进行多次查询的方法,并且可能是最有效的。 (不要使用select *)

另一种方法是使用CMSquery返回具有所需名称的所有文件夹的ID,然后查询每个ID以查看其是否具有除"根文件夹"或用户文件夹根之外的父文件夹。

获取/biprws/v1/文件夹/<文件夹ID>

您可以通过解析响应中的来查看是否有父母。

如果" rel = up"链接中的响应在您要查找的路径中没有文件夹名称,则将其过滤掉并移至下一个ID。 并开始解析其路径。 如果您有很多同名文件夹,则此方法可能导致大量请求。

Dan

野沐沐
2楼-- · 2020-09-24 18:50

SELECT *上的好点。

如果将URI查询功能(尤其是" PATH://")添加到SDK,这将*真的*会有所帮助。

代替这一点,另一种选择是将路径包括在数据集中,特别是以允许服务器端过滤的方式。

一周热门 更多>