|
#1
|
|||
|
|||
La verdad me resulta dificil darme cuenta donde está el problema sin debuggear tu programa.
Primero te diría que lo corras y le pongas A en el mode del call asi ves que es lo que está haciendo y donde puede estar el error. A simple vista me parece que estas reiniciando el contador del renglon al llegar a 11, y la idea es que lo dejes en 10 en ese momento, ya que tu último renglón es ese. Te pego mi código para que veas cómo lo hago yo en esa parte de la grilla, capaz te sirva. iitem = '01'. LOOP AT t_bi_det. * [BEGIN] ---- Datos de Cabecera de Segunda Solapa PERFORM dynpro USING 'X' 'SAPMF05A' '1100'. PERFORM dynpro USING ' ' 'BDC_OKCODE' '/00'. CADA NUEVO RENGLON HAGO ESTO PERFORM dynpro USING ' ' 'BDC_SUBSCR' 'SAPLFDCB 0020PAGE'. * PERFORM dynpro USING ' ' 'INVFO-ZLSCH' 'Z001'. PERFORM dynpro USING ' ' 'BDC_SUBSCR' 'SAPLFDCB 0070ADR'. PERFORM dynpro USING ' ' 'BDC_SUBSCR' 'SAPLFSKB 0100ITEMS'. * [ END ] ---- Datos de Cabecera de Segunda Solapa * [BEGIN] ---- Datos de Detalle en Grilla CONCATENATE 'ACGL_ITEM-KOSTL(' iitem ')' INTO citem. PERFORM dynpro USING ' ' 'BDC_CURSOR' citem. CONCATENATE 'ACGL_ITEM-HKONT(' iitem ')' INTO citem. PERFORM dynpro USING ' ' citem t_bi_det-hkont. IF usr01-dcpfm EQ space OR usr01-dcpfm EQ 'Y'. REPLACE '.' WITH ',' INTO t_bi_det-dmbtr. ENDIF. CONCATENATE 'ACGL_ITEM-WRBTR(' iitem ')' INTO citem. PERFORM dynpro USING ' ' citem t_bi_det-dmbtr. CONCATENATE 'ACGL_ITEM-MWSKZ(' iitem ')' INTO citem. PERFORM dynpro USING ' ' citem 'C0'. CONCATENATE 'ACGL_ITEM-ZUONR(' iitem ')' INTO citem. PERFORM dynpro USING ' ' citem t_bi_det-zuonr. CONCATENATE 'ACGL_ITEM-SGTXT(' iitem ')' INTO citem. PERFORM dynpro USING ' ' citem t_bi_det-sgtxt. CONCATENATE 'ACGL_ITEM-KOSTL(' iitem ')' INTO citem. PERFORM dynpro USING ' ' citem t_bi_det-kostl. * [ END ] ---- Datos de Detalle en Grilla IF iitem < 4. EN MI CASO SON 4 RENGLONES, VOS TENDRIAS QUE PONER EL VALOR 10 ADD 1 TO iitem. ENDIF. ENDLOOP. |
#2
|
||||
|
||||
batch input sobreescribe lineas
Que tal kelaya,
por que no pruebas en ves del enter "/00" colocarle el avance de pagina "=P+" cuando se llegue al limite de registros, es decir cuando llegue a insertar la posicion 9 o 10 indicarle que de un avance de pagina reiniciando el contador. P/e: PERFORM dynpro USING 'X' 'SAPMF05A' '1100'. if vl_cont >= 10. vl_cont = 1. PERFORM dynpro USING ' ' 'BDC_OKCODE' '=P+'. " avance de página PERFORM dynpro USING ' ' 'BDC_SUBSCR' 'SAPLFDCB 0020PAGE'. * PERFORM dynpro USING ' ' 'INVFO-ZLSCH' 'Z001'. PERFORM dynpro USING ' ' 'BDC_SUBSCR' 'SAPLFDCB 0070ADR'. else. . . . endif. Úlima edición por jvctaz23 fecha: 22/01/14 a las 17:23:48. |
#3
|
|||
|
|||
gracias a todos!
ya lo resolvi. Tuve que hacer lo del contador en 10 manteniendolo ahi, pero tb tuve que agregar un bdc_ok code =PAYM, que actua como si refrescara la pantalla y luego si el bdc_code = /00. Muchas gracias por sus aportes!! saludos!!
|
#4
|
|||
|
|||
codigo por si alguien lo necesita
Perdon era hacer un do no el bdc_okcode =PAYM. Saludos
if cont1 = 11 or cont = 11. cont = cont + 1. if cont = 11. band5 = 'TRUE'. endif. do 3 times. perform bdc_dynpro using 'SAPMF05A' '1100'. perform bdc_field using 'BDC_OKCODE' '/00'. * PERFORM bdc_field USING 'RF054A-BUSCS' 'R'. perform bdc_field using 'BDC_SUBSCR' 'SAPLFDCB 0010PAGE'. * PERFORM bdc_field USING 'invfo-acctn' gs_file-accnt. * PERFORM bdc_field USING 'infvo-bldat' gs_file-bldat. * PERFORM bdc_field USING 'invfo-xblnr' gs_file-xblnr. * PERFORM bdc_field USING 'invfo-budat' gs_file-budat. * PERFORM bdc_field USING 'invfo-wrbtr' gs_file-wrbtr. perform bdc_field using 'BDC_SUBSCR' 'SAPLF0KI 0100SUBBAS01'. perform bdc_field using 'BDC_SUBSCR' 'SAPLFMPY_E 5002SUBBAS02'. perform bdc_field using 'BDC_SUBSCR' 'SAPLSEXM 0200SUBBAS03'. perform bdc_field using 'BDC_SUBSCR' 'SAPLSEXM 0200SUBBAS04'. perform bdc_field using 'BDC_SUBSCR' 'SAPLSEXM 0200SUBBAS05'. perform bdc_field using 'BDC_SUBSCR' 'SAPLFDCB 0070ADR'. perform bdc_field using 'BDC_SUBSCR' 'SAPLFSKB 0100ITEMS'. perform bdc_field using 'BDC_CURSOR' 'ACGL_ITEM-KOSTL(10)'. enddo. cont1 = '10'. endif. |
#5
|
|||
|
|||
Hola foro:
Retomo el tema... Yo tengo aplicada la solución que se expone más arriba, es decir, cuando el tablecontrol está lleno paso el código de función que hace scroll para abrir una línea y voy insertando en la última posición del tablecontrol. Esto me funciona perfectamente con la resolución de pantalla de mi ordenador (1024* 768) pero si lo pruebo con otra resolución da error, dice que en la línea donde estoy poniendo los datos no se permiten entradas (aunque los campos están en edición). Os adjunto un hardcopy. ¿Alguien sabe como puede solucionarse esto? |
Herramientas | Buscar en Tema |
Desplegado | |
|
|