Автор Тема: REPLACE - замена по маске  (Прочитано 6399 раз)

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
REPLACE - замена по маске
« : Декабрь 05, 2007, 02:36:33 pm »
В общем-то иногда возникает задача когда есть документ которые требуется отправить получателю, а хотя бы и например той же функцией SO_NEW_DOCUMENT_SEND_API1. При этом в документе есть специальные шаблоны которые к моменту отправки требуется заполнить на вполне реальные значения. Ну например есть строка текста бюджетного платежа вида:

my_string = '*;101;;*23070600*<OKPO>*<EXTNUM>*<DATEDOC>*21625786*1*;'.

И нужно вот эти вот тексты заменить в момент формирования на код ОКПО клиента, внешний номер и т.д. Вариантов может быть много как это сделать, но я использую следующий макрос:

Код: You are not allowed to view links. Register or Login
DEFINE replace_mask.
  l_pattern = &2.
  l_repl_string = &3.
  l_string = &1.
  call function 'C147_REPLACE'
       exporting
            i_pattern     = l_pattern
            i_repl_string = l_repl_string
       changing
            x_string      = l_string.
  &1 = l_string.
END-OF-DEFINITION.

Пример вызова следующий: replace_mask: my_string '<OKPO>' '34567890'.

Этот вызов найдет в строке my_string, текст <OKPO> и заменит его на '34567890'.

Оффлайн Олег

  • Newbie
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: REPLACE - замена по маске
« Ответ #1 : Январь 27, 2008, 11:09:15 am »
В чем разница между стандартной replace?

REPLACE '<OKPO>' IN my_string WITH '34567890'.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: REPLACE - замена по маске
« Ответ #2 : Январь 27, 2008, 10:29:44 pm »
Да вроде как уже ни в чем похоже, а с нового синтаксиса REPLACE вроде как и нафиг оно надо. Я этими фм-ками давно просто пользуюсь, но ранее вроде как были какие-то ограничения на REPLACE, опять же уже и не помню с чем связанные грабли. Если вспомню напишу, так на вскидку не вспомнилось... опять же я не абапер, так что не отслеживаю что там в синтаксисе меняется, а типа так работает и ладненько  ::)

PS:  Чего-то у меня мысли с 4.0 связаны, но может и ошибаюсь.