Текущее время: Пн, июл 21 2025, 00:37

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: отображение подэкрана по условию, PAI, PBO
СообщениеДобавлено: Ср, май 05 2010, 13:23 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 17 2010, 11:56
Сообщения: 7
Откуда: Белгород
Пол: Мужской
Добрый день.
В ABAP я новичок, поэтому прошу совета. Извиняйте за глупый вопрос, но ни как не могу разобраться с логикой работы подэкранов.


В системе есть отчет, который показывает записи из журнала, указанного пользователем. Но кроме основных данных(имени журнала, даты) иногда нужно вводить дополнительно например табельный или имя пользователя, в зависимости от того, какой журнал выбран на основном экране. Необходимо чтобы дополнительные поля ввода появлялись на основном экране в зависимости от SELECT-OPTIONS.

Вопрос в том, как правильно загрузить подэкран. Я создал экран 1002, указал тип - "подэкран". Теперь, на сколько я понял, нужно в основном экране 1000, в PBO прописать:
Code:
CALL SUBSCREEN sub INCLUDING sy-cprog '1002'.

а в PAI:
Code:
CALL SUBSCREEN sub.

С этим и проблема. Либо в тексте указывает на синтаксические ошибки, либо валится в дамп. Как описать "subscreen area" и как правильно написать INCLUDING? Ну и соответственно как отобразить подэкран по условию? Читал хелпы, Кречмера, но не совсем понял как это работает.

Может быть есть другие способы?

