如何进行条件UI屏蔽

2020-08-25 22:56发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,专家们,有人可以帮我解决以下...

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

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


嗨,专家们,有人可以帮我解决以下与条件用户界面屏蔽有关的要求吗?

问题-根据要求,我们必须屏蔽整个行(如果可能)或多列,具体取决于数据(包含敏感数据)表以及Tcode中的特定字段。

我拥有的信息-

由于UI屏蔽中存在一个约束,该约束限制了我们在获取数据时将确定行数据的方式按列进行,因此BAPI中不满足上述条件。 表的主键字段可以有条件地被屏蔽,因为它们的关系可以直接从DB中选择。 因此,对于POC,只有MARC表中的2个字段被有条件地屏蔽-MATNR(材料)和Plant(WERKS)。 MATNR是表MARC的主键字段,因此我们可以通过从数据库中检查材料来确定该材料是否已扩展到核电站。 WERKS具有直接条件,因此我们知道哪些是特定工厂的。 但是,在其他字段的情况下,我们无法确定该值属于哪个材料或植物,因此无法对其进行屏蔽。我们希望基于MARC-WERKS 的值对MARC表中的其余字段进行屏蔽。/p>

根据不同的标准,超过109个表需要使用类似的遮罩。

对于POC,我们在BAPI/UIM/ES_MASKING-PREPARE_MASK_DATA中完成了以下代码

检查cs_mask_data-fldname EQ'MATNR'或cs_mask_data-fldname EQ'WERKS'或cs_mask_data-fldname EQ'EMATN'。 分配:cs_mask_data-original_val-> * TO ,cs_mask_data-masked_val-> * TO 。 *如果已分配。 案例cs_mask_data-fldname。 当" MATNR"或" EMATN"时。 获取参数ID'MAT'字段lv_matnr。 如果不是lv_matnr是INITIAL。 清除lv_matnr。 设置参数ID'MAT'字段lv_matnr。 万一。 lv_matnr = 。 调用功能'CONVERSION_EXIT_MATN1_INPUT'导出输入= lv_matnr导入输出= lv_matnr例外EXCEPTIONS length_error = 1其他=2。如果sy-subrc <>0。*在此处执行适当的错误处理。 从marc WHERE matnr EQ lv_matnr和werks像中选择COUNT(*)。 如果不是sy-subrc是INITIAL,并且cs_mask_data-auth_flag是INITIAL。 = 。 万一。 当" WERKS"。 如果cs_mask_data-auth_flag是INITIAL并且(1)NE <特定工厂>。 = 。 万一。 当别人。 结束。 ENDIF。