从BW中编程检索BAdI。怎么做?

问题描述 投票:2回答:2

我想用程序方式检索使用BW生成的ABAP程序的源代码。

我想有一个ABAP程序,它可以使用BADI的名称作为参数检索BADI的源码,然后将源码保存在本地磁盘上,将每个BADI保存在一个带有程序名称的文件中。

sap abap badi
2个回答
1
投票

如果你知道一个实现的名称,你必须查找实现类的名称。根据BAdI的类型(经典或快速内核),你将不得不使用不同的例程来读取类名(尝试函数模块)。SXO_IMPL_FOR_BADI_READ 并读出班级的编码 CL_ENH_BADI_RUNTIME_FUNCTIONS 办法 GET_BADI_SHORTTEXT 来了解如何使用各种BAdI类型)。) 然后,看一下名为 SEO* - 你会发现所有你需要阅读一个类的结构、它的超类和它的方法的东西(仅仅导出源码是不够的,对吧)。


0
投票

你可以通过这种方式来实现。

SELECT class_name
  INTO TABLE @DATA(lt_badi)
  FROM badi_impl
 WHERE badi_name = 'value'. " <- your badi name

LOOP AT lt_badi ASSIGNING FIELD-SYMBOL(<badi_class>).

  DATA(lo_instance) =  cl_oo_factory=>create_instance( ).
  DATA(lo_source) = lo_instance->create_clif_source( clif_name = CONV string( <badi_class> )
                                                     version   = 'A' ).
  lo_source->get_source( IMPORTING source = DATA(rt_source) ).

ENDLOOP.

把内部表格和源码保存到文件中是很简单的。

© www.soinside.com 2019 - 2024. All rights reserved.