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

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


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

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


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

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