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