Para trabajar con Tabstrip se debe realizar las siguientes paso (ejemplo DEMO_DYNPRO_TABSTRIP_SERVER):
1) Crear dynpro de control 0100 y los otros dynpros para subscreen 0110, 0120 y 0130.
2) Dentro del dynpro de control crear:
- Control de Fichas (MYTABSTRIP). También definir variable globlal: CONTROLS mytabstrip TYPE TABSTRIP.
- Tantos pulsadores como pestañas, a cada pulsador se le asigna un nombre (PUSH1) y un código (PUSH1).
- Un Área Subscreen con un nombre (SUB).
3) En el PBO se hace la llamada para mostrar el tabstrip CALL SUBSCREEN SUB INCLUDING SY-REPID NUMBER. Antes de llamar al dynpro de control se informa que pestaña está activa:
mytabstrip-activetab = 'PUSH2'.
number = '0120'.
4) En el PAI se hace llamada CALL SUBSCREEN SUB y después dentro de Module USER_COMMAND capturar evento e informar la pestaña y el subscreen:
mytabstrip-activetab = save_ok.
CASE save_ok.
WHEN 'PUSH1'.
number = '0110'.
WHEN 'PUSH2'.
number = '0120'.
WHEN 'PUSH3'.
number = '0130'.
ENDCASE.
martes, abril 26, 2011
Dynpro - Subscreens
Las subscreens son útiles para mostrar diferente información dependiendo criterios. Para trabajar con varios con subscreens en dynpros se realizan los siguientes pasos (ejemplo DEMO_DYNPRO_SUBSCREENS):
1) Crear dynpro Inicial 0100 (tipo normal).
2) Añadir dos subscreens al dynpro 0100 (Área subscreen con id 'AREA1' y subscreen con 'AREA2') y varios botones que permitirán mostrar un dynpro u otro. A cada botón se le asignará un código para posteriomente capturarlo en el Module USER_COMMAND (punto 6).
3) Crear varios dynpros (tipo subscreen): 0110, 0120, 0130, 0140.
4) En el PBO realizar la llamada por cada subscreen :
CALL SUBSCREEN AREA1 INCLUDING nombre_programa nombre_subscreen.
CALL SUBSCREEN AREA2 INCLUDING nombre_programa nombre_subscreen.
Tanto en el nombre_programa como nombre_subscreen se pueden utilizar variable :
data: call_prog TYPE sycprog.
data: call_subscr TYPE sydynnr.
Normalmente siempre es el mismo programa por lo que se utiliza sy-repid mientras que el subscreen cambia.
5) En el PAI realizar la llamada por cada subscreen:
CALL SUBSCREEN AREA1.
CALL SUBSCREEN AREA2.
6) En el PAI realizar llamada al un MODULE USER_COMMAND. En este module se informa la variable nombre_subscreen que será que posteriormente se cargará en el PBO.
1) Crear dynpro Inicial 0100 (tipo normal).
2) Añadir dos subscreens al dynpro 0100 (Área subscreen con id 'AREA1' y subscreen con 'AREA2') y varios botones que permitirán mostrar un dynpro u otro. A cada botón se le asignará un código para posteriomente capturarlo en el Module USER_COMMAND (punto 6).
3) Crear varios dynpros (tipo subscreen): 0110, 0120, 0130, 0140.
4) En el PBO realizar la llamada por cada subscreen :
CALL SUBSCREEN AREA1 INCLUDING nombre_programa nombre_subscreen.
CALL SUBSCREEN AREA2 INCLUDING nombre_programa nombre_subscreen.
Tanto en el nombre_programa como nombre_subscreen se pueden utilizar variable :
data: call_prog TYPE sycprog.
data: call_subscr TYPE sydynnr.
Normalmente siempre es el mismo programa por lo que se utiliza sy-repid mientras que el subscreen cambia.
5) En el PAI realizar la llamada por cada subscreen:
CALL SUBSCREEN AREA1.
CALL SUBSCREEN AREA2.
6) En el PAI realizar llamada al un MODULE USER_COMMAND. En este module se informa la variable nombre_subscreen que será que posteriormente se cargará en el PBO.
Creación textos SAP
Utilizar transacción SE75. Primero crear objeto y luego crear id_texto. Se genera orden de customizing. Posteriormente READ_TEXT y SAVE_TEXT.
jueves, abril 14, 2011
DICC - Tabla de textos
Nos puedes interesar guardar unos valores en BD con la posibilidad de informar su denominación en función del idioma. Para ello se deberá crear dos tablas y enlazarlas. Como ejemplo pondremos una tabla de colores:
*ESTRUCTURA
TABLA1: ID_COLOR
TABLA2: ID_COLOR, IDIOMA, DESCRIPCIÓN
*VALORES EJEMPLO
TABLA1 TABLA2
1 1, ES, Azul
1, EN, Blue
2 2, CAT, Vermell........
Aquí parte interesantes es asignar la tabla de descripciones (tabla2) a la tabla de valores (tabla1) para que cuando se visualice la tabla de valores (tabla1) el sistema recupere automáticamente las descripciones (accediendo a la tabla2). Para realizar esta parte se debe modificar la tabla de descripciones y insertar la clave:
*ESTRUCTURA
TABLA1: ID_COLOR
TABLA2: ID_COLOR, IDIOMA, DESCRIPCIÓN
*VALORES EJEMPLO
TABLA1 TABLA2
1 1, ES, Azul
1, EN, Blue
2 2, CAT, Vermell........
Aquí parte interesantes es asignar la tabla de descripciones (tabla2) a la tabla de valores (tabla1) para que cuando se visualice la tabla de valores (tabla1) el sistema recupere automáticamente las descripciones (accediendo a la tabla2). Para realizar esta parte se debe modificar la tabla de descripciones y insertar la clave:
ALV Objetos - Añadir botón nuevo
**********************************************************************************
1) Definir capturador para el evento TOOLBAR y USER_COMMAND:
**********************************************************************************
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
ENDCLASS.
**********************************************************************************
2) Definir implementación de los eventos (llama a una rutina)
**********************************************************************************
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
PERFORM handle_toolbar USING e_object.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
PERFORM user_command USING e_ucomm.
ENDMETHOD. "handle_user_command
ENDCLASS.
**********************************************************************************
3) Definir rutinas: añadir botón y tratar acción del botón
**********************************************************************************
FORM handle_toolbar USING p_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE 'PER' TO ls_toolbar-function. "#EC NOTEXT
MOVE icon_display_text TO ls_toolbar-icon.
MOVE 'Passenger Info'(201) TO ls_toolbar-quickinfo.
MOVE 'Passenger Info'(201) TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled. "#EC NOTEXT
APPEND ls_toolbar TO p_object->mt_toolbar.
ENDFORM. " HANDLE_TOOLBAR
FORM user_command USING p_ucomm TYPE syucomm.
CASE p_ucomm.
WHEN 'PER'.
PERFORM sel_selected_rows_ims.
LEAVE SCREEN.
ENDCASE.
ENDFORM. " USER_COMMAND
**********************************************************************************
4) Registrar Eventos en el PBO
**********************************************************************************
SET HANDLER: lcl_event_receiver=>handle_user_command FOR obj_alv_ims,
lcl_event_receiver=>handle_toolbar FOR obj_alv_ims.
1) Definir capturador para el evento TOOLBAR y USER_COMMAND:
**********************************************************************************
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
ENDCLASS.
**********************************************************************************
2) Definir implementación de los eventos (llama a una rutina)
**********************************************************************************
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
PERFORM handle_toolbar USING e_object.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
PERFORM user_command USING e_ucomm.
ENDMETHOD. "handle_user_command
ENDCLASS.
**********************************************************************************
3) Definir rutinas: añadir botón y tratar acción del botón
**********************************************************************************
FORM handle_toolbar USING p_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE 'PER' TO ls_toolbar-function. "#EC NOTEXT
MOVE icon_display_text TO ls_toolbar-icon.
MOVE 'Passenger Info'(201) TO ls_toolbar-quickinfo.
MOVE 'Passenger Info'(201) TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled. "#EC NOTEXT
APPEND ls_toolbar TO p_object->mt_toolbar.
ENDFORM. " HANDLE_TOOLBAR
FORM user_command USING p_ucomm TYPE syucomm.
CASE p_ucomm.
WHEN 'PER'.
PERFORM sel_selected_rows_ims.
LEAVE SCREEN.
ENDCASE.
ENDFORM. " USER_COMMAND
**********************************************************************************
4) Registrar Eventos en el PBO
**********************************************************************************
SET HANDLER: lcl_event_receiver=>handle_user_command FOR obj_alv_ims,
lcl_event_receiver=>handle_toolbar FOR obj_alv_ims.
ALV Objetos - Mostrar las opciones de seleccionar y guardar variantes ALV
Se debe informar el parámetro IS_VARIANT del método SET_TABLE_FOR_FIRST_DISPLAY:
MOVE sy-repid TO gs_variant-report.
NOTA: Las disposiciones se guardan en una tabla en la cual el nombre del programa es parte de la clave. Si se trabaja con subscreens y varios listados ALV en el mismo programa, hay la posibilidad de diferenciar las disposiciones informando campo:
gs_variant-handle = 'ID_que_queremos'.
MOVE sy-repid TO gs_variant-report.
NOTA: Las disposiciones se guardan en una tabla en la cual el nombre del programa es parte de la clave. Si se trabaja con subscreens y varios listados ALV en el mismo programa, hay la posibilidad de diferenciar las disposiciones informando campo:
gs_variant-handle = 'ID_que_queremos'.
ALV Objetos - Ocultar barra de herramientas
Se informa una campo de la variable de layout:
po_layout-no_toolbar = 'X'.
po_layout-no_toolbar = 'X'.
ALV Objetos - Redefinir botón stándard
Para redefinir botón standard del la barra de herramientas de un ALV OO:
***********************************************************************************
1) Definir capturador para el evento BEFORE_USER_COMMAND y generar otro evento:
***********************************************************************************
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_before_user_command
FOR EVENT before_user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
ENDCLASS. "lcl_event_receiver DEFINITION
***********************************************************************************
2) Definir implemetación de los eventos (llama a una rutina)
***********************************************************************************
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_before_user_command.
PERFORM handle_before_user_command USING e_ucomm.
ENDMETHOD. "handle_before_user_command
METHOD handle_user_command.
PERFORM user_command USING e_ucomm.
ENDMETHOD. "handle_user_command
ENDCLASS.
***********************************************************************************
3) Definir rutinas: recuperar el código del botón estándard y llama a otro.
***********************************************************************************
FORM handle_before_user_command USING p_ucomm TYPE syucomm.
CASE p_ucomm .
WHEN '&DETAIL'.
CALL METHOD obj_alv_ims->set_user_command
EXPORTING
i_ucomm = 'SEL_DETAIL_IMS'.
ENDCASE .
ENDFORM. " HANDLE_BEFORE_USER_COMMAND
FORM user_command USING p_ucomm TYPE syucomm.
CASE p_ucomm.
WHEN 'SEL_DETAIL_IMS'.
PERFORM sel_selected_rows_ims.
LEAVE SCREEN.
ENDCASE.
ENDFORM. " USER_COMMAND
***********************************************************************************
4) Registrar Eventos en el PBO
***********************************************************************************
SET HANDLER: lcl_event_receiver=>handle_before_user_command FOR obj_alv_ims.
SET HANDLER: lcl_event_receiver=>handle_user_command FOR obj_alv_ims.
***********************************************************************************
NOTA:
***********************************************************************************
- Para forzar PBO del dynpro LEAVE SCREEN.
***********************************************************************************
1) Definir capturador para el evento BEFORE_USER_COMMAND y generar otro evento:
***********************************************************************************
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_before_user_command
FOR EVENT before_user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
ENDCLASS. "lcl_event_receiver DEFINITION
***********************************************************************************
2) Definir implemetación de los eventos (llama a una rutina)
***********************************************************************************
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_before_user_command.
PERFORM handle_before_user_command USING e_ucomm.
ENDMETHOD. "handle_before_user_command
METHOD handle_user_command.
PERFORM user_command USING e_ucomm.
ENDMETHOD. "handle_user_command
ENDCLASS.
***********************************************************************************
3) Definir rutinas: recuperar el código del botón estándard y llama a otro.
***********************************************************************************
FORM handle_before_user_command USING p_ucomm TYPE syucomm.
CASE p_ucomm .
WHEN '&DETAIL'.
CALL METHOD obj_alv_ims->set_user_command
EXPORTING
i_ucomm = 'SEL_DETAIL_IMS'.
ENDCASE .
ENDFORM. " HANDLE_BEFORE_USER_COMMAND
FORM user_command USING p_ucomm TYPE syucomm.
CASE p_ucomm.
WHEN 'SEL_DETAIL_IMS'.
PERFORM sel_selected_rows_ims.
LEAVE SCREEN.
ENDCASE.
ENDFORM. " USER_COMMAND
***********************************************************************************
4) Registrar Eventos en el PBO
***********************************************************************************
SET HANDLER: lcl_event_receiver=>handle_before_user_command FOR obj_alv_ims.
SET HANDLER: lcl_event_receiver=>handle_user_command FOR obj_alv_ims.
***********************************************************************************
NOTA:
***********************************************************************************
- Para forzar PBO del dynpro LEAVE SCREEN.
Suscribirse a:
Entradas (Atom)