Автор Тема: Функции вывода диалоговых информационных окон  (Прочитано 84710 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
BP_POPUP_DIALOG - Выдает простенькое информационное окно с кнопкой "Дальше" и фиксированной позицией на экране.  В общем виде к сожалению кое какой функционал в этой функции был не доделан. Например заполнение переменной  title, можно не делать, все равно нигде не отражается, так же не работает переменная icon, тоже не отражается на экране, да и объявление кстати переменной icon, сделано в коде с ошибкой типа DATA: icon. Что в общем-то ну никак не может хранить значение иконки. Но в принципе, для простенького информационного сообщения можно использовать.
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'BP_POPUP_DIALOG'
  EXPORTING
    title   = space
    caption = 'Краткий текст'
    value   = '1:'
    comment = 'Общее описание значения перменной'
    icon    = space.
« Последнее редактирование: Июль 06, 2008, 07:11:25 pm от Uukrul »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
SMPO_DISPLAY_MESSAGES - Позволяет отрисовать список сообщений в модальном окошке, например типа в ходе работы какого-либо функционала, можно не выдавать ошибки командой MESSAGE а накопить их во внутреннюю табличку, а затем вывести в отдельном окне используя данную функцию. Пример вызова и результат, так сказать на лицо  ;)
Код: You are not allowed to view links. Register or Login
DATA: lt_messages LIKE rsuvm_msg OCCURS 1 WITH HEADER LINE.

lt_messages-msgty = 'E'.
lt_messages-msgid = 'MC'.
lt_messages-msgno = '004'.
APPEND lt_messages.

lt_messages-msgty = 'E'.
lt_messages-msgid = 'MC'.
lt_messages-msgno = '009'.
lt_messages-msgv1 = 'EKKO'.
APPEND lt_messages.

lt_messages-msgty = 'E'.
lt_messages-msgid = 'MC'.
lt_messages-msgno = '020'.
lt_messages-msgv1 = 'TEST_OBJ'.
lt_messages-msgv2 = sy-uname.
APPEND lt_messages.

CALL FUNCTION 'SMPO_DISPLAY_MESSAGES'
  EXPORTING
    titlebar      = 'Список сообщений'
    header_text_1 = 'Описание 1'
    header_text_2 = 'Описание 2'
  TABLES
    messages      = lt_messages.
Класс сообщений MC, взял от фонаря...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
KLPOPUP_TO_DISPLAY_TEXT - Аналог функции BP_POPUP_DIALOG, выдает информационное окно из двух строк и кнопкой "Дальше". Позиция выводимого окна может быть задана произвольно.
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'KLPOPUP_TO_DISPLAY_TEXT'
  EXPORTING
    titel        = 'Заголовок окна'
    textline1    = 'Строка сообщения 1'
    textline2    = 'Строка сообщения 2'
    start_column = 25
    start_row    = 6.


POPUP_TO_DISPLAY_TEXT_LO - Тоже самое что предыдущая функция, но выводит 3 строки сообщения...  вообщем как обычно каждый индусский кролик пишет свой экранчик.
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT_LO'
  EXPORTING
    titel        = 'Заголовок'
    textline1    = 'Строка 1'
    textline2    = 'Строка 2'
    textline3    = 'Строка 3'
    start_column = 15
    start_row    = 6.
« Последнее редактирование: Июль 06, 2008, 08:06:53 pm от Uukrul »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
COPO_POPUP_TO_DISPLAY_TEXTLIST - Позволяет вывести список строк в диалоговом окошке типа abap-list. Имеет два режима выполнения и скажем так при выводе можно задать выводить строку нормальной яркости или выделено, других опций форматирования текста к сожалению нет. Пример выполнения:
Код: You are not allowed to view links. Register or Login
DATA: l_tabix(2) TYPE n,
      l_function LIKE sy-ucomm,
      lt_text_table LIKE tline OCCURS 1 WITH HEADER LINE.

lt_text_table-tdformat = '*'.
lt_text_table-tdline = 'Строка текста 1'.
APPEND lt_text_table.

lt_text_table-tdformat = '*'.
lt_text_table-tdline = '@12@ Строка текста с иконкой 2'.
APPEND lt_text_table.

lt_text_table-tdformat = 'U1'.
lt_text_table-tdline = '@15@ Выделенная строка текста с иконкой 3'.
APPEND lt_text_table.

lt_text_table-tdformat = '*'.
DO 20 TIMES.
  l_tabix = sy-tabix + 10.
  CONCATENATE 'Строка текста в цикле' l_tabix
  INTO lt_text_table-tdline SEPARATED BY space.
  APPEND lt_text_table.
ENDDO.

CALL FUNCTION 'COPO_POPUP_TO_DISPLAY_TEXTLIST'
  EXPORTING
    task       = 'DISPLAY'
    titel      = 'Список для просмотра'
  IMPORTING
    function   = l_function
  TABLES
    text_table = lt_text_table.

CALL FUNCTION 'COPO_POPUP_TO_DISPLAY_TEXTLIST'
  EXPORTING
    task       = 'DECIDE'
    titel      = 'Список для просмотра'
  IMPORTING
    function   = l_function
  TABLES
    text_table = lt_text_tabl
task - Режим отражения списка. Возможны два значения 'DISPLAY' или 'DECIDE', в первом случае это список в возможностью пролистывания через кнопки, а во-втором случае выводятся две кнопки "Копирвоать" и "Изменить".
lt_text_tabl - Список строк для вывода. В поле lt_text_table-tdformat можно задать фактически только одно значение, которое выделяет текст "U1", остальные значения не имеет смысла так как не обрабатываются.

