MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Posicionar en un campo del Table Control (foro/showthread.php?t=28786)

marsilady 12/03/09 15:42:04

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,

javiercar 12/03/09 15:49:40

Hola, a ver si entendi, vos seleccionas una linea del table control y esa linea la queres pasar a una tabla interna?

marsilady 12/03/09 16:56:18

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

Jonathan Barrio Rodriguez 12/03/09 17:38:36

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...

negrogho 07/10/09 18:05:37

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.

hramirezpa 21/09/12 15:31:31

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

doblezerodz 07/05/15 18:09:19

Posicionar en un campo del Table Control
 
Disculpa como posiciono en un campo del table control...?? podrias ayudarme? ..
saludos

Jonathan Barrio Rodriguez 08/05/15 00:16:18

Prueba con la sentencia SET CURSOR, FIELD O LINE.
Comenta si tienes problemas.


Husos Horarios son GMT. La hora en este momento es 21:21:29.

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