🚀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 Master

Ejecución de un programa de dialogo.[ 9º de 9 ] Se crea el programa ZPRUEBA_DIALOGO, con cuatro include, se visualizan cada una de las dynpros y se visualiza por su layout y cada uno de los módulos. Una vez visualizadas todos los módulos que tiene cada dynpro se procederá a probar el programa y se ejecuta la transacción Z_ACT_USU, lo que se ve inicialmente es la pantalla 0100, Si se introduce un DNI que no existe y se presiona el botón Buscar usuarios se pre visualizara el mensaje de error, Si se aprieta el botón de ayuda se visualizara la tabla base de datos, si selecciona uno y se le da clic en borrar DNI desaparece el número de la pantalla, Si le damos clic en Buscar usuarios sin...

Acceder a esta publicación

Creado y Compartido por: Jose Angel Valles Bustos

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

SAP Expert


Ejecución de un programa de dialogo. Al crear el programa ZPRUEBA_DIALOGO, con 4 include visualizamos los módulos que tiene cada dynpro y probamos el programa, ejecutando la transacción Z_ACT_USU vemos la pantalla 0100, e introducimos algún dato que no existe y clickleamos el botón buscar usuarios aparece el mensaje error. Si no ingresamos ningún dato y buscamos usuarios, no parece una tabla de control con todos los usuarios. Si seleccionamos un usuario nos lleva a una tabla dynpro 0200 y si queremos modificar sin seleccionar un registro aparece error de mensaje de pantalla. Pero si se selecciona y modificar usuario nos lleva a la dynpro 0300. Si cancelamos, volvemos a la dynpro 0100. Si le...

Acceder a esta publicación

Creado y Compartido por: Ernesto Aristides Romano

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

SAP Expert


Ejecución de un programa de dialogo. Se crea el programa ZPRUEBA_DIALOGO, con cuatro include, se visualizan cada una de las dynpros y se visualiza por su layout y cada uno de los módulos. Una vez visualizadas todos los módulos que tiene cada dynpro se procederá a probar el programa y se ejecuta la transacción Z_ACT_USU, lo que se ve inicialmente es la pantalla 0100, Si se introduce un DNI que no existe y se presiona el botón Buscar usuarios se pre visualizara el mensaje de error, Si se aprieta el botón de ayuda se visualizara la tabla base de datos, si selecciona uno y se le da clic en borrar DNI desaparece el número de la pantalla, Si le damos clic en Buscar usuarios sin haberle dado...

Acceder a esta publicación

Creado y Compartido por: David De Jesùs Restrepo Cañas

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

SAP Master

Ejecución de un programa de Dialogo Ahora miramos su layout Ahora analizamos cada módulo de la dynpro 0100 El modulo del PBO status 0100 es el encargado de Setear el status gui y el título de la dynpro El modulo validar_dni_0300 verifica que el dni introducido en pantalla exista en la tabla ZTABLA_USUARIOS, si no existe emite un msj de Error. El modulo exit_0100 AT EXIT-COMMAND. Produce el fin de la ejecución del programa user_command_0100 analiza la acción realizada por el usuario, si presiona el botón del menú borrado blanqueo el contenido del campo DNI de la pantalla, si presiona el botón buscar usuarios, llama a la dynpro 0200 Procesamiento de la dynpro 0200 Miramos su layout...

Acceder a esta publicación

Creado y Compartido por: Jhon Deibys Cano Pineda

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

SAP Master

En esta leccion, se realiza una breve descripcion de todo lo que se hizo en la unidad 2. y se muestra que hace cada modulo dentro de cada include. dentro de las practicas se obtuvieron varias secciones de errores debido unas al orden de como sap crea automaticamente el codigo, y no atender a la informacion de que uno de los modulos debe de quedar de ultimo. Lo otro es que una activacion exitosa no funciona si usa codigo que se encuentra en un include que no ha sido activado todavia, debido al nuevo codigo que se ha creado, especialmente cuando se usa el wizard para ta tabla de control.

Acceder a esta publicación

Creado y Compartido por: Rainer Diaz

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

SAP Master

Ejecucion de un programa de dialogo: PROGRAMA X. INCLUDE ..._TOP INCLUDE ..._PBO INCLUDE ..._PAI INCLUDE ..._SUB

Acceder a esta publicación

Creado y Compartido por: Jose Ignacio Rodini

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

SAP Master

El programa creado posee 4 incudes: TOP: para las declaraciones de datos. PBO : almacenar todo el código del PBO PAI : almacenar todo el código del PAI SUB: para almacenar todo el código propio de la tabla de control.

Acceder a esta publicación

Creado y Compartido por: Jeferson José Peña Curvelo

 


 

👌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!