SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Параметры элементов в Selection Screen



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
White Barsik
Участник
Участник



Joined: 14 Apr 2008
Posts: 11

PostPosted: Tue May 13, 2008 9:37 am    Post subject: Параметры элементов в Selection Screen Reply with quote

создавая селекционный экран с задаными элементами (поля ввода, блоки, и пр.), некоторые из этих элементов можно обогатить свойствами в коде программы (например блоки украстить заголовками). Но зайдя в редактор экранов мы обнаруживаем, что нам доступны ещё множество свойств элементов из которых например Readonly, свойства размещения элемента и пр.
вопрос вот в чем - где и как в программе можно менять динамически эти свойства? Ну хотя бы на момент определения экрана?
Back to top
View user's profile Send private message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Tue May 13, 2008 9:56 am    Post subject: Reply with quote

Смотрите хелп по системной внутренней таблице SCREEN.
Менять свойства можно например в разделе AT SELECTION-SCREEN OUTPUT
Back to top
View user's profile Send private message Blog
White Barsik
Участник
Участник



Joined: 14 Apr 2008
Posts: 11

PostPosted: Wed May 14, 2008 6:02 pm    Post subject: Reply with quote

Хотелось бы уточнить:
1. В момент определения селекционного экрана никакие графические характеристики для задания недоступны? (например размер... или скажем ширина)
2. в какой момент доступна информация (и доступна ли) для изменения во внутренней таблице SCREEN. И что ч могу в этой таблице поменять?
Back to top
View user's profile Send private message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Thu May 15, 2008 8:55 am    Post subject: Reply with quote

1. Насколько я знаю - нет. Размер полей ввода, блоков и прочих элементов определяются автоматически, ширина селекционного экрана фиксирована
2. Менять можно в разделах AT SELECTION-SCREEN OUTPUT и INITIALIZATION, возможно и в других AT SELECTION-SCREEN, но тут надо пробовать. А про изменение всех атрибутов не скажу, но INVISIBLE и ACTIVE менять точно можно. Насчет других - опять таки надо тестить
Back to top
View user's profile Send private message Blog
White Barsik
Участник
Участник



Joined: 14 Apr 2008
Posts: 11

PostPosted: Thu May 15, 2008 10:27 am    Post subject: Reply with quote

Armann wrote:
1. Насколько я знаю - нет. Размер полей ввода, блоков и прочих элементов определяются автоматически, ширина селекционного экрана фиксирована
2. Менять можно в разделах AT SELECTION-SCREEN OUTPUT и INITIALIZATION, возможно и в других AT SELECTION-SCREEN, но тут надо пробовать. А про изменение всех атрибутов не скажу, но INVISIBLE и ACTIVE менять точно можно. Насчет других - опять таки надо тестить

1. Я не спорю что автоматически, но ведь Screen Painter менять все вышеперечисленны параметры может. То есть выходит он сохраняет параметры каждого элемента экрана (про сам экран я не буду вспоминать так как его действительно не отредактируешь) в какую-то таблицу - скорее всего в упомянутую выше SCREEN. Учитывая это и данный мне выше совет копать именно эту таблицу я спрошу - где искать информацию по работе с ней? Хелп как-то не сильно помог...
2. Согласен что можно менять именно так как вы сказали. Но я подразумевал "каким образом менять все эти атрбуты"? То есть расскажите мне хоть примерно алгоритм их замены и к каким объектам/таблицам/структурам я должен обращаться?
Back to top
View user's profile Send private message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Thu May 15, 2008 11:11 am    Post subject: Reply with quote

странно что хелп не слишком помог Smile

Help wrote:
Overview of all SCREEN fields:

Field Length Type Meaning

SCREEN-NAME 30 C Field name
SCREEN-GROUP1 3 C Analysis of
Modif group 1
SCREEN-GROUP2 3 C Analysis of
Modif group 2
SCREEN-GROUP3 3 C Analysis of
Modif group 3
SCREEN-GROUP4 3 C Analysis of
Modif group 4
SCREEN-REQUIRED 1 C Required field
SCREEN-INPUT 1 C Field ready for input
SCREEN-OUTPUT 1 C Displayed field
SCREEN-INTENSIFIED 1 C Field intensified
SCREEN-INVISIBLE 1 C Field invisible
SCREEN-LENGTH 1 X Field length
SCREEN-ACTIVE 1 C Field active


