PDA

Ver la Versión Completa : Problema con BI - Trx. FB01


Jarpi
15/01/09, 16:50:25
Buenas tardes para todos,

Los molesto en esta oportunidad porque tengo una duda respecto a un BI que estoy haciendo para contabilizar SA por la trx. FB01. Les cuento como es el tema.

Levanto um archivo y lo vuelco a una tabla interna, que es la que luego utilizo para la carga del BI. Bien, lo que no se resolver es como hacer para que realice tantas imputaciones como filas tiene el archivo.

Cuando ejecuto, me pone bien los datos de cabecera y la primer imputación, pero las demás filas no me las toma.

Les pego el código para ver si me pueden ayudar.

REPORT YPRUEBAMULTICM.

DATA: BEGIN OF tabla,
bschl LIKE bseg-bschl,
hkont LIKE bseg-hkont,
wrbtr(16) TYPE c,
sgtxt LIKE bseg-sgtxt,
END OF tabla.


DATA: it_tabla LIKE TABLE OF tabla WITH HEADER LINE.
DATA: it_bdc LIKE TABLE OF bdcdata WITH HEADER LINE.
DATA: modo VALUE 'A'.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'c:\Prueba_Batch1.txt'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = '*'
TABLES
DATA_TAB = it_tabla.

IF SY-SUBRC = 0.

LOOP AT it_tabla.

it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0100'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval = ' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BUDAT'.
it_bdc-fval = '15012009'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BLDAT'.
it_bdc-fval = '15012009'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BLART'.
it_bdc-fval = 'SA'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'RF05A-NEWBS'.
it_bdc-fval = it_tabla-bschl.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'RF05A-NEWKO'.
it_bdc-fval = it_tabla-hkont.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0300'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval =' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BSEG-WRBTR'.
it_bdc-fval = it_tabla-wrbtr.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BSEG-SGTXT'.
it_bdc-fval = 'Prueba'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'DKACB-FMORE'.
it_bdc-fval = 'X'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '/00'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '=BU'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = 'SAPLSPO1'.
it_bdc-dynpro = '0300'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval = ' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '=YES'.

APPEND it_bdc.
CLEAR it_bdc.

ENDLOOP.

CALL TRANSACTION 'FB01' USING it_bdc MODE modo.
CLEAR it_bdc.
REFRESH it_bdc.

ENDIF.

Desde ya muchas gracias,
Saludos.

atorrealba
21/02/09, 22:23:57
Hola cómo estas? Tengo el mismo problema... lograste solucionarlo??? :confused:

Jonathan Barrio Rodriguez
22/02/09, 06:21:44
No recuerdo el flujo de pantallas de la transaccion, ni bien el BI, ni tengo acceso a R/3 pero un par de comentarios a ver...

Me llama la atención que primero indicas el programa con la pantalla "100"
it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0100'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval = ' '.

Luego le insertas los datos y vueltves a llamar otra pantalla sin darle a ningún botón, osea sin pasale ningun OK_KODE:
it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0300'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval =' '.

??
Y luego le pasas dos de seguido:
it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '/00'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '=BU'.

APPEND it_bdc.
CLEAR it_bdc.

Esto debería estar bien si te ha introducido uno... por lo tanto, y por lo que cuentas debe ser un tema de tabla, al cargar los datos... solo carga la cabecera...

Prueba a usar "[]" depues de IT_tabla en el Call function para leer el fichero o para la It_bdc en el call transactio. Osea IT_tabla[] o it_bdc[] - no me suena para nada... pero por probar-

igual, una forma facil de solucionar, aunque relentizaría el programa, podría ser meter el call transaction dentro del Loop.

Me llama la atencíón como has declarado la tabla it_tabla, prueba a declarar:
DATA: BEGIN OF it_tabla OCCURS 0,
bschl LIKE bseg-bschl,
hkont LIKE bseg-hkont,
wrbtr(16) TYPE c,
sgtxt LIKE bseg-sgtxt,
END OF it_tabla.
que igual en vez de tabla, estás trabajando con workarea.

