Автор Тема: Проверка значений входных параметров  (Прочитано 10425 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dev403k

  • Newbie
  • *
  • Сообщений: 12
  • Репутация: +4/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Добрый день.
В программе входные параметры описаны на вкладках
(SELECTION-SCREEN BEGIN OF   … SUBSCREEN)
На некоторых полях указаны средства поиска

lgort1 LIKE mard-lgort MODIF ID kr1

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

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 768
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Проверка значений входных параметров
« Ответ #1 : Август 02, 2011, 10:25:40 am »
You are not allowed to view links. Register or Login
Часто пользователь не выбирает значения из словаря, а вносит вручную.
Как сделать так, чтобы пользователь не смог внести в поле не существующее значения ?
Какими способами можно проверить (кроме select) введенные данные?
Ну похоже что по другому никак, если зайти в стандартные отчеты, то для ММ например часто используют такой вот ФМ:
Код: You are not allowed to view links. Register or Login
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

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Проверка значений входных параметров
« Ответ #2 : Август 02, 2011, 10:29:55 am »
я тоже не знаю, другого способа проверить данные введенные в поле на селек экране.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 768
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Проверка значений входных параметров
« Ответ #3 : Август 02, 2011, 10:37:08 am »
You are not allowed to view links. Register or Login
я тоже не знаю, другого способа проверить данные введенные в поле на селек экране.
Максимум, ну можно упростить себе жизнь, я так думаю можно найти ФМ, которые проверяют консистентность ключа, ну и через этот ФМ типа передавать данные для проверки ссылочной целостности. Я когда-то находил, что-то подходящее, сейчас правда не вспомню.

Оффлайн dev403k

  • Newbie
  • *
  • Сообщений: 12
  • Репутация: +4/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Проверка значений входных параметров
« Ответ #4 : Август 03, 2011, 08:22:52 am »
ФМ '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.