Извиняюсь, :( по ошибке добавил не в ту ветку, вопрос скорее для ветки по техническим компонентам ABAP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отображение подэкрана по условию, PAI, PBO
СообщениеДобавлено: Ср, май 05 2010, 14:32 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
SavOk написал:
Добрый день.
В ABAP я новичок, поэтому прошу совета. Извиняйте за глупый вопрос, но ни как не могу разобраться с логикой работы подэкранов.


В системе есть отчет, который показывает записи из журнала, указанного пользователем. Но кроме основных данных(имени журнала, даты) иногда нужно вводить дополнительно например табельный или имя пользователя, в зависимости от того, какой журнал выбран на основном экране. Необходимо чтобы дополнительные поля ввода появлялись на основном экране в зависимости от SELECT-OPTIONS.

Вопрос в том, как правильно загрузить подэкран. Я создал экран 1002, указал тип - "подэкран". Теперь, на сколько я понял, нужно в основном экране 1000, в PBO прописать:
...

Вопрос не в этом. Для того, чтобы поля появлялись и исчезали не обязательно использовать подэкраны. Достатиочно установить соответствующие атрибуты полей в PBO (она же at selection-screen output) логике экрана.
Или более точней переформулируйте задачу. И что и как реализовано сейчас .

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отображение подэкрана по условию, PAI, PBO
СообщениеДобавлено: Ср, май 05 2010, 14:54 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 17 2010, 11:56
Сообщения: 7
Откуда: Белгород
Пол: Мужской
Цитата:
Вопрос не в этом. Для того, чтобы поля появлялись и исчезали не обязательно использовать подэкраны. Достатиочно установить соответствующие атрибуты полей в PBO (она же at selection-screen output) логике экрана.
Или более точней переформулируйте задачу. И что и как реализовано сейчас .


Вы имеете в виду что-то наподобие?:
Code:
MODULE CHECK_SCREEN_MODE.
  LOOP AT SCREEN.
    "screen-active = '1'.
    if ( screen-name = '%B002006_BLOCK_1000'
      or screen-name = '%_S_LG_PER_%_APP_%-TEXT'
      or screen-name = 'S_LG_PER'
      or screen-name = '%_S_LG_USR_%_APP_%-TEXT'
      or screen-name = 'S_LG_USR'
      or screen-name = 'MY'
      or screen-name = '%_MY_%_APP_%-TEXT' ).
        screen-invisible = 1.
        screen-active = 0.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDMODULE.

да, так поля прекрасно скрываются. Но это не красиво и работает только до отрисовки.
Ведь PBO и at selection-screen output выполняются до отрисовки экрана и после того как экран отрисован скрыть поля не получается. Код выполняется, а поля не исчезают или не появляются.

Раскажите подробнее про атрибуты полей в PBO пожалуйста.

Проще говоря: есть отчет, показывающий журнал. Пользователь выбирает из списка журналы для просмотра. При выборе определенного журнала необходимо отобразить дополнительные поля(табельный, дата или любые другие) для более точной фильтрации записей из журнала.

Сейчас есть отчет, поля на главном экране, подэкран 1002, и вышеописаный модуль, который скрывает поля, но не тогда, когда нужно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отображение подэкрана по условию, PAI, PBO
СообщениеДобавлено: Ср, май 05 2010, 15:30 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
SavOk написал:
Вы имеете в виду что-то наподобие?:
Code:
MODULE CHECK_SCREEN_MODE.
  LOOP AT SCREEN.
    "screen-active = '1'.
    if ( screen-name = '%B002006_BLOCK_1000'
      or screen-name = '%_S_LG_PER_%_APP_%-TEXT'
      or screen-name = 'S_LG_PER'
      or screen-name = '%_S_LG_USR_%_APP_%-TEXT'
      or screen-name = 'S_LG_USR'
      or screen-name = 'MY'
      or screen-name = '%_MY_%_APP_%-TEXT' ).
        screen-invisible = 1.
        screen-active = 0.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDMODULE.

да, так поля прекрасно скрываются. Но это не красиво и работает только до отрисовки.
Ведь PBO и at selection-screen output выполняются до отрисовки экрана и после того как экран отрисован скрыть поля не получается. Код выполняется, а поля не исчезают или не появляются.

Значит Вы что то не то или не так делаете. Раз код выполняется, то поля должны скрываться.
Далее. Вы всё-таки определитесь и уточните - 1000 экран это у Вас экран выбора(селекционный, selection-screen) или обычный экран? Если экран выбора то причём здесь "MODULE CHECK_SCREEN_MODE". Если обычный то непонятна проблема со вставкой подъэкрана.
По поводу красивостей - чтобы было красиво используйте не имена полей, а групповые модификаторы (group1 group2 group3 group4).
Цитата:
Раскажите подробнее про атрибуты полей в PBO пожалуйста.

См. тр. ABAP_DOCU - масса примеров работы с экранами.
Цитата:
Проще говоря: есть отчет, показывающий журнал. Пользователь выбирает из списка журналы для просмотра. При выборе определенного журнала необходимо отобразить дополнительные поля(табельный, дата или любые другие) для более точной фильтрации записей из журнала.
См. примеры, читайте курсы. Что бы сделать то, что Вы хотите этого будет вполне достаточно.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отображение подэкрана по условию, PAI, PBO
СообщениеДобавлено: Чт, май 06 2010, 13:15 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 17 2010, 11:56
Сообщения: 7
Откуда: Белгород
Пол: Мужской
Спасибо, буду пробовать :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отображение подэкрана по условию, PAI, PBO
СообщениеДобавлено: Чт, май 06 2010, 13:57 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 17 2010, 11:56
Сообщения: 7
Откуда: Белгород
Пол: Мужской
Нашел причину почему код выполнялся, а поля оставались скрытыми.
В свойствах главного селекционного экрана 1000 для нормальной работы должна стоять галочка "выключить динамическое сжатие".
Всё прекрасно работает :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отображение подэкрана по условию, PAI, PBO
СообщениеДобавлено: Чт, май 06 2010, 14:07 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
SavOk написал:
Нашел причину почему код выполнялся, а поля оставались скрытыми.
В свойствах главного селекционного экрана 1000 для нормальной работы должна стоять галочка "выключить динамическое сжатие".
Всё прекрасно работает :)

Читайте всё по новой - у Вас в продуктиве ничего не заработает - у селекционных экранов нет свойств с галочками. Все свойства описываются соответствующими опциями оператора selection-screen. Я так подозреваю что Вы использовали редактор экранов для изменения атрибутов экрана выбора - что совершенно не верно.
Selection Screens

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


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

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


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

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


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

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