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

условие в if



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



Joined: 18 Jan 2008
Posts: 59

PostPosted: Thu Mar 06, 2008 10:03 am    Post subject: условие в if Reply with quote

Хочу проверить, что поле начинается с '40', если пишу

IF mbew-bklas LIKE '40%'.
...
endif.

не работает. Подскажите, что не так?
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Thu Mar 06, 2008 10:05 am    Post subject: Reply with quote

Замените LIKE на CP и % на *. Должно сработать...

Добавил:
Quote:
CP (Contains Pattern):
The complete string c1 matches the pattern c2 (c1 "matches" c2).
The pattern c2 can contain ordinary characters and wildcards.
'*' stands for any character string and '+' denotes any character.
If the result of the comparison is positive, the system field SY-FDPOS contains the offset of the first character of c2 in c1. The wildcard character '*' at the beginning of the pattern c2 is ignored when determining the value of SY-FDPOS.
If the result of the comparison is negative, the system field SY-FDPOS contains the length of c1.

Examples:

'ABCDE' CP '*CD*' is true; SY-FDPOS = 2.
'ABCDE' CP '*CD' is false; SY-FDPOS = 5.
'ABCDE' CP '++CD+' is true; SY-FDPOS = 0.
'ABCDE' CP '+CD*' is false; SY-FDPOS = 5.
'ABCDE' CP '*B*D*' is true; SY-FDPOS = 1.
Back to top
View user's profile Send private message Blog
RRRoman
Участник
Участник



Joined: 05 Mar 2008
Posts: 39

PostPosted: Fri Mar 07, 2008 11:19 am    Post subject: Re: условие в if Reply with quote

z01 wrote:
Хочу проверить, что поле начинается с '40', если пишу

IF mbew-bklas LIKE '40%'.
...
endif.

не работает. Подскажите, что не так?


читаем внимательнее HELP Smile
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 170
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri Mar 07, 2008 11:58 am    Post subject: Reply with quote

Приведенная Вами конструкция работает только в запросах к БД.
Например:

Code:
TABLES: mbew.
SELECT * FROM mbew WHERE bklas LIKE '40%'.
  WRITE: / mbew-matnr, mbew-bklas.
ENDSELECT.


для условия нужно использовать Pattern

Code:
TABLES: mbew.
SELECT * FROM mbew.
  IF mbew-bklas CP '40*'.
    WRITE: / mbew-matnr, mbew-bklas.
  endif.
ENDSELECT.
Back to top
View user's profile Send private message Blog Visit poster's website
z01
Специалист
Специалист



Joined: 18 Jan 2008
Posts: 59

PostPosted: Fri Mar 07, 2008 12:21 pm    Post subject: Reply with quote

Спасибо, понял.

Еще один вопрос. Делаю ограничение по той же таблице mbew
по номеру материала matnr.

Если написать
IF mbew-matnr CP 'FA*'.
Значения выбираются.

Если пишу
IF mbew-matnr CP '60*'.
ничего не выбирается, хотя в таблице точно есть материалы, начинающиеся на 60. Проверил в se16.
Back to top
View user's profile Send private message
mike1
Модератор
Модератор



Joined: 22 Nov 2007
Posts: 82

PostPosted: Fri Mar 07, 2008 1:01 pm    Post subject: Reply with quote

Проблема ведущих нолей.
Отключите в se16 преобразование из внутреннего формата в параметрах пользователя.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 170
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri Mar 07, 2008 2:55 pm    Post subject: Reply with quote

Да, да. Если Вы посмотрите в свойства домена matnr, то увидите заполненное поле Convers. routine = MATN1
Это значит, что для отображения на экране вызывается функция преобразования CONVERSION_EXIT_MATN1_OUTPUT, убирающая лидирующие нули в номере материала. А на самом деле, номер материала в базе хранится с лидирующими нулями.
Поэтому в зависимости от количества лидирующих нулей, условие нужно написать так:
IF mbew-matnr CP '000000000060*'.

Для материала, в номере которого содержатся хоть один нецифровой символ, лидирующие нули не добавляются. Поэтому работало условие
IF mbew-matnr CP 'FA*'.



domain_matnr.PNG
 Description:
 Filesize:  10.11 KB
 Viewed:  11339 Time(s)

domain_matnr.PNG


Back to top
View user's profile Send private message Blog Visit poster's website
z01
Специалист
Специалист



Joined: 18 Jan 2008
Posts: 59

PostPosted: Fri Mar 07, 2008 5:33 pm    Post subject: Reply with quote

Спасибо всем ответившим, теперь понятно.
Back to top
View user's profile Send private message
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.