miércoles, 8 de febrero de 2017

MIERCOLES 08/02/17 (LEER HASTA EL FINAL)

Se explicaran dos cosas en este POST, la funcionalidad ALV POP-UP (primero) y las modificaciones a hacer, bosquejo, para que ese ALV POP UP llame a las OC asignadas al componente seleccionado.

PRIMERO:

Pasaré a explicar los puntos donde se configura para llamar al ALV POP - UP. Con lo que tenias hasta ahorita.

- En el include F01 se tiene el armado del FIELDCAT por ALV, para el caso del ALV DETALLE (ALV 2) se incluyo tener en cuenta la propiedad HOTSPOT (hipervinculo) se configuro en la macro
considerar esta propiedad, DEFINE ADD_FCAT2. Y al momento de declarar esa macro, al campo IDNRK se marco que tuviera 'X' esta propiedad. Por ende el campo IDNRK se mostará como un hiperviculo.


- En el include CLS se creo una clase y un evento HOTSPOT_CLICK que se agregaría luego al ALV2. Este metodo serviria para que reconozca cuando a un campo con propiedad HOTSPOT se le haga click y haga lo que este implementado dentro del codigo tal como se ve en la imagen. Tener en cuenta que el READ TABLE gt_stpo se cambiaria por READ TABLE gt_alv2 ya que reconocerá
lo que se envie a mostrar como ALV2


- En el PBO (procesos antes de salida) al momento de llamar al ALV 2, antes de llamarlo se le asigna este EVENTO para que lo considere en su salida.


- Se hace un pequeño debug a estos codigos y corroborar estaría trayendo lo que se selecciona, sobretodo la FILA. Y como se observa al dar click a un componente se activa el metodo
y reconoce la fila de la tabla interna mencionada (que repito, debe ser la misma que se muestra en el ALV2, en este ejemplo la GT_STPO) y a partir de eso se puede saber el valor del componente para esa fila seleccionada (IDNRK)


Con esto quedaría explicado la funcionalidad del ALV POP UP.

SEGUNDO:

Pasaré a explicar lo que sería la lógica (un bosquejo) para que ese ALV POP - UP muestre datos de OC de un solo componente, el que se seleccione.

- En el top se crearía una estructura para lo que sería la tabla a mostrar en el ALV POP UP. Aquí se trabajara con dos tablas con las mismas estructuras. la GT_OC que tendrá los registros de OC para todos los componentes del ALV2 y una GT_OC_AUX que será alimentada por la primera pero solo mostrando los datos que coincidan con el componente seleccionado. Para este ejemplo se creo una estructura basica que comprende de IDNRK y MENGE.


 - En el metodo previamente explicado en el primer punto, se hará la lógica donde la GT_OC_AUX se refrescara y se le hará el traspaso de todos los registros de la GT_OC original (madre) y dento del READ TABLE ya que se puede obtener el valor del componente seleccionado, se hará un delete a la GT_OC_AUX donde elimine todos los componentes sean distintos al seleccionado.


- Ahora como se ve, antes de la llamada al screen 0120 se tendrá un nuevo GT_OC_AUX por cada que se seleccione un componente.

RECORDAR:

El screen 0120 al llamarlo activa el STATUS_0120 y el USER_COMMAND 0120 por tanto veamos que trae el STATUS_0120


Como observamos el STATUS_0120 que se activa al llamar a la dynpro 0120 hace llamada al ALV que se mostrara en ese POP UP y dicho ALV esta usando como tabla interna a mostrar la GT_OC_AUX que se alimento antes del CALL SCREEN 0120.



... Y con eso quedaría listo... solo faltaría llenes el GT_OC considerando que debe tener el campo IDNRK para que el metodo funcione y alimente correctamente a la GT_OC_AUX y se muestre por componente en el ALV POP UP, sin problemas.

Ahora para llenar la GT_OC ya que mencionas traera datos de otras 3 tablas puedes hacer lo siguiente : así como el GT_REPORTE o GT_ALV1 , GT_ALV2, traen datos de otras TABLAS , harías lo similar
creas tablas internas por cada tabla para todo lo relacionado a la OC y la tabla matriz le harías LOOP y armarías cada registro de la OC, asemejalo a como cuando armas el GT_REPORTE y mentaliza bien cual seria tu tabla matriz, que entendería sería la principal donde sacas todas las OC amarradas a los componentes.

EXITOS!

FUERZA!

SI SE PUEDE!

CON CALMA!

...

cualquier duda no olvides comentar

No hay comentarios.:

Publicar un comentario