【问题标题】:Programmatically retrieve BAdI from BW. How?以编程方式从 BW 检索 BAdI。如何?
【发布时间】:2012-11-01 10:02:22
【问题描述】:

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

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

【问题讨论】:

  • 这个的实际应用是什么?

标签: abap sap-bw badi


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以通过这种方式实现:

    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.
    

    将带有源的内部表保存到文件中很简单。

    【讨论】:

      猜你喜欢
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 2014-02-07
      相关资源
      最近更新 更多