Текущее время: Вс, июл 06 2025, 13:06

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 10:16 
Специалист
Специалист

Зарегистрирован:
Вс, фев 12 2012, 18:43
Сообщения: 192
Всем привет.

Создала новый вид выходного документа, привязала его в схему условий выходного документа для исходящих поставок. По заданию нужно перед печатью/выводом на экран печатной формы, выводить экран, в котором пользователю предлагается завести данные. Далее по нажатию на экране кнопки "Печать" происходит выгрузка печатной формы в Excel.

Сама программа печати имеет тип - 1 Выполняемая программа.
Начальная подпрограмма - entry.
В программе вызываю экран CALL SCREEN 200 STARTING AT 20 5, в редакторе его нарисовала.
Но в результате получаю следующее

Изображение
то есть второй раз открывается диалог печати. В чем дело? Почему так?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 11:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Приведите код подпрограммы entry.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 12:06 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Touch написал(а):
Сама программа печати имеет тип - 1 Выполняемая программа.
Попробуйте для начала сменить тип программы печати на Пул модулей.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 12:24 
Специалист
Специалист

Зарегистрирован:
Вс, фев 12 2012, 18:43
Сообщения: 192
Удав,

Code:
FORM entry USING return_code us_screen.

  CLEAR retcode.
  xscreen = us_screen.
 
  CLEAR: gs_head, gt_item.
  REFRESH gt_item.

  PERFORM get_data TABLES gt_item CHANGING gs_head.

  CALL SCREEN 200 STARTING AT 20 5.

  IF retcode NE 0.
    return_code = 1.
  ELSE.
    return_code = 0.
  ENDIF.

ENDFORM.


Бородин Игорь,
Цитата:
Touch писал(а):
Сама программа печати имеет тип - 1 Выполняемая программа.
Попробуйте для начала сменить тип программы печати на Пул модулей.

попробовала сменить на типа М Пул модулей. Не помогло.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 12:54 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Ну, значит, оберните ваш код в Ф.М. и внутри FORM entry сразу вызывайте его. Экран, соответственно, переместите в ту Группу функций, в которой будет находиться Ф.М.

UPD: Кстати, если и Экран и FORM entry будут находиться внутри одной Группы функций, то ваш код "как есть" тоже отработает нормально (без Ф.М.)


Последний раз редактировалось Бородин Игорь Вт, янв 26 2016, 13:10, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 12:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
А где у вас вывод в smartform или pdf-form?
Есть подозрение, что внутри формы get_data. Попробуйте CALL SCREEN поставить перед PERFORM get_data.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 13:12 
Специалист
Специалист

Зарегистрирован:
Вс, фев 12 2012, 18:43
Сообщения: 192
Удав,
происходит выгрузка в Excel (с помощью ZWWW), при нажатии на кнопку "Печать" на экране 200 (который не получается вызвать).

Code:
CASE gv_fcode.
    WHEN 'PRINT'.
     
        PERFORM print_xls TABLES gt_item USING gs_head.

    WHEN 'CHANCEL' OR'BACK' OR 'UP' OR'ESC' .
      CLEAR: gs_head, gt_item.
      REFRESH gt_item.
      LEAVE TO SCREEN 0.
  ENDCASE.


а внутри get_data заполнение таблицы gt_item и заголовка gs_head.

То есть получается, что сначала заполняются данные для ПФ (заголовок и таблица), затем вызывается экран 200, где пользователь должен ввести какие-то данные вручную (если это нужно), затем при нажатии на кнопку "Печать" на экране 200 происходит выгрузка всех данных в Excel.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме  Тема решена
СообщениеДобавлено: Вт, янв 26 2016, 14:07 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Проблема известна. Стандартная программа вызывает подпрограмму в другой (вашей) программе:
Code:
PERFORM entry IN PROGRAM вашапрограмма
Однако, если вы делаете в своей подпрограмме CALL SCREEN, то система ищет этот экран не в вашей программе, а в исходной (вызывающей) программе. В этом-то и проблема. И обычно при этом бывает дамп, но, по всей видимости, в вашем конкретном случае номер экрана 200 совпал с номером экрана, имеющегося в исходной программе и система вызвала его (повторно).

Как это победить - есть несколько способов. Один из таких способов я указал выше (переместите подпрограмму и экран в Гр.функций).


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 15:46 
Специалист
Специалист

Зарегистрирован:
Вс, фев 12 2012, 18:43
Сообщения: 192
Сделала как вы сказали
Изображение
Include и экран (специально переименовала в 2222, чтобы не совпадало с системным экраном) в одной группе функций

Но получила дамп
The system attempted to use dynpro 2222 in program "SAPLVMSG".
This dynpro does not exist.

То есть программа все равно ищет экран внутри исходной (вызывающей) программы. Я что-то не так создала?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 16:03 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Нужно создать ФМ, в котором вызывать экран из группы функций.
И в программе печати вызвать этот ФМ.
Вот работающий код:
Code:
FORM entry USING return_code TYPE i
                 us_screen   TYPE c.

  DATA: lv_format(1) TYPE c.
  CLEAR: retcode.
  xscreen = us_screen.

  PERFORM get_my_data.

* Выбор формата вывода формуляра
  CALL FUNCTION 'K_KKB_POPUP_RADIO2'
    EXPORTING
      i_title   = 'Формат Вывода'(093)
      i_text1   = 'SmartForms'
      i_text2   = 'Excel'(092)
      i_default = '1'
    IMPORTING
      i_result  = lv_format
    EXCEPTIONS
      cancel    = 1
      OTHERS    = 2.
  IF sy-subrc <> 0.
    MESSAGE e017(zmsdbf2).
  ENDIF.

  IF lv_format = '1'.
    PERFORM smartforms.
  ELSEIF lv_format = '2'.
    PERFORM export_excel.
  ENDIF.

  IF retcode NE 0.
    return_code = 1.
  ELSE.
    return_code = 0.
  ENDIF.
ENDFORM.                    "ENTRY

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 16:05 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Бородин Игорь написал(а):
Я что-то не так создала?
А как вы прописали в настройках программу печати? надо бы так: SAPLZPF_917


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Диалоговый экран в печатной форме
СообщениеДобавлено: Вт, янв 26 2016, 17:56 
Специалист
Специалист

Зарегистрирован:
Вс, фев 12 2012, 18:43
Сообщения: 192
Цитата:
А как вы прописали в настройках программу печати? надо бы так: SAPLZPF_917


даже если так, то все равно дамп, что не находит экран в программе SAPLVMSG.

Получилось после того как сделала через ФМ. То есть ФМ и экран поместила в одну группу функций, а в настройках указала Z-программу с вызовом ENTRY, в котором вызывается ФМ, в котором вызывается экран. Всем откликнувшимся спасибо за помощь!


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

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


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

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


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

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