Compañero, quizas sea un error tonto pero no lo veo y la verdad, no lo entiendo mucho.
Tengo el siguiente codigo
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_id-low.
PERFORM fo_ayuda_busqueda.
y el form
FORM fo_ayuda_busqueda.
TYPES: BEGIN OF ty_help,
id TYPE ztrnhr0001-id,
titulo TYPE ztrnhr0001-titulo,
END OF ty_help.
DATA: lt_ayuda TYPE TABLE OF ty_help,
lt_return TYPE TABLE OF ddshretval,
ls_return TYPE ddshretval.
FIELD-SYMBOLS: <return> TYPE ddshretval.
SELECT id titulo
INTO TABLE lt_ayuda
FROM ztrnhr0001
WHERE plans NE space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ID'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
multiple_choice = 'X'
TABLES
value_tab = lt_ayuda
return_tab = lt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
LOOP AT lt_return ASSIGNING <return>.
s_id-sign = 'I'.
s_id-option = 'EQ'.
s_id-low = <return>-fieldval.
APPEND s_id.
ENDLOOP.
ENDIF.
ENDFORM.
La cosa es que si el usuario selecciona varios registros, cuando llega al evento START-OF-SELECTION…ya mi select-option s_id, no tiene los valores que tomo el usuario sino que los repite.
Pienso que puede ser como lleno el select-option, pero no estoy del todo seguro porque anteriormente lo he llenado asi y no he tenido problemas
Que creen ustedes que puede ser ???
@abapers alguna idea
NOTA: acabo de percatarme del siguiente mensaje
Las delimitaciones indicadas no han sido tomadas.
Nº mensaje: DB781
Diagnóstico
El registro de delimitaciones en la pantalla "selección múltiple" se ha interrumpido. Por consiguiente, no se han tomado tales delimitaciones.
Hola Canuto, te recomendaria que declares las variables como global, Por otra prueba con este codigo dsps de tu funcion.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ICON'
window_title = 'STATUS'
value_org = 'S'
TABLES
value_tab = it_status
return_tab = it_match
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE it_match INDEX 1.
MOVE it_match-fieldval TO s_statu-low.
ENDIF.
Y tienes que crear otro perform para el valor “high”, porque ahi solo obtienes ayuda de busqueda para el valor low.
“AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_id-high.”
Gracias @miguelsap, yo ya habia probado con DYNP_VALUES_UPDATE y no me funciono…voy a probar como tu me dices y te aviso !!
Si, eso si lo se solo que estoy probando con el low para ver como queda y no me funcionaba !!! sera por lo mismo que no tengo el high ???
igual pruebo y te aviso
UPGRADE: @miguelsap viejito, la funcion que tu me pasaste es la misma que yo tenia y la uso tal cual…la unica diferencia fue lo del high, lo coloque he igual sigue comportandose mal :s !!
Hola,
Justo volví del almuerzo y me puse a renegar un ratito con tu programa, para entretenerme.
Logré hacer que funcione, trae los valores correctamente, pero la solución es un poco rebuscada, quizás a partir de este código encuentres algo más prolijo, te lo paso (reemplaza mi tabla Z por la tuya).
REPORT z_test_sebas2.
TABLES: znca_comercial.
SELECT-OPTIONS: s_id FOR znca_comercial-id_comercial.
RANGES: r_range FOR znca_comercial-id_comercial.
DATA: gv_ayuda TYPE c.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_id-low.
gv_ayuda = 'X'.
CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
EXPORTING
functioncode = '=00'
EXCEPTIONS
function_not_supported = 1
OTHERS = 2.
AT SELECTION-SCREEN.
IF gv_ayuda EQ 'X'.
PERFORM fo_ayuda_busqueda TABLES s_id.
CLEAR gv_ayuda.
ENDIF.
*&---------------------------------------------------------------------*
*& Form fo_ayuda_busqueda
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ID text
*----------------------------------------------------------------------*
FORM fo_ayuda_busqueda TABLES p_id STRUCTURE r_range.
* Types
TYPES: BEGIN OF ty_ic,
id_comercial TYPE znca_comercial-id_comercial,
bezei TYPE znca_comercial-bezei,
END OF ty_ic.
DATA: lt_ic TYPE TABLE OF ty_ic,
lt_return TYPE TABLE OF ddshretval,
ls_return TYPE ddshretval.
FIELD-SYMBOLS: <return> TYPE ddshretval.
* Traemos los textos
SELECT id_comercial bezei FROM znca_comercial
INTO TABLE lt_ic.
SORT lt_ic BY id_comercial.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ID_COMERCIAL'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
multiple_choice = 'X'
TABLES
value_tab = lt_ic
return_tab = lt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
LOOP AT lt_return ASSIGNING <return>.
p_id-sign = 'I'.
p_id-option = 'EQ'.
p_id-low = <return>-fieldval.
APPEND p_id.
ENDLOOP.
ENDIF.
ENDFORM. "fo_ayuda_busqueda
Espero que te sirva!
Saludos
1 me gusta
Gracias @sconoredhot y @miguelsap, por tomarse un tiempo para eso !!
Pues no se porque, pero la solucion era una sola linea de codigo…de verdad, no se :S !! la respuesta la consegui en google al ver en algun lado mi mismo codigo pero con la diferencia de la linea que comento.
READ TABLE s_id INDEX 1.
esta simple linea me resolvio todo !!
FORM fo_ayuda_busqueda.
TYPES: BEGIN OF ty_help,
id TYPE ztrnhr0001-id,
titulo TYPE ztrnhr0001-titulo,
END OF ty_help.
DATA: lt_ayuda TYPE TABLE OF ty_help,
lt_return TYPE TABLE OF ddshretval,
ls_return TYPE ddshretval.
FIELD-SYMBOLS: <return> TYPE ddshretval.
REFRESH: s_id.
SELECT id titulo
INTO TABLE lt_ayuda
FROM ztrnhr0001
WHERE plans NE space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ID'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
multiple_choice = 'X'
TABLES
value_tab = lt_ayuda
return_tab = lt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
LOOP AT lt_return ASSIGNING <return>.
s_id-sign = 'I'.
s_id-option = 'EQ'.
s_id-low = <return>-fieldval.
APPEND s_id.
ENDLOOP.
ENDIF.
READ TABLE s_id INDEX 1.
ENDFORM.
De nuevo gracias a todos !!
1 me gusta
Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.