我如何知道PFCG在SAP Fiori中特定目录ID的作用

2020-09-09 23:03发布

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

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


假设在SAP Fiori lauchpad中有3个用于特定目录的图块。 如下面的屏幕截图。

如何获得该特定目录的PFCG角色?

(208.6 kB)

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

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


假设在SAP Fiori lauchpad中有3个用于特定目录的图块。 如下面的屏幕截图。

如何获得该特定目录的PFCG角色?

(208.6 kB)
付费偷看设置
发送
2条回答
黑丝骑士
1楼-- · 2020-09-09 23:31

HI

我为此创建了一个程序

数据:lt_agr_hier agr_hier的类型表,
       lt_agr_hiert agr_hiert的类型表,
       lt_agr_buffi agr_buffi的类型表。
 数据:lt_roles agr_hier的类型表。
 数据:检查,发现TYPE布尔值。
 常量:ct_group TYPE char30 VALUE'Fiori Group',
            ct_catalog TYPE char30值'Fiori目录'。
 FIELD-SYMBOLS 与lt_roles类似。
 FIELD-SYMBOLS 与lt_agr_hier类似。
 FIELD-SYMBOLS 与lt_agr_hiert相似。
 数据:ls_agr_buffi TYPE agr_buffi。
 数据:ls_agr_hiert TYPE agr_hiert。
 DATA lv_part1 TYPE字符串。
 DATA lv_part2 TYPE字符串。
 选择*从agr_hier到表lt_agr_hier中,在其中报告EQ'GROUP_PROVIDER'或报告EQ'CAT_PROVIDER'。
 选择*从agr_hiert到表lt_agr_hiert中,对于lt_agr_hier中的所有条目,其中agr_name = lt_agr_hier-agr_name并且spras ='E'。
 选择* FROM agr_buffi到表lt_agr_buffi中。
 SELECT * FROM/ui2/pb_c_pagemt在表@DATA(lt_pagemt)中的语言EQ为'N'。
 SELECT * FROM/ui2/pb_c_paget INTO TABLE @DATA(lt_paget)在语言EQ'N'中。
 SELECT * FROM/ui2/pb_c_propmt INTO TABLE @DATA(lt_prompt)在语言EQ'N'中。
 选择* FROM/ui2/pb_c_chipm INTO TABLE @DATA(lt_chipm)。
 SELECT * FROM/ui2/pb_c_chipmt在表@DATA(lt_chipmt)中的语言EQ为'N'的情况下。
 带有标题标题文本001的bl1块的选择屏幕开始。
 参数:c_cat AS复选框默认abap_true。
 参数:c_grp AS复选框默认abap_true。
 bl1的选择屏幕结尾。
 带有标题标题文本002的bl2块的选择屏幕开始。
 参数:字型ssm_title。
 参数:grpdesc TYPE ssm_title。
 块bl2的选择屏幕结束。
 带有标题标题文本003的bl3块的选择屏幕开始。
 参数:catid TYPE ssm_title。
 参数:catdesc TYPE ssm_title。
 bl3的选择屏幕结束。
 选择*从agr_hier到表lt_roles中(报告EQ'GROUP_PROVIDER'或报告EQ'CAT_PROVIDER')。
 SORT lt_roles升序。
 从lt_roles比较agr_name中删除相邻的重复项。
 选择agr_hier〜agr_name作为agr_name,
        agr_hier〜report AS报告,
        agr_hier〜object_id AS object_id,
        agr_texts〜text AS角色描述,
        agr_texts〜spras AS语言,
        agr_buffi〜url AS网址,
        agr_hiert〜text AS文字,
      /ui2/pb_c_chipm〜BASECHIPID为tile_id
   从agr_hier作为agr_hier
   左外联接agr_texts AS agr_texts
     开启agr_hier〜agr_name = agr_texts〜agr_name
     左外联接agr_buffi AS agr_buffi
     开启agr_hier〜agr_name = agr_buffi〜agr_name并且
        agr_hier〜object_id = agr_buffi〜object_id
     左外联接agr_hiert AS agr_hiert
       开启agr_hier〜agr_name = agr_hiert〜agr_name AND
           agr_hier〜object_id = agr_hiert〜object_id
     左外联接/ui2/pb_c_chipm AS/ui2/pb_c_chipm
       开启agr_buffi〜url =/ui2/pb_c_chipm〜parentid
     插入表@DATA(lt_roles2)
   在哪里(agr_hier〜report EQ'GROUP_PROVIDER'或agr_hier〜report EQ'CAT_PROVIDER')和agr_texts〜spras EQ'N'和agr_hiert〜spras EQ'N'。
   按agr_name排序lt_roles2。
 如果c_cat EQ abap_false。
   删除lt_agr_hier,在其中报告EQ'CAT_PROVIDER'。
 万一。
 如果c_grp EQ abap_false。
   删除lt_agr_hier,在其中报告EQ'GROUP_PROVIDER'。
 万一。
 写入:" PFCG角色" COLOR COL_KEY," Fiori组" COLOR COL_GROUP," Fiori目录" COLOR COL_NEGATIVE," Fiori App" COLOR COL_TOTAL。
 跳过2。
 * FIELD-SYMBOLS 与lt_roles2类似。
 循环至lt_roles分配。
   检查= abap_false。
   找到= abap_false。
 *执行过滤器:
 *搜索组说明:
   如果grpdesc不是初始的。
     使用键agr_name =  -agr_name spras ='N'读取表lt_agr_hiert到ls_agr_hiert中。
     如果sy-subrc = 0。
       使用键agr_name =  -agr_name report ='GROUP_PROVIDER'读取表lt_agr_hier,不传送任何字段。
       如果sy-subrc = 0。
         IF ls_agr_hiert-text CS grpdesc。
           找到= abap_true。
         万一。
       万一。
     万一。
   万一。
 *搜索目录说明:
   如果catdesc不是初始的。
     使用键agr_name =  -agr_name spras ='N'读取表lt_agr_hiert到ls_agr_hiert中。
     如果sy-subrc = 0。
       使用键agr_name =  -agr_name report ='CAT_PROVIDER'传输任何字段,读取表lt_agr_hier。
       如果sy-subrc = 0。
         IF ls_agr_hiert-text CS catdesc。
           找到= abap_true。
         万一。
       万一。
     万一。
   万一。
 *搜索groupid:
   如果grpid不是初始的。
     在lt_agr_hier分配的地方循环,在其中agr_name =  -agr_name并报告='GROUP_PROVIDER'。
       使用键object_id =  -object_id agr_name =  -agr_name读取表lt_agr_buffi INTO ls_agr_buffi。
       分割ls_agr_buffi-url AT':'INTO lv_part1 lv_part2。
       分割lv_part2 AT'?'  INTO lv_part1 lv_part2。
       如果lv_part1 CS grpid。
         找到= abap_true。
         出口。
       万一。
     结局。
   万一。
 *搜索catid:
   如果catid不是初始的。
     在lt_agr_hier分配的地方循环播放,其中agr_name =  -agr_name并报告='CAT_PROVIDER'。
       使用键object_id =  -object_id agr_name =  -agr_name读取表lt_agr_buffi INTO ls_agr_buffi。
       分割ls_agr_buffi-url AT':'INTO lv_part1 lv_part2。
       分割lv_part2 AT'?'  INTO lv_part1 lv_part2。
       如果lv_part1 CS catid。
         找到= abap_true。
         出口。
       万一。
     结局。
   万一。
   如果grpid不是初始的,或者grpdesc不是初始的,或者catid不是初始的,或者catdesc不是初始的。
     如果找到= abap_true。
       检查= abap_true。
     万一。
   其他。
     检查= abap_true。
   万一。
   如果检查= abap_true。
     WRITE:/'PFCG-role:', -agr_name颜色COL_KEY。
     在lt_agr_hier分配处环回,其中agr_name =  -agr_name。
       新队。
       写:'|'。
       新队。
       写:'---'。
 *如果 -report ='GROUP_PROVIDER'。
 *写:ct_group(16)颜色COL_GROUP。
 *      万一。
 *如果 -report ='CAT_PROVIDER'。
 *写:ct_catalog(16)颜色COL_NEGATIVE。
 *      万一。
       读取带键的表lt_agr_hiert object_id =  -object_id agr_name =  -agr_name spras ='N'INTO ls_agr_hiert。
 *写:ls_agr_hiert-text。
       使用键object_id =  -object_id agr_name =  -agr_name读取表lt_agr_buffi INTO ls_agr_buffi。
       分割ls_agr_buffi-url AT':'INTO lv_part1 lv_part2。
       分割lv_part2 AT'?'  INTO lv_part1 lv_part2。
       如果 -report ='GROUP_PROVIDER'。
         写:lv_part1颜色COL_GROUP。
       万一。
       如果 -report ='CAT_PROVIDER'。
         写:lv_part1颜色COL_NEGATIVE。
       万一。
       在lt_pagemt INTO DATA(ls_pagemt)处循环,在语言EQ'N'和ID EQ lv_part1中。
         写:ls_pagemt-title。
       结局。
       在lt_pagemt INTO DATA(ls_pagemt2)的LOOP AT处在语言EQ'N'和ID EQ ls_agr_buffi-url处。
         写:ls_pagemt2-title。
       结局。
       在lt_paget处将LOOP插入DATA(ls_paget)中的语言EQ'N'和ID EQ ls_agr_buffi-url。
         写:ls_paget-title。
       结局。
 *写:lv_part1。
       在lt_prompt放入数据(ls_prompt)的地方,将bag_parentid CS lv_part1和名称EQ'display_title_text'和值NE''放入。  " tekst op de fiori应用程序
         新队。
         写:'|'。
         新队。
         写:'---',ls_prompt-value(80)颜色COL_TOTAL。
       结局。
       在lt_chipm INTO DATA(ls_chipm)的LOOP AT处在父代EQ lv_part1处。
         新队。
         写:'|'。
         新队。
         使用键id = ls_chipm-basechipid读取表lt_chipmt到DATA(ls_chip_t)中。
         写:'---',ls_chip_t-title(50)颜色COL_TOTAL。
       结局。
 *在lt_chipm INTO DATA(ls_chipm)上的LOOP AT父级EQ lv_part1。
 *使用键id = ls_chipm-id读取表lt_chipmt到DATA(ls_chipmt)中。
 *如果ls_chipmt-title不是INITIAL。
 *          新队。
 *写:'|'。
 *          新队。
 *写:'---',ls_chipmt标题为COLOR COL_TOTAL。
 * ELSE。
 *使用键bag_parentid = ls_chipm-id name ='display_title_text'将表lt_prompt读入DATA(ls_propmt)。
 *如果ls_propmt-value不是INITIAL。
 *            新队。
 *写:'|'。
 *            新队。
 *写:'---',ls_propmt值COLOR COL_TOTAL。
 *          万一。
 *        万一。
 * ENDLOOP。
     结局。
     跳过1。
   万一。
 ENDLOOP。

享受;-)

KR

Vincent

梦想连接
2楼-- · 2020-09-09 23:53

你好Vincent,

感谢您的帮助。我将尝试该程序。

但是,是否有任何T代码或配置,可以在其中看到特定目录ID的PFCG角色?

谢谢

Rohit

一周热门 更多>