Problema con job al escribir en una unidad

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • yruelas
    Junior Member
    • may
    • 2

    #1

    Problema con job al escribir en una unidad

    Buenos días, tengo un programa que extrae unos datos de las tablas de SAP y los escribe en un archivo txt de una unidad de red. Si ejecuto la transacción directamente me crea el archivo con los datos, pero si la meto a un job no me crea el archivo ni me marca error.
    ¿Alguna sugerencia que me permita ver donde esta mi error?

    Gracias de antemano.

    El código es:
    TYPES: BEGIN OF gty_s_clienteinfo,
    KUNNR TYPE c LENGTH 10,
    STCD1 TYPE c LENGTH 16,
    NAME1 TYPE c LENGTH 40,
    NAME2 TYPE c LENGTH 40,
    STREET TYPE c LENGTH 60,
    HOUSE_NUM1 TYPE c LENGTH 10,
    CITY2 TYPE c LENGTH 40,
    CITY1 TYPE c LENGTH 40,
    POST_CODE1 TYPE c LENGTH 10,
    REGION TYPE c LENGTH 3,
    COUNTRY TYPE c LENGTH 3,
    TEL_NUMBER TYPE c LENGTH 30,
    FAX_NUMBER TYPE c LENGTH 30,
    NAME1_2 TYPE c LENGTH 35.
    TYPES: END OF gty_s_clienteinfo.
    DATA skna1 TYPE gty_s_clienteinfo.

    TYPES ty_tab TYPE c LENGTH 1000.
    CONSTANTS c_path TYPE string VALUE 'c:\downloads.txt'.
    DATA g_flength TYPE i.
    DATA gt_data TYPE STANDARD TABLE OF ty_tab.
    DATA strDatos TYPE ty_tab.

    TYPES mfile TYPE c LENGTH 100.
    DATA v_file TYPE mfile.
    v_file = '\\xxxxxxxxxxxxxx\transacciones\clientes.txt'.

    SELECT KNA1~kunnR KNA1~STCD1 ADRC~NAME1 ADRC~NAME2 ADRC~STREET ADRC~HOUSE_NUM1 ADRC~CITY2 ADRC~CITY1 ADRC~POST_CODE1 ADRC~REGION
    ADRC~COUNTRY ADRC~TEL_NUMBER ADRC~FAX_NUMBER FROM KNA1 INNER JOIN ADRC ON KNA1~ADRNR = ADRC~ADDRNUMBER INTO skna1 where KTOKD = 'CD01' and LOEVM = ' '.

    CONCATENATE skna1-KUNNR '|' skna1-stcd1 '|' skna1-NAME1 '|' skna1-NAME2 '|' skna1-STREET '|' skna1-HOUSE_NUM1 '|' skna1-CITY2 '|'
    skna1-CITY1 '|' skna1-POST_CODE1 '|' skna1-REGION '|' skna1-COUNTRY '|' skna1-TEL_NUMBER '|' skna1-FAX_NUMBER '|' skna1-NAME1_2 INTO strDatos.
    "write: / strDatos .
    APPEND strDatos TO gt_data.
    "TRANSFER strDatos TO v_file.
    ENDSELECT.

    ""CLOSE DATASET v_file.

    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    filename = '\\xxxxxxxxxxxxxx\transacciones\clientes.txt'
    TABLES
    data_tab = gt_data
    EXCEPTIONS
    FILE_WRITE_ERROR = 1
    NO_BATCH = 2
    GUI_REFUSE_FILETRANSFER = 3
    INVALID_TYPE = 4
    NO_AUTHORITY = 5
    UNKNOWN_ERROR = 6.

    TYPES: BEGIN OF gty_s_contactoinfo,
    KUNNR TYPE c LENGTH 10,
    NAME1 TYPE c LENGTH 35,
    VTEXT TYPE c LENGTH 20,
    TELF1 TYPE c LENGTH 16.
    TYPES: END OF gty_s_contactoinfo.
    DATA sContac TYPE gty_s_Contactoinfo.

    TYPES ty_tab2 TYPE c LENGTH 1000.
    CONSTANTS c_path2 TYPE string VALUE 'c:\contactos.txt'.
    DATA gt_data2 TYPE STANDARD TABLE OF ty_tab2.
    DATA strDatos2 TYPE ty_tab2.

    v_file = '\\xxxxxxxxxxxxxxx\transacciones\contactos.txt'.
    SELECT KNVK~kunnR KNVK~NAME1 TPFKT~VTEXT KNVK~TELF1 FROM KNVK INNER JOIN TPFKT ON KNVK~PAFKT = TPFKT~PAFKT INTO sContac.

    CONCATENATE sContac-kunnR '|' sContac-NAME1 '|' sContac-VTEXT '|' sContac-TELF1 '|' INTO strDatos2.
    APPEND strDatos2 TO gt_data2.
    "write: / strDatos2 .
    "" TRANSFER strDatos2 TO v_file.
    ENDSELECT.
    ""CLOSE DATASET v_file.


    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    filename = '\\xxxxxxxxxxxxxxxx\transacciones\contactos.txt'
    TABLES
    data_tab = gt_data2
    EXCEPTIONS
    FILE_WRITE_ERROR = 1
    NO_BATCH = 2
    GUI_REFUSE_FILETRANSFER = 3
    INVALID_TYPE = 4
    NO_AUTHORITY = 5
    UNKNOWN_ERROR = 6 .
  • Mauricio Hidalgo
    Senior Member
    • may
    • 481

    #2
    Estimado existen dos conceptos a manejar. Servidor de Aplicaciones y Servidor de Presentación. Cuando ejecutas un programa en linea, estás usando el servidor de presentación y no hay ningún problema con tu programa porque este está escribiendo hacia tu PC que es la misma que actúa como servidor de presentación y en ese caso la función GUI_DOWNLOAD es válida.

    Sin embargo en JOB el programa se ejecutará en el servidor de aplicaciones y desde ahí el no tiene idea de como escribir hacia tu PC por eso en ese modo la función GUI_DOWNLOAD no es válida.

    Existen instrucciones Open DATASET , READ DATASET, TRANSFER DATASET, CLOSE DATASET para leer/escribir desde/hacia el servidor de aplicaciones.

    Tu programa debe ser capaz entonces de poder ejecutarse en ambos modos y te faltaría definir hacia donde escribir en el servidor de aplicaciones, puedes ver carpetas en la Transacción AL11 o que te defina tu administrador de sistema un directorio de ese servidor hacia donde escribir/leer.

    Saludos

    Comentario

    • yruelas
      Junior Member
      • may
      • 2

      #3
      Muchas gracias.
      Voy a probar con lo que me dices.

      Comentario

      • sconoredhot
        Senior Member
        • feb
        • 341

        #4
        respuesta

        Totalmente, no existe posibilidad de guardar un archivo en una PC local ejecutando un programa de fondo.
        Sebas

        Desarrollador ABAP.

        Comentario

        • acesar
          Member
          • abr
          • 44

          #5
          Lo que podés hacer es transferirlo a un FTP o bien mediante PI.
          Eso si funciona vía Job.

          Comentario

          Trabajando...