Anda di halaman 1dari 7

Template para bajar Ordenes de Spool a PDF

Si miramos nuestras odenes de Spool:

Vemos que hay una orden que coincide con la fecha que puse como parmetro, ejecutamos el programa. Y Obtenemos lo siguiente:

PRUEBA.pdf

Codigo del Programa:

REPORT

zsmart_pdf.

PARAMETERS: nombre TYPE string. "Nombre del pdf PARAMETERS: p_fecha TYPE sy-datum. "Fecha de la orden de spool a bajar PARAMETERS: p_del AS CHECKBOX. "Borrar orden de spool tras descarg a DATA: p_file TYPE string. TABLES: usr01. DATA: subdir LIKE rlgrap-filename, fecha_w(16), p_fich LIKE rlgrap-filename, usernam LIKE sy-uname, disp LIKE rspotype-device, w_destino type string, i_spoolreq LIKE rsporq.

DATA: lines TYPE i, free TYPE i, d_lineas LIKE sy-tabix, i_pdf LIKE tline, pbyte TYPE i, spool_id LIKE tsp01-rqident, spool_del LIKE tsp0e-rqident, respuesta LIKE sy-tabix, i_otf, w_nombretxt(128), indice LIKE sy-tabix, datc LIKE rsporq-rqcretime, w_indice(2) VALUE '-1', t_pdf LIKE tline OCCURS 0. DATA:BEGIN OF it_tsp01 OCCURS 0. INCLUDE STRUCTURE tsp01. DATA: END OF it_tsp01. DATA: BEGIN OF tspoolreq OCCURS 0, rqident LIKE rsporq-rqident, rqclient LIKE rsporq-rqclient, rqtitle LIKE rsporq-rqtitle, rq0name LIKE rsporq-rq0name, rq1name LIKE rsporq-rq1name, rq2name LIKE rsporq-rq2name , rqowner LIKE rsporq-rqowner, rqcretime LIKE rsporq-rqcretime , rqlayout LIKE rsporq-rqlayout , END OF tspoolreq.

CALL METHOD cl_gui_frontend_services=>directory_browse EXPORTING window_title = 'Selecciona Ubicacion' initial_folder = 'C:\' CHANGING selected_folder = p_file EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4.

usernam = sy-uname. ********************************************************************** ******** *Recuperar Impresora local SELECT SINGLE spld FROM usr01

INTO CORRESPONDING FIELDS OF usr01 WHERE bname = sy-uname. IF sy-subrc = 0. disp = usr01-spld. ENDIF. *recupera las ordenes de spool del usuario CALL FUNCTION 'RSPO_FIND_SPOOL_REQUESTS' EXPORTING allclients = ' ' authority = 'X' datatype = '*' has_output_requests = '*' rq0name = '*' rq1name = '*' rq2name = '*' rqdest = disp rqident = 0 rqowner = usernam TABLES spoolrequests = tspoolreq EXCEPTIONS no_permission = 1 OTHERS = 2. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

*Busca ordenes de spool de la fecha indicada por parametro LOOP AT tspoolreq INTO i_spoolreq WHERE rqcretime+0(8) = p_fecha. * IF i_spoolreq-rqcretime+0(8) = datum. ADD 1 TO w_indice. spool_id = i_spoolreq-rqident. *Armar Nombre del PDF IF w_indice = '0'. CONCATENATE: p_file '\' nombre '.pdf' INTO w_destino. ELSE. CONCATENATE: p_file '\' nombre '(' w_indice ')' '.pdf' INTO w_dest ino. ENDIF. ************************************************************ *Crear PDF PERFORM tratamiento_pdf. DESCRIBE TABLE t_pdf LINES d_lineas. IF d_lineas NE 0. "solo hago el download si tengo datos PERFORM bajar_archivo. ENDIF.

IF p_del = 'X'. PERFORM borrar_spool. ENDIF. ENDLOOP. *&--------------------------------------------------------------------* *& Form tratamiento_pdf *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM tratamiento_pdf. * Miramos qu tipo de spool tenemos CALL FUNCTION 'RSPO_GET_TYPE_SPOOLJOB' EXPORTING rqident = spool_id IMPORTING is_otf = i_otf EXCEPTIONS can_not_access = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID 'Z1' TYPE 'E' NUMBER 000 WITH text-002. ELSEIF i_otf EQ 'X'. * Generar PDF de OTF CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF' EXPORTING src_spoolid = spool_id IMPORTING pdf_bytecount = pbyte TABLES pdf = t_pdf EXCEPTIONS err_no_otf_spooljob = 1 err_no_spooljob = 2 err_no_permission = 3 err_conv_not_possible = 4 err_bad_dstdevice = 5 user_cancelled = 6 err_spoolerror = 7 err_temseerror = 8 err_btcjob_open_failed = 9 err_btcjob_submit_failed = 10 err_btcjob_close_failed = 11 OTHERS = 12. ELSE. " Generar PDF de Abap CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF' EXPORTING src_spoolid = spool_id IMPORTING

pdf_bytecount = pbyte TABLES pdf = t_pdf EXCEPTIONS err_no_abap_spooljob = 1 err_no_spooljob = 2 err_no_permission = 3 err_conv_not_possible = 4 err_bad_destdevice = 5 user_cancelled = 6 err_spoolerror = 7 err_temseerror = 8 err_btcjob_open_failed = 9 err_btcjob_submit_failed = 10 err_btcjob_close_failed = 11 OTHERS = 12. IF sy-subrc EQ 0. * Iniciamos la traduccin por error en la funcion de conversion ABAPPDF LOOP AT t_pdf INTO i_pdf. TRANSLATE i_pdf USING ',.'. MODIFY t_pdf FROM i_pdf. ENDLOOP. ENDIF. ENDIF. "De if sy-subrc ENDFORM. " TRATAMIENTO_PDF *&--------------------------------------------------------------------* *& Form bajar_archivo *&--------------------------------------------------------------------* FORM bajar_archivo . CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING bin_filesize = pbyte filename = w_destino filetype = 'BIN' * write_field_separator = 'X' TABLES data_tab = t_pdf. IF sy-subrc = 0. WRITE: 'Se bajo el archivo', w_destino. ENDIF. ENDFORM. " bajar_archivo *&--------------------------------------------------------------------* *& Form borrar_spool *&--------------------------------------------------------------------* FORM borrar_spool.

REFRESH it_tsp01. spool_del = i_spoolreq-rqident. SELECT * FROM tsp01 INTO TABLE it_tsp01 WHERE rqident = spool_del. DELETE tsp01 FROM TABLE it_tsp01. ENDFORM. " borrar_spool

Anda mungkin juga menyukai