Программирование SAP SRM ABAP ограничивает пользователя вводом в поле только допустимых значений
Я написал программу для отображения информации о корзине (SC) на сервере SRM. В моей программе я поставил проверки на некоторые опции. Это работает нормально, но если я предоставлю любой случайный диапазон, например от 9990000000 до 9999999999 для sc, все SC между этим диапазоном должны отображаться, но выдает сообщение об ошибке, поскольку я сохранил проверку на низком и высоком значении. Из-за этого мой тренер сказал, что ставить валидацию в select-options не желательно. Он дал мне новое назначение: кроме проверки, я должен ограничить пользователя, чтобы вводить только допустимые значения в поле ввода. Как мне этого добиться? Пожалуйста, дайте мне полный код.
DATA : lv_shc TYPE crmd_orderadm_h-object_id .
*DATA : lv_shc TYPE z_obj_id.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-111.
*SELECT-OPTIONS : s_shc FOR crmd_orderadm_h-object_id VALUE-REQUEST.
SELECT-OPTIONS : s_shc FOR lv_shc .
SELECTION-SCREEN END OF BLOCK a1.
INCLUDE zsrmi_declarations1.
*validations.
AT SELECTION-SCREEN ON s_shc .
IF s_shc IS NOT INITIAL.
IF s_shc-low IS NOT INITIAL.
SELECT SINGLE object_id FROM crmd_orderadm_h INTO lv_shc WHERE object_id = s_shc-low AND object_type = 'BUS2121'.
IF sy-subrc <> 0.
MESSAGE text-001 TYPE 'E'.
EXIT.
ENDIF.
ENDIF.
IF s_shc-high IS NOT INITIAL.
SELECT SINGLE object_id FROM crmd_orderadm_h INTO lv_shc WHERE object_id = s_shc-high AND object_type = 'BUS2121'.
IF sy-subrc <> 0.
MESSAGE text-001 TYPE 'E'.
EXIT.
ENDIF.
ENDIF.
ENDIF.
0 ответов
Вы должны проверять диапазон, а не скрытые значения:
AT SELECTION-SCREEN ON s_shc.
IF s_shc[] IS NOT INITIAL.
SELECT COUNT( * )
FROM crmd_orderadm_h
WHERE object_id IN s_shc[] AND object_type = 'BUS2121'.
IF SY-SUBRC NE 0.
MESSAGE e000 WITH 'Enter Valid SC Number'.
EXIT.
ENDIF.
ENDIF.
Тот же запрос следует использовать для выборки записей.