Ayuda SAP

Visualizar pdf de AL11 , renombrar archivo de AL11

Hola buenas tardes gente cómo están, tengo un rato ya buscando como visualizar un pdf que esta guardado en un directorio de la al11, explico, tengo un alv donde cuando le dan clic a un registro debe ir a buscar en la al11 el pdf relacionado a ese registro y mostrarlo ya sea en un popup o en otra ventana independiente.

Mi otra consulta es relacionada con la misma tx AL11 y es como renombro un archivo ??

Yo se que para leer un archivo en la al11 uso open , read y close dataset pero hasta ahi llega mi pobre conocimiento.

Puedes probar el siguiente codigo

Saludos

Por fa @Percy_Mercado, pasa el código como texto (no como captura de pantalla), y dale formato con el editor como se explica en Cómo usar el foro de Consultoria-SAP :pray:

1 me gusta

Ah pero eso seria para adjuntar y cambiarle el asunto xD pero muchas gracias igual ya vi la solucion: debo copiar el archivo , crear uno nuevo y borrar el anterior

Encontré la solución:

Voy por partes: para visualizar PDF primero lo leo de la AL11:

Mis variables:

" Mostrar PDF
  data: lo_docking_container type ref to cl_gui_docking_container.
  data: lo_html              type ref to cl_gui_html_viewer.
  data: gt_pdfout type solix_tab,
        gs_pdfout type solix.
  data: p_file type string.
  data: ok_code(20).
  data: lv_url type char255. 

form leer_pdf . 
p_file = '/funcional/recepcion_contingencia/peru/proc_correctamente/20100057523_1_f010_12209.pdf' .
open dataset p_file for input in binary mode.
  do.
    read dataset p_file into gs_pdfout-line.
    if sy-subrc ne 0.
      exit.
    endif.
    append gs_pdfout to gt_pdfout.
  enddo.
  close dataset p_file.
  perform display_pdf. 
endform. 

form display_pdf .
  if not gt_pdfout is initial.
    call screen 616 starting at 1 1 ending at 100 10. " Nota: el primer valor es poscion de columna, el segundo es de fila y luego del ending at el primero es el ancho y el segundo el alto.
  else.
    write :/ 'No data to display'.
  endif.
endform.                    " DISPLAY_PDF 

Creamos una dynpro en mi caso 616

" Seguimos con la apertura del pdf leido que esta en la tabla gt_pdfout (es global por si acaso esta en un include llamado mi_programa_top01
*&---------------------------------------------------------------------*
*&      Module  STATUS_0616  OUTPUT
*&---------------------------------------------------------------------*
*       PBO
*----------------------------------------------------------------------*
module status_0616 output.
  set pf-status 'MAIN'.
  clear ok_code.
  IF NOT ( lo_docking_container IS INITIAL ).
    CALL METHOD lo_docking_container->free
      EXCEPTIONS
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
  endif.

  IF NOT ( lo_html IS INITIAL ).
    CALL METHOD lo_html->free
      EXCEPTIONS
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
  endif.

  create object lo_docking_container
    EXPORTING
      repid     = sy-repid
      dynnr     = sy-dynnr
      extension = 5000.

  CREATE OBJECT lo_html
    EXPORTING
      parent = lo_docking_container.
*
* Load the HTML
  lo_html->load_data(
    exporting
      type         = `application`
      subtype      = `pdf`
    IMPORTING
      assigned_url         = lv_url
    CHANGING
      data_table           = gt_pdfout
    EXCEPTIONS
      dp_invalid_parameter = 1
      dp_error_general     = 2
      cntl_error           = 3
      OTHERS               = 4 ).

* Show it
  lo_html->show_url( url = lv_url  in_place = 'X' ).

endmodule.                 " STATUS_0616  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0616  INPUT
*&---------------------------------------------------------------------*
*       PAI
*----------------------------------------------------------------------*
module user_command_0616 input.
  case sy-ucomm.
    when 'BACK' or 'EXIT' or 'CANC' or 'CONTINUE'.
      if not ( lo_docking_container is initial ).
        call method lo_docking_container->free
          exceptions
            cntl_error        = 1
            cntl_system_error = 2
            others            = 3.
      endif.

      if not ( lo_html is initial ).
        call method lo_html->free
          exceptions
            cntl_error        = 1
            cntl_system_error = 2
            others            = 3.
      endif.

      LEAVE TO SCREEN 0. " Leave screen llama al screen donde comenzo por ejemplo si en nuestro caso lo llamamos de un alv cerrara la scren del pdf y la dejara en el alve ya que si llamaos CALL SELECTION-SCREEN nos llevara a la pantalal de parametros.
  endcase.
endmodule.                 " USER_COMMAND_0616  INPUT 

Mi otra duda era para renombrar archivos y lo hice asi

  " Copiamos el archivo anterior con el nuevo nombre
  call method cl_cts_language_file_io=>copy_files_local
  exporting
    im_source_file           = 'documento_de_prueba.pdf'
    im_source_directory      = '/funcional/recepcion_contingencia/peru/proc_correctamente/'
    im_target_file           = 'new_documento_de_prueba.pdf'
    im_target_directory      = '/funcional/recepcion_contingencia/peru/new_proc_correctamente/'
*    im_overwrite_mode        = SPACE
*  IMPORTING
*    ex_file_size             =
  exceptions
    open_input_file_failed   = 1
    open_output_file_failed  = 2
    write_block_failed       = 3
    read_block_failed        = 4
    close_output_file_failed = 5
    others                   = 6.

  " Borramos el archivo con el viejo nombre
  DELETE DATASET '/funcional/recepcion_contingencia/peru/proc_correctamente/documento_de_prueba.pdf'.

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.