#3
|
||||
|
||||
Matchcodes programados
Hola Eduardo, puedes emplear una ayuda de búsqueda programada para tu desarrollo. Te explico con un ejemplo de creación de distritos:
1. Tienes tu pantalla 0150 con los campos departamento, provincia, distrito, descripción del distrito y los botones grabar y cancelar. En la lógica de proceso de la pantalla tienes: process before output. module status_0150. (vacío) process after input. module grabar. (lógica para grabar el registro en una tabla) process on value-request. field w_codprov module f4_provincias. field w_coddis module f4_distritos. 2. El código del module f4_provincias es el siguiente: * Obtienes el valor del campo departamento mediante la función GET_DYNP_VALUE: DATA: w(4) TYPE c. CALL FUNCTION 'GET_DYNP_VALUE' EXPORTING i_field = 'W_CODDEP2' (nombre del campo) i_repid = 'ZPS_MNT_TAB_LOCAL' (nombre del programa) i_dynnr = '0150' (número de la pantalla) CHANGING o_value = w. (valor del campo solicitado) * Selecciona todas las provincias que pertenecen al departamento seleccionado: REFRESH itab_prov_dep. CLEAR v_depa. CONCATENATE '%' w '%' INTO v_depa. SELECT codprov desprov INTO TABLE itab_prov_dep FROM zamprovincia WHERE coddep LIKE v_depa. * Tabla de campos a mostrar REFRESH h_field_tab. * Código de provincia CLEAR h_field_tab. h_field_tab-tabname = 'ITAB_PROV_DEP'. h_field_tab-fieldname = 'CODPROV'. h_field_tab-scrtext_s = 'Cód. Prov.'. h_field_tab-scrtext_m = 'Cód. Provincia'. h_field_tab-scrtext_l = 'Código Provincia'. h_field_tab-position = '1'. h_field_tab-offset = '0'. h_field_tab-leng = '2'. h_field_tab-outputlen = '2'. h_field_tab-intlen = '2'. APPEND h_field_tab. * Descripción de provincia CLEAR h_field_tab. h_field_tab-tabname = 'ITAB_PROV_DEP'. h_field_tab-fieldname = 'DESPROV'. h_field_tab-scrtext_s = 'Descripción Provincia'. h_field_tab-scrtext_m = 'Descripción Provincia'. h_field_tab-scrtext_l = 'Descripción Provincia'. h_field_tab-position = '2'. h_field_tab-offset = '2'. h_field_tab-leng = '22'. h_field_tab-outputlen = '22'. h_field_tab-intlen = '22'. APPEND h_field_tab. * Se llama a la función para mostrar la ventana (pop-up) con los valores de la provincias por departamento: CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'CODPROV' (Campo a recuperar) dynpprog = 'ZPS_MNT_TAB_LOCAL' (Nombre del programa) dynpnr = '0150' (Número de la pantalla) dynprofield = 'W_CODDEP2' (Nombre del campo origen) value_org = 'S' TABLES value_tab = itab_prov_dep (Tabla interna de valores propuestos) field_tab = h_field_tab (Tabla interna de campos mostrar) EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. IF sy-subrc NE 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. 3. El código del module f4_distritos para obtener los distritos por departamento tiene la misma lógica que el module f4_provincias, solo que para llenar la tabla interna ahora consultas la tabla de distritos. Espero el código te sea de ayuda. Suerte!!!
__________________
Saludos, Claudia V. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|