+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средстваТема:
|- Внутренняя таблица select-options




Автор Тема: Внутренняя таблица select-options  (Прочитано 660 раз)

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

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 219
  • Reputation Power: 0
  • themax has no influence.
  • YearsYearsYearsYearsYearsYears
Внутренняя таблица select-options
« : Июль 13, 2017, 01:00:56 pm »
Доброго времени суток всем.

Прошу не удивляться возможно за неумные вопросы, т.к. в АБАПе я не слишком силён. Хочу сделать небольшой отчёт. На селекционном экране есть поле выбора select-oprions, т.е. чтобы была возможность выбора диапазона значений. Вот собственно код:
Код: You are not allowed to view links. Register or Login
if kostl ne ''.
    select single * from csks where kostl in kostl.
    if  sy-subrc = 0.
      if kostl-low ne ''.
        kostl2 = kostl.
        SHIFT kostl2 left by 3 PLACES.
        concatenate 'KS2000' kostl2 into kostl2.
      endif.
      select  * from coep appending corresponding fields of table tab where objnr = kostl2  .
    else.
      message s001(kb_co).
    endif.
  endif.
В физической таблице coep поле ВМЗ хранится с неким префиксом спереди, а на селекционном экране оно просто вводится как обычное мвз, например 45-859, а в табличке KS200045-859. Если я на селекционном экране ввожу только одно МВЗ, селект по этому коду с таблички coep проходит, но как быть если указан диапазон МВЗ. Как в таком случае нужно использовать select-options ? Получается мне всему диапазону МВЗ нужно добавить вперёд этот префикс, только в этом случае сработает селект. Может кто подскажет или делал нечто подобное?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 662
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Внутренняя таблица select-options
« Ответ #1 : Июль 13, 2017, 07:41:48 pm »
Если честно я в вашей программе ничего не понял. Если kostl это переменная типа ranges, ну или в вашем случае вы ее через SELECT-OPTIONS объявили. Так вот сравнение if kostl ne '', смысла не имеет так как не факт что в заголовке будет какая-то информация, как собственно и дальше if kostl-low ne '', при этом вы в заголовок рейнжа вообще ничего не читаете, поэтому это сравнение так же не имеет смысла в таком виде. Ну а дальше что касается МВЗ, вы вообще-то не поле МВЗ используете, а поле так называемого номера объекта, которое довольно специфически формируется. В вашем случае это ключ объекта KS + номер контроллинговой единицы + номер МВЗ во внутреннем формате, так что ваше способ формирования ключа, через SHIFT kostl2 left by 3 PLACES и дальше concatenate 'KS2000' kostl2 into kostl2, будет сильно завязан на вашу специфику и скорее всего не будет работать если вдруг код МВЗ будет только числовой. Короче, может лучше к абаперу? Дело в том, что у вас нет вообще никаких азов знаний по словарю абапа и основам создания программ, рассказать это за 5-10 или час если честно не реально, в вашем случае или надо садиться и писать самом, попутно объясняя вам по шагам почему и как и что я делаю или вам начинать с курсов BC400 и BC320 (словарь, если номер курса не перепутал), еще лучше с книжки You are not allowed to view links. Register or Login потому что ну это проще переписать, чем объяснить почему все не правильно.