Alv OO程序错误消息号。 0K534

时间:2013-08-22 03:04:29

标签: abap

每次按Enter或任何命令按钮,程序都会提示错误信息。

enter image description here

基于这个帖子http://scn.sap.com/thread/65856我应该声明我的内部表 全球最重要的包括。

即使我已经全局添加了所有变量,但错误仍然相同。

Top Include。

   data: gr_data     type ref to data.
   data: la_data     type ref to data.
   field-symbols: <gt_data> type standard table.

班级声明

   me->get_data( CHANGING c_data = <f_tab> ). " Fetch Dynamic Data  

    METHOD get_data.
      GET REFERENCE OF c_data INTO la_data.
      move la_data TO gr_data.
      assign gr_data->* to <gt_data>.
      me->display( ).

    assign gr_data->* to <gt_data>.
    IF gc_custom_container is initial.
      CREATE OBJECT gc_custom_container
          EXPORTING
             container_name  = gv_mycontainer.
    ENDIF.

    if table is not bound.
       try.
           "// Create ALV Instance
           cl_salv_table=>factory(
             exporting
               r_container    = gc_custom_container
               container_name = 'TC_MIXING'
             importing
               r_salv_table   =  table
             changing
               t_table        = <gt_data>
            ).
         catch cx_salv_msg.                              "#EC NO_HANDLER
       endtry.

      "// Setup ALV Attributes
      functions = table->get_functions( ).
      functions->set_all( abap_true ).

      columns = table->get_columns( ).
      columns->set_optimize( abap_true ).

      try.
          column = columns->get_column( 'MANDT' ).
          column->set_technical( if_salv_c_bool_sap=>true ).
        catch cx_salv_not_found.                        
      endtry.
      "// Dispalay ALV Model
      table->display( ).

    else.
      table->refresh( ).
    endif.
 ENDMETHOD.

和另一个问题:  如何基于field-symbol动态创建结构。这可能吗?

ls_testvar like line of <f_tab>.

感谢和问候, Mapet

3 个答案:

答案 0 :(得分:0)

问题二是可能的,使用运行时类型服务。

看看运行时类型服务。

SE24 CL_ABAP_CLASSDESCR运行时类型服务 CL_ABAP_DATADESCR运行时类型服务 CL_ABAP_ELEMDESCR运行时类型服务 CL_ABAP_INTFDESCR运行时类型服务 CL_ABAP_OBJECTDESCR运行时类型服务 CL_ABAP_REFDESCR运行时类型服务 CL_ABAP_STRUCTDESCR运行时类型服务 CL_ABAP_TABLEDESCR运行时类型服务 CL_ABAP_TYPEDESCR运行时类型服务

你可以获得fieldsymbol的类型并根据它创建一个结构,也许你必须遍历fieldsymbol,如果它是组合类型并添加每个组件。

答案 1 :(得分:0)

我同意,你不应该将字段符号传递给表数据的更改参数!使用全局或静态表。您还应该使用类型化表而不是数据,并在设计时创建字段目录。这大大提高了性能。

干杯

答案 2 :(得分:0)

持有ALV的table变量也必须全局声明。

cl_salv_table=>factory(
             exporting
               r_container    = gc_custom_container
               container_name = 'TC_MIXING'
             importing
               r_salv_table   =  table
             changing
               t_table        = <gt_data>
            ).

您应该将数据检索与显示代码分开,如下所示:

START-OF-SELECTION.
  gr_class->get_data( ).
  CALL SCREEN 2000.

PBO:
  gr_class->display.

您的显示方式:

METHOD display IMPLEMENTATION.
  IF me->gr_container IS NOT BOUND.
    gr_table->display( ).
  ELSE.
    gr_table->refresh( ).
  ENDIF.