Standard service - a fixed amount of work that is performed at a fixed price.  Post Service

  

Friday, 04 January 2019 10:32

Диапазоны (ranges)

Written by 
Rate this item
(0 votes)

Несколько нюансов работы с множествами (диапазонами, интервалами) данных для выборки.

Самое простое применение — Select-options

Иногда надо самостоятельно объявить данные такого типа.
Часто встречается конструкция с перечислением всех 4 полей


BEGIN OF pernr OCCURS 0,
sign(1) type c,
option(2) type c,
low LIKE persno,
HIGH like persno,
END OF persno.

Но в ABAP есть специальный тип RANGES для лаконичной записи.

DATA: r_pernr TYPE RANGE OF persno «NUMC(8).

Нюанс 1.

Если передавать диапазон значений с помощью SUMBIT REPORT можно натолкнутся на неожиданную ошибку «Нижняя граница превышает верхнюю».


SUBMIT z_report
VIA SELECTION-SCREEN
WITH so_pernr in r_pernr[]
AND RETURN.

Это из-за того что пустые значение параметра HIGH превращаются в значение 00000000 и срабатывает внутренняя проверка, которая не разрешает в диапазоне LOW > HIGH.

Для избежания этого недоразумения объявляем диапазон с типом CHAR вместо NUMC.


DATA: r_pernr TYPE RANGE OF bdepernr "CHAR8.

Нюанс 2.

Можно запускать отчеты с вариантом с помощью выражения USING SELECTION-SET, переопределить часть параметров с помощью WITH, или собрать любую комбинацию параметров во внутреннюю таблицу ( WITH SELECTION-TABLE )


DATA lt_params TYPE TABLE OF rsparams.

SUBMIT z_report
VIA SELECTION-SCREEN
USING SELECTION-SET 'VARIANT NAME'
WITH so_pernr in r_pernr[]
WITH SELECTION-TABLE lt_params
AND RETURN.

Нюанс 3.
Считать вариант программы во внутреннюю таблицу можно с помощью ФМ RS_VARIANT_CONTENTS

Реклама

Поделиться ссылкой:

Понравилось это:

НравитсяЗагрузка...

Похожее

Read 309 times

Leave a comment

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.