Текущее время: Вс, июл 27 2025, 18:12

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Как сделать поля экрана только для чтения?
СообщениеДобавлено: Ср, ноя 12 2008, 18:43 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
В принципе это делается с помощью loop at screen и screen-input = 1. Но у меня поля, которые надо деактивировать, находятся в подэкране, к тому же их несколько. Как быть в этом случае? Т.к. цикл пробегает только по полям главного экрана.


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

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
VID написал:
В принципе это делается с помощью loop at screen и screen-input = 1. Но у меня поля, которые надо деактивировать, находятся в подэкране, к тому же их несколько. Как быть в этом случае? Т.к. цикл пробегает только по полям главного экрана.


Создайте PBO-модуль у ПОДЭКРАНА, и в нем делайте LOOP AT SCREEN...


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

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Дело в том, что подэкран генерится сам по себе, т.е. он описан только в selection-screen. Если делать какие либо изменения в логике, то система кричит, что это будет бездейственно, что подтверждается и на практике...


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

Зарегистрирован:
Ср, мар 28 2007, 11:02
Сообщения: 132
Откуда: SPb
Если selection то можно так

Code:
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF SCREEN-NAME eq
      .......
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

_________________
С уважением, СашОК.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как сделать поля экрана только для чтения?
СообщениеДобавлено: Ср, ноя 12 2008, 19:24 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
VID написал:
В принципе это делается с помощью loop at screen и screen-input = 1. Но у меня поля, которые надо деактивировать, находятся в подэкране, к тому же их несколько. Как быть в этом случае? Т.к. цикл пробегает только по полям главного экрана.


у вас что ли TABBED BLOCK описан? а подэкран на нем через
Code:
SELECTION-SCREEN BEGIN OF SCREEN 999 AS SUBSCREEN.


?

ну тогда, как указали выше:
Code:
AT SELECTION-SCREEN OUTPUT.

CHECK sy-dynnr = 999.
LOOP AT SCREEN.
    IF SCREEN-NAME eq
      .......
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.


Если у вас действительно TABBED BLOCK, то данное событие для подэкрана вызовется при переходе на соотв. закладку.
Если у нас только сел. экран и подэкраны на закладках, то при переходе на закладку обработка события AT SELECTION-SCREEN OUTPUT вызовется как минимум два раза...
один раз sy-dynnr = 1000 будет, второй раз sy-dynnr = 999


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

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Спасибо огромное!!! Счас буду делать!!!

З.Ы. у меня без блока сделано, по-простому)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 13 2008, 10:00 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
VID написал:
Спасибо огромное!!! Счас буду делать!!!

З.Ы. у меня без блока сделано, по-простому)

а как конкретно?
и вообще, получилось что-то?


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

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Прописал в at selection-screen output проверку по номерам нужных подэкранов и присвоил всем полям input = 0. Все работает как надо. Теперь правда проблема, как для вручную созданного экрана это сделать. at selection-screen output для него не отрабатывается. Тут говорили, что надо в PBO это делать, только вот как... Просто имя_поля-input = 0 не катит.


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

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
упс, прочитал внимательнее посты выше и появилась идея, счас проверю


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

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Все получилось)) Всем спасибо :pivo:

Для тех, кому может это тоже интересно, выкладываю код.

Для случая, когда экран/подэкран создан вручную:
Code:
MODULE status_9010 OUTPUT.
  LOOP AT SCREEN.
    IF screen-name = 'GV_SAVE_PROG'.
      screen-input = 0.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDMODULE.


Для случая с экраном/подэкраном, описаным с помощью selection-screen:
Code:
AT SELECTION-SCREEN OUTPUT.

  IF sy-dynnr BETWEEN 9001 AND 9006.
    LOOP AT SCREEN.
      screen-input = 0. "тут можно добавить проверку по screen-name
      MODIFY SCREEN.
    ENDLOOP.
  ENDIF.


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

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
не понял, каким образом вы описали подэкран на селекционном экране, меня вот что интересует


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

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Code:
SELECTION-SCREEN BEGIN OF SCREEN 9001 AS SUBSCREEN.
PARAMETERS: ... .

SELECT-OPTIONS: ... .
SELECTION-SCREEN END OF SCREEN 9001.


может я что-то не тем словом назвал, если так, то сорри, поправьте))


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

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
VID написал:
Code:
SELECTION-SCREEN BEGIN OF SCREEN 9001 AS SUBSCREEN.
PARAMETERS: ... .

SELECT-OPTIONS: ... .
SELECTION-SCREEN END OF SCREEN 9001.


может я что-то не тем словом назвал, если так, то сорри, поправьте))

это я понял... :)
где потом используется этот подэкран? на обычном через CALL SUBSCREEN INCLUDING ?


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

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Именно :)


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

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


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

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


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

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