SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Название формата в заголовке отчета



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
mad219
Участник
Участник


Age: 36
Joined: 28 May 2009
Posts: 23
Location: Russia, Perm

PostPosted: Wed Sep 30, 2009 2:22 pm    Post subject: Название формата в заголовке отчета Reply with quote

Добрый день.
Необходимо выводить название формата в заголовок отчета. Формат задается на СЭ или стандартной кнопкой "Выбрать формат...". Отчет строю при помощи CL_SALV_TABLE, проблем при задании формата с СЭ нет, загвоздка с выбором.
Вот что я делал:
Скопировал стандартный GUI-статус и в нем для кнопки загрузки формата присвоил свой код функции, повесил обработчик с инициацией стандартного события на выбор формата. В обработке:
Code:

METHOD on_added_function.
  DATA:
    s_layout TYPE SALV_S_LAYOUT.
    CASE e_salv_function.
      WHEN '&OAD_H'.
        CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
            EXPORTING
              FUNCTIONCODE = '&OAD'.
        s_layout = G_layout->GET_CURRENT_LAYOUT( ).
     ENDCASE.
ENDMETHOD.                    "on_added_function

После этого при нажатии на кнопку открывается диалог выбора формата, но запускается он после выполнения всего последующего в обработчике кода и формат в заголовок при этом выводится старый.
Можно ли действовать таким способом?
Была идея проводить загрузку через 'LVC_VARIANT_SAVE_LOAD' (придется производить конвертацию типов и сомневаюсь, получится ли), использовал ряд других ФМ для загрузки, но, выбрав с их помощью формат, не получалось обновить таблицу (метод REFRESH FULL и SOFT).
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 45
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Wed Sep 30, 2009 2:41 pm    Post subject: Reply with quote

Попробуйте ничего не изменять со статусом, а разместить свою обработку в событии AFTER_SALV_FUNCTION.

Добавил:
Code:
DATA: ispfli TYPE TABLE OF spfli.
DATA: xspfli TYPE spfli.
DATA: gr_table TYPE REF TO cl_salv_table.
DATA: gr_functions TYPE REF TO cl_salv_functions_list.
DATA: gr_events TYPE REF TO cl_salv_events_table.
DATA: gr_selections TYPE REF TO cl_salv_selections.
DATA: gr_display TYPE REF TO cl_salv_display_settings.
DATA: gr_layout TYPE REF TO cl_salv_layout.
DATA: key TYPE salv_s_layout_key.

*----------------------------------------------------------------------*
*       CLASS lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS:
      on_user_command FOR EVENT after_salv_function
        OF cl_salv_events IMPORTING e_salv_function.
ENDCLASS. "lcl_handle_events DEFINITION

DATA: event_handler TYPE REF TO lcl_handle_events.

START-OF-SELECTION.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE ispfli FROM spfli UP TO 100 ROWS.
  CALL METHOD cl_salv_table=>factory
    IMPORTING
      r_salv_table = gr_table
    CHANGING
      t_table      = ispfli.

  gr_functions = gr_table->get_functions( ).
  gr_functions->set_all( abap_true ).

  gr_events = gr_table->get_event( ).
  CREATE OBJECT event_handler.
  SET HANDLER event_handler->on_user_command FOR gr_events.

  gr_layout = gr_table->get_layout( ).
  key-report = sy-repid.
  gr_layout->set_key( key ).
  gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).

  gr_table->display( ).

*----------------------------------------------------------------------*
*       CLASS lcl_handle_events IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
  METHOD on_user_command.
    DATA: command TYPE lvc_title,
          layout TYPE salv_s_layout.

    CASE e_salv_function.
      WHEN '&OAD'.
        layout = gr_layout->get_current_layout( ).

        CONCATENATE 'Layout: ' layout-layout INTO command.
        gr_display = gr_table->get_display_settings( ).
        gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
        gr_display->set_list_header( command ).

    ENDCASE.
  ENDMETHOD.                    "on_user_command
ENDCLASS.                    "lcl_handle_events IMPLEMENTATION
Back to top
View user's profile Send private message Blog
John Doe
Модератор
Модератор


Age: 45
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Wed Sep 30, 2009 3:00 pm    Post subject: Reply with quote

Обновил код снова.
Back to top
View user's profile Send private message Blog
mad219
Участник
Участник


Age: 36
Joined: 28 May 2009
Posts: 23
Location: Russia, Perm

PostPosted: Wed Sep 30, 2009 3:04 pm    Post subject: Reply with quote

Very Happy Спасибо!!! все оказалось так просто...Very Happy
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.