Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: jacknk88 от Апрель 18, 2013, 03:57:18 pm
-
есть ФМ FREE_SELECTIONS_DIALOG, который динамический фильтр выводит....только вот он выводит все поля таблицы при первоначальном использовании ФМ FREE_SELECTIONS_INIT и передачи поля selection_id
а есть ли ФМ, который выводил такой же фильтр, только по нашей структуре, точнее мне надо убрать из структуры таблицы несколько полей в этом динамическом фильтре, чтобы пользователь не ввел разные значения в этом фильтре и на селекционном экране
-
нашел стандартный отчет RKPRZSEL...только вот как запустить не знаю((
там сначала используется ФМ FREE_SELECTIONS_RANGE_2_EX ....зачем он нужен не пойму((
-
вроде как разобрался...там в ФМ FREE_SELECTIONS_INIT надо поле kind установить 'F' и в fields_tab занести выбранные поля, а для того, что бы скрыть дерево выбора полей в далее вызывающемся ФМ FREE_SELECTIONS_DIALOG установить пустое поле TREE_VISIBLE
вот чтобы пользователь не смог открыть это дерево, можно свой статус установить, единственная проблема невозможно закрыть это окно)))....может кто-нибудь уже использовал свой статус?
вот тот самый тестовый код...статус я скопировал из RSSYSTDB .. в документации про статус вот что написано:
FU FREE_SELECTIONS_DIALOG PFKEY
_________________________________________________ ___
КрТекст
Individual GUI status (status + program).
Description
This parameter overwrites the GUI status set with the STATUS parameter. You should use this cautiously, taking care that the standard program flow still works. The default status belongs to program "RSSYSTDB".
Функц. модуль
FREE_SELECTIONS_DIALOG
TYPE-POOLS RSDS.
data: TRANGE TYPE RSDS_TRANGE,
srange type RSDS_RANGE,
TEXPR TYPE RSDS_TEXPR,
SELID_FOR_FS LIKE RSDYNSEL-SELID,
char45 TYPE char45,
QCAT LIKE RSDSQCAT,
FRANGE_T TYPE RSDS_FRANGE_T,
FRANGE_S TYPE RSDS_FRANGE,
PFKEY type RSDSPFKEY,
FIELDS LIKE RSDSFIELDS OCCURS 0 WITH HEADER LINE,
unselfields LIKE RSDSFIELDS OCCURS 0 WITH HEADER LINE,
TITLE LIKE SY-TITLE,
TABS LIKE RSDSTABS OCCURS 0 WITH HEADER LINE,
CBPR_CI_NAME LIKE TABS-PRIM_TAB.
PARAMETERS: TAB LIKE RSDSTABS-PRIM_TAB,
FIELD1 LIKE RSDSTABS-PRIM_FNAME.
SELECT-OPTIONS: SEL1 FOR char45.
START-OF-SELECTION.
srange-TABLENAME = TAB.
FRANGE_S-FIELDNAME = FIELD1.
APPEND SEL1 TO FRANGE_S-SELOPT_T.
APPEND FRANGE_S to FRANGE_T.
srange-FRANGE_T = FRANGE_T.
APPEND srange to trange.
CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_EX'
EXPORTING
field_ranges = trange
IMPORTING
expressions = texpr
EXCEPTIONS
OTHERS = 0.
CLEAR trange.
REFRESH tabs.
tabs-prim_tab = tab.
APPEND tabs.
title = 'Дополнительные поля - выбор'.
fields-TABLENAME = tab.
fields-FIELDNAME = FIELD1.
APPEND fields.
IF selid_for_fs IS INITIAL.
CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
expressions = texpr
kind = 'F'
field_groups_key = qcat
IMPORTING
selection_id = selid_for_fs
expressions = texpr
field_ranges = trange
* number_of_active_fields = actnum
TABLES
tables_tab = tabs
fields_tab = fields.
* FIELDS_NOT_SELECTED = unselfields.
ENDIF.
IF sy-subrc = 0.
PFKEY-PFKEY = 'MY_STATUS'.
PFKEY-PROGRAM = sy-repid.
DATA: WHERE_CLAUSES TYPE RSDS_TWHERE,
FCODE_TAB TYPE RSDSFCODE OCCURS 0,
NUMBER_OF_ACTIVE_FIELDS TYPE SY-TFILL.
CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
selection_id = selid_for_fs
title = title
STATUS = 0
as_window = 'X'
PFKEY = PFKEY
TREE_VISIBLE = ''
IMPORTING
WHERE_CLAUSES = WHERE_CLAUSES
expressions = texpr
field_ranges = trange
number_of_active_fields = NUMBER_OF_ACTIVE_FIELDS
TABLES
fields_tab = fields
FCODE_TAB = FCODE_TAB
EXCEPTIONS
no_action = 2.
if sy-ucomm = 'USAV'.
LEAVE SCREEN.
ENDIF.
ENDIF.