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
-aim-
Участник
Участник



Joined: 24 Jan 2008
Posts: 8

PostPosted: Wed Jan 30, 2008 8:43 pm    Post subject: Стандартный ФМ, возвращающий дату прописью есть? Reply with quote

В общем-то, сабж....

Если кто не понял, поясню на примере:

имеем дату: 20080131
нужен ФМ, который проглотит это значение и выплюнет наружу:
31 января 2008 г.
хоть целиком, хоть по кускам... пофиг...

т.е. нужен некий аналог SPELL_AMOUNT, тока для дат...


Ковырялся и в системе и по форумам лазил...
не нашёл...
Мож не там искал?
Странно было бы, если бы не было такого в стандарте.

З.Ы.:
Тока, просьба, не писать в духе "А самому лень (слабо) чтоли слепить?"

Лепим, граждане, лепим...
замахались уже в каждой системе лепить заново... Smile
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Thu Jan 31, 2008 11:43 pm    Post subject: Reply with quote

Мы свой ФМ написали и храним месяцы по падежам и языку в Z таблице.
Back to top
View user's profile Send private message Blog Visit poster's website
-aim-
Участник
Участник



Joined: 24 Jan 2008
Posts: 8

PostPosted: Fri Feb 01, 2008 1:56 am    Post subject: Reply with quote

В этом состоит прелесть внутреннего проекта...

Понапривинчивал всего, что душе угодно к системе во имя собственного удобства и сидишь, бед не знаешь...

А внешний клиент иной раз голову готов открутить, если "лишнюю" z-скую табличку создашь....
Грустно...

Та же 1С-ина и то имеет стандартную функцию ДатаПрописью (если не ошибся в названии)
Sad
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Fri Feb 01, 2008 11:28 am    Post subject: Reply with quote

-aim- wrote:
В этом состоит прелесть внутреннего проекта...

Понапривинчивал всего, что душе угодно к системе во имя собственного удобства и сидишь, бед не знаешь...

А внешний клиент иной раз голову готов открутить, если "лишнюю" z-скую табличку создашь....
Грустно...
Sad


Проект не внутренний, просто долгоиграющий....

Если клиенту так принципиально, можно месяца константами внутрь свой функции занести. С одной строны, это не позволяет использовать эти константы в других местах, а с другой - надежней.

Под 1С много чего написано. Как то нужно было написать функцию на C++ склонений ФИО. Нашел алгоритм только на 1С. Переплевался от 1эсины пока переписывал. Тоже еще тот фрукт.
Back to top
View user's profile Send private message Blog Visit poster's website
dr.killer
Участник
Участник



Joined: 31 Oct 2007
Posts: 24
Location: 4.7, ECC 6.0

PostPosted: Fri Feb 01, 2008 1:13 pm    Post subject: Reply with quote

Зачем для этой задачи падежи?
реализуется элементарно
Распиши 12 месяцев
января
февраля
...
декабря
Есть дата 20080212
сделай CONCATENATE день+месяц прописью+год
Делов на 15 минут Smile

P.S.
"ДатаПрописью" в 1С никогда не было, там формат вывода реализуется так
Code:

Формат(<Параметр>,<Форматная_строка>)

где параментр значение типа дата
для дат - 'DПодстрокаФормата' (в русском регистре вместо D - Д), где
ПодстрокаФормата может быть вида:
DDMMYY (ДДММГГ), дата в виде - ДД.ММ.ГГ;
DDMMYYYY (ДДММГГГГ), дата в виде - ДД.ММ.ГГГГ;
DDMMMMYYYY (ДДММММГГГГ), дата в виде - ДД месяц прописью ГГГГ;
(0)DDMMMMYYYY ((0)ДДММММГГГГ) этот формат представляет собой вариант предыдущего формата с тем отличием, что число месяца всегда выводится двумя цифрами, т.е. для чисел меньших 10 спереди будет добавлен 0. Например: Формат('01.01.1999', ''Д (0)ДДММММГГГГ'') = 01 Января 1999 г.
MMMMYYYY (ММММГГГГ), дата в виде - месяц прописью ГГГГ;
MMMMYY (ММММГГ), дата в виде - месяц прописью ГГ;
QQQQYYYY (ККККГГГГ), дата в виде - N квартал ГГГГ;
QQQQYY (ККККГГ), дата в виде - N квартал ГГ;
YYYYMMDD (ГГГГММДД), дата в виде ГГГГММДД, то есть дата '10.11.1998' будет представлена как строка ''19981110'';
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Fri Feb 01, 2008 1:27 pm    Post subject: Reply with quote

dr.killer wrote:
Зачем для этой задачи падежи?


конкретно для этой не нужно, но в других задачах использовались. Поэтому хранили в одной таблице с падежами, для универсального использования.
Back to top
View user's profile Send private message Blog Visit poster's website
dr.killer
Участник
Участник



Joined: 31 Oct 2007
Posts: 24
Location: 4.7, ECC 6.0

PostPosted: Fri Feb 01, 2008 1:39 pm    Post subject: Reply with quote

Вдогонку
Вместо
"Распиши 12 месяцев
января
февраля
...
декабря "
Можно использовать ФМ 'HR_RU_MONTH_NAME_IN_GENITIVE'
Передашь туда номер месяца он вернет название месяца сразу в нужном падеже.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Fri Feb 01, 2008 1:44 pm    Post subject: Reply with quote

dr.killer wrote:
Можно использовать ФМ 'HR_RU_MONTH_NAME_IN_GENITIVE'
Передашь туда номер месяца он вернет название месяца сразу в нужном падеже.


Это с каким-то аддоном идет?
В 4.6с такого нет.
Back to top
View user's profile Send private message Blog Visit poster's website
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Fri Feb 01, 2008 2:16 pm    Post subject: Reply with quote

Видимо этот ФМ есть только при наличии модуля HR.
Кстати внутри он прост до безобразия:
Code:

         case month.
              when  1. name = 'january'(001).
              when  2. name = 'february'(002).
              when  3. name = 'march'(003).
              when  4. name = 'april'(004).
              when  5. name = 'may'(005).
              when  6. name = 'june'(006).
              when  7. name = 'july'(007).
              when  8. name = 'august'(008).
              when  9. name = 'september'(009).
              when 10. name = 'october'(010).
              when 11. name = 'november'(011).
              when 12. name = 'december'(012).
         endcase.
Back to top
View user's profile Send private message Blog
-aim-
Участник
Участник



Joined: 24 Jan 2008
Posts: 8

PostPosted: Tue Feb 26, 2008 8:34 pm    Post subject: Reply with quote

Респект 2 dr.killer!!!!

Отличное решение! (это я про 'HR_RU_MONTH_NAME_IN_GENITIVE')
Сенкс...

Насчёт одинэски, запамятовал...
перепутал с суммой прописью...
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.