Текущее время: Вс, авг 03 2025, 17:36

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Проверка ввода значений поля собственного экрана
СообщениеДобавлено: Пт, фев 15 2008, 17:01 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 15 2007, 10:40
Сообщения: 172
Здравствуйте! Написана программа где сразу же вызывается свой экран, где есть одно поле для ввода даты table1-field1 и специальный элемент управления container01 - там отображается дерево и alv_grid.
При вводе данных в ячейки alv_grid в программе срабатывает проверка введенных данных. Есть метод в которой есть другие проверки и которая срабатывает при двойном клике на грид, там написал вроде

if table1-field1 = space.
-= вывести сообщение типа "Е" - "Введите сначала дату!" =-
endif.

То есть, хотел написать условие для проверки поля table1-field1 - не срабатывает.
В чем может быть дело?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка ввода значений поля собственного экрана
СообщениеДобавлено: Пт, фев 15 2008, 17:27 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Karmen написал(а):
Здравствуйте! Написана программа где сразу же вызывается свой экран, где есть одно поле для ввода даты table1-field1 и специальный элемент управления container01 - там отображается дерево и alv_grid.
При вводе данных в ячейки alv_grid в программе срабатывает проверка введенных данных. Есть метод в которой есть другие проверки и которая срабатывает при двойном клике на грид, там написал вроде

if table1-field1 = space.
-= вывести сообщение типа "Е" - "Введите сначала дату!" =-
endif.

То есть, хотел написать условие для проверки поля table1-field1 - не срабатывает.
а) В чем может быть дело?
Что именно не срабатывает:
управление не доходит до "if table1-field1 = space.". А оно должно дойти до данной точки? Из какого события вызывается данный метод? Вообще проверки надо делать в обработчике события data_changed
б) или не выводится сообщение "-= вывести сообщение типа "Е" - "Введите сначала дату!" =-"? А как планировалось выводить?

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, фев 16 2008, 14:01 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 15 2007, 10:40
Сообщения: 172
Внутри специального элемента управления сверху - дерево, снизу - таблица (alv-grid).
Поставил код и в методе обработки изменений таблицы и в методе обработки двойного клика дерева - управление доходит до условия "if table1-field1 = space."
Только вот это условие не выполняется. Элемент table1-field1 экрана 100, это поле для ввода даты и оно находится вне специального элемента управления. Надо чтобы перед вводом каких-либо данных в элементе управления поле table1-field1 обязательно было заполнено. Кстати, это поле ссылается на такое же поле field1 таблицы с таким же именем table1 - она стандартная таблица в системе. Может Это как-то влияет?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, фев 16 2008, 14:34 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Karmen написал(а):
управление доходит до условия "if table1-field1 = space."
Только вот это условие не выполняется. Элемент table1-field1 экрана 100, это поле для ввода даты

Code:
if table1-field1 = '00000000'.
или
Code:
if table1-field1 IS INITIAL.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, фев 16 2008, 15:34 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 15 2007, 10:40
Сообщения: 172
О, так работает! Спасибо! :-)
Но есть одно "но".
После ввода даты в данное поле надо нажать на Enter.
Если ввести дату и не нажимая на ентер переходить к вводу данных в грид, то почему-то прога (т.е. обработчик двойного клика дерева) не считает что в поле даты данные уже введены..
:(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 17 2008, 18:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
В таком случае используйте ФМ DYNP_VALUES_READ для получения даты. Значение даты передается из экрана в программу автоматически только при срабатывании PAI-логики, т.е при нажатии кнопки "Enter" или при нажатии кнопки на панели инструментов.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 18 2008, 08:57 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 15 2007, 10:40
Сообщения: 172
Так и попробовал написать. Код следующий:

-----------------

DATA: BEGIN OF ZSCRFLDS OCCURS 1.
INCLUDE STRUCTURE DYNPREAD.
DATA: END OF ZSCRFLDS.

...

CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = 'Z_TEST_PROG'
DYNUMB = '0100'
TABLES
DYNPFIELDS = ZSCRFLDS
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
OTHERS = 10
.
-------------------
Здесь, Z_TEST_PROG - моя программа, экран 0100 - однозначно есть в этой программе и там есть поле даты.
После этого проверяю: ZSCRFLDS - пустой! :-(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 18 2008, 09:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Karmen написал(а):
После этого проверяю: ZSCRFLDS - пустой! :-(
Перед вызовом DYNP_VALUES_READ в эту табличку нужно положить имя поля, значение которого хотите получить. Поищите — есть масса примеров использования этого ф.м.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 18 2008, 12:54 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 15 2007, 10:40
Сообщения: 172
О, так работает!
Спасибо большое всем! :)


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

Зарегистрирован:
Ср, апр 30 2008, 07:46
Сообщения: 52
Пол: Мужской
мне тоже нужно считать дату с селика через DYNP_VALUES_READ. только вот заметил что в таблицу it_dynp, которую получаем из ФМ, дата поступает в таком виде, в каком ее ввели на экране - т.е. может быть и 30.04.2008, и 30.04.08, и 30042008.

как переменной присвоить дату в таком виде?
write с указанием конкретного формата использовать нельзя - формат-то неизвестен.
похожие по смыслу флаги в DYNP_VALUES_READ на fieldvalue у поля с датой не влияют.
спасибо за внимание.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 08:43 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Воспользйтесь ФМ CONVERT_DATE_TO_INTERNAL:
Цитата:
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL = input
IMPORTING
DATE_INTERNAL = output
EXCEPTIONS
DATE_EXTERNAL_IS_INVALID = 1
OTHERS = 2.


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

Зарегистрирован:
Ср, апр 30 2008, 07:46
Сообщения: 52
Пол: Мужской
Aval написал:
Воспользйтесь ФМ CONVERT_DATE_TO_INTERNAL:
спасибо, это то что нужно :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 08:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
htk_s написал:
мт.е. может быть и 30.04.2008, и 30.04.08, и 30042008.
ф.м. CONVERT_DATE_INPUT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 05 2008, 12:48 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 15 2007, 10:40
Сообщения: 172
Цитата:
мне тоже нужно считать дату с селика через DYNP_VALUES_READ.

А что означает "селика"?[/quote]


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 05 2008, 12:51 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Karmen написал(а):
Цитата:
мне тоже нужно считать дату с селика через DYNP_VALUES_READ.

А что означает "селика"?
Selection Screen


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

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


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

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


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

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