Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: themax от Февраль 12, 2015, 10:27:30 am
-
Всем добрый день! Я с АБАПом на вы поэтому нужна подсказка как сделать так чтобы на селекционном экране была возможность выбора формата из списка, т.е. есть экранчик селекционный для вывода отчёта, отчёт выводится и там есть возможность убирать юзерам не нужные поля и сохранять это в качестве формата. На селекционном экране я вывел это поле, но нужно имя формата набирать ручками. Как бы сделать так чтобы можно было бы выбрать из списка созданных форматов нужный тебе? Или есть какой нить функицональный модуль например который может вывести из этой структуры, где хранятся эти форматы список в поле на селекционном экране? Вот собственно кусок программы, где я использую в самом отчёте варианты формата:
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
.
Может кто делал? Буду весьма признателен за подсказку.
-
Ну если не поздно, а может кому еще будет нужно:
Поле на селекционной экране
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
....
Как-то так!
-
Круто. Спасибо. Теперь список появляется прямо на селекционном экране.