#1
|
|||
|
|||
Posicionar en un campo del Table Control
Buenas Tardes compañeros,
Les escribo porque tengo un pequeño problema con el table control, pues estoy tratando de posicionar el cursor en un campo del table control y lo logro sin mayor complicacion, pero cuando la tabla interna que va a llenar el table control tiene un numero de linea mayor a las lineas mostradas a las lineas en el table control en el dynpro este no coloca el cursor donde es correcto y hay que hacerlo manual. Si alguno de ustedes ha tenido este problemita y lo ha logrado resolver me gustaría mucho que me ayudara. Saludos, |
#2
|
||||
|
||||
Hola, a ver si entendi, vos seleccionas una linea del table control y esa linea la queres pasar a una tabla interna?
__________________
Cardozo Javier Hernan @r-Tech Consulting S.R.L. Ciudad de Buenos Aires Argentina |
#3
|
|||
|
|||
Nop, yo quiero posicionar el cursor en el campo de entrada de datos en el table control, pero... cuando estoy cargando el table control con la data buscada en una BD el numero de registros que esta posee son mayores a las lineas mostradas en el dynpro del table control. lo que significa que tengo que darle a la barra de deszplazamiento para que baje y selccionar el campo con el raton y no automaticamente el programa hace esto.
Espero que ahora me puedas entender y gracias de antemano |
#4
|
||||
|
||||
A ver...
me imagino que esto es para un Batch input.... La verdad no tengo mucha idea de Table Control y es un follón pero alguna vez debuguando he sacado esto de por ahí (si te sirve.. te he ahorrado un buen rato): ***&---------------------------------------------------------------------* ***& Form FCODE_INSERT_ROW * ***&---------------------------------------------------------------------* ** FORM fcode_insert_row ** USING P_TC_NAME TYPE DYNFNAM ** P_TABLE_NAME . ** ***&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* ** DATA L_LINES_NAME LIKE FELD-NAME. ** DATA L_SELLINE LIKE SY-STEPL. ** DATA L_LASTLINE TYPE I. ** DATA L_LINE TYPE I. ** DATA L_TABLE_NAME LIKE FELD-NAME. ** FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL. ** FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE. ** FIELD-SYMBOLS <LINES> TYPE I. ***&SPWIZARD: END OF LOCAL DATA------------------------------------------* ** ** ASSIGN (P_TC_NAME) TO <TC>. ** ***&SPWIZARD: get the table, which belongs to the tc * ** CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body ** ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline ** ***&SPWIZARD: get looplines of TableControl * ** CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME. ** ASSIGN (L_LINES_NAME) TO <LINES>. ** ***&SPWIZARD: get current line * ** GET CURSOR LINE L_SELLINE. ** IF SY-SUBRC <> 0. " append line to table ** L_SELLINE = <TC>-LINES + 1. ***&SPWIZARD: set top line * ** IF L_SELLINE > <LINES>. ** <TC>-TOP_LINE = L_SELLINE - <LINES> + 1 . ** ELSE. ** <TC>-TOP_LINE = 1. ** ENDIF. ** ELSE. " insert line into table ** L_SELLINE = <TC>-TOP_LINE + L_SELLINE - 1. ** L_LASTLINE = <TC>-TOP_LINE + <LINES> - 1. ** ENDIF. ***&SPWIZARD: set new cursor line * ** L_LINE = L_SELLINE - <TC>-TOP_LINE + 1. ** ***&SPWIZARD: insert initial line * ** INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE. ** <TC>-LINES = <TC>-LINES + 1. ***&SPWIZARD: set cursor * ** SET CURSOR LINE L_LINE. ** ** ENDFORM. " FCODE_INSERT_ROW ** Creo que esto es posible que te sirva... Es del stardar, me suena que había otra forma de hacerlo, comprobando el númro de línea que lleva el TC y sumandole una... ( como lo hacemos en el PAI al hacerle el loop ) pero son vagas ideas. De todas formas como veo que estás conectado, mandame un mensje o al messenger y a ver si te puedo ayudar más...
__________________
Barrio Rodriguez, Jonathan. _____________________________________
"No sigas a quien haya encontrado la verdad sino a quien la busque"
|
#5
|
||||
|
||||
Yo tambien estoy buscando como hacer eso
Algunas transacciones tienen un boton que sirve para posicionar el cursor y ese boton se puede usar desde del batch input pero creo que eso es para modificar algun dato de informacion que ya fue grabada he visto en algunos programas que le ponen la posición (02) siempre a todos los registros que se van a capturar, no se si eso sea algun truco para ir insertando datos en el table control o algo asi. |
#6
|
|||
|
|||
Esto sirve para confirmar, que toca escarbar el codigo para verificar si el programa tiene las funciones escondidas:
Si les sirve de algo, para la trx MB1C, cargue de materiales con seriales utilice el siguiente codigo: PERFORM bdc_dynpro USING 'SAPMM07M' '0400'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'BDC_CURSOR' 'MKPF-BUDAT'. CONCATENATE s_matnr-bldat+6(2) s_matnr-bldat+4(2) s_matnr-bldat(4) INTO zc_date. PERFORM bdc_field USING 'MKPF-BLDAT' zc_date. CONCATENATE s_matnr-budat+6(2) s_matnr-budat+4(2) s_matnr-budat(4) INTO zc_date. PERFORM bdc_field USING 'MKPF-BUDAT' zc_date. PERFORM bdc_field USING 'RM07M-BWARTWA' s_matnr-bwart. PERFORM bdc_field USING 'RM07M-WERKS' s_matnr-werks_d. PERFORM bdc_field USING 'RM07M-LGORT' s_matnr-lgort_d. PERFORM bdc_field USING 'XFULL' 'X'. PERFORM bdc_field USING 'RM07M-XNAPR' ' '. PERFORM bdc_field USING 'RM07M-WVERS2' 'X'. PERFORM bdc_dynpro USING 'SAPMM07M' '0421'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'BDC_CURSOR' 'MSEG-ERFMG(01)'. PERFORM bdc_field USING 'MSEG-MATNR(01)' s_matnr-matnr. PERFORM bdc_field USING 'MSEG-ERFME(01)' s_matnr-unidad. PERFORM bdc_field USING 'MSEG-ERFMG(01)' s_matnr-menge_bi. PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPMM07M 2400BLOCK1'. PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLKACB 0001BLOCK'. PERFORM bdc_field USING 'DKACB-FMORE' 'X'. PERFORM bdc_dynpro USING 'SAPLKACB' '0002'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'. PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLKACB 0003BLOCK1'. PERFORM bdc_dynpro USING 'SAPLKACB' '0002'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'. PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLKACB 0003BLOCK1'. PERFORM bdc_dynpro USING 'SAPLIPW1' '0300'. PERFORM bdc_field USING 'BDC_CURSOR' 'RIPW0-SERNR(01)'. PERFORM bdc_field USING 'BDC_OKCODE' 'PNPG'. ********** zn_menge_bi = s_objpd-menge_bi. CLEAR: cont, zn_nro_seriales. LOOP AT t_objpd_serial INTO s_objpd_serial WHERE matnr = s_objpd-matnr. ADD 1 TO cont. ADD 1 TO zn_nro_seriales. IF cont > 20. PERFORM bdc_dynpro USING 'SAPLIPW1' '0300'. PERFORM bdc_field USING 'BDC_CURSOR' 'RIPW0-SERNR(01)'. PERFORM bdc_field USING 'BDC_OKCODE' 'PNPG'. MOVE 1 TO cont. ENDIF. CLEAR: val. CONCATENATE 'RIPW0-SERNR(' cont ')' INTO val. CONDENSE val. PERFORM bdc_field USING val s_objpd_serial-sernr. IF zn_menge_bi = zn_nro_seriales. PERFORM bdc_field USING 'BDC_OKCODE' '=RWS'. ENDIF. ENDLOOP. ************* PERFORM bdc_dynpro USING 'SAPMM07M' '0421'. PERFORM bdc_field USING 'BDC_CURSOR' 'MSEG-ERFMG(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=BU'. PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPMM07M 2400BLOCK1'. PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLKACB 0001BLOCK'. PERFORM bdc_field USING 'DKACB-FMORE' 'X'. PERFORM bdc_dynpro USING 'SAPLKACB' '0002'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'. PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLKACB 0003BLOCK1'. PERFORM bdc_transaction USING 'MB1C'. REFRESH bdcdata. Saludos |
#7
|
|||
|
|||
Posicionar en un campo del Table Control
Disculpa como posiciono en un campo del table control...?? podrias ayudarme? ..
saludos |
#8
|
||||
|
||||
Prueba con la sentencia SET CURSOR, FIELD O LINE.
Comenta si tienes problemas.
__________________
Barrio Rodriguez, Jonathan. _____________________________________
"No sigas a quien haya encontrado la verdad sino a quien la busque"
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|