SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Диапазон номеров



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
peleken
Специалист
Специалист



Joined: 17 Jan 2011
Posts: 61

PostPosted: Sat Jan 21, 2012 1:16 pm    Post subject: Диапазон номеров Reply with quote

Здравствуйте, уважаемые эксперты. С прошедшими праздниками!

Сам вопрос. - Есть диапазон номеров 00001-20000. В этом диапазоне большинство номеров занято значениями. Например номера с 00010 по 00100, или с 10000 по 15000 заняты значениями, а остальные свободны.
И номеров с 16000 по 20000 нет в системе.
Как сделать выборку свободных номеров из этого диапазона (00001-20000)?
Back to top
View user's profile Send private message
ghost
Специалист
Специалист


Age: 37
Joined: 18 Jan 2008
Posts: 71
Location: Tashkent-Astana-Moscow

PostPosted: Wed Jan 25, 2012 1:39 pm    Post subject: Re: Диапазон номеров Reply with quote

peleken wrote:
Здравствуйте, уважаемые эксперты. С прошедшими праздниками!

Сам вопрос. - Есть диапазон номеров 00001-20000. В этом диапазоне большинство номеров занято значениями. Например номера с 00010 по 00100, или с 10000 по 15000 заняты значениями, а остальные свободны.
И номеров с 16000 по 20000 нет в системе.
Как сделать выборку свободных номеров из этого диапазона (00001-20000)?


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

на вскидку :
1) через изменение статуса диапазона , но крайне не советую. диапазоны штука тонкая особенно в продуктиве .
2) badi badi_number_get_next (если у вас какая то своя логика нумерации, то эту логику можете тут реализовать)

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)
Back to top
View user's profile Send private message Send e-mail Blog
peleken
Специалист
Специалист



Joined: 17 Jan 2011
Posts: 61

PostPosted: Wed Jan 25, 2012 7:17 pm    Post subject: Reply with quote

ghost wrote:

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


Согласен.

Если подробнее, то так.
Есть таблица. В этой таблице есть диапазон номеров с 00001 по 16000 (тип данных CHAR(5), ключевое поле). Некоторые диапазоны номеров имееют данные, например: ключевое слово, описание, кол-во, номер материала, производитель и тд.Это диапазоны, например с 00010 по 00020, с 00023 по 00025, с 00030 по 00100 и тд, до 16000.
Номера, например с 00001 по 00009 и т.д. то же заняты данными, но эти номера не используются, так как имеют определенные метки (ключевое слово), например DELETE, но планируются в дальнейшем для использования под другие данные. Диапазона с 16001 по 20000 вообще еще нет в таблице.
Необходимо вычислить все свободные номера с 00001 по 20000.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Thu Jan 26, 2012 11:09 am    Post subject: Reply with quote

Это неправильное использование диапазона номеров.
Создайте для каждого объекта свой объект нумерации, как это реализовано в стандартной функциональности SAP. И проблема отпадет сама собой.
--
ЗЫ: а простой перебор религия не позволяет использовать? Wink

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
peleken
Специалист
Специалист



Joined: 17 Jan 2011
Posts: 61

PostPosted: Thu Jan 26, 2012 12:47 pm    Post subject: Reply with quote

Удав wrote:
Это неправильное использование диапазона номеров.
Создайте для каждого объекта свой объект нумерации, как это реализовано в стандартной функциональности SAP. И проблема отпадет сама собой.
--
ЗЫ: а простой перебор религия не позволяет использовать? Wink


Сделаю я, наверное все через SELECT-OPTIONS, а там посмотрим.

Спасибо, вопрос закрыт!
Back to top
View user's profile Send private message
ghost
Специалист
Специалист


Age: 37
Joined: 18 Jan 2008
Posts: 71
Location: Tashkent-Astana-Moscow

PostPosted: Thu Jan 26, 2012 12:52 pm    Post subject: Reply with quote

peleken wrote:
Сделаю я, наверное все через SELECT-OPTIONS, а там посмотрим.

Спасибо, вопрос закрыт!