Возвратный параметр FUNCTION для режима "DISPLAY" при нажатии на кнопку ОК, всегда содержит значение BACK, для режима "DECIDE", если нажата кнопка "Скопировать" = ACCE, для кнопки "Изменить" = MODI. В остальное вроде как ясно из примера.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
POPUP_WITH_TABLE_DISPLAY_OK - Еще одна функция для вывода списка строк в формате abap-list. Из особенностей можно управлять размером и положением окна, передавать любую таблицу строк. Вообще-то если 15 символ в строках будет F - то в этой позиции выведется иконка крестика, а если S - тогда иконка "ОК", ну и еще из пользы, есть кнопка печати списка.
Код: You are not allowed to view links. Register or Login
DATA: l_tabix(2) TYPE n,
      l_choise LIKE sy-tabix,
      lt_valuetab LIKE tline OCCURS 1 WITH HEADER LINE.

DO 20 TIMES.
  l_tabix = sy-tabix + 10.
  CONCATENATE 'Строка' l_tabix
  INTO lt_valuetab SEPARATED BY space.
  IF sy-tabix = 4. lt_valuetab+15(1) = 'F'. ENDIF.
  IF sy-tabix = 6. lt_valuetab+15(1) = 'S'. ENDIF.
  APPEND lt_valuetab.
ENDDO.

CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY_OK'
  EXPORTING
    endpos_col   = 60
    endpos_row   = 10
    startpos_col = 2
    startpos_row = 2
    titletext    = 'Заголовок списка'
  IMPORTING
    choise       = l_choise
  TABLES
    valuetab     = lt_valuetab
  EXCEPTIONS
    break_off    = 1
    OTHERS       = 2.
IF sy-subrc <> 0.

ENDIF.
l_choise - теоретически должен был бы содержать номер выбранной в списке строки, но на самом деле ничего не выполняет и всегда равен нулю...

PS (02.03.2011): Кстати еще одна проблема, заголовок окна не устанавливается и всегда будет "Register", ну забыли бойцы там добавить в тексте амперсанд чтобы переданный текст выводился в заголовке. Кстати если кто думает что ФМ полностью бесполезен, то зря например очень легко можно вывести такую вот красоту как на рисунке POPUP_WITH_TABLE_DISPLAY_OK_2.png
« Последнее редактирование: Март 02, 2011, 05:40:20 pm от Uukrul »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
POPUP_TO_CONFIRM - Как по мне, то это один из удачных примеров как нужно было бы делать правильные функции общего использования, за небольшим исключением о котором напишу ниже, этот ФМ может использоваться в 99% случаев, когда нужно вывести какую-то информацию и запросить реакцию пользователя. В общем виде ФМ можно вызвать в следующем виде:
Код: You are not allowed to view links. Register or Login
INCLUDE <icon>.

DATA: l_answer(1) TYPE c.

CALL FUNCTION 'POPUP_TO_CONFIRM'
  EXPORTING
    titlebar              = 'Текст заголовка окна'
    text_question         = 'Вы уверены?'
    text_button_1         = 'Да'
    icon_button_1         = 'ICON_CHECKED'
    text_button_2         = 'Полюбому'
    icon_button_2         = 'ICON_EXECUTE_OBJECT'
    default_button        = '3'
    display_cancel_button = 'X'
    start_column          = 25
    start_row             = 6
    popup_type            = 'ICON_MESSAGE_WARNING'
    iv_quickinfo_button_1 = 'Типа похоже что да!'
    iv_quickinfo_button_2 = 'Да 100% надо!'
  IMPORTING
    answer                = l_answer
  EXCEPTIONS
    text_not_found        = 1
    OTHERS                = 2.
IF sy-subrc <> 0.
ENDIF.
По параметрам можно сказать следующее:
titlebar - Текст заголовка окна
text_question - Собственно сам текст вопроса в окне
text_button_1 - Собственно текст на первой кнопке. Если переменную не определять, по умолчанию будет выведено 'Да'
icon_button_1 - Имя пиктограммы которую требуется вывести на первой кнопке, имена пиктограмм смотреть в транзакции ICON.
text_button_2 - Собственно текст на второй кнопке. Если переменную не определять, по умолчанию будет выведено 'Нет'
icon_button_2 - Имя пиктограммы которую требуется вывести на второй кнопке, имена пиктограмм как уже говорилось смотреть в транзакции ICON.
default_button - Номер кнопки которая будет выбрана по умолчанию, в данном случае по умолчанию выбрана кнопка CANCEL. По умолчанию активной становится первая кнопка.
display_cancel_button - Признак, нужно выводить третью кнопку CANCEL или нет. По умолчанию кнопка выводиться. Для отключения как обычно надо передать параметр SAPACE.
start_column - Начальная колонка вывода окна, верхний левый угол, по умолчанию = 25.
start_row - Начальная строка вывода окна, верхний левый угол, по умолчанию = 6.
popup_type - Иконка выводимая рядом с текстом вопроса. По умолчанию обычно это знак вопроса, но можно вывести другие символы типа восклицательный знак, знак стоп и т.д. Тонкость только одна, имена пиктограмм должны начинаться на 'ICON_MESSAGE_*'. Имена пиктограмм можно посмотреть в транзакции ICON.
iv_quickinfo_button_1 - Собственно говоря всплывающая подсказка для первой кнопки
iv_quickinfo_button_2 - Аналогично всплывающая подсказка для второй кнопки.
answer - Номер выбранной/нажатой пользователем кнопки. Выводится для первой кнопки = '1', для второй = '2', для кнопки Cancel значение = 'A'.

Теперь из недочетов, кнопки всегда выводится 2, вот если бы бойцы дожали и кнопку два, можно было бы скрывать как и кнопку Cancel, то в принципе большего от этого ФМ, можно было бы и не требовать, хотя нет.. кажется зря они жестко завязались на тип popup_type = 'ICON_MESSAGE_*', можно было бы и разрешить выводить любую из пиктограмм.

В общем виде экран вопроса будет выглядеть как на рисунке POPUP_TO_CONFIRM_1.

