También decir que no he puesto la parte de cargar datos porque no consigo que me entre en el evento correspondiente ('LISTA'), adjunto imagen.
MODULE CARREGAR_DADES_CURS
MODULE USER_COMMAND_1000
Código:
PROCESS BEFORE OUTPUT. MODULE STATUS_1000. module encontrar_pernr. module recuperar_datos_tc1000. loop at it_ZHORESFORMACIO with control TC1000. endloop. PROCESS AFTER INPUT. MODULE USER_COMMAND_1000. * Control table loop at it_ZHORESFORMACIO. endloop. * Comprobación que objetivos son diferentes field wa_ZHRFORM_EXT-OBJECTIU_1 module user_command_1000. field wa_ZHRFORM_EXT-OBJECTIU_2 module user_command_1000. * Valores fijos de campos Objetivo1, Objetivo2 y Cursos existentes process on value-request. field wa_ZHRFORM_EXT-OBJECTIU_1 module valors_objectiu_1. field wa_ZHRFORM_EXT-OBJECTIU_2 module valors_objectiu_2. [COLOR="red"]field IT2_HRP1000-STEXT module carregar_dades_curs.[/COLOR]
Código:
MODULE CARREGAR_DADES_CURS INPUT. CLEAR: IT2_HRP1000-STEXT. CLEAR: IHELP_FIELDS, HELPTAB. TNAM = 'HRP1000'. FNAM = 'STEXT'. REFRESH IHELP_FIELDS. MOVE 'HRP1000' TO IHELP_FIELDS-TABNAME. MOVE 'STEXT' TO IHELP_FIELDS-FIELDNAME. MOVE 'X' TO IHELP_FIELDS-SELECTFLAG. APPEND IHELP_FIELDS. MOVE 'DNTAB' TO IHELP_FIELDS-TABNAME. MOVE 'FIELDTEXT' TO IHELP_FIELDS-FIELDNAME. MOVE ' ' TO IHELP_FIELDS-SELECTFLAG. APPEND IHELP_FIELDS. REFRESH HELPTAB. PERFORM OBTENER_LISTA_CURSOS_EN_STRUCT. LOOP AT IT2_HRP1000. MOVE IT2_HRP1000-OBJID TO HELPTAB. APPEND HELPTAB. MOVE IT2_HRP1000-STEXT TO HELPTAB. APPEND HELPTAB. ENDLOOP. LOOP AT HELPTAB. IF FLAG = 1. VALUE_TAB_WA-STEXT = HELPTAB. ENDIF. IF FLAG = 2. VALUE_TAB_WA-STEXT_TEXT = HELPTAB. APPEND VALUE_TAB_WA TO VALUE_TAB. ENDIF. IF FLAG = 1. FLAG = 2. ELSE. FLAG = 1. ENDIF. ENDLOOP. CLEAR: RETURN_TAB, RETURN_TAB[]. RETFIELD = 'STEXT'. DYNPROFIELD = 'IT2_HRP1000-STEXT'. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING RETFIELD = RETFIELD DYNPPROG = SY-CPROG DYNPNR = SY-DYNNR DYNPROFIELD = DYNPROFIELD VALUE_ORG = 'S' TABLES VALUE_TAB = VALUE_TAB RETURN_TAB = RETURN_TAB [COLOR="red"]--> También he intentado hacerlo con esta tabla cuando hagan doble clic, sin embargo cuando sale de la función me sale vacia, pero el matchbox lo muestra bien.[/COLOR] EXCEPTIONS PARAMETER_ERROR = 1 NO_VALUES_FOUND = 2 OTHERS = 3. IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
Código:
MODULE USER_COMMAND_1000 INPUT. * BACK für Lan IF SY-UCOMM = 'BACK'. OKCODE_BACK = 'X'. SET SCREEN 0. LEAVE SCREEN. ENDIF. IF NOT 1000_ALV IS INITIAL. CALL METHOD CL_GUI_CFW=>FLUSH. CALL METHOD CL_GUI_CFW=>DISPATCH. ENDIF. IF OKCODE1000 IS INITIAL. OKCODE1000 = 'EVBO'. ENDIF. CASE OKCODE1000. * Botón de enviar inscripción WHEN 'EVBO'. [COLOR="Red"]--> En este evento me entra cuando clico en el matchbox[/COLOR] "Debemos comprobar que todos los campos están informados IF FLAGCURS = 0. PERFORM COMPROBACIONES0. ELSE. * Vamos por listbox, si el usuario ha escogido un curso PERFORM COMPROBACIONES1. ENDIF. [COLOR="RED"] WHEN 'LISTA'.[/COLOR] "Nunca entra aquí FLAGCURS = 1. BREAK-POINT. ENDCASE.
Comentario