Автор Тема: динамический фильтр  (Прочитано 4411 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн jacknk88

  • Newbie
  • *
  • Сообщений: 120
  • Репутация: +4/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
динамический фильтр
« : Апрель 18, 2013, 03:57:18 pm »
есть ФМ FREE_SELECTIONS_DIALOG, который динамический фильтр выводит....только вот он выводит все поля таблицы при первоначальном  использовании ФМ FREE_SELECTIONS_INIT и передачи поля selection_id
а есть ли ФМ, который выводил такой же фильтр, только по нашей структуре, точнее мне надо убрать из структуры таблицы несколько полей в этом динамическом фильтре, чтобы пользователь не ввел разные значения в этом фильтре и на селекционном экране

Оффлайн jacknk88

  • Newbie
  • *
  • Сообщений: 120
  • Репутация: +4/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: динамический фильтр
« Ответ #1 : Апрель 19, 2013, 08:56:54 am »
нашел стандартный отчет RKPRZSEL...только вот как запустить не знаю((
там сначала используется ФМ FREE_SELECTIONS_RANGE_2_EX ....зачем он нужен не пойму((

Оффлайн jacknk88

  • Newbie
  • *
  • Сообщений: 120
  • Репутация: +4/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: динамический фильтр
« Ответ #2 : Апрель 19, 2013, 11:51:34 am »
вроде как разобрался...там в ФМ 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
Код: You are not allowed to view links. Register or Login
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.