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
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Tue Jun 03, 2008 5:08 pm    Post subject: Простой вопрос про форматирование. Reply with quote

надо цифру записать в char переменную со знаком , что бы знак был слева а не справа (результат к примеру -123,55 - без пробелов).

пробовал так
Code:

 Data: _str(100).
 Data _Digit DEC 13 decimals 2.
         
 WRITE _Digit to _Str  USING EDIT MASK 'RRV___________.__'.
 Condenses _Str No-Gaps.


но мне кажется, что при большой цифре можно потерять что-нибудь?
Подскажите как это сделать правильно?

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Tue Jun 03, 2008 7:22 pm    Post subject: Reply with quote

Попробуйте так
Установка знака минус в начало числа
Back to top
View user's profile Send private message Blog Visit poster's website
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Fri Jun 06, 2008 11:34 pm    Post subject: Reply with quote

вариант конечно прикольный. Laughing - от подобного я хотел отказаться, видимо не судьба ...

Тогда уточните как использовать во врайте маску с ключем в ней V

WRITE _Digit to _Str USING EDIT MASK 'RRV___________.__'.

В хелпе написано, что она является указателем конвертировать знак числа слева, как положено, только как потом указать что надо число целиком дописать ? Как видно из первого вопроса я попытался это приблизительно реализовать с помощью выравнивания направо и приближенного посимвольного указания.
А вот как указать, чтобы основание цифры было дописано рядом?
Подскажите плизз, просто из хелпа это я не понял?

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Sat Jun 07, 2008 5:30 pm    Post subject: Reply with quote

Crystal_Ra wrote:
вариант конечно прикольный. Laughing - от подобного я хотел отказаться, видимо не судьба ...

Тогда уточните как использовать во врайте маску с ключем в ней V

WRITE _Digit to _Str USING EDIT MASK 'RRV___________.__'.

В хелпе написано, что она является указателем конвертировать знак числа слева, как положено, только как потом указать что надо число целиком дописать ? Как видно из первого вопроса я попытался это приблизительно реализовать с помощью выравнивания направо и приближенного посимвольного указания.
А вот как указать, чтобы основание цифры было дописано рядом?
Подскажите плизз, просто из хелпа это я не понял?



Здравствуйте!
Ничего не понял, что вас не устраивает? Smile

Ваш код вроде все слитно пишет.
Code:
 
Data: _str(100).
Data _Digit TYPE DEC16_3.
_Digit = '-1234567.899'.
WRITE _Digit to _Str  USING EDIT MASK 'RRV_____________.___'.
Condense _Str No-Gaps.
WRITE: / _str.


На выходе:
-1234567.899

Пример неправильно использованеия приветите.
Back to top
View user's profile Send private message Blog Visit poster's website
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Sun Jun 08, 2008 12:07 am    Post subject: Reply with quote

Code:
_Digit = '-1234567.899'.
WRITE _Digit to _Str  USING EDIT MASK 'RRV__.__'.


вот так число будет усечено ? верно?
Знак подчеркивания указывает 1 символ. Теоретически чило может быть любой длинны, так?
И что делать?
Как написать универсально?
Не могу понять как пользоваться этим 'V' если

Code:
WRITE _Digit to _Str  USING EDIT MASK 'V'.


дает только один знак без числа...

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Sun Jun 08, 2008 10:02 am    Post subject: Reply with quote

Crystal_Ra wrote:
Code:
_Digit = '-1234567.899'.
WRITE _Digit to _Str  USING EDIT MASK 'RRV__.__'.


вот так число будет усечено ? верно?
Знак подчеркивания указывает 1 символ. Теоретически чило может быть любой длинны, так?
И что делать?
Как написать универсально?


Зачем писать универсально? Вы знаете размерность элемента данных, под него укажите маску. В sap числа любой длины не бывают. Это не космические исследования, а деньги, которых не может быть много. Smile
Пример универсального использования я пример приводил.

Crystal_Ra wrote:

Не могу понять как пользоваться этим 'V' если

Code:
WRITE _Digit to _Str  USING EDIT MASK 'V'.


дает только один знак без числа...


Правильно, V - это позиция знака. Ничего другого в эту позицию не впишется.
RR - признак выравнивания в право.
_ - позиция цифр.
Back to top
View user's profile Send private message Blog Visit poster's website
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Mon Jun 09, 2008 1:47 pm    Post subject: Reply with quote

По логике вещей, если можно отдельно знак прописать с помощью 'V',
то должен быть вариант прописать все число сразу , а не по знакам - '_'.
---------------------------------------------------------------
PS. В чем же правда Брат?

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Mon Jun 09, 2008 2:40 pm    Post subject: Reply with quote

Crystal_Ra wrote:
По логике вещей, если можно отдельно знак прописать с помощью 'V',
то должен быть вариант прописать все число сразу , а не по знакам - '_'.
---------------------------------------------------------------
PS. В чем же правда Брат?


Так знак занимает одну позицию.
Back to top
View user's profile Send private message Blog Visit poster's website
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Mon Jun 09, 2008 2:43 pm    Post subject: Reply with quote

vga wrote:
Crystal_Ra wrote:
По логике вещей, если можно отдельно знак прописать с помощью 'V',
то должен быть вариант прописать все число сразу , а не по знакам - '_'.
---------------------------------------------------------------
PS. В чем же правда Брат?


Так знак занимает одну позицию.


то должен быть вариант прописать все число сразу ???

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Mon Jun 09, 2008 5:44 pm    Post subject: Reply with quote

Crystal_Ra wrote:

то должен быть вариант прописать все число сразу ???


Нет такой опции в форматировании.
Back to top
View user's profile Send private message Blog Visit poster's website
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.