MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Matchcode En Dynpro Y Con Filtros (foro/showthread.php?t=12421)

larmadovr 08/04/08 15:48:38

Matchcode En Dynpro Y Con Filtros
 
Estimados Saperos, reciban un cordial saludo, espero alguien pueda darme una pista con lo siguiente:

Tengo un modulpool y he creado una subscreen donde tengo parameters y select option, y en uno de los select option hago referencia a un campo de una tabla Z que yo mismo he creado.

A ese campo ya le agregué una tabla de verificación de un catálogo Z y todo sale perfecto, el detalle ahora es que la información que muestra esa tabla traé los siguiente:

USUARIO, GRUPO DE CONCEPTO

usuario1, grupo 1
usuario1, grupo 2
usuario2, grupo 20
usuario2, grupo 10

Una vez que yo solicito ayuda en el match me sale toda la información, y me piden que sea filtrada por usuario(que está conectado a R/3 en ese momento).

He visto que se puede crear alguna exit para ayuda o algo así, pero no tengo muy en claro que puedo hacer, alguién se ha topado con esto?

Gracias a todos.

DavidXD_XD 08/04/08 15:58:03

Hola, se me ocurre crear una ayuda de busqueda que te filtre por usuario, para eso activarias el check dentro de la opcion "Modificado" y ahi le das como valor propuesto sy-uname, la otra seria crear una ayuda de busqueda local con la funcion F4IF_INT_TABLE_VALUE_REQUEST, pero seria consultar tu tabla Z a cada momento que activen el matchcode ... espero te sirva :D

larmadovr 08/04/08 16:12:01

Gracias DavidXD_XD
 
Me parece mejor opción la primera que comentas, ya que como estoy usando un modulpool, la función me sería más compleja para estarla controlando.

comentas que el check de modificado en valor propuesto le de el sy-uname, es solo que no úbico esta opción que me dices, me podrías dar más pistas?

Muchas gracias.

DavidXD_XD 08/04/08 16:39:10

1 Adjunto(s)
HOla Armando ... me dices que el filtro debe ser por usuario verdad??, entonces no vendria al caso de activar el campito que te mencione en la ayuda de busqueda fue un lapsus brutus :p , no desayune ... eso no iria al caso, lo que hace ese campo es colocar el elemento de dato manual y no jalarlo desde la tabla que indicas ... espero te sirva de ayuda :D

larmadovr 08/04/08 16:56:40

Listo Deivid.
 
Ya he creado la ayuda para búsqueda con sy-uname para usuario.

Para agregarselo a un select-option dentro de una subscreen y que haga referencia desde el matchcode, como debo hacerlo?

Anteriormente he agregado una ayuda pero en parameter normal, y en este caso estoy manejando desde una subscreen.

Es posible esto?

Gracias nuevamente

DavidXD_XD 08/04/08 17:20:59

Hola, si se puede !!!, te dejo el codigo para que veas como lo hice ..., solo interesa el dynpro principal y el subscreen creado ..., porque lo hice sobre un programa que siempre agarro de borrador :p

TABLES rkpf.

data: gt_lfa1 TYPE STANDARD TABLE OF lfA1 WITH HEADER LINE,
ZCAMPO type t001-bukrs,
number(4) TYPE n VALUE '1100'.

CONTROLS: tctrl_lfb1 TYPE TABLEVIEW USING SCREEN 100.

SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.
SELECT-OPTIONS: s_rsnum FOR rkpf-rsnum MATCHCODE OBJECT zpru.
SELECTION-SCREEN END OF SCREEN 1100.

SELECT * FROM LFa1
INTO TABLE gt_lfa1
UP TO 50 ROWS.


CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ST_PRUEBA'.
SET TITLEBAR 'TIT_PR'.


IF sy-ucomm = 'ACT'.
LOOP AT SCREEN.
IF screen-group1 = 'GR1' OR screen-name = 'TCTRL_LFB1'.
screen-active = 1.
MODIFY screen.
ENDIF.
ENDLOOP.
ELSEIF sy-ucomm = 'DESACT'.
LOOP AT SCREEN.
IF screen-group1 = 'GR1' OR screen-name = 'TCTRL_LFB1'.
screen-active = 0.
MODIFY screen.
ENDIF.
ENDLOOP.
ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.

IF sy-ucomm = 'BACK'.
LEAVE TO SCREEN 0.
ENDIF.

ENDMODULE. " USER_COMMAND_0100 INPUT

El dynpro Principal es 100, y le agrege el subscreen 1100

PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.
LOOP AT gt_lfa1 WITH CONTROL tctrl_lfb1.
ENDLOOP.
CALL SUBSCREEN SUB_1 INCLUDING sy-repid number.
*
PROCESS AFTER INPUT.
LOOP AT gt_lfa1.
ENDLOOP.

CALL SUBSCREEN SUB_1.

MODULE USER_COMMAND_0100.

Ahi esta la logica de pantalla y en el diseño del screen sale al comienzo un table control y abajo le coloque un subscreen para probar si sale, y con la sentencia MATCHCODE OBJECT apunto la ayuda de busqueda al select option, mi ayuda de busqueda se llama ZPRU, espero te ayude :D

larmadovr 08/04/08 17:27:59

Gracias DavidXD_XD...!!!
 
Funciona a la perfección, fijate que la opción de MATCHCODE OBJECT si la había visto en las propiedades de un select-option, pero decía que solo para el caso de usar Bases de Datos Lógicas, y por eso la descarte.

Pero ahora que ya he creado la ayuda para busqueda con la opción de SY-UNAME más la propiedad de MATCHCODE OBJECT 'zayuda', todo ha quedado tal cuál lo quería.

Todo esto, gracias a tus aportaciones y paciencia para atender a mi petición, de verdad muchas gracias. He notado que has resuelto infinidad de problemas aquí en mundosap.

Te felicito y admiro por ayudar a los demás.

Saludos.


Husos Horarios son GMT. La hora en este momento es 14:06:37.

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