Текущее время: Вс, июл 27 2025, 14:15

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Чт, авг 22 2013, 15:09 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 133
Откуда: Набережные Челны
Пол: Мужской
Да, я неправильно вас понял.
Для начала попробуйте определить средство-поиска для поля VTWEG в таблице VBAK, и пропишите входной параметр с VBAK-VKORG. Т.к. ракурс M_VMVAA использует VBAK-VTWEG.

Если не поможет, то попробуйте использовать ФМ TABCONTROL_RETRIEVE_SEL_OPTS, handle окна ищите в стэке.

А проще всего нарисовать свой экран для F4


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Чт, авг 22 2013, 15:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
broker.chelny написал:
Да, я неправильно вас понял.
Для начала попробуйте определить средство-поиска для поля VTWEG в таблице VBAK, и пропишите входной параметр с VBAK-VKORG. Т.к. ракурс M_VMVAA использует VBAK-VTWEG.

Если не поможет, то попробуйте использовать ФМ TABCONTROL_RETRIEVE_SEL_OPTS, handle окна ищите в стэке.

А проще всего нарисовать свой экран для F4


я не для VBAK СП делаю. просто привела в качестве примера :) У меня свои z-таблицы, расширение для бизнес-партнера.

ракурсы всяческие перепробовала - безрезультатно :(

попробую ФМ TABCONTROL_RETRIEVE_SEL_OPTS, а вдруг?

свой экран для F4 - не делала еще, но мне надо свое СП будет добавить в стандартное комплексное BUPA. Плохо пока представляю, как свой экран туда ляжет?

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Чт, авг 22 2013, 16:43 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
broker.chelny написал:
Если не поможет, то попробуйте использовать ФМ TABCONTROL_RETRIEVE_SEL_OPTS, handle окна ищите в стэке.


можно поподробнее - где в стэке найти handle окна?

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Пт, авг 23 2013, 06:57 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 133
Откуда: Набережные Челны
Пол: Мужской
Посмотрите переменные программы SAPLWDTM.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Пт, авг 23 2013, 07:51 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Пробовал - не помогает. По handle он в любом случае вернет данные из TOP'ового СП, как ни странно. Кстати, handle недостаточно - потребуется ID shell event'а. Хотя, можно обойтись и номером закладки.
Все это - уже область работы с OCX Controls, считывание данных с экранов TabStrip'а. Вряд ли будет надежно и понятно. Не рекомендую.
Экспортировать переменные в память можно в том SHLP-Exit'е СП, данные которого хотим увидеть в другом, на шаге выбора данных. Значение считать ФМ F4UT_PARAMETER_VALUE_GET. Exit-процедуру, если есть стандартная, можно расширить (в начале ФМ). Если нет - добавить свою, благо стандартные СП не требуют ключа доступа при изменении.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Пт, авг 23 2013, 08:52 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
broker.chelny написал:
Посмотрите переменные программы SAPLWDTM.


посмотрела -даже нашла, что можно вытащить из памяти:
В ФМ для СП2(текущего):

Code:
import dialogpage from memory id 'MATCHCODE_OCX_DLGPAGES'.
" в таблице две строки - TABCTRL "верхнего" СП и текущего
READ TABLE dialogpage with key  SHLP_NAME = <имя верхнего СП>.
import resultbuffer from memory id 'TABControl-RSBF'.
read table resultbuffer with key tab_ctrl = dialogpage-TABCTRL.


RESULTBUFFER-SELOPT[] –тут и есть нужные нам ограничения "верхнего" СП. Но! Они попадут сюда, если на экране СП был нажат Enter после выбора или ввода ограничений. А пока его не нажали – данные из полей не считаны и SELOPT[] пустой.

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Пт, авг 23 2013, 08:59 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
nicky555 написал:
Пробовал - не помогает. По handle он в любом случае вернет данные из TOP'ового СП, как ни странно. Кстати, handle недостаточно - потребуется ID shell event'а. Хотя, можно обойтись и номером закладки.


Пожалуйста, приведите код, как Вы это делали!
Мне нужны данные из TOP'ового СП!

nicky555 написал:
Экспортировать переменные в память можно в том SHLP-Exit'е СП, данные которого хотим увидеть в другом, на шаге выбора данных. Значение считать ФМ F4UT_PARAMETER_VALUE_GET. Exit-процедуру, если есть стандартная, можно расширить (в начале ФМ). Если нет - добавить свою, благо стандартные СП не требуют ключа доступа при изменении.

экспортировать в память на шаге выбора данных в одном СП не получится - во-первых, могут же не воспользоваться СП, а просто ввести значение в поле. Во-вторых - и главное - когда СП вызывается с экрана другого СП, шага RETURN не возникает, после DISP устанавливается EXIT.

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Пт, авг 23 2013, 09:15 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Очевидно, мы видим задачу по-разному.
1. Есть СП, у которого есть экран выбора.
2. На этом экране выбора есть ряд полей, к одному из которых привязано другое СПх.
3. Задача - передать значения параметров СП на экран параметров СПх.
Все так или вы подразумеваете другое?

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Пт, авг 23 2013, 09:29 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
nicky555 написал:
Очевидно, мы видим задачу по-разному.
1. Есть СП, у которого есть экран выбора.
2. На этом экране выбора есть ряд полей, к одному из которых привязано другое СПх.
3. Задача - передать значения параметров СП на экран параметров СПх.
Все так или вы подразумеваете другое?


все так - нужно ограничить СПх по одному из параметров на экране верхнего СП.

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Пт, авг 23 2013, 10:28 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
большущее спасибо broker.chelny и nicky555 :P
итак, код.
Code:


DATA: p_h_mcx TYPE cntl_handle,
        line_selopt LIKE LINE OF shlp-selopt,
        select_options LIKE ddshselopt OCCURS 0 WITH HEADER LINE,
        tabcontrols LIKE mctbc_ctrl OCCURS 0 WITH HEADER LINE,
        dialogpage LIKE mctbc_dp OCCURS 1 WITH HEADER LINE,
        help_descr TYPE shlp_descr_t,
        maxrecords TYPE i,
        rc LIKE sy-subrc,
        l_ddshselopt TYPE ddshselopt.

  IF callcontrol-step = 'PRESEL1'.

    IMPORT dialogpage FROM MEMORY ID 'MATCHCODE_OCX_DLGPAGES'.
    READ TABLE dialogpage WITH KEY  shlp_name = 'ZRE_SH_0037'. " верхнее СП
    CHECK sy-subrc = 0.

    IMPORT tabcontrols FROM MEMORY ID 'TABControl-OCX'.
    READ TABLE tabcontrols WITH KEY  handle = dialogpage-tabctrl.
    IF sy-subrc = 0.
      p_h_mcx-obj-header = tabcontrols-or_header.
      p_h_mcx-obj-type = tabcontrols-or_type.
      p_h_mcx-obj-handle = tabcontrols-or_handle.
      p_h_mcx-shellid  =  tabcontrols-shellid.
      p_h_mcx-parentid  =  tabcontrols-parentid.
      p_h_mcx-c_type = tabcontrols-c_type.
      p_h_mcx-clsid = tabcontrols-or_clsid.
      p_h_mcx-origin  = tabcontrols-origin.
      p_h_mcx-handle_type  =  'OCX'.
      PERFORM get_sel_opts(saplwdtm) USING p_h_mcx dialogpage-tabctrl dialogpage-dialognr
         CHANGING help_descr maxrecords rc.

      LOOP AT  help_descr-selopt INTO l_ddshselopt WHERE  shlpfield = 'ZPRIZNAK'. " значение, которым ограничиваем данные в текущем СП
        line_selopt-shlpname  = 'ZRE_SH_ZPRIZN1'.
        line_selopt-shlpfield = 'ZPRIZNAK'.
        line_selopt-sign = l_ddshselopt-sign.
        line_selopt-option = l_ddshselopt-option.
        line_selopt-low = l_ddshselopt-low.
        line_selopt-high = l_ddshselopt-high.
        APPEND line_selopt TO shlp-selopt.
      ENDLOOP.
    ENDIF.

  ENDIF.

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Пт, авг 23 2013, 12:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
круто :)
я решил немного по-другому, но смысл тот же:
Code:
* необходимые описания типов/переменных
  TYPE-POOLS: cntl,
              shlp,
              abap.

  INCLUDE wdtgdefs.

  DATA: ld_shlp_wanted TYPE shlpname VALUE <имя_СрПоиска_исходного>.

