Текущее время: Сб, июл 19 2025, 20:23

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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