Help wrote:
LOOP - Loop on screen fields

Basic form LOOP AT SCREEN.

Effect All fields of the current screen are stored in the system table
SCREEN with their attributes.
The LOOP AT SCREEN statement places this information in the
header line of the system table.
If you want to change the attributes, you must put back the
changed header line with MODIFY SCREEN. However, you can only
do this in the PBO module of a screen.
If you use this statement for step loop processing, the
information (and any changes) apply only to the current
steploop line. Outside step loop processing, the information
for a step loop field applies to the complete column.
You can also modify fields in the loop procerssing of a table
view using this loop statement. Unlike a step loop,
modifications before the loop have no effect, since the system
gets the initial values for the columns from the column table
of the table view.
Step loop fields should never be changed after the
corresponding step loop processing has been performed.
You can use the CONTINUE statement to leave the current loop
pass prematurely and continue with the next loop pass.

Related MODIFY SCREEN, LOOP AT itab


Help wrote:

MODIFY - Change the attributes of a screen field

Basic form MODIFY SCREEN.

Effect Changes the attributes belonging to the current screen field
whilst processing with LOOP AT SCREEN ... ENDLOOP.

The attributes of all fields of a screen are stored in the
system table SCREEN. This can be edited line by line using LOO
AT SCREEN ... ENDLOOP. Changes to the properties of the
attributes of the current screen field (= current line in the
system table SCREEN) can be put into effect using MODIFY
SCREEN.

Note This statement should be used only within a LOOP AT SCREEN ...
ENDLOOP loop at PBO time as part of the process logic of a
screen.


Резюмируя: к таблице screen вы можете обращаться только посредством LOOP AT SCREEN, модифицировать - MODIFY.

Вот рабочий пример:
(параметры PGEN_EX и PDEL_EX закрываются от изменения)
Code:

AT SELECTION-SCREEN OUTPUT.
    LOOP AT SCREEN.
      IF SCREEN-NAME CS 'PGEN_EX' OR SCREEN-NAME CS 'PDEL_EX'.
         SCREEN-INPUT = 0.
         MODIFY SCREEN.
      ENDIF.
    ENDLOOP.


Можно ли менять все поля в таблице - не знаю, надо проверять.
Можно ли найти и изменить другие атрибуты кроме указываемых при описании селекционного экрана или в таблице SCREEN - не знаю
Back to top
View user's profile Send private message Blog
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Sat May 17, 2008 2:34 pm    Post subject: Reply with quote

Armann wrote:
2. Менять можно в разделах AT SELECTION-SCREEN OUTPUT и INITIALIZATION, возможно и в других AT SELECTION-SCREEN, но тут надо пробовать.

Изменять таблицу SCREEN нужно только в AT SELECTION-SCREEN OUTPUT
Help wrote:
However, you can only do this in the PBO module of a screen.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
White Barsik
Участник
Участник



Joined: 14 Apr 2008
Posts: 11

PostPosted: Mon May 19, 2008 11:27 am    Post subject: Reply with quote

Armann спасибо, проблема решена
Back to top
View user's profile Send private message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Mon May 19, 2008 12:00 pm    Post subject: Reply with quote

White Barsik, пожалуйста

Удав, менять то может и нужно только в AT SELECTION-SCREEN OUTPUT, но в разделе INITIALIZATION тоже все замечательно меняется и срабатывает. А вот насчет других событий AT SELECTION-SCREEN, это да, я загнул
Back to top
View user's profile Send private message Blog
White Barsik
Участник
Участник



Joined: 14 Apr 2008
Posts: 11

PostPosted: Wed May 28, 2008 1:54 pm    Post subject: Reply with quote

Великодушно прошу прощения, что опять поднял сию тему. Вопрос в том, что SCREEN-INPUT = 0 закрываются только отдельные элементы экрана. А такие как например TableView, как я понимаю, надо закрывать отдельно. Но каким способом можно подобные объекты сделать доступными только для чтения? Каким методом?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.