PDA

Ver la Versión Completa : Como empiezo con un Table Control??


Driau
17/01/08, 13:02:34
Hola a todos!

Estoy intentando hacer un table control..pero no hay manera. He encontrado un PDF con un ejemplo...pero no funciona. Alguien me podría pegar un cable??? O alguien tiene algun *.doc, *.pdf, etc...

Muchas gracias!

ibecerra
17/01/08, 14:04:09
Hola fijate en este ejemplo que es muy sencillo
SE38:
RSDEMO_TABLE_CONTROL

Driau
17/01/08, 14:24:54
Alguien me podría pegar un cable con el código de cada "Module" en el report??? Quiero decir..no explicarme linea a linea sino..a grosso modo ...que hace ese "Module". Es que sino..me cuesta seguirlo.

Gracias! :(

Driau
17/01/08, 15:43:07
A ver..he estado mirando el ejemplo que me habeis proporcionado. He creado la tabla con el Screen Painter y he aprovechado el codigo que me habeis pasado. Lo he modificado con el siguiente código:

*&---------------------------------------------------------------------*
*& Report ZCONTROL_LOTES
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZCONTROL_LOTES .
CONTROLS TABLE_CONTROL TYPE TABLEVIEW USING SCREEN 9000.
TABLES AFPO.
*DATA AFPO_ITAB LIKE STANDARD TABLE OF AFPO.

DATA: BEGIN OF AFPO_ITAB OCCURS 0,
MATNR LIKE MARA-MATNR,
CHARG LIKE AFPO-CHARG,
END OF AFPO_ITAB.

DATA INIT.
DATA OK_CODE LIKE SY-UCOMM.
DATA SAVE_OK LIKE SY-UCOMM.
DATA MARK.
DATA COL TYPE CXTAB_COLUMN.

CALL SCREEN 9000.

*&---------------------------------------------------------------------*
*& Module STATUS_09000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_09000 OUTPUT.
SET PF-STATUS 'ZSTATUS'.
SET TITLEBAR '9000'.
IF INIT IS INITIAL.
* Datenbeschaffung
SELECT MATNR CHARG
FROM AFPO
INTO CORRESPONDING FIELDS OF TABLE AFPO_ITAB.
DESCRIBE TABLE AFPO_ITAB LINES TABLE_CONTROL-LINES.
INIT = 'X'.
ENDIF.

ENDMODULE. " STATUS_09000 OUTPUT

*&---------------------------------------------------------------------*
*& Module FILL_TABLE_CONTROL OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CHANGE_SDYN_CONN OUTPUT.
* you can change the content of current table control line via
* sdyn_conn
* READ TABLE AFPO_ITAB INTO sdyn_conn INDEX table_control-current_line.

ENDMODULE. " FILL_TABLE_CONTROL OUTPUT
*&---------------------------------------------------------------------*
*& Module READ_TABLE_CONTROL INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE READ_TABLE_CONTROL INPUT.
* Check input values

* IF MARK = 'X' AND SAVE_OK = 'DELETE'.
* DELETE TABLE AFPO_ITAB FROM A.
* DESCRIBE TABLE SDYN_ITAB LINES TABLE_CONTROL-LINES.
* ENDIF.
ENDMODULE. " READ_TABLE_CONTROL INPUT

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_09000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_09000 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'SORT'.
DATA: FLDNAME(9000),HELP(9000).

READ TABLE TABLE_CONTROL-COLS INTO COL WITH KEY SELECTED = 'X'.
SPLIT COL-SCREEN-NAME AT '-' INTO HELP FLDNAME.
SORT AFPO_ITAB BY (FLDNAME).
ENDCASE.

ENDMODULE. " USER_COMMAND_09000 INPUT

*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE EXIT INPUT.
LEAVE PROGRAM.
ENDMODULE. " EXIT INPUT

El código funciona i se ejecuta la pantalla (como la que os adjunto). El problema es que a mi me gustaria que elo pudiera indicar un numero de material y al tabular en la columna de "Lote" (con un desplegable...por ejemplo) se le sugirieran los lotes relacionados a ése material. Ahora mismo tengo el efecto inverso. Es decir...si pongo un lote...automàticamente se me rellena el campo de material.

No se si me explico. Que estoy haciendo mal???? Como puedo seguir??

Grácias a todos!

Rodolfo Montiel Rivera
18/01/08, 22:07:33
Querido hermando abapero te os sugiero lo siguiente

1.- Declara 2 variables globales en tu programa ok

DATA: VAR_MATNR LIKE MARA-MATNR,
VAR_CHARG LIKE AFPO-CHARG.

2.- En el dynpro 9000 en el screen-painter crea dos cajas de E/S y asi komo hiciste para traer los campos al table-control haces lo mismo para cada caja, ves que el menu pulsaste un boton que decia traer campos desde programa a bueno pues lo mismo para las cajas te situas en la primer caja clickeas el botoncito y buscas las variables que creaste paso 1.

3.-Puedes crear un boton para poder ejecutar la funcion de estraccion de datos osea tu select esto en tu modulo user_command

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_09000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_09000 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'SORT'.
DATA: FLDNAME(9000),HELP(9000).
READ TABLE TABLE_CONTROL-COLS INTO COL WITH KEY SELECTED = 'X'.
SPLIT COL-SCREEN-NAME AT '-' INTO HELP FLDNAME.
SORT AFPO_ITAB BY (FLDNAME).
****************
WHEN 'PROCESAR'
PERFORM extraccion.
****************
ENDCASE.

4.- Finalmente en tu form extraccion haces el select usando los valores que hayas ingresado en el dynpro como si fuera un select-option.

FORM extraccion.

SELECT MATNR CHARG
INTO CORRESPONDING FIELDS OF TABLE AFPO_ITAB
FROM AFPO
WHERE MATNR EQ VAR_MATNR
AND CHARG EQ VAR_CHARG.

ENDFORM.

Y listo seria todo ojo con el paso 2 debes traer esas variables desde el dynpro jalandolas como te digo en el cuadrito que dice traer campos desde programa que esta en la barra de menu del screen painter y ponerles el mismo nombre var_mantr y var_charg.

Suerte!!!

Driau
24/01/08, 08:54:57
He tardado mucho en contestar...lo stiento. Estoy mirando lo del paso 2. El problema es que como lo que hice lo copie de un ejemplo que viene en el propio SAP no se a qu te refieres con "raer campos desde programa a bueno pues lo mismo para las cajas te situas en la primer caja clickeas el botoncito y buscas las variables que creaste paso 1"

Me podrias ayudar???

Driau
24/01/08, 10:40:03
Ok..he visto a que te refieres. El problema es que ahora cuando le doy a "traer datos del programa" me añade una linea..pero bloqueada. De manera que no me deja marcarla ni darle al "tick". A que es debido eso???