Распечатка в PDF

Автор themax, Лютий 21, 2017, 02:19:36 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

themax

Доброго времени суток, уважаемые ABAP-еры.

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

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

Попробывал  добавить сообщения в эксепшены. В результате выходит такое сообщение ADS: com.adobe.ProcessingException: Problem accessing d(200101) № сообщения FPRUNX001. Смотрел соответствующую ноту, связанную с настройкой ADC, но в системе уже имеется парочка PDF формуляров и они запускаются нормально, т.е. если бы ли проблемы с ADC то вообще бы ни один формуляр не запускался или я не правильно мыслю?

themax

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

Интереса ради попытался скопировать уже существующий интерфейс и сам формуляр. Нашёл в какой проге оное используется и тоже её скопировал, из праздного любопытства. Пытаюсь запустить формуляр из новой скопированной программы, выдаёт дамп с описанием класса CX_FP_API_INTERNAL, т.е.
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.

Вот сейчас мне совершенно не понятно. Старая программка работает и выводит формуляр без проблем, но скопированная, т.е.идентичная ей, но с другим названием уже не хочет работать. В интернете множество информации по этому классу, но никакой конкретики. Может кто сталкивался??

SMF spam blocked by CleanTalk