Вариант без кнопки CANCEL ниже и пример на рисунке POPUP_TO_CONFIRM_2.
Код: You are not allowed to view links. Register or Login
INCLUDE <icon>.

DATA: l_answer(1) TYPE c.

CALL FUNCTION 'POPUP_TO_CONFIRM'
  EXPORTING
    titlebar              = 'Текст заголовка окна'
    text_question         = 'Вы уверены?'
    text_button_1         = 'Да'
    icon_button_1         = 'ICON_CHECKED'
    text_button_2         = 'Полюбому'
    icon_button_2         = 'ICON_EXECUTE_OBJECT'
    default_button        = '1'
    display_cancel_button = space
    start_column          = 25
    start_row             = 6
    popup_type            = 'ICON_MESSAGE_WARNING'
    iv_quickinfo_button_1 = 'Типа похоже что да!'
    iv_quickinfo_button_2 = 'Да 100% надо!'
  IMPORTING
    answer                = l_answer
  EXCEPTIONS
    text_not_found        = 1
    OTHERS                = 2.
IF sy-subrc <> 0.
ENDIF.

А теперь самое интересное. В данном ФМ, есть еще три параметра, которые позволяют значительно расширить возможности выводимого текста + внести в вывод элементы интерактивности.
diagnose_object - Имя текста который требуется вывести в окно.
userdefined_f1_help - Имя текста расширенной подсказки. Если этот параметр заполнен, тогда система выводит дополнительную кнопку с пиктограммой 'I' - Информация.
parameter - Таблица параметров переменных и значений. Эти переменные должны быть заданы в текстах, тогда система автоматически заменит введенные в тексте переменные на значения из этой таблицы.

Для этого сначала надо создать тексты. Для создания текстов используется транзакция SE61, пример на рисунке SE61-1.png, при этом обратите внимание, что класс документа должен быть "Текст в диалоге", идентификатор текста 'DT'. Текст диалога задаем свой и жмем кнопку "Создать". Далее пишем текст, в местах где должны быть переменные вставляем имя переменной в следующем виде, как например &OBJECT&. Примеры кодов форматирования строк выбираем по смыслу. В примере рисунок SE61-2.png После этого созданный объект можно использовать при вызове ФМ. Значения переменных задаются в таблице parameter, как в примере ниже. Для вывода текста информации в примере использовался стандартный уже созданный текст GRP_CUT_OR_DELETE_INFO, в принципе аналогично можно создать свой текст справки. Вид текста должен быть так же 'DT'. Вид окна показан на рисунке POPUP_TO_CONFIRM_3.
Код: You are not allowed to view links. Register or Login
INCLUDE <icon>.

DATA: l_answer(1) TYPE c,
      lt_param LIKE spar OCCURS 1 WITH HEADER LINE,
      l_text1  LIKE dokhl-object VALUE 'YUUK_TEST_DIALOG',
      l_text2  LIKE dokhl-object VALUE 'GRP_CUT_OR_DELETE_INFO'.

lt_param-param = 'OBJECT'.
lt_param-value = 'OBJ_CKKS'.
APPEND lt_param.

CALL FUNCTION 'POPUP_TO_CONFIRM'
  EXPORTING
    titlebar              = 'Текст заголовка окна'
    diagnose_object       = l_text1
    text_question         = 'Вы уверены?'
    text_button_1         = 'Да'
    icon_button_1         = 'ICON_CHECKED'
    text_button_2         = 'Полюбому'
    icon_button_2         = 'ICON_EXECUTE_OBJECT'
    default_button        = '3'
    display_cancel_button = 'X'
    userdefined_f1_help   = l_text2
    start_column          = 25
    start_row             = 6
    popup_type            = 'ICON_MESSAGE_WARNING'
    iv_quickinfo_button_1 = 'Типа похоже что да!'
    iv_quickinfo_button_2 = 'Да 100% надо!'
  IMPORTING
    answer                = l_answer
  TABLES
    parameter             = lt_param
  EXCEPTIONS
    text_not_found        = 1
    OTHERS                = 2.
IF sy-subrc <> 0.
ENDIF.

В общем функциональный модуль довольно неплохой и практически полностью готов к употреблению в своих программах... и можно сказать даже рекомендуем, ну чтобы не изобретать свою вермишель  ;)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
POPUP_TO_CONFIRM_STEP - Как говорит нам классика с версии 6.0, "Do not use! Please use POPUP_TO_CONFIRM", типа модуль устарел для использования, но если очень хочется, то можно. Выводится две кнопки "Да" и "Нет", можно добавить еще кнопку Cancel.
Код: You are not allowed to view links. Register or Login
DATA: l_answer(1) TYPE c.

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
  EXPORTING
    DEFAULTOPTION        = 'Y'
    textline1            = 'Строка 1'
    TEXTLINE2            = 'Строка 2'
    titel                = 'Заголовок окна'
    START_COLUMN         = 25
    START_ROW            = 6
    CANCEL_DISPLAY       = 'X'
  IMPORTING
    ANSWER               = l_answer.
l_answer - Выбранная кнопка. Если  выбрано "Да" - 'J', если "Нет" - 'N', если выбрано "Cancel" - 'A'.

Комментарии:
PS 02.02.2009: Кстати, сам SAP этот модуль довольно активно местами использует...
« Последнее редактирование: Февраль 02, 2009, 10:58:46 pm от Uukrul »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Функции вывода диалоговых информационных окон
« Ответ #7 : Февраль 06, 2009, 10:19:37 pm »
K_KKB_POPUP_RADIO2 и K_KKB_POPUP_RADIO3 - Позволяют вывести окно диалога с двумя и соответственно тремя радио-кнопками. Опять же можно и самому нарисовать, но смысле нет, если уже нарисовали до нас. Вызовы очень простые. Пример и как выглядит ниже:
Код: You are not allowed to view links. Register or Login
DATA: l_result TYPE i.

