Текущее время: Вт, июл 08 2025, 13:30

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Вопрос на засыпку :)))
СообщениеДобавлено: Чт, июл 13 2006, 12:29 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 24 2005, 15:55
Сообщения: 296
Пол: Мужской
Доброе время суток.

Как из SAP узнать, какие региональные настройки у пользователя?
В частности, интересует разделитель дробной и целой части.
Операционная система из линейки WINDOWS.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 12:35 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
уже было
cl_gui_frontend_services - может там тоже есть

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 12:39 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 24 2005, 15:55
Сообщения: 296
Пол: Мужской
slash написал(а):
уже было
cl_gui_frontend_services - может там тоже есть


А что это?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 13:20 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
=)
cl_ = class

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 13:28 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Только надо иметь ввиду, что, например, Excel 2003 может и не использовать настройки Windows.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 13:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Я делал так:
Code:
  DATA:
    HKEY_CURRENT_USER TYPE I VALUE 1.

  CALL FUNCTION 'GUI_GET_REGVALUE'
       EXPORTING
            ROOT           = HKEY_CURRENT_USER
            KEY            = 'Control Panel\International'
            VALUE_NAME     = 'sDecimal'
       CHANGING
            STRING         = RESULT
       EXCEPTIONS
            REGISTRY_ERROR = 1.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 15:19 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
А еще разделитель дробной и целой части настраивается в User Profile'e (su3).
GUI_UPLOAD для выяснения данного вопроса использует такой незатейливый способ:
Code:
  DATA: strDecimal  TYPE C,
        nPacked     TYPE P DECIMALS 2 VALUE 0,
        strTemp(10) TYPE C.

  " Determine decimal delimiter
  CLEAR strtemp.
  WRITE nPacked TO strtemp(10).
  SEARCH strtemp FOR ','.
  IF SY-SUBRC EQ 0.
    strDecimal = ','.
  ELSE.
    strDecimal = '.'.
  ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 15:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Code:
  DATA: dcpfm LIKE usr01-dcpfm
      , dsr(1)
      , dsd(1)
  .

  SELECT SINGLE dcpfm INTO dcpfm FROM usr01 WHERE bname = sy-uname.
  IF dcpfm = ''.
    dsr = '.'. dsd = ','.
  ELSEIF dcpfm = 'X'.
    dsr = ','. dsd = '.'.
  ELSEIF dcpfm = 'Y'.
    dsr = ' '. dsd = ','.
  ENDIF.



Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 15:47 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
ABC написал(а):
А еще разделитель дробной и целой части настраивается в User Profile'e (su3).
GUI_UPLOAD для выяснения данного вопроса использует такой незатейливый способ:
Code:
...  WRITE nPacked TO strtemp(10).
...

Это способ выяснить настройки фронтенда, которые могут отличаться от настроек Windows, Excel и т.п.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 16:03 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Для Excel, Wodr и пр. с чем можно работать через DOI можно воспользоваться следующим
I_OI_DOCUMENT_PROXY метод GET_APPLICATION_PROPERTY
Code:
    data: PROXY                 type ref to I_OI_DOCUMENT_PROXY.
...
    call method PROXY->GET_APPLICATION_PROPERTY
      exporting
        PROPERTY_NAME    = 'INTERNATIONAL'
        SUBPROPERTY_NAME = 'DECIMAL_SEPARATOR'
        NO_FLUSH         = NO_FLUSH
      importing
        RETCODE          = RETCODE
      changing
        RETVALUE         = DECIMAL_SIGN_EXT.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 13 2006, 16:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
вот это в тему, респект :)
все остальное - частный случай и, далее, off-topic...

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: re
СообщениеДобавлено: Чт, июл 13 2006, 17:00 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
менее лаконичный вариант :)
Code:
  data:
    sdecimal type string,
    smondecimal type string.

  call method cl_gui_frontend_services=>registry_get_value
    exporting
      root = cl_gui_frontend_services=>hkey_current_user
      key = 'Control Panel\International'
      value = 'sDecimal'
    importing
      reg_value = sdecimal
    exceptions
      get_regvalue_failed = 1
      cntl_error = 2
      error_no_gui = 3
      not_supported_by_gui = 4
      others = 5.
  if sy-subrc ne 0.
    " panic
  endif.

  call method cl_gui_frontend_services=>registry_get_value
    exporting
      root = cl_gui_frontend_services=>hkey_current_user
      key = 'Control Panel\International'
      value = 'sMonDecimalSep'
    importing
      reg_value = smondecimal
    exceptions
      get_regvalue_failed = 1
      cntl_error = 2
      error_no_gui = 3
      not_supported_by_gui = 4
      others = 5.
  if sy-subrc ne 0.
    " panic
"    smondecimal = sdecimal.
  endif.

  cl_gui_cfw=>flush( ).
  write: sdecimal, smondecimal.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 14 2006, 12:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Как я уже сказал, считывание реестра не даст общей картины.
Вряд ли будет работать в диапазоне рабочей системы Windows95 - Windows Vista + Excel95 - Excel ...

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: re
СообщениеДобавлено: Пт, июл 14 2006, 23:43 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
а откуда по вашему doi proxy берет значения? )
база COM в реестре хранится, полагаю, считывание реестра быстрее
чем использование proxy объекта, но это надо проверить


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 18 2006, 09:33 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Для совместимости Excel разных версий я делал так:
Code:
FORM GET_EXCEL_DECIMAL_SEPARATOR
  USING RESULT.

  DATA:
    APP TYPE OLE2_OBJECT,
    USESYSTEMSEPARATORS(10).

  CREATE OBJECT APP 'Excel.Application'.
  IF SY-SUBRC = 0.
    GET PROPERTY OF APP
      'UseSystemSeparators' = USESYSTEMSEPARATORS.
    CALL FUNCTION 'FLUSH'.

    IF SY-SUBRC <> 0 OR
     ( SY-SUBRC = 0 AND USESYSTEMSEPARATORS <> 0 ).

      PERFORM GET_SYSTEM_DECIMAL_SEPARATOR
        USING RESULT.
    ELSE.
      GET PROPERTY OF APP
        'DecimalSeparator' = RESULT.
      CALL FUNCTION 'FLUSH'.
    ENDIF.

    FREE OBJECT APP.
    CALL FUNCTION 'FLUSH'.
  ENDIF.
ENDFORM.

FORM GET_SYSTEM_DECIMAL_SEPARATOR
  USING RESULT.

  DATA:
    HKEY_CURRENT_USER TYPE I VALUE 1.

  CALL FUNCTION 'GUI_GET_REGVALUE'
       EXPORTING
            ROOT           = HKEY_CURRENT_USER
            KEY            = 'Control Panel\International'
            VALUE_NAME     = 'sDecimal'
       CHANGING
            STRING         = RESULT
       EXCEPTIONS
            REGISTRY_ERROR = 1.
ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB