Проверка значений входных параметров

Автор dev403k, Серпень 02, 2011, 09:55:19 ДП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

dev403k

Добрый день.
В программе входные параметры описаны на вкладках
(SELECTION-SCREEN BEGIN OF   ... SUBSCREEN)
На некоторых полях указаны средства поиска

lgort1 LIKE mard-lgort MODIF ID kr1

Часто пользователь не выбирает значения из словаря, а вносит вручную.
Как сделать так, чтобы пользователь не смог внести в поле не существующее значения ?
Какими способами можно проверить (кроме select) введенные данные?

Входных параметров очень много и не особо хочется проверять с помощью select.

Uukrul

Цитата: dev403k від Серпень 02, 2011, 09:55:19 ДП
Часто пользователь не выбирает значения из словаря, а вносит вручную.
Как сделать так, чтобы пользователь не смог внести в поле не существующее значения ?
Какими способами можно проверить (кроме select) введенные данные?
Ну похоже что по другому никак, если зайти в стандартные отчеты, то для ММ например часто используют такой вот ФМ:

FUNCTION mmim_entrycheck_main.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  TABLES
*"      IT_MATNR OPTIONAL
*"      IT_WERKS OPTIONAL
*"      IT_LGORT OPTIONAL
*"      IT_LIFNR OPTIONAL
*"      IT_KUNNR OPTIONAL
*"      IT_BWART OPTIONAL
*"      IT_EKORG OPTIONAL
*"      IT_EKGRP OPTIONAL
*"      IT_GRUND OPTIONAL
*"      IT_RESWK OPTIONAL
*"      IT_VGART OPTIONAL
*"      IT_SOBKZ OPTIONAL
*"      IT_BUKRS OPTIONAL
*"      IT_POSID OPTIONAL
*"      IT_USNAM OPTIONAL
*"----------------------------------------------------------------------

Который по факту делает теже селекты для проверки существования данных введенных с экрана пользователем в полях. На вход передаются структуры типа RANGE, так что как бы одним ФМ-мом можно сразу много что проверить.

NachDenken

я тоже не знаю, другого способа проверить данные введенные в поле на селек экране.

Uukrul

Цитата: NachDenken від Серпень 02, 2011, 10:29:55 ДП
я тоже не знаю, другого способа проверить данные введенные в поле на селек экране.
Максимум, ну можно упростить себе жизнь, я так думаю можно найти ФМ, которые проверяют консистентность ключа, ну и через этот ФМ типа передавать данные для проверки ссылочной целостности. Я когда-то находил, что-то подходящее, сейчас правда не вспомню.

dev403k

ФМ 'DDUT_INPUT_CHECK'

*************************************************************
Как вариант можно создать свой ФМ на основе программы
REPORT  zqqqqq5.
DATA kol TYPE i.
DATA: str_  TYPE string,
      val_  type string.

PARAMETERS:
tabname   LIKE dd02l-tabname,
fieldnam LIKE dd03l-fieldname,
value     LIKE cvddp-value.

START-OF-SELECTION.

  CONCATENATE `'` value `'` INTO val_.
  CONCATENATE  fieldnam '=' val_ INTO str_ SEPARATED BY space.
  SELECT COUNT(*) INTO kol FROM (tabname) where (str_) .

    if kol <> 0.
      WRITE:/ 'Значение найдено'.
    else.
      WRITE:/ 'Значение не найдено'.
    endif.