CALL FUNCTION 'K_KKB_POPUP_RADIO2'
  EXPORTING
    i_title   = 'Заголовок окна'
    i_text1   = 'Выбор 1'
    i_text2   = 'Выбор 2'
    i_default = 2
  IMPORTING
    i_result  = l_result
  EXCEPTIONS
    cancel    = 1
    OTHERS    = 2.

IF sy-subrc <> 0. l_result = 2. ENDIF.
CASE l_result.
  WHEN 1.
  WHEN 2.
  WHEN OTHERS.
ENDCASE.


CALL FUNCTION 'K_KKB_POPUP_RADIO3'
  EXPORTING
    i_title   = 'Заголовок окна'
    i_text1   = 'Выбор 1'
    i_text2   = 'Выбор 2'
    i_text3   = 'Выбор 3'
    i_default = 2
  IMPORTING
    i_result  = l_result
  EXCEPTIONS
    cancel    = 1
    OTHERS    = 2.
IF sy-subrc <> 0. l_result = 2. ENDIF.
CASE l_result.
  WHEN 1.
  WHEN 2.
  WHEN 3.
  WHEN OTHERS.
ENDCASE.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Функции вывода диалоговых информационных окон
« Ответ #8 : Февраль 06, 2009, 10:27:19 pm »
K_KKB_PREPARE_CONVERSION - Диалоговое окно запроса данных курса, точнее в окне предлагается ввести данные кода валюты, дату и тип курса, курс надо будет читать самому, т.е. это только диалоговое окно запроса данных от пользователя и ничего больше. Нашлось по ходу в той же группе функций что и окна вывода радио-кнопок.
Код: You are not allowed to view links. Register or Login
DATA:  l_waers LIKE kkbc-kwaer,
       l_date LIKE sy-datlo,
       l_kurs LIKE tcurv-kurst.

l_waers = 'USD'.
l_date = sy-datum.
l_kurs = 'M'.
CALL FUNCTION 'K_KKB_PREPARE_CONVERSION'
  CHANGING
    pre_waers       = l_waers
    pre_date        = l_date
    pre_kurs        = l_kurs
  EXCEPTIONS
    answer_cancel   = 1
    error_in_fields = 2
    OTHERS          = 3.

CASE sy-subrc.
  WHEN 0. "OK
  WHEN 1.
  WHEN 2.
  WHEN OTHERS.
ENDCASE.


08.02.2009: Как читать курсы, пример ФМ лежит кстати тут: You are not allowed to view links. Register or Login
« Последнее редактирование: Февраль 08, 2009, 11:56:29 pm от Uukrul »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Функции вывода диалоговых информационных окон
« Ответ #9 : Февраль 23, 2009, 10:06:57 am »
C14A_POPUP_ASK_FILE_OVERWRITE - Запрос подтверждения перезаписи файла. Случайно тут попалась функция из того же разряда, можно и самому сделать, а можно использовать уже готовое. Тем более вызов простой. Обратите внимание, что проверку на существование файла, данная функция не выполняет, т.е. проверку пишете сами, а уже далее если файл существует, используете этот ФМ, для запроса у пользователя, что делать с файлом.
Код: You are not allowed to view links. Register or Login
DATA: l_bool LIKE boole-boole.

CALL FUNCTION 'C14A_POPUP_ASK_FILE_OVERWRITE'
     IMPORTING
          e_flg_continue = l_bool.
IF l_bool = 'X'. <Пользователь выбрал перезапись файла> ENDIF.

Кстати, данная функция использует ФМ POPUP_TO_CONFIRM_WITH_MESSAGE - который тоже, если подумать иногда можно прикручивать к своим программам. Так сказать еще одна вариация Да/Нет/Идите нафиг. Причем, последнюю кнопку можно скрыть из окна диалога.
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
     EXPORTING
          defaultoption  = 'Y'
          diagnosetext1  = 'Однако есть проблема!'
          diagnosetext2  = 'Ее похоже надо решать,'
          diagnosetext3  = 'сама не рассосется!'
          textline1      = 'Что очень плохо'
          textline2      = 'так как решать не хочется'
          titel          = 'Начальника, есть проблема, да?'
          start_column   = 25
          start_row      = 6
          cancel_display = 'X'
     IMPORTING
          answer         = l_bool.
Примеры как оно выглядит на рисунках ниже...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Функции вывода диалоговых окон
« Ответ #10 : Март 02, 2009, 03:26:28 pm »
BP_START_DATE_EDITOR - Как по мне очень полезная  функция, позволяет запросить у пользователя параметры выполнения фонового задания, т.е оно конечно можно нарисовать и свой экран, но используя данный ФМ, вы получите такое же окно какое появляется при планировании стандартных отчетов в системе ну и как большой плюс эти параметры потом можно передавать в функции планирования заданий. В общем данный ФМ размещаю тут и в теме по работе с JOB-ами (You are not allowed to view links. Register or Login), хотя там опишу чуток больше, чем в данной теме. И так вызов редактора времени запуска выполнения задания:
Код: You are not allowed to view links. Register or Login
INCLUDE lbtchdef.

DATA: ls_stdt_input LIKE tbtcstrt,
      l_stdt_modify_type LIKE btch0000-int4,
      ls_stdt_output LIKE tbtcstrt.

