Текущее время: Чт, мар 28 2024, 18:53

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Окно для редактирования текста на селекционнике
СообщениеДобавлено: Вт, авг 21 2018, 10:02 
Специалист
Специалист

Зарегистрирован:
Ср, окт 07 2015, 12:36
Сообщения: 124
Коллеги, добрый день.

Хотел спросить, никому не приходилось выводить окно для редактирования текста на селекционный экран?
По правде говоря, я нашёл в SAP похожий функционал - программы из серии SAPTEXTEDIT_*, но это не совсем то, что нужно.
В моём случае селекционник формируется программно - без редактора экранов. Выглядит это всё дело примерно вот так:

Изображение

Хотелось бы, чтобы при переходе на обозначенную на скрине закладку экран принимал бы вид текстового редактора, но не весь экран, а только внутренняя его часть. Та, которая относится к данной закладке.
Нашёл один ФМ-ник, но, похоже, это тоже немого не то:
Code:
DATA: fsdsd TYPE catsxt_longtext_itab.
          CALL FUNCTION 'CATSXT_SIMPLE_TEXT_EDITOR'
            EXPORTING
              im_title        = 'ds'
              im_start_column = 0
              im_start_row    = 0
            CHANGING
              ch_text         = fsdsd.


Код экрана с вкладками выглядит так:
Code:
SELECTION-SCREEN: BEGIN OF TABBED BLOCK mytab FOR 20 LINES,
                  TAB (40) button1 USER-COMMAND push1,
                  TAB (40) button2 USER-COMMAND push2,
                  END OF BLOCK mytab.

Соответственно сейчас по нажатии на button2 отрабатывает этот ФМ:
Code:
AT SELECTION-SCREEN.
  CASE sy-dynnr.
    WHEN 1000.
      CASE sscrfields-ucomm.
        WHEN 'PUSH1'.
          mytab-dynnr = 100.
        WHEN 'PUSH2'.
          mytab-dynnr = 200.
          DATA: fsdsd TYPE catsxt_longtext_itab.
          CALL FUNCTION 'CATSXT_SIMPLE_TEXT_EDITOR'
            EXPORTING
              im_title        = 'ds'
              im_start_column = 0
              im_start_row    = 0
            CHANGING
              ch_text         = fsdsd.
      ENDCASE.
  ENDCASE.

В таком виде он отрабатывает на весь экран целиком(видит 1000 экран и рисуется вместо него, а нужно вместо 200-го).
Если же указать im_start_column или im_start_row отличными от нуля - появляется в виде всплывающего окна.
Существует ли какой то подобный ФМ, которому можно передать значение экрана, в который он должен "вписаться"?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Окно для редактирования текста на селекционнике
СообщениеДобавлено: Вт, авг 21 2018, 10:32 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
можно попробовать что то придумать с CL_GUI_TEXTEDIT + splitter


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Окно для редактирования текста на селекционнике
СообщениеДобавлено: Вт, авг 21 2018, 12:09 
Специалист
Специалист

Зарегистрирован:
Ср, окт 07 2015, 12:36
Сообщения: 124
Besa написал:
можно попробовать что то придумать с CL_GUI_TEXTEDIT + splitter

Насколько я понял, этот класс тоже не понимает, что такое:
Code:
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.


Если 0200 или просто 200 ему подавать, то на экране ничего не меняется.
Если же сделать, например так:
Code:
IF lo_dock IS INITIAL.
            CREATE OBJECT lo_dock
              EXPORTING
                repid = sy-cprog
                dynnr = sy-dynnr
                ratio = 55
                side  = cl_gui_docking_container=>dock_at_right
                name  = 'DOCK_CONT'.
            IF sy-subrc <> 0.
              MESSAGE 'Error in the Docking control' TYPE 'S'.
            ENDIF.

            CREATE OBJECT editor
              EXPORTING
                parent                     = lo_dock
                wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position
                wordwrap_position          = 72
                wordwrap_to_linebreak_mode = cl_gui_textedit=>true.
          ENDIF.

То всё равно весь экран целиком сплитится. Мало того - он ещё это каждый раз делает.
Нажал три раза - три раза насплитит, как будто на INITIAL ему плевать. Вызываю CALL METHOD editor->free. Ничего не меняется тоже.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Окно для редактирования текста на селекционнике
СообщениеДобавлено: Вт, авг 21 2018, 12:25 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
boreich написал(а):
Насколько я понял, этот класс тоже не понимает, что такое:
Code:
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.


Этот класс понимает контейнер, который рождается путем сплитинга.

boreich написал(а):
как будто на INITIAL ему плевать.

bound

Цитата:
CREATE OBJECT lo_dock
EXPORTING
repid = sy-cprog
dynnr = sy-dynnr

Вы уверены что подает правильный номер экрана?

Посмотрите примеры сплитинга селектиного экрана.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Окно для редактирования текста на селекционнике
СообщениеДобавлено: Вт, авг 21 2018, 18:24 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 347
А lo_dock, случайно, не локальная переменная?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Окно для редактирования текста на селекционнике
СообщениеДобавлено: Чт, авг 23 2018, 15:19 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
Судя по коду, это пример от zevolving'а.
У него была немного другая цель.
Вам никто не мешает сделать в программе
нормальный динпро с типом Подэкран,
и указать его в mytab-dynnr при PUSH2.
А у ж в динпро можно и cl_gui_textedit
вызывать..


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

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


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

Сейчас этот форум просматривают: Ahrefs [Bot], Yandex [Bot]


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

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