Posted: Tue May 13, 2008 9:37 am Post subject: Параметры элементов в Selection Screen
создавая селекционный экран с задаными элементами (поля ввода, блоки, и пр.), некоторые из этих элементов можно обогатить свойствами в коде программы (например блоки украстить заголовками). Но зайдя в редактор экранов мы обнаруживаем, что нам доступны ещё множество свойств элементов из которых например Readonly, свойства размещения элемента и пр.
вопрос вот в чем - где и как в программе можно менять динамически эти свойства? Ну хотя бы на момент определения экрана?
Хотелось бы уточнить:
1. В момент определения селекционного экрана никакие графические характеристики для задания недоступны? (например размер... или скажем ширина)
2. в какой момент доступна информация (и доступна ли) для изменения во внутренней таблице SCREEN. И что ч могу в этой таблице поменять?
1. Насколько я знаю - нет. Размер полей ввода, блоков и прочих элементов определяются автоматически, ширина селекционного экрана фиксирована
2. Менять можно в разделах AT SELECTION-SCREEN OUTPUT и INITIALIZATION, возможно и в других AT SELECTION-SCREEN, но тут надо пробовать. А про изменение всех атрибутов не скажу, но INVISIBLE и ACTIVE менять точно можно. Насчет других - опять таки надо тестить
1. Насколько я знаю - нет. Размер полей ввода, блоков и прочих элементов определяются автоматически, ширина селекционного экрана фиксирована
2. Менять можно в разделах AT SELECTION-SCREEN OUTPUT и INITIALIZATION, возможно и в других AT SELECTION-SCREEN, но тут надо пробовать. А про изменение всех атрибутов не скажу, но INVISIBLE и ACTIVE менять точно можно. Насчет других - опять таки надо тестить
1. Я не спорю что автоматически, но ведь Screen Painter менять все вышеперечисленны параметры может. То есть выходит он сохраняет параметры каждого элемента экрана (про сам экран я не буду вспоминать так как его действительно не отредактируешь) в какую-то таблицу - скорее всего в упомянутую выше SCREEN. Учитывая это и данный мне выше совет копать именно эту таблицу я спрошу - где искать информацию по работе с ней? Хелп как-то не сильно помог...
2. Согласен что можно менять именно так как вы сказали. Но я подразумевал "каким образом менять все эти атрбуты"? То есть расскажите мне хоть примерно алгоритм их замены и к каким объектам/таблицам/структурам я должен обращаться?
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 - не знаю
Удав, менять то может и нужно только в AT SELECTION-SCREEN OUTPUT, но в разделе INITIALIZATION тоже все замечательно меняется и срабатывает. А вот насчет других событий AT SELECTION-SCREEN, это да, я загнул
Великодушно прошу прощения, что опять поднял сию тему. Вопрос в том, что SCREEN-INPUT = 0 закрываются только отдельные элементы экрана. А такие как например TableView, как я понимаю, надо закрывать отдельно. Но каким способом можно подобные объекты сделать доступными только для чтения? Каким методом?
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.