ZCB USFC COPY FILE

De wikiSAP
Revisión del 11:37 9 nov 2021 de Franblay (discusión | contribs.) (Página creada con «<pre> FUNCTION zcb_usfc_copy_file. *"---------------------------------------------------------------------- *"*"Interfase local *" IMPORTING *" REFERENCE(IM_SOURCE_FIL...»)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda
FUNCTION zcb_usfc_copy_file.
*"----------------------------------------------------------------------
*"*"Interfase local
*"  IMPORTING
*"     REFERENCE(IM_SOURCE_FILE) TYPE  EPSFILNAM
*"     REFERENCE(IM_SOURCE_DIRECTORY) TYPE  EPSDIRNAM
*"     REFERENCE(IM_TARGET_FILE) TYPE  EPSFILNAM
*"     REFERENCE(IM_TARGET_DIRECTORY) TYPE  EPSDIRNAM
*"  EXCEPTIONS
*"      OPEN_INPUT_FILE_FAILED
*"      OPEN_OUTPUT_FILE_FAILED
*"      READ_BLOCK_FAILED
*"      WRITE_BLOCK_FAILED
*"----------------------------------------------------------------------

  DATA lv_source_file_path  TYPE string.
  DATA lv_target_file_path  TYPE string.
  DATA lv_eof_reached       TYPE c.
  DATA lv_buffer(20480).
  DATA lv_buflen            TYPE i.

  CLEAR lv_source_file_path.
  CONCATENATE im_source_directory im_source_file INTO lv_source_file_path.
  CONDENSE lv_source_file_path NO-GAPS.

  CLEAR lv_target_file_path.
  CONCATENATE im_target_directory im_target_file INTO lv_target_file_path.
  CONDENSE lv_target_file_path NO-GAPS.

* open source and target files and start copying
  OPEN DATASET lv_source_file_path FOR INPUT IN BINARY MODE.
  IF sy-subrc NE 0.
    RAISE open_input_file_failed.
  ENDIF.

  OPEN DATASET lv_target_file_path FOR OUTPUT IN BINARY MODE.
  IF sy-subrc NE 0.
    RAISE open_output_file_failed.
  ENDIF.

  CLEAR lv_eof_reached.

  DO.

    CLEAR lv_buffer.

    READ DATASET lv_source_file_path
            INTO lv_buffer LENGTH lv_buflen.

    IF sy-subrc = 4.
      lv_eof_reached = 'X'.
    ELSEIF sy-subrc > 4.
      RAISE read_block_failed.
    ENDIF.

    TRANSFER lv_buffer TO lv_target_file_path
      LENGTH lv_buflen.

    IF sy-subrc NE 0.
      RAISE write_block_failed.
    ENDIF.

    IF lv_eof_reached = 'X'.
      EXIT.
    ENDIF.

  ENDDO.

  CLOSE DATASET lv_source_file_path.
  CLOSE DATASET lv_target_file_path.

ENDFUNCTION.


Utilidades
Página principal