ls_stdt_input-startdttyp = btc_stdt_datetime.
ls_stdt_input-sdlstrtdt = sy-datum.
ls_stdt_input-sdlstrttm = sy-uzeit.
CALL FUNCTION 'BP_START_DATE_EDITOR'
     EXPORTING
          stdt_dialog                    = 'Y'
          stdt_input                     = ls_stdt_input
          stdt_opcode                    = btc_edit_startdate
     IMPORTING
          stdt_modify_type               = l_stdt_modify_type
          stdt_output                    = ls_stdt_output
     EXCEPTIONS
          fcal_id_not_defined            = 1
          incomplete_last_startdate      = 2
          incomplete_startdate           = 3
          invalid_dialog_type            = 4
          invalid_eventid                = 5
          invalid_opcode                 = 6
          invalid_opmode_name            = 7
          invalid_periodbehaviour        = 8
          invalid_predecessor_jobname    = 9
          last_startdate_in_the_past     = 10
          no_period_data_given           = 11
          no_startdate_given             = 12
          period_and_predjob_no_way      = 13
          period_too_small_for_limit     = 14
          predecessor_jobname_not_unique = 15
          startdate_interval_too_large   = 16
          startdate_in_the_past          = 17
          startdate_is_a_holiday         = 18
          startdate_out_of_fcal_range    = 19
          stdt_before_holiday_in_past    = 20
          unknown_fcal_error_occured     = 21
          no_workday_nr_given            = 22
          invalid_workday_countdir       = 23
          invalid_workday_nr             = 24
          notbefore_stdt_missing         = 25
          workday_starttime_missing      = 26
          no_eventid_given               = 27
          OTHERS                         = 28.
INCLUDE lbtchdef - Полезный инклуд который включает в себя стандартные константы при работе с фоновыми заданиями. Можно его и не использовать, но все равно будет нужно брать значения констант из этого модуля. Вообще, рекомендую его прибить где-то в сторонке и использовать в случае работы с фонами.

В данном примере, я открываю окно планирования задания при этом активной будет закладка выполнения по дата/время и при этом я заполню дату и время по умолчанию, поэтому если пользователя все устраивает, то ему останется нажать только кнопку сохранения на экране запроса. То, что нас интересует планирование по дате запуска, определяется параметром ls_stdt_input-startdttyp = btc_stdt_datetime, где btc_stdt_datetime константа из lbtchdef, если перейти в модуль, то видно что это значение 'D', так что можно просто присвоить 'D', а можно типа, чтобы красиво, через предопределенные константы, или если бы например нам нужно было немедленный запуск задания, то тут нужно было задать константу  btc_stdt_immediate, которая содержит значение 'I'.
Далее, задаем дату и время по умолчанию, в примере это типа текущее время:
ls_stdt_input-sdlstrtdt = sy-datum.
ls_stdt_input-sdlstrttm = sy-uzeit.

Затем вызываем ФМ. Передает параметр, stdt_dialog = 'Y', т.е. показать окно диалога и дальше передаем нашу структуру. Параметр stdt_opcode = btc_edit_startdate, тоже константа и по умолчанию, значение "14" задает, что мы хотим иметь возможность изменения данных, т.е. доступен режим редактирования, в отличии от btc_show_startdate, которая выведет окно со всеми полями в режиме просмотра. Кстати, данным ФМ-ом можно пользоваться не только в режиме диалога, например stdt_dialog = 'N', а stdt_opcode = btc_check_only, позволяет проверить данные условий запуска задания.

В общем виде пример окна будет как на рисунке BP_START_DATE_EDITOR.PNG, ниже. Вещь однако полезная, а уж кошерности вашим программам придаст выше крыши  ;)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
F4_DATE - Классика жанра, окно запроса даты у пользователя. С версии 4.6 позволяет так же запросить и номер недели. Пример вызова ниже, пример экрана там же.
Код: You are not allowed to view links. Register or Login
DATA: l_select_date LIKE workflds-gkday,
      l_select_week LIKE scal-week,
      l_select_week_begin LIKE sy-datum,
      l_select_week_end LIKE sy-datum,
      l_date_for_first_month LIKE workflds-gkday.

l_date_for_first_month = sy-datum.
CALL FUNCTION 'F4_DATE'
     EXPORTING
          date_for_first_month         = l_date_for_first_month
          display                      = ' '
          factory_calendar_id          = ' '
          gregorian_calendar_flag      = ' '
          holiday_calendar_id          = ' '
          progname_for_first_month     = sy-repid
     IMPORTING
          select_date                  = l_select_date
          select_week                  = l_select_week
          select_week_begin            = l_select_week_begin
          select_week_end              = l_select_week_end
     EXCEPTIONS
          calendar_buffer_not_loadable = 1
          date_after_range             = 2
          date_before_range            = 3
          date_invalid                 = 4
          factory_calendar_not_found   = 5
          holiday_calendar_not_found   = 6
          parameter_conflict           = 7
          OTHERS                       = 8.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WRITE: / l_select_date,
       / l_select_week,
       / l_select_week_begin,
       / l_select_week_end.
Из интересного по входным параметрам:
  • DATE_FOR_FIRST_MONTH - Вроде как первая дата начала месяца, но похоже что нигде не используется, так как любое значение которое передается, игнорируется.
  • DISPLAY - Если передается Х, то календарь просто показывается, выбранное значение даты не возвращается, т.е. типа только показать календарь, если передать SPACE, тогда возвращается выбранная дата.
  • FACTORY_CALENDAR_ID - Код производственного календаря.
  • GREGORIAN_CALENDAR_FLAG - Флаг использования грегорианского каледаря.
  • HOLIDAY_CALENDAR_ID - Код календаря праздничных дней. Вообще-то можно передавать или код календаря праздничных дней или код производственного календаря, но не то и другое вместе.
  • PROGNAME_FOR_FIRST_MONTH - Честно не разбирался, по умолчанию передается имя отчета, похоже надо для правильного отражения окна календаря.

На выходе имеем следующий расклад:
  • SELECT_DATE - Выбранная дата. Если пользователь выбрал дату, то остальные поля пустые.
  • SELECT_WEEK Выбранная неделя.
  • SELECT_WEEK_BEGIN - Дата начала выбранной недели.
  • SELECT_WEEK_END - Дата конца выбранной недели.
