Upload de fondo archivos PDF a tabla Z

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • ehrman
    Junior Member
    • may
    • 5

    #1

    Upload de fondo archivos PDF a tabla Z

    * Date (YYYY/MM/DD) : 2015/03/20
    * Author : Luis Ehrman Gutierrez
    * Required by : Cargue a base de datos de SAP archivos PDF
    * ubicados en el server de aplicaciones SAP
    *&---------------------------------------------------------------------*
    * CHANGES LOG
    *&---------------------------------------------------------------------*
    * Description :
    * Date (YYYY/MM/DD) :
    * Author :
    * Required by :
    **&---------------------------------------------------------------------*

    REPORT ZUPLOAD_PDF_BD.

    "Definicion tabla Z en el diccionario de datos de SAP
    *MANDT MANDT CLNT 3 0 Mandante
    *FERTH FERTH CHAR 18 0 Nombre archivo plano pdf
    *CONS CHAR 5 0 Numero de Lineas por File
    *MATNR MATNR CHAR 18 0 Número de material
    *LINE SO_TEXT255 CHAR 255 0 Campo de texto, longitud 255: Textos
    *FECARGA DATUM DATS 8 0 Fecha

    "Se declara tipo de tabla Hexadecimal
    TYPES: BEGIN OF HEX_RECORD,
    FIELD(1024) TYPE X,
    END OF HEX_RECORD.

    "Se declara tabla interna con tabla Z de la base de datos
    DATA: BEGIN OF LT_ZTBMMPLANO OCCURS 100.
    INCLUDE STRUCTURE ZTBMMPLANO.
    DATA: END OF LT_ZTBMMPLANO.

    "Se declara tabla interna para guardar conversion del binario de SAP
    DATA: BINARY_ATT TYPE STANDARD TABLE OF SOLISTI1,
    WA_BINARY_ATT TYPE SOLISTI1.

    DATA: LT_TAB_EX2 TYPE STANDARD TABLE OF HEX_RECORD WITH HEADER LINE,
    WA_TAB_EX2 TYPE HEX_RECORD,
    LV_FNAME TYPE STRING,
    LV_CONS(5) TYPE C,
    X_STRING TYPE XSTRING,
    S_STRING TYPE STRING,
    S_STRING1 TYPE STRING.

    "Ruta o directorio en el servidor de aplicaciones de SAP ubicacion del PDF
    LV_FNAME = '/usr/sap/ACE/0530.PDF'.


    START-OF-SELECTION.

    "Se abre el archivo en la ruta del server de SAP en modo binario
    OPEN DATASET LV_FNAME FOR INPUT IN BINARY MODE.
    IF SY-SUBRC EQ 0.
    DO.
    "Se lee linea a linea y se lleva a la tabla Hexadecimal.
    READ DATASET LV_FNAME INTO LT_TAB_EX2-FIELD.
    IF SY-SUBRC EQ 0.
    APPEND LT_TAB_EX2.
    ELSE.
    APPEND LT_TAB_EX2.
    EXIT.
    ENDIF.
    ENDDO.
    CLOSE DATASET LV_FNAME.

    "Se recorre la tabla Interna Hexadecimal y se guarda todo su contenido
    "en una variable tipo String
    LOOP AT LT_TAB_EX2.
    CLEAR: S_STRING1.
    S_STRING1 = LT_TAB_EX2-FIELD.
    CONCATENATE S_STRING S_STRING1 INTO S_STRING.
    ENDLOOP.

    "Se lleva el contenido de la variable tipo String una variable Xtring
    X_STRING = S_STRING.
    "Se hace la conversion de hexadecinal y se lleva a la tabla interna
    "binaria de longitud 255
    CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
    BUFFER = X_STRING
    * APPEND_TO_TABLE = 'X' "Do not clear/refresh table
    TABLES
    BINARY_TAB = BINARY_ATT.
    BREAK-POINT.

    "Se hace una descarga el binario al disco local del pc
    IF SY-BATCH <> 'X'. "Si se ejecuta de Fondo omite la descarga
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    FILENAME = 'C:\tmp\prueba.pdf'
    FILETYPE = 'BIN'
    TABLES
    DATA_TAB = BINARY_ATT.
    ENDIF.

    "Se lleva el contenido del binario a la tabla interna con la
    "misma estructura de la tabla Z definida en el diccionario de datos
    LV_CONS = 1.
    LOOP AT BINARY_ATT INTO WA_BINARY_ATT.
    LT_ZTBMMPLANO-FERTH = '0530'.
    LT_ZTBMMPLANO-MATNR = '000000000000061688'.
    LT_ZTBMMPLANO-CONS = LV_CONS.
    LT_ZTBMMPLANO-LINE = WA_BINARY_ATT-LINE.
    LT_ZTBMMPLANO-FECARGA = SY-DATUM.
    APPEND LT_ZTBMMPLANO.
    LV_CONS = LV_CONS + 1.
    ENDLOOP.

    DELETE FROM ZTBMMPLANO.
    COMMIT WORK.
    "Se copia a la tabla Z el contenido binario del PDF
    INSERT ZTBMMPLANO FROM TABLE LT_ZTBMMPLANO.
    COMMIT WORK.

    ENDIF.
    44
    Si
    0%
    39
    No
    0%
    2
    En algo
    0%
    2
    no cumple
    0%
    1
  • coloso
    Senior Member
    • feb
    • 110

    #2
    Muchas gracias, me lo guardo por si algún día me hace falta.

    Comentario

    Trabajando...