以编程方式从BW中检索ABAP Badi

时间:2012-11-12 22:49:15

标签: sap abap

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

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

2 个答案:

答案 0 :(得分:1)

如果您知道实现的名称,则必须查找实现类的名称。根据BAdI类型(经典或快速内核),您必须使用不同的例程来读取类名(尝试功能模块SXO_IMPL_FOR_BADI_READ并阅读类CL_ENH_BADI_RUNTIME_FUNCTIONS方法{{1}的编码了解如何使用各种BAdI类型)。然后,看看名为GET_BADI_SHORTTEXT的函数模块 - 你会发现读取类的结构,它的超类及其方法所需的所有东西(只是导出源代码是不够的,对吧? )。

答案 1 :(得分: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.

将内部表与源文件保存到文件很简单。