2020-09-01 23:00发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我需要一个报告,该报告从给定的程序包中获取所有功能组,然后从每个功能组中获取所有功能模块。
我有一个包/MSG/R_VERTRAG ,我需要所有以
/MSG/R_VPLAUSI 和/MSG/R_VPRUEF ,然后是一个包含所有功能模块的表。
我该怎么做?
希望您能提供帮助。
此致
Basti
嗨,
选择对我有效...
代替您的功能组名称。.我尝试使用XM06 ..它正常工作..
手动检查TADIR和TFDIR表中SE16中是否有任何数据。对于相应的功能组。
谢谢,
Naren p>
嘿,纳伦,那我现在发现了错误..:X你明白了;)
如果有 对代码很感兴趣..您在这里..
*&--------------------------------------------- ------------------------ * *&报告Z_KOHL_FUBAALV *& *&------------------------------------------------ --------------------- * *&报告适用于所有功能 *& *&埃斯特尔特:01.03.07冯·巴斯蒂安·科尔 *&letzteÄnderung:06.03.07 von Bastian Kohl *& *&------------------------------------------------ --------------------- * 报告z_kohl_fubaalv没有标准页面标题。 *本地数据声明 类型:typ_fugr的开头, fugr类型sobj_name, fugr_t类型区域, typ_fugr的结尾。 数据:typ_fugr的lt_fugr类型表, ls_fugr类似于lt_fugr的行, tfdir的lt_fm类型表, tfdir的lt_fm_lcl类型表, wa输入tfdir, rsfind的lt_findstring类型表, ls_findstring类型rsfind, lt_func类型的函数名称标准表, wa2就像tfdir-funcname一样, lv_devclass类型tdevc-devclass, lt_scope_object_cls类型seu_obj的标准表, ls_scope_object_cls类型seu_obj, ls_scope_devclass类型为range_dev, 范围_dev的lt_scope_devclass类型表, lt_founds rsfindlst的类型表, rsfindlst的lt_founds2类型表, ls_founds,例如rsfindlst, v_lsd1类型c值" I", v_lsd2(2)输入c值'EQ', lt_sa就像zzsa的表格一样, ls_sa类似于lt_sa的行, nix(50)c型值" Baustein wird noch nicht verwendet", container_r输入对cl_gui_custom_container的引用, grid_r键入对cl_gui_alv_grid的引用, ok_code,例如sy-ucomm, save_ok就像sy-ucomm。 字段符号:键入funcname。 * ---------------------------------------- *套餐选择 屏幕100的选择屏幕开始 作为窗口标题text-010。 选择屏幕:跳过, b1块的开始 框架标题为text-020。 参数:paket类型tdevc-devclass默认为"/img/MSG/"。 选择屏幕:b1块的结尾, 跳跃, b2块的开始 框架标题为text-030。 参数:fugrn1(50)类型c默认为"/img/MSG/R_VPRUEF%"。 参数:fugrn2(50)类型c默认为"/img/MSG/R_VPLAUSI%"。 选择屏幕:b2块的结尾, 跳跃, b3块的开始 框架标题为text-040。 参数:such_p作为复选框, 如复选框一样, 如复选框 如复选框一样, such_ps作为复选框, such_dd作为复选框。 选择屏幕:b3块的结尾, 跳跃, 屏幕100的结尾。 选择开始。 呼叫选择屏幕100。 * ---------------------------------------- 刷新lt_fugr。 * ---------------------------------------- *获取功能组 如果fugrn2不是初始的。 选择obj_name 来自塔迪尔 进入ls_fugr-fugr 其中devclass = paket 和object ='FUGR' 和obj_name(如fugrn1)或obj_name(如fugrn2)。 如果(sy-subrc = 0)。 将ls_fugr附加到lt_fugr。 万一。 最终选择。 其他。 *如果fugrn2 =''。 选择obj_name 来自塔迪尔 进入ls_fugr-fugr 其中devclass = paket 和object ='FUGR' 和obj_name像fugrn1。 如果(sy-subrc = 0)。 将ls_fugr附加到lt_fugr。 万一。 最终选择。 万一。 *将" SAPL"添加到ls_fugr-fugr的正确位置 *获得tfdir的pname 在lt_fugr处循环进入ls_fugr。 将"/img/MSG/"替换为"/img/MSG/SAPL"到ls_fugr-fugr中。 将ls_fugr-fugr移至wa-pname。 将wa附加到lt_fm_lcl。 结束循环。 如果不是,则lt_fm_lcl []是初始的。 从tfdir选择* 进入表lt_fm 对于lt_fm_lcl中的所有条目 其中pname = lt_fm_lcl-pname。 万一。 排序lt_fm。 *在lt_func中解析lt_fm 在lt_fm处循环进入wa。 将wa附加到lt_func。 结束循环。 *添加在哪里搜索fuba的位置 如果such_p ='X'。 ls_scope_object_cls ='P'。 "程序员 将ls_scope_object_cls附加到lt_scope_object_cls。 elseif such_o ='X'。 ls_scope_object_cls ='O'。 "克拉森/界面 将ls_scope_object_cls附加到lt_scope_object_cls。 elseif such_wo ='X'。 ls_scope_object_cls ='WO'。 " BSP应用程序 将ls_scope_object_cls附加到lt_scope_object_cls。 elseif such_ff ='X'。 ls_scope_object_cls ='FF'。 " Funktionsbausteinschnittstellen 将ls_scope_object_cls附加到lt_scope_object_cls。 elseif such_ps ='X'。 ls_scope_object_cls ='PS'。 " Dynpros 将ls_scope_object_cls附加到lt_scope_object_cls。 elseif such_dd ='X'。 ls_scope_object_cls ='DD'。 "多马嫩 将ls_scope_object_cls附加到lt_scope_object_cls。 万一。 *将paket强制转换为tdevc-devclass类型 lv_devclass =包装。 *在lt_scope_devclass中附加包装以进行交叉引用检查 *在lt_scope_devclass的字段中添加值 如果lv_devclass不是初始的。 将v_lsd1移至ls_scope_devclass-sign。 将v_lsd2移至ls_scope_devclass-option。 将lv_devclass移到ls_scope_devclass-low。 将ls_scope_devclass附加到lt_scope_devclass。 万一。 *在哪里检查lt_func的所有行 在lt_func处循环,分配。 刷新lt_findstring。 刷新lt_founds。 ls_findstring-object = 。 将ls_findstring附加到lt_findstring。 *调用使用函数 调用函数" RS_EU_CROSSREF" 出口 i_find_obj_cls ='FF' no_dialog ='X' 桌子 i_findstrings = lt_findstring o_founds = lt_founds i_scope_devclass = lt_scope_devclass 例外情况 not_exected = 1 not_found = 2 非法对象= 3 no_cross_for_this_object = 4 批次= 5 batchjob_error = 6 错误类型= 7 object_not_exist = 8 其他= 9。 如果sy-subrc <> 0。 如果sy-subrc = 2。 其他。 消息ID sy-msgid类型sy-msgty编号sy-msgno 与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 万一。 万一。 将" Funktionsbaustein:" ls_findstring连接到ls_sa。 将ls_sa附加到lt_sa。 清除ls_sa。 将ls_sa附加到lt_sa。 在lt_founds循环到ls_sa。 将ls_sa-sa1附加到lt_sa。 结束循环。 如果lt_founds是初始的。 将nix附加到lt_sa。 万一。 清除ls_sa。 将ls_sa附加到lt_sa。 结束循环。 呼叫屏幕" 200"。 包括z_kohl_fubaalv_status_0200。 包括z_kohl_fubaalv_user_200。
转到表TADIR并传递DEVCLASS = ackage名称。
所有返回的对象都属于该pacjage
您可以根据对象='FUGR'进一步过滤功能组。
关于此,
Ravi
我相信您不需要自己的自定义报告,但是您可以使用trx SE84
编程->函数生成器->功能模块
转到SE80,您将在功能组下找到所有FM。
谢谢
Santosh
转到表TADIR。在DEVCLASS字段中输入开发类名称。
然后 在对象中提供用于功能组的FUGR ..
然后在对象名称中给出带有* ..的功能组名称。
您还可以获取用于 功能组..使用表TFDIR ..
在字段PNAME中给出功能组名称...例如,如果功能组名称为XM06 ..则必须在字段PNAME中输入SAPLXM06 来获取FM。
Naren
Hi
您可以选择表ENLFDIR从每个FG获取FM。
关于
最多设置5个标签!
嗨,
选择对我有效...
代替您的功能组名称。.我尝试使用XM06 ..它正常工作..
手动检查TADIR和TFDIR表中SE16中是否有任何数据。对于相应的功能组。
谢谢,
Naren p>
嘿,纳伦,那我现在发现了错误..:X你明白了;)
如果有 对代码很感兴趣..您在这里..
嗨,
转到表TADIR并传递DEVCLASS = ackage名称。
所有返回的对象都属于该pacjage
您可以根据对象='FUGR'进一步过滤功能组。
关于此,
Ravi
我相信您不需要自己的自定义报告,但是您可以使用trx SE84
编程->函数生成器->功能模块
< p> Max转到SE80,您将在功能组下找到所有FM。
谢谢
Santosh
嗨,
转到表TADIR。在DEVCLASS字段中输入开发类名称。
然后 在对象中提供用于功能组的FUGR ..
然后在对象名称中给出带有* ..的功能组名称。
您还可以获取用于 功能组..使用表TFDIR ..
在字段PNAME中给出功能组名称...例如,如果功能组名称为XM06 ..则必须在字段PNAME中输入SAPLXM06 来获取FM。
谢谢
Naren
Hi
您可以选择表ENLFDIR从每个FG获取FM。
关于
一周热门 更多>