从类方法调用(报告 - )函数

时间:2016-02-18 10:22:19

标签: class sap title abap dynpro

我想在触发特定的类方法时更改dynpro中的标题栏。所以我想我可以在我的dynpro所在的报告中调用一个函数,这些更改使用'SET TITLE'来更改标题栏内容。

这可能吗?具体如何?还是有更好的方法?

谢谢!

2 个答案:

答案 0 :(得分:1)

在PBO处理期间使用SET TITLEBAR - 如果直接从方法,FORM或模块使用它并不重要。我建议使用一个SET TITLEBAR语句,该语句总是在控制流中的同一点调用,而不是使用SET TITLEBAR语句乱丢代码,以提高可维护性。

答案 1 :(得分:0)

最近我需要实现类似的东西,所以我定义了一个类层次结构,我用方法'CALL_DYNPRO'创建了一个抽象类。此方法旨在在具体类中加载特定的dynpro。

所以,根据我在内部定义的动作,我生成适当的实例,然后方法'CALL_DYNPRO'加载我用自己的gui状态和标题创建的dynpro。

以下内容或多或少是我创建的代码。

********************************* The abstract class
class lc_caller definition abstract.
  public section.
    methods: call_dynpro.
endclass.

class lc_caller implementation.
  method call_dynpro.
  endmethod.
endclass.

********************************* The concrete classes
class lc_caller_01 definition inheriting from lc_caller.
  public section.
    methods: call_dynpro redefinition.
endclass.

class lc_caller_01 implementation.
  method call_dynpro.
    call screen 101.
  endmethod.
endclass.

class lc_caller_02 definition inheriting from lc_caller.
  public section.
    methods: call_dynpro redefinition.
endclass.

class lc_caller_02 implementation.
  method call_dynpro.
    call screen 102.
  endmethod.
endclass.

********************************* Factory    
class caller definition.
  public section.
  class-methods call importing i_type type char01 
                returning value(r_instance) type ref to lc_caller.
endclass.

class caller implementation.
  method call.
    data: caller1 type ref to lc_caller_01,
          caller2 type ref to lc_caller_02.
    case i_type.
      when '0'.
        create object caller1.
        r_instance = caller1.
      when '1'.
        create object caller2.
        r_instance = caller2.
      when others.
    endcase.
  endmethod.
endclass.

start-of-selection.
data obj type ref to lc_caller.
obj = caller=>call( '0' ).
obj->call_dynpro( ).

这是公益组织内部的代码。

Dynpro 101

module status_0101 output.
  set pf-status 'FORM1'.
  set titlebar 'VER'.
endmodule.

Dynpro 102

module status_0102 output.
  set pf-status 'FORM2'.
  set titlebar 'TRA'.
endmodule.

如果明天我需要调用另一个dynpro,我创建它然后编写具体类来加载它。

非常直接且非常好。

希望它有所帮助。