Para ir directo al error, debugualo -boton debuguear antes de ejecutar o "/h" en la línea de comandos- y mira a ver que registros lleva la tabla interna antes del call transactio. Si va vacia, el error está del call transactio para arriba, sino, pon "E" en el modo del call transaction, porque igual no carga los datos, al encontrar errores en estos. Si es este último caso, el Batch imput se parará y te mostrará el paso en el que se para y no carga "/end" en la línea de comandos para terminar el BI.

Espero que algo te sirva y suerte.


Buenas tardes para todos,

Los molesto en esta oportunidad porque tengo una duda respecto a un BI que estoy haciendo para contabilizar SA por la trx. FB01. Les cuento como es el tema.

Levanto um archivo y lo vuelco a una tabla interna, que es la que luego utilizo para la carga del BI. Bien, lo que no se resolver es como hacer para que realice tantas imputaciones como filas tiene el archivo.

Cuando ejecuto, me pone bien los datos de cabecera y la primer imputación, pero las demás filas no me las toma.

Les pego el código para ver si me pueden ayudar.

REPORT YPRUEBAMULTICM.

DATA: BEGIN OF tabla,
bschl LIKE bseg-bschl,
hkont LIKE bseg-hkont,
wrbtr(16) TYPE c,
sgtxt LIKE bseg-sgtxt,
END OF tabla.


DATA: it_tabla LIKE TABLE OF tabla WITH HEADER LINE.
DATA: it_bdc LIKE TABLE OF bdcdata WITH HEADER LINE.
DATA: modo VALUE 'A'.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'c:\Prueba_Batch1.txt'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = '*'
TABLES
DATA_TAB = it_tabla.

IF SY-SUBRC = 0.

LOOP AT it_tabla.

it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0100'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval = ' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BUDAT'.
it_bdc-fval = '15012009'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BLDAT'.
it_bdc-fval = '15012009'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BLART'.
it_bdc-fval = 'SA'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'RF05A-NEWBS'.
it_bdc-fval = it_tabla-bschl.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'RF05A-NEWKO'.
it_bdc-fval = it_tabla-hkont.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0300'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval =' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BSEG-WRBTR'.
it_bdc-fval = it_tabla-wrbtr.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BSEG-SGTXT'.
it_bdc-fval = 'Prueba'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'DKACB-FMORE'.
it_bdc-fval = 'X'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '/00'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '=BU'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = 'SAPLSPO1'.
it_bdc-dynpro = '0300'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval = ' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '=YES'.

APPEND it_bdc.
CLEAR it_bdc.

ENDLOOP.

CALL TRANSACTION 'FB01' USING it_bdc MODE modo.
CLEAR it_bdc.
REFRESH it_bdc.

ENDIF.

Desde ya muchas gracias,
Saludos.

bisonye
23/02/09, 06:39:52
El error es tan sencillo como que está pasando los datos de cabecera en todas las líneas del loop.

Por lo tanto pone los datos de cabecera, lode la primera línea e intenta pasar otra vez a los datos de cabecera. Y por lo tanto el esquema de pantallas no cuadra.

Saludos

PercyFloresSotelo
23/02/09, 15:07:32
Bueno lo que te preguntaria primero es cuantas contabilización se realizan por que yo he hecho varias contabilizaciones con esta transaccionn lo que hago es primero preguntar por el bschl y dependiendo de lo que sea es que le asigno la contabilizacion, tambien de pendiendo del saldo ya que debe de ser cero a ver si me pasas tu correo te paso el codigo que hice para que lño veas
Buenas tardes para todos,

Los molesto en esta oportunidad porque tengo una duda respecto a un BI que estoy haciendo para contabilizar SA por la trx. FB01. Les cuento como es el tema.

