CL_SALV_TABLE中的自定义列名称

时间:2017-06-01 22:53:21

标签: sap abap

您好:

我有一张透明的桌子。

我查询了从此表中检索数据

我使用CL_SALV_TABLE来显示结果

我更改了自定义列名称

有效。

这是代码:

            REPORT  Z_AG_VALIDAR_POLIZA.
            * declara una estructura
            TYPES: BEGIN OF structure_molde_ordenes,
              MSEHL TYPE MSEHL,
              MSEHI   TYPE MSEHI,
              SPRAS   TYPE SPRAS,
            END OF  structure_molde_ordenes.
            * define una estructura
            DATA:
              mi_estructura TYPE  structure_molde_ordenes,
              "crea la estructura real
              mi_tabla TYPE STANDARD TABLE OF structure_molde_ordenes,
              " crea una internal table  a partir de la estructura
              go_alv TYPE REF TO CL_SALV_TABLE,
              " crea el objeto de la clase CL_SALV_TABLE
              columns TYPE REF TO cl_salv_columns_table,
              " crea el objeto de la clase cl_salv_columns_table
              column  TYPE REF TO cl_salv_column.
              " crea el objeto de la clase cl_salv_column
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " tras declarar variables comienza la fiesta
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            START-OF-SELECTION.
             PERFORM fx_obtener_datos.
              " hace el query
              PERFORM initialize_alv.
              PERFORM display_alv.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " function para hacer el query
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM fx_obtener_datos.
             SELECT
              " recupera los  recibos para un cliente
              MSEHL
            MSEHI
            SPRAS
            FROM
              T006A
            INTO  CORRESPONDING FIELDS OF TABLE
              mi_tabla.
             ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " function para inicia la clase para presentar el reporte
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM initialize_alv.
              DATA message TYPE REF TO cx_salv_msg.
              "crea el objeto de la clase cx_salv_msg
              TRY.
                cl_salv_table=>factory(
                IMPORTING
                  r_salv_table = go_alv
                CHANGING
                  t_table      = mi_tabla ).
                columns = go_alv->get_columns( ).
                "ejecuta el metodo de la clase
                PERFORM enable_layout_settings.
                PERFORM optimize_column_width.
                PERFORM change_column_name.
                CATCH cx_salv_msg INTO message.
                " error handling
              ENDTRY.
            ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " muestra el alv
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM display_alv.
              go_alv->display( ).
            ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " layout setting
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM enable_layout_settings.
              DATA layout_settings TYPE REF TO cl_salv_layout.
              DATA layout_key      TYPE salv_s_layout_key.
              layout_settings = go_alv->get_layout( ).
              layout_key-report = sy-repid.
              layout_settings->set_key( layout_key ).
              layout_settings->set_save_restriction( if_salv_c_layout=>restrict_none ).
            ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " optimize_column_width
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM optimize_column_width.
              columns->set_optimize( ).
            ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " change column name
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM change_column_name.
            " cambia el nombre a una columna...
              DATA not_found TYPE REF TO cx_salv_not_found.
              TRY.
                  column = columns->get_column( 'MSEHL' ).
                  column->set_short_text( 'Desc' ).
                  column->set_medium_text( 'Descripcion' ).
                  column->set_long_text( 'Descripcion' ).
            column = columns->get_column( 'MSEHI' ).
                  column->set_short_text( 'Unidad' ).
                  column->set_medium_text( 'Unidad' ).
                  column->set_long_text( 'Unidad' ).
            column = columns->get_column( 'SPRAS' ).
                  column->set_short_text( 'Idioma' ).
                  column->set_medium_text( 'Idioma' ).
                  column->set_long_text( 'Idioma' ).
                CATCH cx_salv_not_found INTO not_found.
                  " error handling
              ENDTRY.
            ENDFORM.

但如果我

  • 更改结构中字段的名称

  • 更改内部表格中的名称

  • 在查询中使用AS

    它停止工作....

