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

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


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

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


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

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