Levanto um archivo y lo vuelco a una tabla interna, que es la que luego utilizo para la carga del BI. Bien, lo que no se resolver es como hacer para que realice tantas imputaciones como filas tiene el archivo.

Cuando ejecuto, me pone bien los datos de cabecera y la primer imputación, pero las demás filas no me las toma.

Les pego el código para ver si me pueden ayudar.

REPORT YPRUEBAMULTICM.

DATA: BEGIN OF tabla,
bschl LIKE bseg-bschl,
hkont LIKE bseg-hkont,
wrbtr(16) TYPE c,
sgtxt LIKE bseg-sgtxt,
END OF tabla.


DATA: it_tabla LIKE TABLE OF tabla WITH HEADER LINE.
DATA: it_bdc LIKE TABLE OF bdcdata WITH HEADER LINE.
DATA: modo VALUE 'A'.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'c:\Prueba_Batch1.txt'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = '*'
TABLES
DATA_TAB = it_tabla.

IF SY-SUBRC = 0.

LOOP AT it_tabla.

it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0100'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval = ' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BUDAT'.
it_bdc-fval = '15012009'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BLDAT'.
it_bdc-fval = '15012009'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BLART'.
it_bdc-fval = 'SA'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'RF05A-NEWBS'.
it_bdc-fval = it_tabla-bschl.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'RF05A-NEWKO'.
it_bdc-fval = it_tabla-hkont.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0300'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval =' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BSEG-WRBTR'.
it_bdc-fval = it_tabla-wrbtr.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BSEG-SGTXT'.
it_bdc-fval = 'Prueba'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'DKACB-FMORE'.
it_bdc-fval = 'X'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '/00'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '=BU'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = 'SAPLSPO1'.
it_bdc-dynpro = '0300'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval = ' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '=YES'.

APPEND it_bdc.
CLEAR it_bdc.

ENDLOOP.

CALL TRANSACTION 'FB01' USING it_bdc MODE modo.
CLEAR it_bdc.
REFRESH it_bdc.

ENDIF.

Desde ya muchas gracias,
Saludos.

guillermoabap
25/03/10, 01:36:09
Hola Jarpi, tu problema se soluciona simplemente añadiendo las líneas:

CALL TRANSACTION 'FB01' USING it_bdc MODE modo.

CLEAR it_bdc[].
Refresh: it_bdc[].


ANTES de cerrar el loop, así el índice de la cabecera aumentara y mandarás todos los datos de tu tabla a la transacción FB01.

LOOP AT it_tabla.

it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0100'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval = ' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BUDAT'.
it_bdc-fval = '15012009'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BLDAT'.
it_bdc-fval = '15012009'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BKPF-BLART'.
it_bdc-fval = 'SA'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'RF05A-NEWBS'.
it_bdc-fval = it_tabla-bschl.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'RF05A-NEWKO'.
it_bdc-fval = it_tabla-hkont.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = 'SAPMF05A'.
it_bdc-dynpro = '0300'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval =' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BSEG-WRBTR'.
it_bdc-fval = it_tabla-wrbtr.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BSEG-SGTXT'.
it_bdc-fval = 'Prueba'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'DKACB-FMORE'.
it_bdc-fval = 'X'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '/00'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '=BU'.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = 'SAPLSPO1'.
it_bdc-dynpro = '0300'.
it_bdc-dynbegin = 'X'.
it_bdc-fnam = ' '.
it_bdc-fval = ' '.

APPEND it_bdc.
CLEAR it_bdc.

it_bdc-program = ' '.
it_bdc-dynpro = ' '.
it_bdc-dynbegin = ' '.
it_bdc-fnam = 'BDC_OKCODE'.
it_bdc-fval = '=YES'.

APPEND it_bdc.
CLEAR it_bdc.

CALL TRANSACTION 'FB01' USING it_bdc MODE modo.

CLEAR it_bdc[].
Refresh: it_bdc[].

ENDLOOP.