мда странный вывод из всего сказанного. Confused

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)
Back to top
View user's profile Send private message Send e-mail Blog
Mania4e11o
Участник
Участник


Age: 33
Joined: 12 Dec 2011
Posts: 47
Location: Рязань

PostPosted: Mon Jan 30, 2012 1:44 am    Post subject: Reply with quote

peleken wrote:
Удав wrote:
Это неправильное использование диапазона номеров.
Создайте для каждого объекта свой объект нумерации, как это реализовано в стандартной функциональности SAP. И проблема отпадет сама собой.
--
ЗЫ: а простой перебор религия не позволяет использовать? Wink


Сделаю я, наверное все через SELECT-OPTIONS, а там посмотрим.

Спасибо, вопрос закрыт!


Если речь идет о домене...то это кривое использование.

но если уж прет делать так

Code:
REPORT  z_so.

*TABLES gtable. " Это твоя таблица словаря

TYPES: BEGIN OF tab_t, " вместо этого создаешь таблицу типа своей таблицы
  id(4),                  " DATA lt_tab TYPE TABLE OF gtable.
  key(10),                " только потом проверяй в условии (*) по своим полям
END OF tab_t.
DATA lt_tab TYPE SORTED TABLE OF tab_t with unique default key.

DATA: BEGIN OF wa_so, "структура таблицы СО
  sign(1),
  option(2),
  low(10),
  high(10),
END OF wa_so,
  interval TYPE int4. " индикатор интервала или постоянного значения

FIELD-SYMBOLS: <ls_tab> TYPE tab_t.
*создаем  СО
data  lv_so(4) TYPE c,
lv_idx1 type i,
lv_idx2 type i.
SELECT-OPTIONS so_1 FOR lv_so no-display.

" коп. во внутр. табл. свою таблицу словаря
SELECT * FROM gtable INTO CORRESPONDING FIELDS OF TABLE  lt_tab.

DO 2000 TIMES. " 2000 твой интервал (в данном случае сделал цикл так)
  wa_so-high = sy-index.
  LOOP AT lt_tab ASSIGNING <ls_tab>.
  "  условие (*)
    IF <ls_tab>-id <> wa_so-high OR <ls_tab>-key = 'DELETE'."Или еще любые условия на неиспользуемость значения в таблице
      IF wa_so-low IS INITIAL. " если еще не присвоил нижний интервал
        wa_so-low = wa_so-high.
        lv_idx1 = sy-index.
      ENDIF.
    ELSEIF wa_so-low IS NOT INITIAL. " если значение не подходит по условие (*) и есть хотя бы одно значение
      lv_idx2 = sy-index.
      wa_so-high = wa_so-high - 1.
      interval = wa_so-high - wa_so-low.
      IF interval = 0. " если всего одно пихаем в постоянные
        wa_so-sign = 'I'.
        wa_so-option = 'EQ'.
        delete lt_tab index lv_idx1.
      ELSE.
        wa_so-sign = 'I'. " иначе в диапазон
        wa_so-option = 'BT'.
        delete lt_tab FROM lv_idx1 TO lv_idx2.
      ENDIF.
      APPEND wa_so TO so_1. "добавляем в СО
      CLEAR wa_so.                                             
    ENDIF.
  ENDLOOP.
ENDDO.
Back to top
View user's profile Send private message Blog
peleken
Специалист
Специалист



Joined: 17 Jan 2011
Posts: 61

PostPosted: Mon Jan 30, 2012 11:00 pm    Post subject: Reply with quote

Mania4e11o wrote:

Если речь идет о домене...то это кривое использование.

но если уж прет делать так

Code:
REPORT  z_so.



Спасибо за помощь! Знал же что есть добрые люди.
Back to top
View user's profile Send private message
Mania4e11o
Участник
Участник


Age: 33
Joined: 12 Dec 2011
Posts: 47
Location: Рязань

PostPosted: Fri Feb 03, 2012 10:57 pm    Post subject: Reply with quote

без проблем Wink
Back to top
View user's profile Send private message Blog
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.