Mostrar error al seleccionar registros de Table Control

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • playa82
    Member
    • abr
    • 34

    #1

    Mostrar error al seleccionar registros de Table Control

    Hola buenos días,

    Necesito controlar que no se seleccionen más de 3 registros de un table control. Para ello, cuando se han seleccionado 4 o más, muestro un error:

    ************************************************** ******
    * Comprobar el número de beneficiarios seleccionados
    CLEAR l_num_benef.
    LOOP AT t_beneficiarios INTO e_beneficiario WHERE selec EQ 'X'.
    l_num_benef = l_num_benef + 1.
    ENDLOOP.

    * Si el usuario ha seleccionado más de 3 beneficiarios --> error!
    IF l_num_benef GT 3 AND sy-ucomm EQ 'UPD'.
    MESSAGE e029(zrh_pa_mc_mensajes).
    * E: El empleado solo puede tener 3 beneficiarios
    ENDIF.
    ************************************************** ******

    El problema es que tras el error, el TC se me queda bloqueado y no puedo deseleccionar los registros marcados ni hacer nada más.
    He probado a:
    - Recorrer la tabla y limpiar el campo de selección, pero claro, el error mostrado no deja llegar al PBO, por lo que no se actualiza nada.
    - Controlar el error desde la badi de infotipos de PA HRPAD00INFTY, y tb se me queda todo bloqueado.
    - A meter mi código (module controlar_tres_beneficiarios) dentro del loop, y nada:
    LOOP AT t_beneficiarios.
    CHAIN.
    FIELD e_beneficiario-famsa.
    FIELD e_beneficiario-stext.
    FIELD e_beneficiario-objps.
    FIELD e_beneficiario-fanam.
    FIELD e_beneficiario-fnac2.
    FIELD e_beneficiario-favor.
    FIELD e_beneficiario-fasex.
    FIELD e_beneficiario-fgbdt.
    FIELD e_beneficiario-fgbot.
    FIELD e_beneficiario-landx.
    FIELD e_beneficiario-natio.
    ENDCHAIN.
    FIELD e_beneficiario-selec
    MODULE tc_benef_mark ON REQUEST.

    * Controlar que solamente se puedan marcar 3 beneficiarios
    MODULE controlar_tres_beneficiarios.

    ENDLOOP.


    ¿Alguna idea más?
    Yo misma
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola, y si pruebas colocando un error de tipo S pero parecido a un E, algo asi:

    Código:
    MESSAGE SXXX WITH mess DISPLAY LIKE 'E'.
    Y luego de imprimir el mensaje le das un EXIT para que salga del MODULE y no haga ninguna tarea
    David Carballido Córdova

    Comentario

    Trabajando...