Программирование 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.

Тот же запрос следует использовать для выборки записей.

Другие вопросы по тегам