Текущее время: Пн, июл 07 2025, 05:15

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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