Objetivos:
Añadimos una Dynpro 9000 con su correspondiente Status para salir del programa.
Dentro de la Dynpro 9000 creamos un Tapstrip usando el asistente donde se indicará:
Al haber indicado tres secciones en el Tabstrip, automáticamente se nos habrá generado tres Dynpros subscreen y la siguiente programación de diálogo con sus correspondientes módulos en el Report:
Para editar la pestaña de Socios, tendremos que ir al subscreen 9001.
Introducimos una tabla de control y un botón.
A continuación nos interesa saber cuál es la secuencia del Batch Input para ejecutar cada una de las modificaciones seleccionadas.
Para ello vamos a la transacció SM35 y creamos una nueva grabación:
Se habrá ejecutado la transacción indicada anteriormente. A partir de este paso, hay que realizar la modificación de solo un usuario sin hacer un paso de mas, ya que se grabaría. Cuando hayamos acabado, cerramos la transacción y aparecerá una tabla BDCDATA de la grabación:
Con esta tabla, hay que identificar los cambios a realizar y generarla en nuestro programa para modificar todos los usuarios que hayamos seleccionado con el Checkbox.
Los códigos son los siguientes.
- Crear un Tabstrip, y en una pestaña mostrar los socios en una tabla de control
- Seleccionar los socios a modificar con un checkbox
- Ejecutar con un Batch Input la modificación de cada uno de los socios seleccionados a través de un Module Pool creado anteriormente.
![]() |
| Objetivo del REPORT |
Datos:
Creamos un nuevo Report en la SE38.![]() |
| Crear un nuevo Report con la SE38 |
![]() |
| Añadimos una Dynpro. |
![]() |
| Acción de salir para poder cerrar el Dynpro. |
- Nombre del Tapstrip: TS_9000.
- Las secciones del Tapstrip.
- Código de función al pinchar en las secciones.
- Si se desea introducir los modulos en includes.
![]() |
| Proceso para crear las pestañas en una Dynpro. |
PROCESS BEFORE OUTPUT. *&SPWIZARD: PBO FLOW LOGIC FOR TABSTRIP 'TS_9000' MODULE TS_9000_ACTIVE_TAB_SET. CALL SUBSCREEN TS_9000_SCA INCLUDING G_TS_9000-PROG G_TS_9000-SUBSCREEN. MODULE STATUS_9000. * PROCESS AFTER INPUT. *&SPWIZARD: PAI FLOW LOGIC FOR TABSTRIP 'TS_9000' CALL SUBSCREEN TS_9000_SCA. MODULE TS_9000_ACTIVE_TAB_GET. MODULE USER_COMMAND_9000.
Para editar la pestaña de Socios, tendremos que ir al subscreen 9001.
Introducimos una tabla de control y un botón.
![]() |
| Añadiendo los campos Input/output referenciando con la base de datos. |
![]() |
| Tabla de control y botón resultante en el dynpro 9001. |
Para ello vamos a la transacció SM35 y creamos una nueva grabación:
![]() |
| Nueva grabación en la transacción SM35. |
![]() |
| Nueva grabación para iniciar el proceso |
![]() |
| Asignar el nombre de la grabación y la transacción. |
![]() |
| Tabla BDCDATA generada con la grabación. |
Los códigos son los siguientes.
- Dynpro 9000
PROCESS BEFORE OUTPUT. *&SPWIZARD: PBO FLOW LOGIC FOR TABSTRIP 'TS_9000' MODULE TS_9000_ACTIVE_TAB_SET. CALL SUBSCREEN TS_9000_SCA INCLUDING G_TS_9000-PROG G_TS_9000-SUBSCREEN. MODULE STATUS_9000. * PROCESS AFTER INPUT. *&SPWIZARD: PAI FLOW LOGIC FOR TABSTRIP 'TS_9000' CALL SUBSCREEN TS_9000_SCA. MODULE TS_9000_ACTIVE_TAB_GET. MODULE USER_COMMAND_9000.
- Dynpro 9001 (Subscreen)
PROCESS BEFORE OUTPUT. * MODULE STATUS_0110. * Copiamos la tabla socios a g_it_socios_aux (una vez) MODULE load_socios. * Cargamos la tabla de control linea a linea. LOOP AT g_it_socios_aux WITH CONTROL ct_9001_socios CURSOR ct_9001_socios-current_line. MODULE load_ct_9001. ENDLOOP. * PROCESS AFTER INPUT. * MODULE USER_COMMAND_0110. * Cada vez que se hace un input, se actualiza la tabla de control LOOP AT g_it_socios_aux. MODULE update_ct_9001. ENDLOOP.
- Report
*&---------------------------------------------------------------------* *& Report ZBIBLIO_MODIF_VARIOS *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zbiblio_modif_varios. CONTROLS: ct_9001_socios TYPE TABLEVIEW USING SCREEN 9001. TABLES: zbiblio_socios. * Añadimos un campo string (Checkbox) a la tabla interna de socios. DATA: BEGIN OF g_it_socios_aux OCCURS 0, flag(1) TYPE c. INCLUDE STRUCTURE zbiblio_socios. DATA: END OF g_it_socios_aux. * Tabla para el Batch Input DATA: BEGIN OF g_it_bdcdata OCCURS 0. INCLUDE STRUCTURE bdcdata. DATA: END OF g_it_bdcdata. DATA: cb_9001_flag TYPE c. DATA: g_wa_vuelta TYPE i VALUE 1. * Llamada a la Dynpro CALL SCREEN 9000. *&---------------------------------------------------------------------* *& Module STATUS_9000 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_9000 OUTPUT. SET PF-STATUS 'STATUS_9000'. SET TITLEBAR 'TITLE_9000'. ENDMODULE. " STATUS_9000 OUTPUT *&SPWIZARD: FUNCTION CODES FOR TABSTRIP 'TS_9000' CONSTANTS: BEGIN OF c_ts_9000, tab1 LIKE sy-ucomm VALUE 'TS_9000_FC1', tab2 LIKE sy-ucomm VALUE 'TS_9000_FC2', tab3 LIKE sy-ucomm VALUE 'TS_9000_FC3', END OF c_ts_9000. *&SPWIZARD: DATA FOR TABSTRIP 'TS_9000' CONTROLS: ts_9000 TYPE TABSTRIP. DATA: BEGIN OF g_ts_9000, subscreen LIKE sy-dynnr, prog LIKE sy-repid VALUE 'ZBIBLIO_MODIF_VARIOS', pressed_tab LIKE sy-ucomm VALUE c_ts_9000-tab1, END OF g_ts_9000. DATA: ok_code_9000 LIKE sy-ucomm. *&SPWIZARD: OUTPUT MODULE FOR TS 'TS_9000'. DO NOT CHANGE THIS LINE! *&SPWIZARD: SETS ACTIVE TAB MODULE ts_9000_active_tab_set OUTPUT. ts_9000-activetab = g_ts_9000-pressed_tab. CASE g_ts_9000-pressed_tab. WHEN c_ts_9000-tab1. g_ts_9000-subscreen = '9001'. WHEN c_ts_9000-tab2. g_ts_9000-subscreen = '9002'. WHEN c_ts_9000-tab3. g_ts_9000-subscreen = '9003'. WHEN OTHERS. *&SPWIZARD: DO NOTHING ENDCASE. ENDMODULE. "TS_9000_ACTIVE_TAB_SET OUTPUT *&SPWIZARD: INPUT MODULE FOR TS 'TS_9000'. DO NOT CHANGE THIS LINE! *&SPWIZARD: GETS ACTIVE TAB MODULE ts_9000_active_tab_get INPUT. ok_code_9000 = sy-ucomm. CASE ok_code_9000. WHEN c_ts_9000-tab1. g_ts_9000-pressed_tab = c_ts_9000-tab1. WHEN c_ts_9000-tab2. g_ts_9000-pressed_tab = c_ts_9000-tab2. WHEN c_ts_9000-tab3. g_ts_9000-pressed_tab = c_ts_9000-tab3. WHEN OTHERS. *&SPWIZARD: DO NOTHING ENDCASE. ENDMODULE. "TS_9000_ACTIVE_TAB_GET INPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_9000 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_9000 INPUT. CASE ok_code_9000. WHEN 'CANCEL'. LEAVE PROGRAM. WHEN 'MODIFICAR'. PERFORM f_modificar_socios. ENDCASE. ENDMODULE. " USER_COMMAND_9000 INPUT *&---------------------------------------------------------------------* *& Module LOAD_SOCIOS OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE load_socios OUTPUT. IF g_wa_vuelta = 1. SELECT * FROM zbiblio_socios INTO CORRESPONDING FIELDS OF TABLE g_it_socios_aux. g_wa_vuelta = g_wa_vuelta + 1. ENDIF. ENDMODULE. " LOAD_SOCIOS OUTPUT *&---------------------------------------------------------------------* *& Module LOAD_CT_9001 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE load_ct_9001 OUTPUT. cb_9001_flag = g_it_socios_aux-flag. MOVE-CORRESPONDING g_it_socios_aux TO zbiblio_socios. ENDMODULE. " LOAD_CT_9001 OUTPUT *&---------------------------------------------------------------------* *& Module UPDATE_CT_9001 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE update_ct_9001 INPUT. g_it_socios_aux-flag = cb_9001_flag. MOVE-CORRESPONDING zbiblio_socios TO g_it_socios_aux. MODIFY g_it_socios_aux INDEX ct_9001_socios-current_line. ENDMODULE. " UPDATE_CT_9001 INPUT *&---------------------------------------------------------------------* *& Form F_MODIFICAR_SOCIOS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM f_modificar_socios . LOOP AT g_it_socios_aux. IF g_it_socios_aux-flag = 'X'. * Generamos la tabla BDCDATA PERFORM f_gen_bdcdata USING g_it_socios_aux. * Ejecutamos el programa con la tabla BDCDATA. CALL TRANSACTION 'ZBIBLIO_01' USING g_it_bdcdata. ENDIF. ENDLOOP. ENDFORM. " F_MODIFICAR_SOCIOS *&---------------------------------------------------------------------* *& Form F_GEN_BDCDATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_IT_SOCIOS_AUX text *----------------------------------------------------------------------* FORM f_gen_bdcdata USING p_it_socios_aux LIKE LINE OF g_it_socios_aux. FREE g_it_bdcdata. * Dynpro 9000 g_it_bdcdata-program = 'ZBIBLIO_CREAR_MODIF_VISUAL'. g_it_bdcdata-dynpro = 9000. g_it_bdcdata-dynbegin = 'X'. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'BDC_OKCODE'. g_it_bdcdata-fval = '=MODIFICAR'. APPEND g_it_bdcdata. * Dynpro 9002 clear g_it_bdcdata. g_it_bdcdata-program = 'ZBIBLIO_CREAR_MODIF_VISUAL'. g_it_bdcdata-dynpro = 9002. g_it_bdcdata-dynbegin = 'X'. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'BDC_CURSOR'. g_it_bdcdata-fval = 'ZBIBLIO_SOCIOS-COD_SOCIO'. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'BDC_OKCODE'. g_it_bdcdata-fval = '=ACCION'. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'ZBIBLIO_SOCIOS-COD_SOCIO'. g_it_bdcdata-fval = p_it_socios_aux-cod_socio. APPEND g_it_bdcdata. * Dynpro 9003 clear g_it_bdcdata. g_it_bdcdata-program = 'ZBIBLIO_CREAR_MODIF_VISUAL'. g_it_bdcdata-dynpro = 9003. g_it_bdcdata-dynbegin = 'X'. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'BDC_CURSOR'. g_it_bdcdata-fval = 'ZBIBLIO_SOCIOS-COD_SOCIO'. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'BDC_OKCODE'. g_it_bdcdata-fval = '=ACCION'. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'ZBIBLIO_SOCIOS-DNI'. g_it_bdcdata-fval = p_it_socios_aux-dni. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'ZBIBLIO_SOCIOS-NOMBRE'. g_it_bdcdata-fval = p_it_socios_aux-nombre. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'ZBIBLIO_SOCIOS-APELLIDO'. g_it_bdcdata-fval = p_it_socios_aux-apellido. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'ZBIBLIO_SOCIOS-TELEFONO'. g_it_bdcdata-fval = p_it_socios_aux-telefono. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-fnam = 'ZBIBLIO_SOCIOS-DIR1'. g_it_bdcdata-fval = p_it_socios_aux-dir1. APPEND g_it_bdcdata. clear g_it_bdcdata. g_it_bdcdata-program = 'ZBIBLIO_CREAR_MODIF_VISUAL'. g_it_bdcdata-dynpro = 9003. g_it_bdcdata-dynbegin = 'X'. APPEND g_it_bdcdata. g_it_bdcdata-fnam = 'BDC_OKCODE'. g_it_bdcdata-fval = '=CANCEL'. APPEND g_it_bdcdata. ENDFORM. " F_GEN_BDCDATA
+17.04.45.png)
+11.00.40.png)
+11.05.03.png)
+11.06.53.png)

+11.50.58.png)
+12.03.31.png)
+13.18.52+copy.png)
+13.24.09+copy.png)
+13.19.40.png)
+16.40.32.png)

+16.53.08.png)
+16.54.55.png)
+16.55.33.png)
+16.59.33.png)
+17.00.22.png)
+17.49.51.png)
+17.09.54.png)
+17.10.26.png)
+17.03.45.png)
+18.01.04.png)
+17.14.21.png)
+17.15.59.png)
+17.21.52.png)
+17.24.39.png)
+17.22.49.png)
+17.24.03.png)
+18.11.39.png)
+18.20.05.png)
+18.24.56.png)
+10.16.27.png)
+10.17.04.png)
+09.59.06.png)
+10.22.25.png)
+10.26.28+copy.png)
+10.24.07+copy.png)
+10.31.51+copy.png)
+13.35.27+copy.png)


+18.31.32.png)
+18.32.30.png)
+18.29.32.png)
+18.42.18.png)
+18.42.38.png)
+18.42.50.png)
+19.04.11.png)
+19.05.02.png)
+19.08.44.png)
+19.08.15.png)
+12.32.28.png)
+12.32.55.png)
+12.14.16.png)
+19.10.23.png)