Текущее время: Пн, июл 28 2025, 10:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: текущая строка для grid enjoy транзакции
СообщениеДобавлено: Ср, дек 12 2007, 15:49 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 28 2005, 09:49
Сообщения: 83
Пол: Мужской
обработка идет в фм для средства поиска в enjoy транзакции (fb60). при помощи DYNP_VALUES_READ можно считать данные из видимой части таблицы.
а как можно получить текущий видимый номер строки для table control, не имея самой ссылки на объект?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 12 2007, 16:37 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
А что мешает эту самую ссылку получить?
Через тот же ASSIGN.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 13 2007, 15:24 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 28 2005, 09:49
Сообщения: 83
Пол: Мужской
я попробовал через assign, но (SAPLFSKB)table-current_line показывает на номер последней видимой на экране строки, в то время как нужен номер строки, на которой находится курсор. как с этим бороться, я вообще там ищу ? :oops:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 13 2007, 16:00 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Можно попробовать GET CURSOR, но может не получиться...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 13 2007, 16:13 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
luminofer написал:
я попробовал через assign, но (SAPLFSKB)table-current_line показывает на номер последней видимой на экране строки, в то время как нужен номер строки, на которой находится курсор. как с этим бороться, я вообще там ищу ? :oops:

Для получения строки внутри экранной таблицы, по идее, должна использоваться конструкция GET CURSOR FIELD field LINE lin.
И если посмотреть код экрана, то легко видеть, что строка сохраняется в подпрограмме get_cursor в глобальной переменной g_cursorline.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 13 2007, 17:17 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 28 2005, 09:49
Сообщения: 83
Пол: Мужской
Цитата:
строка сохраняется в подпрограмме get_cursor в глобальной переменной g_cursorline

sy-uname: да, это правда. после того, как отработает PAI переменная доступна. проблема в том, что при вызове search help эта форма не вызывается. другими словами, если нажимать на поле кнопку enter, тогда будет инициализироваться переменная g_cursorline, а если f4 - то не будет.

EGF: если же вызывать из search help форму get_cursor в той программе либо напрямую - толку не будет, поле не заполнится.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 13 2007, 17:38 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
luminofer написал:
EGF: если же вызывать из search help форму get_cursor в той программе либо напрямую - толку не будет, поле не заполнится.


Я говорил не про форму, а про оператор GET CURSOR.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 13 2007, 18:11 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 28 2005, 09:49
Сообщения: 83
Пол: Мужской
Цитата:
Я говорил не про форму, а про оператор GET CURSOR.


понимаю. я имею в виду то, что

data: g_line type i.
get cursor line g_line.

не работает также как и

perform get_cursor(SAPLFSKB).

в обоих случаях возвращается sy-subrc = 4. что значит, что The cursor is not on one of the list or loop lines. фактически же это к тому, что PAI не отрабатывал.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 14 2007, 10:04 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Попробуйте через ASSIGN получить значение переменных g_cursorline или crs_saveline программы SAPLFSKB - они глобальные, поэтому должно получиться. Однако, имейте в виду, что нажатие F4, как известно, PAI не вызывает, поэтому вы можете получить не ту строку, на которой вызвали средство поиска, а ту, на которой он стоял при вызове средства поиска.

И, кстати, если речь зашла о ФМ DYNP_VALUES_READ. Присмотритесь к ФМ GET_DYNP_VALUE.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 14 2007, 11:47 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 28 2005, 09:49
Сообщения: 83
Пол: Мужской
EGF: я примерно о том же писал несколько выше. там похоже действительно не отрабатывается PAI и не инициализируются переменные. считать их можно, но толку от этого чуть.
ФМ GET_DYNP_VALUE - по сути обертка над DYNP_VALUES_READ для считывания отдельного значения. если знаешь что считывать и больше ничего не надо - немножко удобней. но не мой случай.

насколько я себе процесс и область исследования представляю, есть презентационная часть, которая отправляет данные приложению при нажатии enter. после того, как данные попадут в приложение, можно будет говорить о том, чтобы считывать их из переменных или из внутренней таблицы, привязанной к гриду. а пока данные приложению не переданы и находятся только в презентации, их можно получить только вызвав какой-то ФМ, забирающий данные с клиента, типа как та сишная функция, которую вызывает DYNP_VALUES_READ. тут два пути - первый: искать функцию на си, которая считает атрибуты грида с презентации, либо каким-то образом при нажатии f4 эмулировать enter для инициации процесса передачи данных приложению, а потом считывать атрибуты из свойств грида.

что скажете?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 14 2007, 12:12 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
А Вы пробовали GET_DYNP_VALUE? Не помогло? Или Вы просто предположили, что это не Ваш случай?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 14 2007, 13:03 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 28 2005, 09:49
Сообщения: 83
Пол: Мужской
EGF: кратко - да, пробовал.
развернуто: GET_DYNP_VALUE не поможет не потому, что плохой, а потому что вызывает DYNP_VALUES_READ, этот ФМ вызывает сишную HELP_GET_FIELDS, которая забирает данные с презентационного грида. она нормально все считывает, единственное что, не говорит, какая у презентационного грида текущая позиция курсора. во время отработки PAI эта позиция как-то передается на сервер приложений. вопрос - как?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 14 2007, 13:45 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Мне показалось, что этот ФМ Вам подойдёт, потому перед вызовом DYNP_VALUES_READ в нём вызывается DYNP_GET_STEPL, а это, кажется то, что нужно. Ну, значит, я ошибся.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 14 2007, 17:26 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 28 2005, 09:49
Сообщения: 83
Пол: Мужской
а хорошая была мысль, вполне в концепт вписывалась. и справка по ней утверждает, что она должна делать то, что нужно. только вот почему-то в этом случае она возвращает ноль, независимо от строки. ничего не понимаю... :shock:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 17 2007, 11:14 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 28 2005, 09:49
Сообщения: 83
Пол: Мужской
ну в общем, я пока резюмирую так:
если делать

CALL FUNCTION 'DYNP_GET_STEPL'
IMPORTING
POVSTEPL = wa_row
EXCEPTIONS
STEPL_NOT_FOUND = 1
OTHERS = 2.

или GET CURSOR

в элементарном средстве поиска, включенном в комплексное - будет в первом варианте возвращаться ноль, а во втором - sy-subrc = 4. т.е. определить поле, на котором находится курсор в таблице экрана нельзя. похоже, что это связано с тем, что текущий экран меняется во время вызова КСП и информация, связанная с предыдущим экраном становится недоступной. ведь информация о том, из какого экрана требуется получить данные в фм DYNP_GET_STEPL не передается.

если же использовать в PAI исходного экрана обработчик

PROCESS ON VALUE-REQUEST. "F4
FIELD IT_TEST-KOSTL MODULE help_kostl.

MODULE help_kostl INPUT.

DATA: wa_row LIKE sy-stepl,

CALL FUNCTION 'DYNP_GET_STEPL'
IMPORTING
povstepl = wa_row
EXCEPTIONS
stepl_not_found = 1
OTHERS = 2.

то возвращается правильная строка, равно как и при вызове GET CURSOR, т.к. однозначно определен экран, для которого выполняется вызов. однако использование такого кода скорее всего повлечет за собой модификацию стандарта.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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


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

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


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

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