Если пользователь выбрал кнопку отмены, то надо проверить параметр SELECT_DATE на значений 00000000.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
POPUP_TO_SELECT_MONTH - Очень полезная функция для запроса у пользователя месяца и года. Выдает приятное окошко, пример ниже, если пользователь отказался от выбора то параметр return_code = 4, иначе return_code = 0. Как говориться не все так плохо в SAP  ;). Начальный месяц можно задать в качестве параметра.
Код: You are not allowed to view links. Register or Login
DATA: l_actual_month LIKE isellist-month,
      l_return_code LIKE sy-subrc.

CONCATENATE sy-datum(4) sy-datum+4(2) INTO l_actual_month.
CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
  EXPORTING
    actual_month                     = l_actual_month
*   FACTORY_CALENDAR                 = ' '
*   HOLIDAY_CALENDAR                 = ' '
    language                         = sy-langu
    start_column                     = 8
    start_row                        = 5
 IMPORTING
   selected_month                   = l_actual_month
   return_code                      = l_return_code
 EXCEPTIONS
   factory_calendar_not_found       = 1
   holiday_calendar_not_found       = 2
   month_not_found                  = 3
   OTHERS                           = 4.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
SO_WIND_SPOOL_LIST - Диалоговое окно со списком запросов спула для пользователя, запросы можно разделить по двум критериям, запросы вывода списков отчетов и запросы формуляров. Пользователю предлагается выбрать номер спула, выбранный номер запроса возвращается в из функции. Что с ним делать дальше уже решать, вам... а это только окошко.
Код: You are not allowed to view links. Register or Login
DATA: l_spool_number LIKE rspotype-rqnumber,
      l_spool_title LIKE rsporq-rqtitle.

CALL FUNCTION 'SO_WIND_SPOOL_LIST'
  EXPORTING
    owner              = sy-uname
*   OTF_ONLY           = ' '
*   LIST_ONLY          = ' '
 IMPORTING
   spool_number       = l_spool_number
   spool_title        = l_spool_title.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
POPUP_TO_INFORM - Выводит простое информационное окно, максимум может быть выведено 4 текстовых строки. Как для быстрого вывода какой-то информации пользователю в модельном окне, можно использовать.
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'POPUP_TO_INFORM'
     EXPORTING
          titel = 'Заголовок окна'
          txt1  = 'Строка 1'
          txt2  = 'Строка 2'
          txt3  = 'Строка 3'
          txt4  = 'Строка 4'.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Функции вывода диалоговых информационных окон
« Ответ #15 : Октябрь 02, 2009, 04:39:31 pm »
POPUP_TO_CONFIRM_LOSS_OF_DATA - Еще одно полезное окошко с предупреждением что при выходе данные могут быть потеряны и двумя кнопками "Да" и "Нет".
Код: You are not allowed to view links. Register or Login
DATA: l_answer(1) TYPE c.

CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA'
     EXPORTING
          textline1     = 'Первая строка 1'
          textline2     = 'Вторая строка 2'
          titel         = 'Заголовок'
          start_column  = 25
          start_row     = 6
          defaultoption = 'N'  "J
     IMPORTING
          answer        = l_answer.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Функции вывода диалоговых информационных окон
« Ответ #16 : Октябрь 25, 2010, 10:19:37 pm »
POPUP_GET_VALUES - Диалоговое окно просмотра и запроса.
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
  DEFINE systmess.
    message id sy-msgid type sy-msgty number sy-msgno
          with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  END-OF-DEFINITION.
*&---------------------------------------------------------------------*
  DATA: is_sval TYPE sval,
        it_sval TYPE TABLE OF sval.
  DATA: lv_bukrs TYPE bukrs,
        lv_date TYPE d,
        lv_rcode.

  is_sval-tabname = 'BKPF'.
  is_sval-fieldname = 'BUKRS'.
  APPEND is_sval TO it_sval. CLEAR is_sval.
  is_sval-tabname = 'BKPF'.
  is_sval-fieldname = 'BUDAT'.
  is_sval-value = sy-datum.
  APPEND is_sval TO it_sval. CLEAR is_sval.

  CALL FUNCTION 'POPUP_GET_VALUES'
    EXPORTING
      popup_title     = 'FM POPUP_GET_VALUES'
    IMPORTING
      returncode      = lv_rcode
    TABLES
      fields          = it_sval
    EXCEPTIONS
      error_in_fields = 1
      OTHERS          = 2.
  IF sy-subrc = 0.
    CASE lv_rcode.
      WHEN space.
        LOOP AT it_sval INTO is_sval.
          CASE is_sval-fieldname.
            WHEN 'BUKRS'.
              lv_bukrs = is_sval-value.
            WHEN 'BUDAT'.
              lv_date = is_sval-value.
          ENDCASE.
        ENDLOOP.
      WHEN 'A'.
        MESSAGE 'Отменено пользователем' TYPE 'S'.
    ENDCASE.
  ELSE.
    systmess.
  ENDIF.
RETURNCODE:
" " - выходная таблица содержит введенные значения
"A" - отменено пользователем, начальные значения.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
POPUP_DISPLAY_MESSAGE - Вывод информационного окна по параметрам сообщения. В общем все прозрачно, окно выводится диалоговое, причем не зависимо от типа сообщения I, E, W, A будет просто диалог, по параметрам все прозрачно, ну разве что можно указать заголовок окна в котором выводится текст сообщения.
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'POPUP_DISPLAY_MESSAGE'
  EXPORTING
    TITEL         = 'Обанаружены проблемы'
    msgid         = 'M7'
    msgty         = 'A'
    msgno         = '004'
*   MSGV1         =
*   MSGV2         =
*   MSGV3         =
*   MSGV4         =
          .
