MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Problema con job al escribir en una unidad (foro/showthread.php?t=72148)

yruelas 24/07/14 17:12:34

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 24/07/14 18:18:21

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

yruelas 24/07/14 18:43:00

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

sconoredhot 25/07/14 12:54:24

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

acesar 28/07/14 10:13:33

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 14:16:55.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web