* определяем Handle TOP-СрПоиска (с которого пришел вызов)
  DATA: ls_tabc_shlptab LIKE tabc_shlpstr,
        lf_found        TYPE abap_bool VALUE abap_false.

  IMPORT tabc_shlptab FROM MEMORY ID 'TABControl-SHLP'.

  LOOP AT tabc_shlptab INTO ls_tabc_shlptab.
    LOOP AT ls_tabc_shlptab-shlp_tab TRANSPORTING NO FIELDS
                                     WHERE shlpname = ld_shlp_wanted.
      EXIT.
    ENDLOOP.
    IF sy-subrc IS INITIAL.
      lf_found = abap_true.
      EXIT.
    ENDIF.
  ENDLOOP.
  IF lf_found = abap_false.
    EXIT.
  ENDIF.

* определяем Shell ID для OCX TOP-СрПоиска
  DATA: ls_tabcontrol TYPE mctbc_ctrl.

  IMPORT tabcontrols FROM MEMORY ID 'TABControl-OCX'.
  READ TABLE tabcontrols INTO ls_tabcontrol
                         WITH KEY handle = ls_tabc_shlptab-handle.
  IF sy-subrc <> 0.
    EXIT.
  ENDIF.

* определяем Handle OCX TOP-СрПоиска
*   и номер диалога (с которого пришел вызов вторичного СрПоиска)
  DATA: dialogpage LIKE mctbc_dp OCCURS 1 WITH HEADER LINE.

  DATA: l_control TYPE cntl_handle,
        l_tab_id  TYPE i,
        l_dialog  TYPE i.

  FIELD-SYMBOLS: <dialog_page> LIKE LINE OF dialogpage.

  CALL FUNCTION 'TABCONTROL_ARRAY'
    EXPORTING
      action      = 'R'
      shell_id    = ls_tabcontrol-shellid
    CHANGING
      tab_id      = l_tab_id
      tab_control = l_control.

  IMPORT dialogpage FROM MEMORY ID 'MATCHCODE_OCX_DLGPAGES'.

  CLEAR l_dialog.
  LOOP AT dialogpage ASSIGNING <dialog_page>
                     WHERE tabctrl   = l_tab_id
                       AND shlp_name = ld_shlp_wanted.
    l_dialog = <dialog_page>-dialognr.
    EXIT.
  ENDLOOP.
  IF l_dialog IS INITIAL.
    EXIT.
  ENDIF.

