Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема розпочата: themax від Лютий 12, 2015, 10:27:30 ДП

Назва: Поле Формат списком.
Відправлено: themax від Лютий 12, 2015, 10:27:30 ДП
Всем добрый день! Я с АБАПом на вы поэтому нужна подсказка как сделать так чтобы на селекционном экране была возможность выбора формата из списка, т.е. есть экранчик селекционный для вывода отчёта, отчёт выводится и там есть возможность убирать юзерам не нужные поля и сохранять это в качестве формата. На селекционном экране я вывел это поле, но нужно имя формата набирать ручками. Как бы сделать так чтобы можно было бы выбрать из списка созданных форматов нужный тебе?  Или есть какой нить функицональный модуль например который может вывести из этой структуры, где хранятся эти форматы список в поле на селекционном экране? Вот собственно кусок программы, где я использую в самом отчёте варианты формата:
data: variante        like disvariant,
      def_variante    like disvariant.
data: is_variant    like disvariant.

это объявление, затем после
parameters: variant1        like disvariant-variant.
start-of-selection.

  variante-report = 'Z_TOK'.
  variante-variant = variant1.

Затем идут нужные селекты, а потом функциональный модуль для вывода алвгрида.
call function 'REUSE_ALV_GRID_DISPLAY'
      exporting
       i_callback_program             = 'Z_TOK'
       i_callback_pf_status_set       = 'PF_STAT_SET'
     i_callback_user_command        = 'USER_COMMAND'
       is_layout                      = layout
*   it_excluding            = GT_EXCLUD[]
       it_fieldcat                    = fieldcat[]
****   I_DEFAULT                      = 'X'
       i_save                         = 'A'
       is_variant                     = variante

***   IS_PRINT                       = PRINT
        tables
          t_outtab                       = tab
      exceptions
*   PROGRAM_ERROR                  = 1
       others                         = 2
                .

Может кто делал? Буду весьма признателен за подсказку.
Назва: Re: Поле Формат списком.
Відправлено: Uukrul від Лютий 16, 2015, 10:42:12 ПП
Ну если не поздно, а может кому еще будет нужно:

Поле на селекционной экране

PARAMETERS: p_alvdef LIKE disvariant-variant.


Далее обработчик выбора вариантов которые сохранены. В первый раз ясно ничего не будет. Но если сохраните,то потом все появится. Переменная DATA: gs_alv_variant LIKE disvariant, - Ее собственно в ALV передаем далее

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alvdef.
  gs_alv_variant-report = sy-repid.
  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      is_variant = gs_alv_variant
      i_save     = 'A'
    IMPORTING
      es_variant = gs_alv_variant
    EXCEPTIONS
      not_found  = 2.
  IF sy-subrc = 2.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    p_alvdef = gs_alv_variant-variant.
  ENDIF.


Ну и далее перед вызовом REUSE_ALV_GRID_DISPLAY делаем нечто такое

  gs_alv_variant-report = sy-repid.
  gs_alv_variant-variant = p_alvdef.
  IF NOT p_alvdef IS INITIAL.
*   Проверить а есть ли такой вариант что передали для использования
    CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
      EXPORTING
        i_save     = 'A'
      CHANGING
        cs_variant = gs_alv_variant
      EXCEPTIONS
        OTHERS     = 1.
    IF sy-subrc <> 0. MESSAGE e321(m7) WITH gs_alv_variant gs_alv_variant-report. ENDIF.
  ENDIF.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
....
      i_save                   = 'A'
      is_variant               = gs_alv_variant
....


Как-то так!
Назва: Re: Поле Формат списком.
Відправлено: themax від Лютий 17, 2015, 11:21:37 ДП
Круто. Спасибо. Теперь список появляется прямо на селекционном экране.