lunes, 3 de enero de 2011

Que es un MODULE POOL

Un MODULE POOL es un reporte preparado para diferentes pantallas
y para manejar los eventos de estas, se usa la se80 para ver las dynpros,
se pueden agregar nuevas o cualquier elemento a una dynpro.

PBO (Process Before Output)
Es la parte de codigo que se ejecutara antes que el usuario haga algo
PAI (Process After Input)
Esta parte de codigo se ejecuta despues de interactuar con el usuario

Para poder ejecutarse debe tener asignada una transaccion (SE93)


EJEMPLO by Antonio Lopez
* Este module pool pretende introducirnos al mundo
* de la programacion, no es nada elaborado pero
* contiene las sentencias basicas SELECT, INSERT,
* DELETE para una tabla de nombre ZRF_T0024, cuyos
* campos son: ZRF_T0024-ID_CODIGO,
* ZRF_T0024-DESCRIPCION ZRF_T0024-DIAS. Necesitaremos
* crear una screen, con tres input/output fields de
* nombre igual que la tabla:
* ZRF_T0024-ID_CODIGO, ZRF_T0024-DESCRIPCION ZRF_T0024-DIAS.
* Este es el codigo.



*&--------------------------------------*
*& Include ZRF_602TOP *
*&--------------------------------------*
PROGRAM ZRF_0602.
TABLES:
ZRF_T0024. "CODIGOS DE MTTO


*&--------------------------------------*
*& screen *
*&--------------------------------------*
PROCESS BEFORE OUTPUT.
MODULE PBO.
*
PROCESS AFTER INPUT.
FIELD ZRF_T0024-ID_CODIGO MODULE DESPLIEGA_CODIGOS_MTTO.
MODULE PAI.



*&-------------------------------------*
*& Module PAI INPUT *
*&-------------------------------------*
module PAI input.

CASE SY-UCOMM.
WHEN 'ADD'.
PERFORM NUEVO_602.
WHEN 'DELT'.
PERFORM BORRAR_602.
WHEN 'CLEAN'.
PERFORM LIMPIAR_602.
WHEN 'SAVE'.
PERFORM GUARDAR_602.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
PERFORM exit_program.
ENDCASE.

endmodule. " PAI INPUT

*&-----------------------------------------*
*& Module PBO OUTPUT *
*&-----------------------------------------*
module PBO output.
SET PF-STATUS 'ZRF_602GUI'.
SET TITLEBAR 'MAINTITLE'.
endmodule. " PBO OUTPUT

*--------------------------------------*
* INCLUDE ZRF_602F01 *
*--------------------------------------*
*&----------------------*
*& Form NUEVO_602
*&----------------------*
form NUEVO_602.
DATA: TEMPO LIKE ZRF_T0024-ID_CODIGO.
SELECT MAX( ID_CODIGO ) FROM ZRF_T0024 INTO TEMPO.
ZRF_T0024-ID_CODIGO = TEMPO + 1.
endform. " NUEVO_602
*&------------------------*
*& Form BORRAR_602
*&------------------------*
form BORRAR_602.
DATA L_RESP.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Eliminacion de registros!!!'
DIAGNOSE_OBJECT = ' '
text_question = '¿Desea eliminar el registro actual?'
TEXT_BUTTON_1 = 'si'(001)
ICON_BUTTON_1 = ' '
TEXT_BUTTON_2 = 'no'(002)
ICON_BUTTON_2 = ' '
IMPORTING
ANSWER = L_RESP.
IF L_RESP <> 'A'.
IF L_RESP = 1. "Sí
DELETE FROM ZRF_T0024 WHERE ID_CODIGO = ZRF_T0024-ID_CODIGO.
PERFORM LIMPIAR_602.
ENDIF.
ENDIF.
endform. " BORRAR_602
*&-------------------------*
*& Form LIMPIAR_602
*&-------------------------*
form LIMPIAR_602.
ZRF_T0024-ID_CODIGO = ''.
ZRF_T0024-DESCRIPCION = ''.
ZRF_T0024-DIAS = ''.
endform. " LIMPIAR_602
*&---------------------------*
*& Form GUARDAR_602
*&---------------------------*
form GUARDAR_602.
INSERT INTO ZRF_T0024 VALUES ZRF_T0024.
PERFORM LIMPIAR_602.

No hay comentarios: