Ayuda SAP

Open dataset (Generar PDF en AS)

Buenas gente como están?, les traigo un tema que me tiene loco, he implementado un código que me permite generar un PDF convirtiendo el OTF de un smartform y luego pasarlo al AS la cuestión es que al abrir este pdf sale como dañado o no reconocible al abrir el adobe!.
Adjunto código:

Llamar función smartform

    CALL FUNCTION lc_fname
      EXPORTING
        control_parameters   = st_control_parameters
        output_options       = st_output_options
        cantidad             = gst_grid-dividendo
        cant_texto           = cant_str
        cuotas               = cuotas
        vencimiento          = lc_fe_ven_s
        fecha_actual         = lc_feact_prt
        cli_nom1             = cli_nom1
        cli_cod1             = cli_cod1
        lines                = lc_lines_p
      IMPORTING
        document_output_info = st_document_output_info
        job_output_info      = st_job_output_info
        job_output_options   = st_job_output_options
      TABLES
        it_amortizacion      = git_grid.

CONVERT TO OTF TO PDF

   CALL FUNCTION 'CONVERT_OTF_2_PDF'
      IMPORTING
        bin_filesize           = v_bin_filesize
      TABLES
        otf                    = st_job_output_info-otfdata
        doctab_archive         = it_docs
        lines                  = it_lines
      EXCEPTIONS
        err_conv_not_possible  = 1
        err_otf_mc_noendmarker = 2
        OTHERS                 = 3.

 CONCATENATE p_bsid'_' sy-datum '.pdf' INTO v_name.
    DATA: lc_filename TYPE string,
          lv_line     TYPE string.
    CLEAR: lc_filename, lv_line, wa_lines.
    CONCATENATE '\\RUTA\carpeta1\carpeta2' v_name
    INTO lc_filename.

    CONDENSE lc_filename NO-GAPS.
    OPEN DATASET lc_filename  FOR OUTPUT IN BINARY MODE. "TEXT MODE ENCODING UTF-8.
    LOOP AT it_lines INTO wa_lines.
      TRANSFER wa_lines-tdline TO lc_filename.
    ENDLOOP.
    CLOSE DATASET lc_filename.

Has probado a hacer un gui_download en lugar del open dataset para bajártelo a tu pc y así descartar si el error está en el transfer o en la función convert?

Buenas,

opino igual. Ese Open data set en binary mode no sé si te va a servir para bajar un PDF… El PDF además de ser un formato propietario es bastante más complicado que un fichero binario.

Como dice @Salco tiene que haber alguna forma alternativa. No sé si con un GUI_DOWNLOAD o con alguna nueva clase. Quizá en vez de usar un smartform puedes probar con un adobe forms.

Saludos!

Hay un programa: RSTXPDFT4
Te permite guardar una orden de spool como pdf directamente desde SAP.

Seria cosa de ver el código fuente a ver si hay un procedimiento o función que pase la información a pdf.

Saludos (:

1 me gusta

efectivamente con gui download lo puedo almacenar en mi desktop y funciona pero el requerimiento pide almacenarlo en una ruta compartida por lo cual uso el open dataset el archivo pdf se genera pero al abrirlo da el error mencionado.

@Adrian_Vera, con el gui_download también lo puedes dejar en una ruta compartida… no sólo en tu pc

al enviarlo a la ruta en el AS me da un error sera un problema con la ruta compartida?, sy-subrc = 14 (unknown_dp_error), al parecer debería tener esa ruta mapeada en mi pc pero puede darse el caso que no necesite acceso a esta ruta mas solo pasar el archivo gui_download creo que solo trabaja del lado del servidor de presentación si no me equivoco por lo cual no encontraría la ruta (trabajo via vpn a un servidor externo)

saludos gracias por tu respuesta aun busco metodos alternos!

saludos, revise el código del programa y encontré diversas funciones al parecer en este programa se usa gui_download

Por que no intentas hacer un loop at a una variable y luego sólo un transfer?

OPEN DATASET hlp_filename FOR OUTPUT IN BINARY MODE. LOOP AT tl_xml INTO el_xml. CONCATENATE lv_files el_xml-line(el_xml-length) INTO lv_files RESPECTING BLANKS. ENDLOOP. TRANSFER lv_files TO hlp_filename. CLOSE DATASET hlp_filename.

me da el mismo error que con mi codigo,

estoy implementandolo mal?, envió el código:

DATA: lc_filename TYPE string,
      lv_line     TYPE string.

CLEAR: lc_filename, lv_line, wa_lines.

CONCATENATE '\\server\folder1\folder2\' v_name
INTO lc_filename.

data: lv_files TYPE string,
lv_size TYPE i.

clear: lv_files, lv_size.

OPEN DATASET lc_filename  FOR OUTPUT IN BINARY MODE.

  LOOP AT it_lines INTO wa_lines.
  clear lv_size.
  lv_size = strlen( wa_lines-tdline ).
  CONCATENATE lv_files wa_lines-tdline(lv_size) into lv_files RESPECTING BLANKS.
  ENDLOOP.

  TRANSFER lv_files to lc_filename.

CLOSE DATASET lc_filename.

solucionado cambiando la función ‘CONVERT_OTF_2_PDF’ por la funcion ‘CONVERT_OTF’ al parecer difieren las tablas de salida, saludos y gracias por sus respuestas!

Pues me alegro mucho. Fíjate que cuando respondí en el post número 2 te preguntaba por el download para saber si el error estaba en el transfer o en la función convert porque nosotros también usamos la CONVERT_OTF y no la CONVERT_OTF_2_PDF, pero luego se me fue la idea.

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.