程序调用目标包中所有对象的"使用位置"列表?

2020-08-13 23:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 正如标题所示,我正在...

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

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


大家好,

正如标题所示,我正在尝试开发一个程序,该程序获取包名称作为输入,并对该包中的每个对象进行用处搜索。 之后,我希望它显示未在任何地方使用的对象。 这是我的方法:

不幸的是,这总是导致输出一个空表,我的逻辑不正确吗? 方法get_unused_objects。

数据:found_check rsfindlst的类型标准表,
           itab TYPE TABLE OF字符串。
     选择 *
      来自塔迪尔
      插入表@DATA(package_tab)
      在哪里devclass = @i_packagename。  "要从我需要的确切包装中获取物品

     在package_tab处分配ASSIGNING FIELD-SYMBOL()。  "将其转换为字符串,否则将不适用于FM"
       将 -obj_name附加到itab。
     结局。

     在package_tab处分配ASSIGNING FIELD-SYMBOL()。
       通话功能'RS_EU_CROSSREF'
         出口
           i_find_obj_cls ='CLAS'
           no_dialog ='X'
         桌子
           o_founds = found_check
           i_findstrings = Itab
         例外情况
           批次= 1
           batchjob_error = 2
           非法对象= 3
           not_executed = 4
           not_found = 5
           no_cross_for_this_object = 6
           object_not_exist = 7
           错误类型= 8
           其他= 9。
       案例sy-subrc。
         何时1。
           cl_demo_output => display('Some exception')。
         何时2。
           "另一个例外,依此类推。
       结束。
       如果found_check是INITIAL。  "如果FM找不到该对象的用途,
         追加到unused_objects_tab。  "将其添加到表格中,我稍后再返回
       其他。
         清除found_check。  "如果FM发现使用情况,请清除检查并继续。
         继续。
       万一。
     结局。
     r_objects_tab =未使用的_objects_tab。
   终结法。
             
            
                            
   
5条回答
独立观察员
2020-08-14 00:01

1)RS_EU_CROSSREF

< p>在您的情况下,使用FM'RS_EU_CROSSREF'时,您至少必须传递对象的名称以及想要执行的操作的对象类型(对象类) 在哪里使用列表搜索(其他所有参数都是可选的)。 您不能一次同时搜索不同的对象类型。 在大多数情况下,它应为i_find_obj_cls = TADIR-OBJECT,而itab包含TADIR-OBJ_NAME的条目。

  • i_find_obj_cls = TADIR-OBJECT
  • itab包含TADIR- OBJ_NAME

2)关于基于对象类型的可用位置列表的限制

使用FM'RS_EU_CROSSREF'不适用于所有对象类型,例如 您将无法找到功能组FUGR,RFC Services SRFC等。 通常,它们必须在表EUOBJ中可用。

3)功能模块上的where-Used-List

在查找功能模块时,无法在TADIR中直接找到它们,但是 可以通过TADIR中的功能组FUGR找到它,并将其与TFDIR上的select结合使用,而功能组的TADIR-OBJ_NAME需要转换为TFDIR条目的程序名(PNAME),该名称应包括 实际名称(但在名称空间之后):

  • TADIR-OBJECT = FUGR
    TADIR-OBJ_NAME = ZMYFUGR
  • TFDIR-PNAME = SAPLZMYFUGR
    TFDIR-FUNCNAME = zmyfunctionnames
  • TADIR-OBJECT = FUGR
    TADIR-OBJ_NAME =/NAMESP/MYFUGR
  • TFDIR-PNAME =/NAMESP/SAPLMYFUGR
    TFDIR-FUNCNAME =/NAMESP/myfunctionnames

一周热门 更多>