Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: jacknk88 от Ноябрь 13, 2012, 01:08:36 pm
-
можно ли в созданном экране менять заголовки, названия, размеры, цвета, доступность (чтение/запись), видимый/невидимый и др. параметры компонентов.
Т.е. допустим есть Текстовое поле...в окне атрибутов можно поменять его параметры....а можно ли обратиться к этим параметрам непосредственно в коде программы?....или может есть классы для этого?...как их найти? и использовать?...
суть в том, чтобы можно было в коде программы поменять параметры определенного компонента
PS: надо ФМ создать
-
можно ли в созданном экране менять заголовки, названия, размеры, цвета, доступность (чтение/запись), видимый/невидимый и др. параметры компонентов.
Т.е. допустим есть Текстовое поле...в окне атрибутов можно поменять его параметры....а можно ли обратиться к этим параметрам непосредственно в коде программы?....или может есть классы для этого?...как их найти? и использовать?...
суть в том, чтобы можно было в коде программы поменять параметры определенного компонента
Сходу трудно сказать, попробуйте поиграть с ФМ-и "DYNP_VALUES_READ" с последующим запуском "DYNP_VALUES_UPDATE".
P.S. Сам текстовые поля (названия) никогда не менял, только тексты кнопок GUI-статуса, ну и поля ввода-вывода экрана соответственно, ч/з упомянутый последним ФМ.
-
DYNP_VALUES_READ для чтения,
DYNP_VALUES_UPDATE для перезаписи???
не пойму....sy-subrc = 0, а ничего не меняется((
FIELDNAME - это поля ИМЯ из ОКНА АТРИБУТОВ?
-
с помощью DYNP_VALUES_READ нашел пока что только одну компоненту и смог считать его значение...полученную таблицу, т.е. с теми же параметрами кроме FIELDNAME запускаю DYNP_VALUES_UPDATE ...sy-subrc = 0.!!!...ничего не меняется...решил после него сразу заново считать и получил тоже что и в начале, т.е. ничего не изменилось...почему?
-
с помощью DYNP_VALUES_READ нашел пока что только одну компоненту и смог считать его значение...полученную таблицу, т.е. с теми же параметрами кроме FIELDNAME запускаю DYNP_VALUES_UPDATE ...sy-subrc = 0.!!!...ничего не меняется...решил после него сразу заново считать и получил тоже что и в начале, т.е. ничего не изменилось...почему?
Как предположение: а может нельзя менять неизменяемые поля? ::)
-
Как предположение: а может нельзя менять неизменяемые поля? ::)
похоже нет...получается только с изменяемыми полями, т.е. с теми в которых ввод разрешен...
придется создавать несколько экранов и вызывать их(((
-
кто_нибудь знает как можно добавить стандартную кнопку Вариант и Сохранить вариант на свой собственный созданный экран?....или надо создать статус и поставить эти кнопки, а обработку писать уже самому?!....если так, то для отображения уже сохраненных вариантов я нашел ФМ RS_VARIANT_CATALOG (рис. 2), а как запустить стандартное диалоговое окно для сохранения варианта не знаю(((...уже замучался все подходящие ФМ запускать(((...может знаете к какой группе функций они принадлежат?.....
и почему то у меня при создании статуса на своем экране кнопки все появляются внизу экрана(((...как исправить?....и как вывести на своем экране стандартные кнопки: сохранить, выход из системы, назад и т.д.?
ниже скриншоты этих даалоговых окошек
-
можете еще попробовать через:
LOOP AT SCREEN.
....
IF screen-group1 NE 'FIELS1'.
screen-active = '0'.
ENDIF.
.....
MODIFY SCREEN.
ENDLOOP.
-
На вкладке "Свойства" экрана нужно поставить радиобатОн в положение "стандартный экран", а у вас стоит "модальное диалоговое окно", поэтому и кнопки GUI-статуса внизу.
-
кто_нибудь знает как можно добавить стандартную кнопку Вариант и Сохранить вариант на свой собственный созданный экран?....или надо создать статус и поставить эти кнопки, а обработку писать уже самому?!
Сохранить вариант: CALL FUNCTION 'RS_VARIANT_SAVE_FROM_SELSCREEN'
Прочитать вариант: CALL FUNCTION 'RS_VARIANT_FETCH'
Пример использования можно посмотреть в тексте: RSDBSPVA ну или в функциях поставить точку останова и посмотреть на параметры вызовов.
PS: А вообще-то курс BC410 было бы неплохо полистать.
-
На вкладке "Свойства" экрана нужно поставить радиобатОн в положение "стандартный экран", а у вас стоит "модальное диалоговое окно", поэтому и кнопки GUI-статуса внизу.
так в том и дело что "стандартный стоит везде"....я пробовал менять на другие - не помогает((
-
а в чем разница между RS_VARIANT_CATALOG и RS_VARIANT_FETCH ?....что лучше использовать?
при использовании 'RS_VARIANT_SAVE_FROM_SELSCREEN' выходит сообщение "экран выбора не содержит объектов"(((...может он только для селекционного экрана подходит?!
вот один из экранов...для которых надо сохранить вариант
-
а подтянуть стандартную кнопку вместе с функцией обработки видимо не получится?!...надо самому обработку делать по ok_code?....
статус как обычно создовать: скопировать из проги и редактировать его? или создать свою и каким-то образом дернуть стандартные кнопки и функции??
-
какой тип статуса должен быть?
-
какой тип статуса должен быть?
Ну такой вот как на рисунке ниже: "Статус диалога"
-
а в чем разница между RS_VARIANT_CATALOG и RS_VARIANT_FETCH ?....что лучше использовать?
Ну я написал модули, которые вызываются при стандартном сохранении/чтении вариантов в отчетах. Чем что-то отличается от чего-то другого не знаю, не исследовал.
-
а что про это:
при использовании 'RS_VARIANT_SAVE_FROM_SELSCREEN' выходит сообщение "экран выбора не содержит объектов"
-
а что про это:
Ну параметры вызова не правильно передаешь. Какие и как не скажу, так как не использовал ведение вариантов для собственных экранов.
-
может кто-нибудь сохранял значения полей как вариант со своего экрана или знает как это сделать?....какие бы параметры я не указывал все равно не работает
при использовании 'RS_VARIANT_SAVE_FROM_SELSCREEN' выходит сообщение "экран выбора не содержит объектов"
может он только для селекционного экрана подходит?!
-
некоторые люди говорят, что он работает только на селекционном экране((....а есть другие способы сохранения варианта?
-
некоторые люди говорят, что он работает только на селекционном экране((....а есть другие способы сохранения варианта?
Ну можно прицепить селекционный экран на подэкран своей программы, буду на работе, пример прицеплю. Можно вообще использовать селекционный первый экран работы, а дальше уже свои диалоги добавить, тогда вообще автоматом все булет рпботать.
-
Добавить свой селекционный экран на подэкран стандартной транзакции можно следующим образом:
Есть экран 2000, в нем сделана область подэкрана SUB_SCREEN вот в ней и будет выводится селекционный экран из программы.
*&---------------------------------------------------------------------*
*& Report YTSH_TEST_200
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ytsh_test_200.
DATA: ok_code LIKE sy-ucomm.
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF SCREEN 2010 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK bl_2020 WITH FRAME TITLE text-101.
PARAMETERS b_datum LIKE sy-datum OBLIGATORY DEFAULT sy-datum.
SELECTION-SCREEN END OF BLOCK bl_2020.
SELECTION-SCREEN END OF SCREEN 2010.
*----------------------------------------------------------------------*
* Прочитать данные запаса у клиента
CALL SCREEN 2000.
*&---------------------------------------------------------------------*
*& Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_2000 OUTPUT.
SET PF-STATUS 'PF2000'.
SET TITLEBAR 'Test 2000'.
ENDMODULE. " STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_2000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_2000 INPUT.
CASE ok_code.
WHEN 'EXIT'. LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_2000 INPUT
Логика экрана
PROCESS BEFORE OUTPUT.
MODULE status_2000.
CALL SUBSCREEN sub_screen INCLUDING sy-cprog '2010'.
*
PROCESS AFTER INPUT.
CALL SUBSCREEN sub_screen.
MODULE user_command_2000.
Ну и сам экран на картинке ниже: SCREEN2000.png
PS: Но я бы просто сделал программу типа REPORT с первым селекционным экраном, а дальше уже в START-OF-SELECTION просто вызывал бы уже нужные мне диалоговые экраны.
-
а Вы знали что меняя параметр FUNCTION в ФМ RS_VARIANT_FETCH можно также и удалять вариант, просматреть и т.д.
Также там как раз запускается RS_VARIANT_CATALOG
т.е. параметр FUNCTION может быть следующим:
GET - получить вариант
VDEL - удалить вариант
VSHO - вроде проссматреть....исправте, пожалуйста, если не прав
CO26 - а вот это не нашел((
может знаете где можно посмотреть?..лично я смотрел здесь:
зашел в свой статус экрана - Перейти к - Объекты интерф. польз. - Список функций
-
Я решил попробовать немного подругому, точнее используя ФМ..и почти получилось.
Вы не знаете можно ли сохранить передоваемые значения полей с помощью RS_CREATE_VARIANT в главной программе ФМ. Релизовав этот ФМ на селекционном экране я определил, что значения полей передаются в таблице vari_contents . Я заполняю эту таблицу своими значениями ( это уже без селекционного экрана при вызове из своего экран)...Фм прорабатывает нормально..sy-subrc=0. однако как проверить сохранил ли он в действительности значения не знаю(((....пробовал вызвать RS_VARIANT_FETCH .....вариант показывает, только вместо названия полей и их значений везде стоят символы #...может это все из-за отсутствия селек. экрана?!....
-
Ну если уже идти немного по другому, то программа это набор экранов - правильно? Какое количество экранов вам нужно сохранять как вариант? Первый, второй и т.д....
-
просто работы было проделано уже много...и получается теперь придется все перекидовать в программу для сохранения как вариант(((...видимо иного выхода нет....
просто одно не понятно - почему нормально сохраненный вариант можно открыть только если есть слово PARAMETRS....нельзя ли обойти это?!...ведь значения где-то сохраняются и их надо всего лишь прочитать....в противном случаи перечисленные ФМ можно использовать только в самих стандартных прогах...
-
просто работы было проделано уже много...и получается теперь придется все перекидовать в программу для сохранения как вариант(((...видимо иного выхода нет....
Ну я если честно такой проблемой никогда не задавался и не сталкивался, думаю что и другие кто это читал, тоже не сталкивались, поэтому как бы нет проблемы, нет и задачи ее решать. Чисто академически найти решение как это сделать, нужно время. Так что если вы все таки найдете то отпишитесь, если не найдете, может позже кто-то найдет и опишет.
-
проблему чистично решил...логику взял у ФМ RS_VARIANT_CONTENTS..там идет вызов программы, где и объявлены в parameters переменные....а сохранять их можно ФМ-ми от Uukrul...пока что нет времени дописать ее до конца, но если возможность написать небольшой шаблончик будет, то обязательно выложу....
PS: единственный вопрос в том, как сохранить вариант и затем запустить стандартное диалоговое окно для выбора варианта с помощью ФМ RS_VARIANT_FETCH, чтобы при этом пользователь видел только те варианты, которые были сохранены для программы, из которого идет вызов ФМ, и конкретного экрана, который зависит от входных параметров ФМ?!...в добавок, чтобы еще эти варианты не было видно при вызове варианта на селекционном экране.