2020-09-09 23:03发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
假设在SAP Fiori lauchpad中有3个用于特定目录的图块。 如下面的屏幕截图。
如何获得该特定目录的PFCG角色?
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
你好Vincent,
感谢您的帮助。我将尝试该程序。
但是,是否有任何T代码或配置,可以在其中看到特定目录ID的PFCG角色?
谢谢
Rohit
最多设置5个标签!
HI
我为此创建了一个程序
享受;-)
KR
Vincent
你好Vincent,
感谢您的帮助。我将尝试该程序。
但是,是否有任何T代码或配置,可以在其中看到特定目录ID的PFCG角色?
谢谢
Rohit
一周热门 更多>