我无法在ALV中更改COLUMN NAME

这是我的代码

            REPORT  Z_AG_VALIDAR_POLIZA.
            * declara una estructura
            TYPES: BEGIN OF structure_molde_ordenes,
              mi_desc TYPE MSEHL,
              mi_uni   TYPE MSEHI,
              mi_idio   TYPE SPRAS,
            END OF  structure_molde_ordenes.
            * define una estructura
            DATA:
              mi_estructura TYPE  structure_molde_ordenes,
              "crea la estructura real
              mi_tabla TYPE STANDARD TABLE OF structure_molde_ordenes,
              " crea una internal table  a partir de la estructura
              go_alv TYPE REF TO CL_SALV_TABLE,
              " crea el objeto de la clase CL_SALV_TABLE
              columns TYPE REF TO cl_salv_columns_table,
              " crea el objeto de la clase cl_salv_columns_table
              column  TYPE REF TO cl_salv_column.
              " crea el objeto de la clase cl_salv_column
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " tras declarar variables comienza la fiesta
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            START-OF-SELECTION.
             PERFORM fx_obtener_datos.
              " hace el query
              PERFORM initialize_alv.
              PERFORM display_alv.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " function para hacer el query
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM fx_obtener_datos.
             SELECT
              " recupera los  recibos para un cliente
              MSEHL AS mi_desc
            MSEHI AS mi_uni
            SPRAS AS mi_idio
            FROM
              T006A
            INTO  CORRESPONDING FIELDS OF TABLE
              mi_tabla.
             ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " function para inicia la clase para presentar el reporte
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM initialize_alv.
              DATA message TYPE REF TO cx_salv_msg.
              "crea el objeto de la clase cx_salv_msg
              TRY.
                cl_salv_table=>factory(
                IMPORTING
                  r_salv_table = go_alv
                CHANGING
                  t_table      = mi_tabla ).
                columns = go_alv->get_columns( ).
                "ejecuta el metodo de la clase
                PERFORM enable_layout_settings.
                PERFORM optimize_column_width.
                PERFORM change_column_name.
                CATCH cx_salv_msg INTO message.
                " error handling
              ENDTRY.
            ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " muestra el alv
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM display_alv.
              go_alv->display( ).
            ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " layout setting
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM enable_layout_settings.
              DATA layout_settings TYPE REF TO cl_salv_layout.
              DATA layout_key      TYPE salv_s_layout_key.
              layout_settings = go_alv->get_layout( ).
              layout_key-report = sy-repid.
              layout_settings->set_key( layout_key ).
              layout_settings->set_save_restriction( if_salv_c_layout=>restrict_none ).
            ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " optimize_column_width
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM optimize_column_width.
              columns->set_optimize( ).
            ENDFORM.
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            " change column name
            " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
            FORM change_column_name.
            " cambia el nombre a una columna...
              DATA not_found TYPE REF TO cx_salv_not_found.
              TRY.
                  column = columns->get_column( 'MSEHL' ).
                  " DOES NOT WORK
                  column->set_short_text( 'Desc' ).
                  column->set_medium_text( 'Descripcion' ).
                  column->set_long_text( 'Descripcion' ).
                        column = columns->get_column( 'mi_uni' ).
                        "DOES NOT WORK
                  column->set_short_text( 'Unidad' ).
                  column->set_medium_text( 'Unidad' ).
                  column->set_long_text( 'Unidad' ).
                        column = columns->get_column( 'SPRAS' ).
                  column->set_short_text( 'Idioma' ).
                  column->set_medium_text( 'Idioma' ).
                  column->set_long_text( 'Idioma' ).
                CATCH cx_salv_not_found INTO not_found.
                  " error handling
              ENDTRY.
            ENDFORM.

我怎么能

  • 更改结构中字段的名称

  • 更改内部表格中的名称

  • 在查询中使用AS

更改ALV中的栏目名称

提前告诉你

0 个答案:

没有答案