+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средстваТема:
|- Распечатка в PDF




Автор Тема: Распечатка в PDF  (Прочитано 743 раз)

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

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 210
  • Reputation Power: 0
  • themax has no influence.
  • YearsYearsYearsYearsYearsYears
Распечатка в PDF
« : Февраль 21, 2017, 02:19:36 pm »
Доброго времени суток, уважаемые ABAP-еры.

В общем возник так вопрос. Пытаюсь разобраться как делать распечатку в PDF формате. Пока не получается. Создаю сначала интерфейс, ну допустим Z_TEST, с помощью транзакции SFP добавил два поля как на рисунке z_test. Потом создал формуляр с помощью этой же транзакции как на рисунке z_test2 и z_test3. 
Затем создал программку с таким вот кодом

Код: You are not allowed to view links. Register or Login
types:
      ty_outputparams type sfpoutputparams, "Form Parameters for Form Processing
      ty_docparams    type sfpdocparams.    "Form Processing Output Parameter
data:
      wa_outputparams type sfpoutputparams,
      wa_docparams    type sfpdocparams.

data:
      gv_fm_name      type rs38l_fnam,
      matnr           type makt-matnr,
      maktx            type makt-maktx.

parameters:
      m_matnr       type makt-matnr.

start-of-selection.

  " Sets the output parameters and opens the spool job
  wa_outputparams-device    =  'PRINTER'.
  wa_outputparams-dest      =  'LP01'.
  wa_outputparams-nodialog  = 'X'.
  wa_outputparams-preview   = 'X'.

  call function 'FP_JOB_OPEN'
    changing
      ie_outputparams = wa_outputparams
    exceptions
      cancel          = 1
      usage_error     = 2
      system_error    = 3
      internal_error  = 4
      others          = 5.
  if sy-subrc <> 0.
    " <error handling>
  endif.
  " Get the name of the generated function module
  call function 'FP_FUNCTION_MODULE_NAME'
    exporting
      i_name     = 'Z_TEST'
    importing
      e_funcname = gv_fm_name.
  if sy-subrc <> 0.
    "<error handling>
  endif.

*  wa_docparams-langu   = 'RU'.
*  wa_docparams-country = 'KZ'.

  select single matnr maktx from makt into (matnr, maktx) where matnr eq m_matnr.

  call function gv_fm_name
      exporting
        matnr          = matnr
        makt          = maktx
*      bukrs          = gv_bukrs
      exceptions
        usage_error    = 1
        system_error   = 2
        internal_error = 3.

  call function 'FP_JOB_CLOSE'
    exceptions
      usage_error    = 1
      system_error   = 2
      internal_error = 3
      others         = 4.
  if sy-subrc <> 0.
    " <error handling>
  endif.

После выборки нужного номера материала и запуска транзакции должна выходить PDF страничка, но на оне выходит. Вопрос: что я не так делаю?

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 210
  • Reputation Power: 0
  • themax has no influence.
  • YearsYearsYearsYearsYearsYears
Re: Распечатка в PDF
« Ответ #1 : Февраль 22, 2017, 12:28:01 pm »
Попробывал  добавить сообщения в эксепшены. В результате выходит такое сообщение ADS: com.adobe.ProcessingException: Problem accessing d(200101) № сообщения FPRUNX001. Смотрел соответствующую ноту, связанную с настройкой ADC, но в системе уже имеется парочка PDF формуляров и они запускаются нормально, т.е. если бы ли проблемы с ADC то вообще бы ни один формуляр не запускался или я не правильно мыслю?

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 210
  • Reputation Power: 0
  • themax has no influence.
  • YearsYearsYearsYearsYearsYears
Re: Распечатка в PDF
« Ответ #2 : Февраль 23, 2017, 04:05:21 pm »
В общем что только я не делал, но вывести формуляр у меня так и не получается.

Интереса ради попытался скопировать уже существующий интерфейс и сам формуляр. Нашёл в какой проге оное используется и тоже её скопировал, из праздного любопытства. Пытаюсь запустить формуляр из новой скопированной программы, выдаёт дамп с описанием класса CX_FP_API_INTERNAL, т.е.
Код: You are not allowed to view links. Register or Login
61     IF sy-subrc IS NOT INITIAL.
   62 *     Sperre in jedem Fall aufheben
   63       PERFORM dequeue USING i_formname.
>>>>>       RAISE EXCEPTION TYPE cx_fp_api_internal
   65         EXPORTING
   66           textid = cx_fp_api_internal=>no_number.
   67     ENDIF.
   68   ELSE.
Вот сейчас мне совершенно не понятно. Старая программка работает и выводит формуляр без проблем, но скопированная, т.е.идентичная ей, но с другим названием уже не хочет работать. В интернете множество информации по этому классу, но никакой конкретики. Может кто сталкивался??