Текущее время: Сб, авг 02 2025, 17:16

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


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

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


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

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