MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 07/03/08, 10:45:14
ggarmendia ggarmendia is offline
Junior Member
 
Fecha de Ingreso: mar 2008
Mensajes: 1
Indicadores de retención Ingresos Brutos

Hola a todos, para cumplir con la nueva resolución para indicadores de retencion en Argentina, estoy intentando hacer un batch input al archivo de proveedores, para cambiar el indicador existente.
Ya hemos incorporado los nuevos indicadores a la tabla de customizing, la idea es acceder a los datos maestros del proveedor (FK02), y cargar en la tabla LFBW, el indicador correspondiente, en base a un archivo.
Cuando hago el programa batch input, en el Call Transaction FK02, me cancela, y me tira el siguiente error: Invalid interruption of a database selection.
Cuando lo hago paso a paso, las screen las muestra OK, y en UPD, me da el error.

Esta es una normativa para toda la Argentina, asi que alguien de Argentina resolvió este problema?

Tambien me aconsejaron usar la XK99, pero no encontré la tabla LFBW en esta transacción.

A continuacion, envio el fuente que armé para meter los indicadores:

REPORT Z_AEBI NO STANDARD PAGE HEADING.

TABLES: LFA1,LFBW.
INCLUDE BDCRECXX.

TYPES: BEGIN OF REG_OLDREC,
LLENO1(27),
CUIT(11),
LLENO2(12),
PORCEN(4),
LLENO3(6),
END OF REG_OLDREC.

TYPES: BEGIN OF STRUC,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
STCD1 LIKE LFA1-STCD1,
FITYP LIKE LFA1-FITYP,

END OF STRUC.

DATA: OLDREC TYPE REG_OLDREC,
WA TYPE STRUC,
Canti type i,
Posi,i type i,
CampoIB(20),
posit(2),
Indi(2).

INITIALIZATION.
MOVE 'AEBI_ERROR' TO GROUP.
MOVE SY-UNAME TO USER.
* Pantalla de datos
PARAMETERS:
OLDFILE LIKE RLGRAP-FILENAME DEFAULT
'\\pea\interfaces\padron.txt'.

TOP-OF-PAGE.
ULINE.
WRITE:
/ 'Fecha: ', SY-DATUM,
/ 'Hora: ', SY-UZEIT,
/ 'Reporte de Acreedores con Indicador IB' CENTERED.
SKIP.
WRITE:/ 'Número Razón Social',
' CUIT Clase Pos.Ind. Nuevo'.
ULINE.
SKIP.

START-OF-SELECTION.

OPEN DATASET: OLDFILE FOR INPUT IN TEXT MODE.
IF SY-SUBRC NE 0.
SKIP.
WRITE 'ERROR: No se pudo leer el archivo'.
ULINE.
EXIT.
ENDIF.

DO.
READ DATASET OLDFILE INTO OLDREC.

IF SY-SUBRC NE 0.
EXIT.
ENDIF.


*Consulto si existe el proveedor
SELECT * FROM LFA1 CLIENT SPECIFIED
WHERE MANDT = SY-MANDT
AND STCD1 = oldrec-cuit.
canti = canti + 1.
**********IF SY-SUBRC = 0.

* Grabar la transaccion porque existe el proveedor

Indi = '--'.
Posi = 0.
I = 0.
* Busco la retencion
SELECT * FROM LFBW WHERE LIFNR = LFA1-LIFNR.
IF SY-SUBRC NE 0. EXIT. ENDIF.
I = I + 1.
IF LFBW-WITHT = 'IB'.
Posi = i.
Indi = LFBW-WT_WITHCD.
ENDIF.
ENDSELECT.

WRITE:/ LFA1-LIFNR,
LFA1-NAME1,
LFA1-STCD1,
LFA1-FITYP,
Posi,
Indi,
OLDREC-PORCEN.

PERFORM GRABA.

ENDSELECT.
ENDDO.

WRITE:/ canti.

CLOSE DATASET OLDFILE.


*----------------------------------------------------------------------*
FORM GRABA.

perform bdc_dynpro using 'SAPMF02K' '0106'.
perform bdc_field using 'BDC_CURSOR' 'RF02K-D0610'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'RF02K-LIFNR' LFA1-LIFNR.
perform bdc_field using 'RF02K-BUKRS' 'edea'.
perform bdc_field using 'RF02K-D0610' 'X'.

concatenate '0' posi into posit.
CONCATENATE 'LFBW-WT_WITHCD(' posit ')' INTO CampoIB.

perform bdc_dynpro using 'SAPMF02K' '0610'.
perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_field using 'BDC_CURSOR' CampoIB.
perform bdc_field using 'LFB1-QLAND' '528'.
perform bdc_field using CampoIB '20'.

perform bdc_dynpro using 'SAPMF02K' '0610'.
perform bdc_field using 'BDC_OKCODE' '=UPDA'.
perform bdc_field using 'BDC_CURSOR' 'LFB1-QLAND'.
perform bdc_field using 'LFB1-QLAND' '528'.

CALL TRANSACTION 'FK02' USING BDCDATA MODE 'N'.

REFRESH BDCDATA.

ENDFORM.


Alguien tuvo que hacer alguna solución para esta normativa??
Alguna sugerencia??

Úlima edición por ggarmendia fecha: 07/03/08 a las 18:27:10.
Responder Con Cita
  #2  
Viejo 10/03/08, 11:17:00
Jorge L T Jorge L T is offline
Member
 
Fecha de Ingreso: jul 2007
Localización: Argentina
Mensajes: 58
Estás llamando a la transacción ( perform GRABA) en medio de un Select-EndSelect. Por eso te dice que interrumpes un ciclo.
Tienes que hacer un Select ...from LFA1 into table t_lfa1., y luego en un Loop at t_lfa1 / endloop dejas el resto del pgm. como está

J
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 07:49:27.


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