PS: Кстати, в связи с тем, что независимо от типа сообщения нет прерывания программы, например в ситуации с типом сообщения "A", то такую проблему надо обработать уже самостоятельно. Обычно при типе сообщения "A", как мы знаем, дальнейшее выполнение программы должно быть остановлено.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
LVC_ITEM_DETAIL - Окно с ALV-таблицей
« Ответ #18 : Март 03, 2011, 04:35:54 pm »
LVC_ITEM_DETAIL - Выводит окошко с ALV-таблицей из двух колонок. Раздобыто в недрах работы класса CL_GUI_ALV_GRID, но можно использовать отдельно. Из полезного можно сформировать набор табличек со значениями из двух колонок, тогда в окне появляются кнопки листания и можно просматривать данные листая содержимое. Пример вызова довольно не сложный:
Код: You are not allowed to view links. Register or Login
DATA: gt_fieldcatalog TYPE lvc_t_fcat,
      gs_fieldcatalog TYPE lvc_s_fcat,
      gs_layout TYPE lvc_s_layo.

DATA: gt_outtab TYPE lvc_t_detm,
      ls_detail TYPE lvc_s_detm,
      lt_detail_tab TYPE lvc_t_deta,
      ls_detail_tab TYPE lvc_s_deta.

DATA: l_index LIKE sy-tabix,
      l_ctabix(2) TYPE c,
      l_ctabix_top(2) TYPE c.

* Сформировать каталог полей. Поля должны быть имеено такие!
CLEAR: gt_fieldcatalog[], gs_fieldcatalog.
gs_fieldcatalog-fieldname = 'COLUMNTEXT'.
gs_fieldcatalog-ref_table = 'LVC_S_DETA'.
gs_fieldcatalog-key       = 'X'.
gs_fieldcatalog-seltext   = 'Поле'.
gs_fieldcatalog-scrtext_s = 'Поле'.
gs_fieldcatalog-outputlen = 30.
APPEND gs_fieldcatalog TO gt_fieldcatalog.
CLEAR gs_fieldcatalog.
gs_fieldcatalog-fieldname = 'VALUE'.
gs_fieldcatalog-ref_table = 'LVC_S_DETA'.
gs_fieldcatalog-seltext   = 'Содержимое'.
gs_fieldcatalog-scrtext_s = 'Содержимое'.
gs_fieldcatalog-outputlen = 20.
APPEND gs_fieldcatalog TO gt_fieldcatalog.

* Заполнить 5 вариантов, в каждом варианте ражное число строк для примера
l_index = 0.
DO 5 TIMES.
  CLEAR: lt_detail_tab[].
  WRITE: sy-index TO l_ctabix_top LEFT-JUSTIFIED.
  l_index = sy-uzeit+4(2).
  WAIT UP TO 5 SECONDS.
  DO l_index TIMES.
    WRITE: sy-index TO l_ctabix LEFT-JUSTIFIED.
    CONCATENATE  'Группа_' l_ctabix_top '-' l_ctabix INTO ls_detail_tab-columntext.
    ls_detail_tab-value = l_ctabix.
    APPEND ls_detail_tab TO lt_detail_tab.
  ENDDO.
  MOVE lt_detail_tab TO ls_detail-detailtab.
  ls_detail-blockindex = sy-index.
  APPEND ls_detail TO gt_outtab.
ENDDO.

* Убрать стандартный тулбар ALV-таблицы
gs_layout-no_toolbar = 'X'.
* Сформировать заголовок
CONCATENATE 'ALV-Таблица, всего записей:' l_ctabix_top INTO gs_layout-grid_title.

* Вывод данных
CALL FUNCTION 'LVC_ITEM_DETAIL'
  EXPORTING
    i_title               = 'Заголовок окна'
    i_screen_start_column = '1'
    i_screen_start_line   = '1'
    i_screen_end_column   = '70'
    i_screen_end_line     = '10'
    it_fieldcatalog       = gt_fieldcatalog
    is_layout             = gs_layout
  TABLES
    t_outtab              = gt_outtab.
В коде я там задержку даю в 5 секунд чтобы в таблице попались разные результаты для демонстрации. Результат работы ниже, в общем как если надо быстро показать, то даже и не сложно все делается.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
POPUP_TO_DECIDE_WITH_MESSAGE - Окно с кнопками запроса действия
« Ответ #19 : Октябрь 07, 2011, 05:26:28 pm »
POPUP_TO_DECIDE_WITH_MESSAGE - Окно с кнопками, возможна кнопка отмены. На кнопках можно вывести свои иконки, и 6 строк текста, заголовок окна так же изменяем. Позиция окна задается при вызове или может оставаться по умолчанию. Система при попытке использовать данный ФМ, говорит, что он морально устарел, но так как по ходу он используется и очень активно, то а почему бы и нет. Общий вызов данной функции следующий:
Код: You are not allowed to view links. Register or Login
TYPE-POOLS: icon.

DATA: l_answer(1) TYPE c.

CALL FUNCTION 'POPUP_TO_DECIDE_WITH_MESSAGE'
  EXPORTING
    defaultoption     = '2'
    diagnosetext1     = 'Диагностика проблемы 1'
    diagnosetext2     = 'Диагностика проблемы 2'
    diagnosetext3     = 'Диагностика проблемы 3'
    textline1         = 'Комментарий о проблеме 1'
    textline2         = 'Комментарий о проблеме 2'
    textline3         = 'Комментарий о проблеме 3'
    text_option1      = 'Кнопка 1'
    text_option2      = 'Кнопка 2'
    icon_text_option1 = 'ICON_ANNOTATION'
    icon_text_option2 = 'ICON_CHANGE_TEXT'
    titel             = 'Шеф есть проблемы'
    start_column      = 25
    start_row         = 6
    cancel_display    = 'X'
  IMPORTING
    answer            = l_answer.
Обращаем внимание, что передавать надо имена иконок и пула типов. Далее если выведены все три кнопки то параметр возврата l_answer, будет иметь следующие значения, если нажата:
  • Первая кнопка = '1'
  • Вторая кнопка = '2'
  • Кнопка 'Отмена' = 'А'
