Текущее время: Пн, окт 22 2018, 00:58

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


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


ВНИМАНИЕ!

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



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

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

Хотел спросить, никому не приходилось выводить окно для редактирования текста на селекционный экран?
По правде говоря, я нашёл в 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, 11:32 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

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


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

Зарегистрирован:
Ср, окт 07 2015, 13:36
Сообщения: 102
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, 13:25 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 17:25
Сообщения: 2988
Пол: Мужской
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, 19:24 
Старший специалист
Старший специалист

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


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

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


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

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


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

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


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

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