* Считываем значения полей с первичного экрана
  DATA: lt_selopts LIKE ddshselopt OCCURS 0 WITH HEADER LINE.

  CALL FUNCTION 'TABCONTROL_RETRIEVE_SEL_OPTS'
    EXPORTING
      no_flush        = 'X'
    TABLES
      tabledata       = lt_selopts
    CHANGING
      handle          = l_control
    EXCEPTIONS
      create_error    = 1
      must_field_lack = 2
      OTHERS          = 3.
  IF sy-subrc <> 0.
    EXIT.
  ENDIF.

* Считываем поля экрана OCX-элемента TOP-СрПоиска
  DATA: dialogitem LIKE mctbc_di OCCURS 1 WITH HEADER LINE.

  IMPORT dialogitem FROM MEMORY ID 'MATCHCODE_OCX_DLGITEMS'.

* Выстраиваем соответствие полей диалога и TOP-СрПоиска
  FIELD-SYMBOLS: <dialog_item>   LIKE LINE OF dialogitem,
                 <select_option> LIKE LINE OF lt_selopts.

  LOOP AT lt_selopts ASSIGNING <select_option>.
    LOOP AT dialogitem ASSIGNING <dialog_item>
                       WHERE tabctrl  = l_tab_id
                         AND dialognr = l_dialog
                         AND id       = <select_option>-shlpfield.
* >>> здесь имеем всю нужную информацию ...
    ENDLOOP.
  ENDLOOP.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по СП (Search help)
СообщениеДобавлено: Пт, авг 23 2013, 13:20 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
nicky555 написал:
круто :)
я решил немного по-другому, но смысл тот же:

сколько программистов, столько и вариантов кода :D

большое вам спасибо за поддержку и наводки :)

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB