🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP La ejecución de la transacción de diálogo

ABAP La ejecución de la transacción de diálogo

ABAP La ejecución de la transacción de diálogo

EJECUCION DE UN PROGRAMA DE DIALOGO

El programa principal tiene 4 includes

INCLUDE: zprueba_dialogo_top, "para declarar datos zprueba_dialogo_pbo, "almacenar codigo del pbo zprueba_dialogo_pai, "almacenar codigo del pai zprueba_dialogo_sub. "para almacenar todo el codigo propio de la tabla de control
en cada dynpro esta:
PROCESS BFORE OUTPUT
MODULE STATUS_0XXX
MODULE CARGAR_CAMPOS_0XXX. PROCESS AFTER INPUT.
MODULE EXIT_0XXX AT EXIT-COMMAND. MODULE USER_COMMAND_0XXX.

Procesamiento de la dynpro 0200 Miramos su layout Ahora analizamos los módulos de la dynpro 0200 El que setea el status gui y el título de la dynpro El modulo del PBO cargar_tc_0200 carga la tabla de control con los campos que se seleccionan de la tabla de usuarios a partir del dni introducido en la dynpro 0100 Acá vemos la lógica que se genera automáticamente para el tratamiento de la tabla de control El modulo exit_0200 vuelve a la dynpro anterior El módulo PAI User-command_0200 analiza la acción realizada por el usuario, si presiono cancelar vuelve a la dynpro 0100, si presiono Modificar valida que si haya seleccionado una fila de la tabla de control, si esto se cumple llama a la dynpro 0300, sino emite un mensaje de error Logia de procesamiento 0300 Miramos el modulo status 0300 Es el que setea el status gui y el título de la dynpro El modulo del PBO 0300 La que se encarga de llenar la pantalla con datos El modulo del PAI 0300 llama a la dynpro anterior El modulo del PAI user_command_0300 analiza la acción realizada por el usuario, si presiona cancelar vuelve a la dynpro 0100, si presiona modificar ejecutara un popap para confirmar la modificaión si responde si modificara la tabla bases de datos

*&---------------------------------------------------------------------* *& Module Pool ZPRUEBA_DIALOGO *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* PROGRAM zprueba_dialogo. INCLUDE: zprueba_dialogo_top, zprueba_dialogo_pbo, zprueba_dialogo_pai, zprueba_dialogo_sub. *&---------------------------------------------------------------------* *& Include ZPRUEBA_DIALOGO_TOP *&---------------------------------------------------------------------* TYPE-POOLS: slis. DATA: BEGIN OF ti_usuarios OCCURS 0, marca(1) TYPE c, dni TYPE z_dni, nombre_ape TYPE z_nombre_ape, estado_usu TYPE z_estado_usu, direccion TYPE z_direccion, codigo_postal TYPE z_codigo_postal, f_nacimiento TYPE z_fnacimiento, estado_civil TYPE z_estado_civil, END OF ti_usuarios. DATA: st_usuarios LIKE LINE OF ti_usuarios, ti_botones TYPE slis_t_extab. DATA: BEGIN OF ti_usuarios_aux OCCURS 0, dni TYPE z_dni, nombre_ape TYPE z_nombre_ape, estado_usu TYPE z_estado_usu, direccion TYPE z_direccion, codigo_postal TYPE z_codigo_postal, f_nacimiento TYPE z_fnacimiento, estado_civil TYPE z_estado_civil, END OF ti_usuarios_aux. DATA: st_usuarios_aux LIKE LINE OF ti_usuarios_aux. DATA: BEGIN OF wa_screen_0100, dni TYPE z_dni, END OF wa_screen_0100. DATA: v_ucomm TYPE sy-ucomm, v_dni LIKE wa_screen_0100-dni, v_cantidad TYPE i, v_answer(1) TYPE c, st_tabla_usuarios TYPE ztabla_usuarios. DATA: BEGIN OF wa_screen_0300, dni TYPE z_dni, nombre_ape TYPE z_nombre_ape, estado_usu TYPE z_estado_usu, direccion TYPE z_direccion, codigo_postal TYPE z_codigo_postal, f_nacimiento TYPE z_fnacimiento, estado_civil TYPE z_estado_civil, END OF wa_screen_0300. *&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_USUARIOS' ITSELF CONTROLS: tc_usuarios TYPE TABLEVIEW USING SCREEN 0200. *&SPWIZARD: LINES OF TABLECONTROL 'TC_USUARIOS' DATA: g_tc_usuarios_lines LIKE sy-loopc. DATA: ok_code LIKE sy-ucomm. *&SPWIZARD: FUNCTION CODES FOR TABSTRIP 'TS_USUARIOS' CONSTANTS: BEGIN OF c_ts_usuarios, tab1 LIKE sy-ucomm VALUE 'TS_USUARIOS_FC1', tab2 LIKE sy-ucomm VALUE 'TS_USUARIOS_FC2', tab3 LIKE sy-ucomm VALUE 'TS_USUARIOS_FC3', END OF c_ts_usuarios. *&SPWIZARD: DATA FOR TABSTRIP 'TS_USUARIOS' CONTROLS: ts_usuarios TYPE TABSTRIP. DATA: BEGIN OF g_ts_usuarios, subscreen LIKE sy-dynnr, prog LIKE sy-repid VALUE 'ZPRUEBA_DIALOGO', pressed_tab LIKE sy-ucomm VALUE c_ts_usuarios-tab1, END OF g_ts_usuarios. *&---------------------------------------------------------------------* *& Include ZPRUEBA_DIALOGO_PBO *&---------------------------------------------------------------------* *&SPWIZARD: OUTPUT MODULE FOR TC 'TC_USUARIOS'. DO NOT CHANGE THIS LINE! *&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR MODULE tc_usuarios_change_tc_attr OUTPUT. DESCRIBE TABLE ti_usuarios LINES tc_usuarios-lines. ENDMODULE. "TC_USUARIOS_CHANGE_TC_ATTR OUTPUT *&SPWIZARD: OUTPUT MODULE FOR TC 'TC_USUARIOS'. DO NOT CHANGE THIS LINE! *&SPWIZARD: GET LINES OF TABLECONTROL MODULE tc_usuarios_get_lines OUTPUT. g_tc_usuarios_lines = sy-loopc. ENDMODULE. "TC_USUARIOS_GET_LINES OUTPUT *&---------------------------------------------------------------------* *& Module STATUS_0200 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_0200 OUTPUT. SET PF-STATUS '0200'. SET TITLEBAR '0200'. ENDMODULE. " STATUS_0200 OUTPUT *&---------------------------------------------------------------------* *& Module STATUS_0300 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_0300 OUTPUT. SET PF-STATUS '0300'. SET TITLEBAR '0300'. ENDMODULE. " STATUS_0300 OUTPUT *&SPWIZARD: OUTPUT MODULE FOR TS 'TS_USUARIOS'. DO NOT CHANGE THIS LINE! *&SPWIZARD: SETS ACTIVE TAB MODULE ts_usuarios_active_tab_set OUTPUT. ts_usuarios-activetab = g_ts_usuarios-pressed_tab. CASE g_ts_usuarios-pressed_tab. WHEN c_ts_usuarios-tab1. g_ts_usuarios-subscreen = '0101'. WHEN c_ts_usuarios-tab2. g_ts_usuarios-subscreen = '0102'. WHEN c_ts_usuarios-tab3. g_ts_usuarios-subscreen = '0103'. WHEN OTHERS. *&SPWIZARD: DO NOTHING ENDCASE. ENDMODULE. "TS_USUARIOS_ACTIVE_TAB_SET OUTPUT *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_0100 OUTPUT. SET PF-STATUS '0100'. SET TITLEBAR '0100'. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module CARGAR_TC_0200 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE cargar_tc_0200 OUTPUT. CLEAR: ti_usuarios_aux, st_usuarios, ti_usuarios. REFRESH: ti_usuarios_aux, ti_usuarios. IF NOT wa_screen_0100-dni IS INITIAL. * Recupero solo el dni introducido SELECT dni nombre_ape estado_usu direccion codigo_postal f_nacimiento estado_civil FROM ztabla_usuarios INTO TABLE ti_usuarios_aux WHERE dni EQ wa_screen_0100-dni. ELSE. * Recupero todos los DNIs SELECT dni nombre_ape estado_usu direccion codigo_postal f_nacimiento estado_civil FROM ztabla_usuarios INTO TABLE ti_usuarios_aux. ENDIF. * Pasamos el contenido a la tabla del TC LOOP AT ti_usuarios_aux INTO st_usuarios_aux. CLEAR st_usuarios. st_usuarios-dni = st_usuarios_aux-dni. st_usuarios-nombre_ape = st_usuarios_aux-nombre_ape. st_usuarios-estado_usu = st_usuarios_aux-estado_usu. st_usuarios-direccion = st_usuarios_aux-direccion. st_usuarios-codigo_postal = st_usuarios_aux-codigo_postal. st_usuarios-f_nacimiento = st_usuarios_aux-f_nacimiento. st_usuarios-estado_civil = st_usuarios_aux-estado_civil. APPEND st_usuarios TO ti_usuarios. ENDLOOP. ENDMODULE. " CARGAR_TC_0200 OUTPUT *&---------------------------------------------------------------------* *& Module EXIT_0300 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE exit_0300 INPUT. CALL SCREEN 0200. ENDMODULE. " EXIT_0300 INPUT *&---------------------------------------------------------------------* *& Module CARGAR_CAMPOS_0300 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE cargar_campos_0300 OUTPUT. READ TABLE ti_usuarios INTO st_usuarios WITH KEY marca = 'X'. IF sy-subrc EQ 0. CLEAR wa_screen_0300. wa_screen_0300-dni = st_usuarios-dni. wa_screen_0300-nombre_ape = st_usuarios-nombre_ape. wa_screen_0300-estado_usu = st_usuarios-estado_usu. wa_screen_0300-direccion = st_usuarios-direccion. wa_screen_0300-f_nacimiento = st_usuarios-f_nacimiento. wa_screen_0300-estado_civil = st_usuarios-estado_civil. ENDIF. ENDMODULE. " CARGAR_CAMPOS_0300 OUTPUT *&---------------------------------------------------------------------* *& Include ZPRUEBA_DIALOGO_PAI *&---------------------------------------------------------------------* *&SPWIZARD: INPUT MODUL FOR TC 'TC_USUARIOS'. DO NOT CHANGE THIS LINE! *&SPWIZARD: MARK TABLE MODULE tc_usuarios_mark INPUT. DATA: g_tc_usuarios_wa2 LIKE LINE OF ti_usuarios. IF tc_usuarios-line_sel_mode = 1 AND st_usuarios-marca = 'X'. LOOP AT ti_usuarios INTO g_tc_usuarios_wa2 WHERE marca = 'X'. g_tc_usuarios_wa2-marca = ''. MODIFY ti_usuarios FROM g_tc_usuarios_wa2 TRANSPORTING marca. ENDLOOP. ENDIF. MODIFY ti_usuarios FROM st_usuarios INDEX tc_usuarios-current_line TRANSPORTING marca. ENDMODULE. "TC_USUARIOS_MARK INPUT *&SPWIZARD: INPUT MODULE FOR TC 'TC_USUARIOS'. DO NOT CHANGE THIS LINE! *&SPWIZARD: PROCESS USER COMMAND MODULE tc_usuarios_user_command INPUT. ok_code = sy-ucomm. PERFORM user_ok_tc USING 'TC_USUARIOS' 'TI_USUARIOS' 'MARCA' CHANGING ok_code. sy-ucomm = ok_code. ENDMODULE. "TC_USUARIOS_USER_COMMAND INPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0100 INPUT. MOVE ok_code TO v_ucomm. CLEAR ok_code. CASE v_ucomm. * Borrar DNI WHEN 'BORRAR'. CLEAR wa_screen_0100-dni. WHEN 'BUSCAR_USU'. CALL SCREEN 0200 STARTING AT 5 1 ENDING AT 130 25. ENDCASE. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0200 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0200 INPUT. MOVE ok_code TO v_ucomm. CLEAR ok_code. CASE v_ucomm. WHEN 'CANCELAR'. CALL SCREEN 0100. WHEN 'MODIFICAR'. * Sumarizo la cantidad de filas seleccionadas CLEAR v_cantidad. LOOP AT ti_usuarios INTO st_usuarios WHERE marca EQ 'X'. ADD 1 TO v_cantidad. ENDLOOP. IF v_cantidad IS INITIAL. MESSAGE e003(z_prueba) WITH 'Debe seleccionar al menos un registro'. ELSEIF v_cantidad EQ 1. CALL SCREEN 0300. ENDIF. ENDCASE. ENDMODULE. " USER_COMMAND_0200 INPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0300 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0300 INPUT. MOVE ok_code TO v_ucomm. CLEAR ok_code. CASE v_ucomm. WHEN 'CANCELAR'. CALL SCREEN 0100. WHEN 'CONFIRMAR'. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING titlebar = 'Confirmación' text_question = 'Está seguro que desea modificar?' text_button_1 = 'Si' text_button_2 = 'No' display_cancel_button = ' ' IMPORTING answer = v_answer EXCEPTIONS text_not_found = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ELSE. IF v_answer EQ '1'. CLEAR st_tabla_usuarios. st_tabla_usuarios-mandt = sy-mandt. st_tabla_usuarios-dni = wa_screen_0300-dni. st_tabla_usuarios-nombre_ape = wa_screen_0300-nombre_ape. st_tabla_usuarios-estado_usu = wa_screen_0300-estado_usu. st_tabla_usuarios-direccion = wa_screen_0300-direccion. st_tabla_usuarios-f_nacimiento = wa_screen_0300-f_nacimiento. st_tabla_usuarios-estado_civil = wa_screen_0300-estado_civil. MODIFY ztabla_usuarios FROM st_tabla_usuarios. IF sy-subrc EQ 0. COMMIT WORK AND WAIT. MESSAGE s003(z_prueba) WITH 'Los datos han sido modificados correctamente'. CALL SCREEN 0100. ELSE. ROLLBACK WORK. ENDIF. ENDIF. ENDIF. ENDCASE. ENDMODULE. " USER_COMMAND_0300 INPUT *&SPWIZARD: INPUT MODULE FOR TS 'TS_USUARIOS'. DO NOT CHANGE THIS LINE! *&SPWIZARD: GETS ACTIVE TAB MODULE ts_usuarios_active_tab_get INPUT. ok_code = sy-ucomm. CASE ok_code. WHEN c_ts_usuarios-tab1. g_ts_usuarios-pressed_tab = c_ts_usuarios-tab1. WHEN c_ts_usuarios-tab2. g_ts_usuarios-pressed_tab = c_ts_usuarios-tab2. WHEN c_ts_usuarios-tab3. g_ts_usuarios-pressed_tab = c_ts_usuarios-tab3. WHEN OTHERS. *&SPWIZARD: DO NOTHING ENDCASE. ENDMODULE. "TS_USUARIOS_ACTIVE_TAB_GET INPUT *&---------------------------------------------------------------------* *& Module EXIT INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE exit_0100 INPUT. LEAVE PROGRAM. ENDMODULE. " EXIT INPUT *&---------------------------------------------------------------------* *& Module VALIDAR_DNI_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE validar_dni_0100 INPUT. IF NOT wa_screen_0100-dni IS INITIAL. CLEAR v_dni. SELECT SINGLE dni FROM ztabla_usuarios INTO v_dni WHERE dni = wa_screen_0100-dni. IF sy-subrc NE 0. MESSAGE e003(z_prueba) WITH 'El DNI introducido no existe'. ENDIF. ENDIF. ENDMODULE. " VALIDAR_DNI_0100 INPUT *&---------------------------------------------------------------------* *& Module EXIT_0200 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE exit_0200 INPUT. LEAVE TO SCREEN 0100. ENDMODULE. " EXIT_0200 INPUT *&---------------------------------------------------------------------* *& Include ZPRUEBA_DIALOGO_SUB *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * INCLUDE TABLECONTROL_FORMS * *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form USER_OK_TC * *&---------------------------------------------------------------------* FORM USER_OK_TC USING P_TC_NAME TYPE DYNFNAM P_TABLE_NAME P_MARK_NAME CHANGING P_OK LIKE SY-UCOMM. *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA: L_OK TYPE SY-UCOMM, L_OFFSET TYPE I. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* *&SPWIZARD: Table control specific operations * *&SPWIZARD: evaluate TC name and operations * SEARCH P_OK FOR P_TC_NAME. IF SY-SUBRC <> 0. EXIT. ENDIF. L_OFFSET = STRLEN( P_TC_NAME ) 1. L_OK = P_OK L_OFFSET. *&SPWIZARD: execute general and TC specific operations * CASE L_OK. WHEN 'INSR'. "insert row PERFORM FCODE_INSERT_ROW USING P_TC_NAME P_TABLE_NAME. CLEAR P_OK. WHEN 'DELE'. "delete row PERFORM FCODE_DELETE_ROW USING P_TC_NAME P_TABLE_NAME P_MARK_NAME. CLEAR P_OK. WHEN 'P--' OR "top of list 'P-' OR "previous page 'P ' OR "next page 'P '. "bottom of list PERFORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME L_OK. CLEAR P_OK. * WHEN 'L--'. "total left * PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME. * * WHEN 'L-'. "column left * PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME. * * WHEN 'R '. "column right * PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME. * * WHEN 'R '. "total right * PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME. * WHEN 'MARK'. "mark all filled lines PERFORM FCODE_TC_MARK_LINES USING P_TC_NAME P_TABLE_NAME P_MARK_NAME . CLEAR P_OK. WHEN 'DMRK'. "demark all filled lines PERFORM FCODE_TC_DEMARK_LINES USING P_TC_NAME P_TABLE_NAME P_MARK_NAME . CLEAR P_OK. * WHEN 'SASCEND' OR * 'SDESCEND'. "sort column * PERFORM FCODE_SORT_TC USING P_TC_NAME * l_ok. ENDCASE. ENDFORM. " USER_OK_TC *&---------------------------------------------------------------------* *& Form FCODE_INSERT_ROW * *&---------------------------------------------------------------------* FORM fcode_insert_row USING P_TC_NAME TYPE DYNFNAM P_TABLE_NAME . *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA L_LINES_NAME LIKE FELD-NAME. DATA L_SELLINE LIKE SY-STEPL. DATA L_LASTLINE TYPE I. DATA L_LINE TYPE I. DATA L_TABLE_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL. FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE. FIELD-SYMBOLS <LINES> TYPE I. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: get looplines of TableControl * CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME. ASSIGN (L_LINES_NAME) TO <LINES>. *&SPWIZARD: get current line * GET CURSOR LINE L_SELLINE. IF SY-SUBRC <> 0. " append line to table L_SELLINE = <TC>-LINES 1. *&SPWIZARD: set top line * IF L_SELLINE > <LINES>. <TC>-TOP_LINE = L_SELLINE - <LINES> 1 . ELSE. <TC>-TOP_LINE = 1. ENDIF. ELSE. " insert line into table L_SELLINE = <TC>-TOP_LINE L_SELLINE - 1. L_LASTLINE = <TC>-TOP_LINE <LINES> - 1. ENDIF. *&SPWIZARD: set new cursor line * L_LINE = L_SELLINE - <TC>-TOP_LINE 1. *&SPWIZARD: insert initial line * INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE. <TC>-LINES = <TC>-LINES 1. *&SPWIZARD: set cursor * SET CURSOR LINE L_LINE. ENDFORM. " FCODE_INSERT_ROW *&---------------------------------------------------------------------* *& Form FCODE_DELETE_ROW * *&---------------------------------------------------------------------* FORM fcode_delete_row USING P_TC_NAME TYPE DYNFNAM P_TABLE_NAME P_MARK_NAME . *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA L_TABLE_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE cxtab_control. FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE. FIELD-SYMBOLS <WA>. FIELD-SYMBOLS <MARK_FIELD>. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: delete marked lines * DESCRIBE TABLE <TABLE> LINES <TC>-LINES. LOOP AT <TABLE> ASSIGNING <WA>. *&SPWIZARD: access to the component 'FLAG' of the table header * ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>. IF <MARK_FIELD> = 'X'. DELETE <TABLE> INDEX SYST-TABIX. IF SY-SUBRC = 0. <TC>-LINES = <TC>-LINES - 1. ENDIF. ENDIF. ENDLOOP. ENDFORM. " FCODE_DELETE_ROW *&---------------------------------------------------------------------* *& Form COMPUTE_SCROLLING_IN_TC *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_TC_NAME name of tablecontrol * -->P_OK ok code *----------------------------------------------------------------------* FORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME P_OK. *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA L_TC_NEW_TOP_LINE TYPE I. DATA L_TC_NAME LIKE FELD-NAME. DATA L_TC_LINES_NAME LIKE FELD-NAME. DATA L_TC_FIELD_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE cxtab_control. FIELD-SYMBOLS <LINES> TYPE I. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get looplines of TableControl * CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME. ASSIGN (L_TC_LINES_NAME) TO <LINES>. *&SPWIZARD: is no line filled? * IF <TC>-LINES = 0. *&SPWIZARD: yes, ... * L_TC_NEW_TOP_LINE = 1. ELSE. *&SPWIZARD: no, ... * CALL FUNCTION 'SCROLLING_IN_TABLE' EXPORTING ENTRY_ACT = <TC>-TOP_LINE ENTRY_FROM = 1 ENTRY_TO = <TC>-LINES LAST_PAGE_FULL = 'X' LOOPS = <LINES> OK_CODE = P_OK OVERLAPPING = 'X' IMPORTING ENTRY_NEW = L_TC_NEW_TOP_LINE EXCEPTIONS * NO_ENTRY_OR_PAGE_ACT = 01 * NO_ENTRY_TO = 02 * NO_OK_CODE_OR_PAGE_GO = 03 OTHERS = 0. ENDIF. *&SPWIZARD: get actual tc and column * GET CURSOR FIELD L_TC_FIELD_NAME AREA L_TC_NAME. IF SYST-SUBRC = 0. IF L_TC_NAME = P_TC_NAME. *&SPWIZARD: et actual column * SET CURSOR FIELD L_TC_FIELD_NAME LINE 1. ENDIF. ENDIF. *&SPWIZARD: set the new top line * <TC>-TOP_LINE = L_TC_NEW_TOP_LINE. ENDFORM. " COMPUTE_SCROLLING_IN_TC *&---------------------------------------------------------------------* *& Form FCODE_TC_MARK_LINES *&---------------------------------------------------------------------* * marks all TableControl lines *----------------------------------------------------------------------* * -->P_TC_NAME name of tablecontrol *----------------------------------------------------------------------* FORM FCODE_TC_MARK_LINES USING P_TC_NAME P_TABLE_NAME P_MARK_NAME. *&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------* DATA L_TABLE_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE cxtab_control. FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE. FIELD-SYMBOLS <WA>. FIELD-SYMBOLS <MARK_FIELD>. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: mark all filled lines * LOOP AT <TABLE> ASSIGNING <WA>. *&SPWIZARD: access to the component 'FLAG' of the table header * ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>. <MARK_FIELD> = 'X'. ENDLOOP. ENDFORM. "fcode_tc_mark_lines *&---------------------------------------------------------------------* *& Form FCODE_TC_DEMARK_LINES *&---------------------------------------------------------------------* * demarks all TableControl lines *----------------------------------------------------------------------* * -->P_TC_NAME name of tablecontrol *----------------------------------------------------------------------* FORM FCODE_TC_DEMARK_LINES USING P_TC_NAME P_TABLE_NAME P_MARK_NAME . *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA L_TABLE_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE cxtab_control. FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE. FIELD-SYMBOLS <WA>. FIELD-SYMBOLS <MARK_FIELD>. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: demark all filled lines * LOOP AT <TABLE> ASSIGNING <WA>. *&SPWIZARD: access to the component 'FLAG' of the table header * ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>. <MARK_FIELD> = SPACE. ENDLOOP. ENDFORM. "fcode_tc_mark_lines


 

 

 


Sobre el autor

Publicación académica de Oscar Guillermo Rodriguez Villate, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP Expert


Oscar Guillermo Rodriguez Villate

Profesión: Ingeniero de Sistemas - Colombia - Legajo: WM49P

✒️Autor de: 103 Publicaciones Académicas

🎓Egresado de los módulos:

Disponibilidad Laboral: FullTime

Certificación Académica de Oscar Rodriguez

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "La ejecución de la transacción de diálogo" de la mano de nuestros alumnos.

SAP Senior

EJECUCIÓN DEL PROGRAMA DEL DIÁLOGO. Para ejecutar el programa de diálogo se debe tener listo el módulo de TOP, PBO, PAI y SUB( generado por la tabla de control). Asís mismo realizar las pruebas y activarlos todos. Es importante destacar que ese es el orden que debe tener los módulo para evitar errores al activar o de ejecución. Para ejecutar la transacción,en la línea de comando se escribe la transacción previamente creada por la SE93. Verificar la correcta sincronización de la dynpro, la función de los botones y la ejecución de cada modulo desarrollado.

Acceder a esta publicación

Creado y Compartido por: Morela Silva

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master


II.9.1. Ejecución de un Programa de Diálogo La correcta modularización del código generado en un programa de diálogo es un paso fundamental, es por ello que es sumamente recomendable la creación de INCLUDES. Deberemos crear un INCLUDE para almacenar todo los referido a las declaraciones de datos, otro INCLUDE para almacenar los MODULES pertenecientes al PBO, otro INCLUDE para almacenar todos los MODULES pertenecientes al PAI y un último INCLUDE para almacenar las subrutinas tanto del PBO como del PAI. Por supuesto como en cualquier otro tipo de programa ABAP deberemos crear una transacción asociada al programa de diálogo para poder ejecutar el programa. Es importante tener presente...

Acceder a esta publicación

Creado y Compartido por: Gianfranco Pasqua Indiano / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

ABAP ejecución de un programa de diálogo la correcta modularización del código generado en un programa de diálogo es un paso fundamental, es por ello que es sumamente recomendable la creación de INCLUDES. Deberemos crear un INCLUDE para almacenar todo los referido a las declaraciones de datos, otro INCLUDE para almacenar los MODULES pertenecientes al PBO, otro INCLUDE para almacenar todos los MODULES pertenecientes al PAI y un último INCLUDE para almacenar las subrutinas tanto del PBO como del PAI. Por supuesto como en cualquier otro tipo de programa ABAP deberemos crear una transacción asociada al programa de diálogo para poder ejecutar el programa. Es importante tener presente...

Acceder a esta publicación

Creado y Compartido por: Diego Armando De Santiago Castanon

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Lección 9: Ejecución de un porgrama de diálogo Se crea el programa ZPRUEBA_DIALOGO, con cuatro include (top, pbo, pai y sub), se visualizan cada una de las dynpros(0100, 0200 y 0300) y se visualiza por su layout y cada uno de los módulos.

Acceder a esta publicación

Creado y Compartido por: Felipe Roca Molina

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Ejecución de un programa de diálogo Creamos cuatro includes: zprueba_dialogo_top.- Para las declaraciones de datos. zprueba_dialogo_pbo.- Para almacenar todo el código del PBO. zprueba_dialogo_pai.- Para almacenar todo el código del PAI. zprueba_dialogo_sub.- Para almacenar todo el código propio de la tabla de control. Vemos validaciones en las dynpros, llamdas a otras dynpros y el uso del table control.

Acceder a esta publicación

Creado y Compartido por: José Luis Zevallos Mamani

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Deberemos crear un INCLUDE para almacenar todo los referido a las declaraciones de datos, otro INCLUDE para almacenar los MODULES pertenecientes al PBO, otro INCLUDE para almacenar todos los MODULES pertenecientes al PAI y un último INCLUDE para almacenar las subrutinas tanto del PBO como del PAI. Por supuesto como en cualquier otro tipo de programa ABAP deberemos crear una transacción asociada al programa de diálogo para poder ejecutar el programa. Es importante tener presente que un programa de diálogo es un tipo de programa que está compuesto por muchos otros objetos de ABAP y que para que este funcione correctamente, todos los objetos que lo componen, como ser: dynpros, status, títulos, transacciones,...

Acceder a esta publicación

Creado y Compartido por: Alex Francisco Lemos Collazos

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Ejecuciòn de un programa de diàlogo 1.- Se crea el programa zprueba_dialogo_tf64c, con 4 includes. zprueba_dialogo_top_tf64c.- Declaraciones de datos zprueba_dialogo_pbo_tf64c.- Almacenar todo el còdigo del PBO zprueba_dialogo_pai_tf64c.- Almacenar todo el còdigo del PAI. zprueba_dialogo_sub_tf64c.- còdigo propio de la tabla de control. Detalle de las dynpros. 0100.- El mòdulo del PBO status_0100, encargado de setear el estatus-gui y el tìtulo de la dynpro. El mòdulo del PAI, validar_dni_0300; verifica que el dni ingresado en la pantalla exista en la tabla ztabla_usuarios.si no existe, emite un mensaje de error. El mòdulo del PAI, exit_0100.- produce el fin...

Acceder a esta publicación

Creado y Compartido por: Miguel Angel Acosta Acosta / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Unidad 2: Programación de diálogo Lección 9: Video - Ejecución de un programa de diálogo. Video. En este video veremos la estructura general del ejercicio práctico que desarrollamos a lo largo de la unidad y su ejecución. Creamos el programa ZPRUEBA_DIALOGO con cuatro includes Include TOP: para las declaraciones de datos. Include PBO: para almacenar todo el código del PBO Inlcude PAI: para almacenar todo el código del PAI. Include SUB: para almacenar todo el código propio de la tabla de control. Veamos cada una de las dynpros Ahora visualizamos la lógica de procesamiento de la dynpro 0100. Veamos su layout ( botón con flecha azul que apunta...

Acceder a esta publicación

Creado y Compartido por: Brenda Castillo Domínguez / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

EJECUCIÓN DE UN PROGRAMA DE DIÁLOGO Conceptos importantes Objetos creados Paso a Paso: Creación del programa de diálogo con 4 includes: top(datos), pbo, pai y sub (subrutinas tabla de control). Layout y lógica de proceso de primera dynpro (0100): PBO: módulo status_0100 para ajustar Status gui y Título de la dynpro. PAI: 1. módulo validar_dni_0100 valida que exista el dni en la tabla ZTABLA_USUARIOS. En caso contrario, dará mensaje de error. 2. módulo exit_0100 produce la finalización del programa, 3. módulo user_command_0100 analiza la acción del usuario: Botones Borrar y Buscar Usuario Layout y lógica de proceso de la segunda dynpro...

Acceder a esta publicación

Creado y Compartido por: David Campillo Martinez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

La ejecución de la transacción de diálogo Repaso de todas las unidades: transaccion de dialogo. Programa ejemplo zprueba_dialogio, el user interactua en forma online con distintas pantallas (dynpro). Objetos creados: dynpro: - 0100 - 0200 - 0300 status gui: cada dynpro tiene su status gui, que esta compuesto de barra de menu, pulsadores y teclas de funcion. - 0100 - 0200 - 0300 titulos Gui: cada dynpro tiene titulos - 0100 - 0200 - 0300 Transaccion: el programa de dialogo se ejecuta a traves de la transaccion. se especifica la dynpro inicial. Includes: se crea el codigo para el PAI,PBO, para subrutinas, y para la definicion de datos. Todos los objetos...

Acceder a esta publicación

Creado y Compartido por: Pablo Adrian Oggero

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!