Пример как это выгляди на рисунке POPUP_TO_DECIDE_WITH_MESSAGE.png ниже

Оффлайн jacknk88

  • Newbie
  • *
  • Сообщений: 120
  • Репутация: +4/-0
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Функции вывода диалоговых информационных окон
« Ответ #20 : Январь 21, 2013, 08:45:17 am »
You are not allowed to view links. Register or Login
Код: You are not allowed to view links. Register or Login
DATA: l_tabix(2) TYPE n,
      l_choise LIKE sy-tabix,
      lt_valuetab LIKE tline OCCURS 1 WITH HEADER LINE.

а что за тип tline ?
и какого еще типа может быть эта таблица ?

You are not allowed to view links. Register or Login

l_choise PS (02.03.2011): Кстати еще одна проблема, заголовок окна не устанавливается и всегда будет "Register", ну забыли бойцы там добавить в тексте амперсанд чтобы переданный текст выводился в заголовке. Кстати если кто думает что ФМ полностью бесполезен, то зря например очень легко можно вывести такую вот красоту как на рисунке POPUP_WITH_TABLE_DISPLAY_OK_2.png
и как вы нарисовали таблицу POPUP_WITH_TABLE_DISPLAY_OK_2.png ? ... можно код?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Функции вывода диалоговых информационных окон
« Ответ #21 : Январь 21, 2013, 11:47:57 am »
You are not allowed to view links. Register or Login
а что за тип tline ?
Ну SE11 вам в руки и посмотрите, тоже мне проблема тип и поля структуры посмотреть.

You are not allowed to view links. Register or Login
и как вы нарисовали таблицу POPUP_WITH_TABLE_DISPLAY_OK_2.png ? ... можно код?
Ну как-то так наверное:
Код: You are not allowed to view links. Register or Login
DATA: l_tabix(2) TYPE n,
      l_choise LIKE sy-tabix,
      lt_valuetab LIKE tline OCCURS 1 WITH HEADER LINE.

WRITE: sy-uline(50) TO lt_valuetab. APPEND lt_valuetab.
DO 20 TIMES.
  l_tabix = sy-tabix + 10.
  CONCATENATE sy-vline 'Строка' l_tabix sy-vline
  INTO lt_valuetab SEPARATED BY space.
  lt_valuetab+49(1) = sy-vline.
  APPEND lt_valuetab.
ENDDO.
WRITE: sy-uline(50) TO lt_valuetab. APPEND lt_valuetab.


CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY_OK'
  EXPORTING
    endpos_col   = 60
    endpos_row   = 10
    startpos_col = 2
    startpos_row = 2
    titletext    = 'Заголовок списка'
  IMPORTING
    choise       = l_choise
  TABLES
    valuetab     = lt_valuetab
  EXCEPTIONS
    break_off    = 1
    OTHERS       = 2.
IF sy-subrc <> 0.

ENDIF.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
POPUP_DISPLAY_TEXT - Вывод текстов в диалоговом окне. Тексты для вывода создаются через стандартную транзакцию SE61, вид текста DT - Текст в диалоге.
Код: You are not allowed to view links. Register or Login
DATA: l_cancelled(1) TYPE c.

CALL FUNCTION 'POPUP_DISPLAY_TEXT'
  EXPORTING
    language       = sy-langu
    popup_title    = 'Тестовый вывод текста в диалоге'
    start_column   = 10
    start_row      = 3
    text_object    = 'YTSH_TEST'
    help_modal     = 'X'
  IMPORTING
    cancelled      = l_cancelled
  EXCEPTIONS
    text_not_found = 1
    OTHERS         = 2.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Из положительного, текст может быть довольно большим, его можно распечатать или выполнить поиск по тексту.  Параметры вызова модуля в комментариях как мне кажется не нуждаются.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
FINB_BAPIRET2_DISPLAY - Вывод сообщений ошибок, структура параметра совместима по структуре BAPIRET2, так что можно быстро оформить вывод информационного окна со списком ошибок, после например работы какой-либо BAPI функции.
Код: You are not allowed to view links. Register or Login
DATA: lt_message TYPE /eacc/t_bapiret2,
      ls_return LIKE bapiret2.

ls_return-type = 'E'.
ls_return-id = 'M3'.
ls_return-number = '001'.
APPEND ls_return TO lt_message.
ls_return-type = 'W'.
APPEND ls_return TO lt_message.
ls_return-type = 'S'.
APPEND ls_return TO lt_message.

CALL FUNCTION 'FINB_BAPIRET2_DISPLAY'
  EXPORTING
    it_message = lt_message.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
C14A_POPUP_GET_VALUE_OF_FLAG - Небольшой модулек позволяющий вывести окно с чек-боксом. Все довольно прозрачно из особенностей, если в окне выбрать отмену, то результат всегда будет возвращен как = space, даже если вы по умолчанию задали признак "Х".
Код: You are not allowed to view links. Register or Login
DATA: BEGIN OF lt_test OCCURS 0,
  flag(1) TYPE c,
END OF lt_test.
DATA: l_set(1) TYPE c,
      l_cancel(1) TYPE c.

CALL FUNCTION 'C14A_POPUP_GET_VALUE_OF_FLAG'
  EXPORTING
    i_table_name          = 'LT_TEST'
    i_field_name          = 'FLAG'
    i_field_descr         =' Флаг выбора'
    I_FLG_DEF_VALUE       = 'X'
  IMPORTING
    e_flg_value           = l_set
    e_flg_cancel          = l_cancel
 EXCEPTIONS
   illegal_input         = 1
   internal_error        = 2
   OTHERS                = 3.
PS: Кстати, группа функций данного модуля, очень интересная, там много чего можно себе надергать для использования.