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 . |
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 |
Muchas gracias.
Voy a probar con lo que me dices. |
respuesta
Totalmente, no existe posibilidad de guardar un archivo en una PC local ejecutando un programa de fondo.
|
Lo que podés hacer es transferirlo a un FTP o bien mediante PI.
Eso si funciona vía Job. |
Husos Horarios son GMT. La hora en este momento es 03:06:41. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web