如何在CMS中查询用户可访问的所有文件夹?

2020-09-22 17:49发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在为Scheduler实现自...

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

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


我正在为Scheduler实现自定义UI,并且有一个登陆页面,该页面显示了在计划之前用户可用的所有报告和实例。 有没有一种查询CMS的方式来查找我需要扫描该用户可以访问的文档的所有文件夹?

6条回答
路亽曱_Ryan
2020-09-22 18:24

如果您只想向用户显示报告列表,则只需查询" SI_KIND ='Folder'"即可。 想要以"树"格式为用户显示文件夹和报告,则需要使用递归将内容放在正确的位置。 从" root"文件夹开始,获取以根为父文件夹的所有文件夹的列表-SI_PARENTID =23。(注意:当前是4.x中根文件夹的SI_ID。在3.x和更低版本中, 它是0。因此此值将来可能会更改。)创建一个方法,对列表中的每个文件夹执行以下操作:

1。 获取该文件夹的所有子文件夹的列表。
2。 对于每个子文件夹,递归调用此方法以"遍历"文件夹树并将该文件夹添加到树中。
3。 获取文件夹的所有子文档的列表(SI_KIND <>"文件夹")。
4。 将每个文档添加到树中。

下面是我编写的从CMS数据库提取信息并将其保存到CSV文件的程序中的这段代码示例:

 private void loadFolder(IInfoObject o)引发异常{
    //处理该文件夹
     _log.info("加载文件夹" + o.getTitle());
       FolderInfo fldr =新的FolderInfo(o,accessLevels,doAdvSec,doEffectiveRights,treeLevel,_qh,false,_log);
       treeLevel ++;
       fldrIds.add(fldr.getId());
       folder.put(o.getID(),fldr);
      //现在遍历其子文件夹
         字符串qry =" query://{从CI_INFOOBJECTS中选择*,其中(SI_KIND ='文件夹'或SI_KIND ='FavoritesFolder'),并且" +" SI_PARENTID =%d和SI_NAME <>"按SI_NAME的用户文件夹"顺序}";
       _qh.forEachResult(String.format(qry,fldr.getId()),新的InfoObjectWorker(){
         public void doWork(IInfoObject o)引发异常{
           尝试{
             debugStr = String.format(" loadFolder:%d-%s",o.getID(),o.getTitle());
 *******************这是递归部分**************************
             如果(!folders.containsKey(o.getID())){
               loadFolder(o);
                 _log.info(String.format("已加载文件夹%s",o.getTitle()));
             }
 *******************递归结束****************************  ********
           }捕获(SDKException e){
             _log.error("错误加载文件夹" + o.getTitle()+"。Err=" + e.getDetailMessage());
           }
         }
       });
       treeLevel--;
       如果((doReports || doScheds || doFavorites)&&(!noRptFolders.contains(fldr.getTitle()。trim()))){
         debugStr =" loadReports:";
         loadReports(fldr.getId());
         debugStr =" loadFolder:";
       }
     }
 

-戴尔

一周热门 更多>