Текущее время: Ср, июн 25 2025, 17:44

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 06 2010, 12:28 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, июл 29 2008, 16:07
Сообщения: 351
Откуда: Astana
Пол: Мужской
Здравствуйте!!
Сейчас в САП курс валют забивается ручками. :cry: :cry: :cry:
Хотел написать программку загрузки курса валют с файла.
Но хотелось узнать все ли делают это ручками или нет?
Заранее благодарю.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 06 2010, 12:53 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
Zhasulan написал:
Здравствуйте!!
Сейчас в САП курс валют забивается ручками. :cry: :cry: :cry:
Хотел написать программку загрузки курса валют с файла.
Но хотелось узнать все ли делают это ручками или нет?
Заранее благодарю.

Далеко не все :)
Некоторые грузят из файла.
А самые продвинутые - качают прямо из интернета ;-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 06 2010, 13:05 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
У нас тоже делают руками... только спросил.
Да, поддержу Dzed Marozа, как раз об этом думал, про закачки с сайта.
Есть тема http://sapboard.ru/forum/viewtopic.php?f=13&t=55645&start=0, думаю что ее можно заточить под синхронизацию курсов валют...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 06 2010, 13:46 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, июл 29 2008, 16:07
Сообщения: 351
Откуда: Astana
Пол: Мужской
А можно пример загрузки?
Пакетник делали?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 06 2010, 14:31 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
Zhasulan написал:
А можно пример загрузки?
Пакетник делали?

Загрузку видел когда-то давно, пакетником вроде ....
У нас вводят руками, ибо курсы меняются ежедневно, и смысла пакетника/прочей загрузки я не вижу.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 06 2010, 15:04 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, июл 29 2008, 16:07
Сообщения: 351
Откуда: Astana
Пол: Мужской
Мне кажется проще подсовывать программе файлик каждый день чем сидеть и делать это руками, как то недели две я сидел заменял девушку которая занимается вводом курса валют..и удовольствие мне это не доставило)))


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 06 2010, 15:21 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
Zhasulan написал:
Мне кажется проще подсовывать программе файлик каждый день чем сидеть и делать это руками, как то недели две я сидел заменял девушку которая занимается вводом курса валют..и удовольствие мне это не доставило)))

Не знаю, как в ваших заграницах, а у нас вводят только $ € и российский рубль. Так что тут всё просто.
А если вводить ежедневно пару десятков валют, то таки да, неудобно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 06 2010, 16:17 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Вместо пакетника можно BAPI_EXCHANGERATE_CREATE / BAPI_EXCHRATE_CREATEMULTIPLE.

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Вс, янв 10 2010, 10:18 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 13:40
Сообщения: 25
Пол: Мужской
Приветствую.

2Dzed Maroz: Для того чтобы вводить пару десятков валют нет необходимости жить за границей, достаточно чтобы работодатель имел бизнес не только в своей стране :)

Ну, и по теме.

Закачку с сайта ЦБ сделать не проблема, так же как и вводить курсы используя указанную БАПИху. Главное при реализации автоматической загрузки не забудте пару вещей:
1. Всегда ведите лог какие валюты НЕ удалось загрузить (можно так же уведомлять себя любимого или ответ.сотрудника о наличии не загруженных валют)
2. Сначала грузите справочник валют (если в продуктиве этот справочник у вас открыт на изменение, то можно прям в него, если нет, то необходимо выводить предупреждение в лог), а потом уже сами курсы.

_________________
Наше Вам, с кисточкой....


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Пн, янв 11 2010, 06:27 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, июл 29 2008, 16:07
Сообщения: 351
Откуда: Astana
Пол: Мужской
Использую BAPI пишет:

I E! 005 Для обновления не предусмотрена ни одна табличная запись.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Пн, янв 11 2010, 09:52 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
Zhasulan написал:
Использую BAPI пишет:

I E! 005 Для обновления не предусмотрена ни одна табличная запись.

Рискну предположить, что нужно подсовывать инвертированную дату.

2bmonk: для расчётов с Китаем не обязательно использовать юани, равно как и для какого-нибудь Буркина-Фасо - кокосовые орехи ;-)
Нам достаточно буквально нескольких мировых валют ;-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 13 2010, 11:02 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
data: v_blan TYPE c VALUE 'Y',
v_dest LIKE rfcdes-rfcdest VALUE 'SAPHTTPA',
v_uri(250) TYPE c VALUE 'http://www.cbr.ru',
v_uri2(250) TYPE c VALUE '/currency_base/D_print.aspx?date_req='.
CONCATENATE datum+6(2) datum+4(2) datum+0(4) INTO datum1
SEPARATED BY '/'.
* datum = '13/10/2004'.
CONCATENATE uri uri2 datum1 INTO uri.

CALL FUNCTION 'HTTP_GET'
EXPORTING
absolute_uri = v_uri
rfc_destination = v_dest
blankstocrlf = v_blan
IMPORTING
status_code = status
status_text = statustext
response_entity_body_length = rlength
TABLES
response_entity_body = response
response_headers = response_headers
EXCEPTIONS
connect_failed = 1
timeout = 2
internal_error = 3
tcpip_error = 4
data_error = 5
system_failure = 6
communication_failure = 7
error_message = 8
OTHERS = 9.


ответ распарсить сможете я думаю


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 13 2010, 11:20 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 25 2008, 17:07
Сообщения: 144
Откуда: Казань
Пол: Мужской
Могу выложить или выслать на почту готовую программу берущую курс с центробанковского сайта.
Она у нас успешно каждый день в фоне запускается.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 13 2010, 11:55 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Марик написал:
Могу выложить или выслать на почту готовую программу берущую курс с центробанковского сайта..

Вы хотите чтобы Вас умоляли опубликовать Ваше творение?
Берите пример с коллег: Разработки участников форума

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка курса валют.
СообщениеДобавлено: Ср, янв 13 2010, 13:29 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 25 2008, 17:07
Сообщения: 144
Откуда: Казань
Пол: Мужской
sy-uname написал(а):
Марик написал:
Могу выложить или выслать на почту готовую программу берущую курс с центробанковского сайта..

Вы хотите чтобы Вас умоляли опубликовать Ваше творение?
Берите пример с коллег: Разработки участников форума

Да не в том дело.
Этот код я брал с какого-то форума (даже возможно с этого), поэтому не могу выложить его, присвоив авторство.
Какой смысл выкладывать код, если существует возможность того, что автор ветки уже нашёл этот код, как и я в своё время?

Да и в принципе вот и он:
Code:
*&---------------------------------------------------------------------*
*& Report  ZDOWNLOAD_CUR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZDOWNLOAD_CUR.
INCLUDE ZDOWNLOAD_CUR_TOP.
INCLUDE ZDOWNLOAD_CUR_SSCR.
INCLUDE ZDOWNLOAD_CUR_EVENTS.

*&---------------------------------------------------------------------*
*&  Include           ZDOWNLOAD_CUR_TOP
*&---------------------------------------------------------------------*
tables: tcurr.

types: begin of l_cur,
        numcode  type string,
        charcode type string,
        nominal  type string,
        name     type string,
        value    type string,
        end of l_cur.

data: wa_tcur TYPE TABLE OF l_cur WITH HEADER LINE.


*&---------------------------------------------------------------------*
*&  Include           ZDOWNLOAD_CUR_SSCR
*&---------------------------------------------------------------------*

PARAMETERS: p_date type d DEFAULT sy-datum,
            p_coment as CHECKBOX USER-COMMAND flag.

*&---------------------------------------------------------------------*
*&  Include           ZDOWNLOAD_CUR_EVENTS
*&---------------------------------------------------------------------*
start-of-selection.
*------------------------------------------------------
*download data from www.cbr.ru
  types: begin of text,
         line(120),
         end of text.

  data: l_url(264) type c,
        cur_date(10) type c,
        status(3) type c,
        statustext(128) type c,
        dest like rfcdes-rfcdest,
        rlength type i,
*        response type standard table of text,
        response type standard table of text with header line,
        response_headers type table of text with header line,
        btocrlf type c.

  btocrlf = 'Y'.
  write p_date to cur_date dd/mm/yyyy.
  replace all occurrences of '.' in cur_date with '/'.

*l_url = 'http://www.cbr.ru/scripts/XML_daily.asp?date_req=10/10/2008'.
*l_url = 'http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=10/10/2008&date_req2=12/10/2008&VAL_NM_RQ=R01235'.
  l_url = 'http://www.cbr.ru/scripts/XML_daily.asp?date_req='.
  concatenate l_url cur_date into l_url.

  call function 'HTTP_GET'
    exporting
      absolute_uri                = l_url
      rfc_destination             = dest
*    user                        = user
*    password                    = pwd
      blankstocrlf                = btocrlf
    importing
      status_code                 = status
      status_text                 = statustext
      response_entity_body_length = rlength
    tables
      response_entity_body        = response
      response_headers            = response_headers
    exceptions
      CONNECT_FAILED                    = 1
      TIMEOUT                           = 2
      INTERNAL_ERROR                    = 3
      TCPIP_ERROR                       = 4
      DATA_ERROR                        = 5
      SYSTEM_FAILURE                    = 6
      COMMUNICATION_FAILURE             = 7
      OTHERS                            = 8
    .
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  call function 'RFC_CONNECTION_CLOSE'
    EXPORTING
      destination = dest
    EXCEPTIONS
      others      = 0.

**************************************************************
*convert download data from site to table format
**************************************************************
  data: xml type ref to cl_xml_document,
        xml2 type ref to cl_xml_document,
        w_subrc like sy-subrc,
        l_node type ref to if_ixml_node,
        gt_xmltree type   swxmltree,
        gs_xmltree like wa_tcur,
        val_node type string,
        l_node_root type ref to if_ixml_node,
        children type ref to if_ixml_node_list.

  data: iter type ref to if_ixml_node_iterator.

  create object xml.

  call method xml->create_with_table
    EXPORTING
      table   = response[]
      size    = rlength
    RECEIVING
      retcode = w_subrc.

  if w_subrc ne 0.
    write / 'error: unable to create xml'.
  endif.

  call method xml->find_node
    EXPORTING
      name = 'ValCurs'
    RECEIVING
      node = l_node.

  data:       date     type string,
              name     type string.
  field-symbols <i> like line of wa_tcur.
  data: attr type ref to if_ixml_named_node_map.
  data: date_node type ref to if_ixml_node.
  data: l_name type string.
  call method l_node->get_attributes
    RECEIVING
      rval = attr.

  call method attr->get_named_item
    EXPORTING
      name = 'Date'
    RECEIVING
      rval = date_node.

  l_name = date_node->get_value( ).
  children = l_node->get_children( ).
  iter = children->create_iterator( ).
  iter->reset( ).

  do.
    l_node_root = iter->get_next( ).
    if not l_node_root is bound.
      exit.
    endif.

    l_node = xml->find_node( name = 'NumCode' root = l_node_root ).
    check  l_node is bound.
    append initial line to wa_tcur assigning <i>.
    <i>-numcode = l_node->get_value( ).

    l_node = xml->find_node( name = 'CharCode' root = l_node_root ).
    check  l_node is bound.
    <i>-charcode = l_node->get_value( ).

    l_node = xml->find_node( name = 'Nominal' root = l_node_root ).
    check  l_node is bound.
    <i>-nominal = l_node->get_value( ).

    l_node = xml->find_node( name = 'Name' root = l_node_root ).
    check  l_node is bound.
    <i>-name = l_node->get_value( ).

    l_node = xml->find_node( name = 'Value' root = l_node_root ).
    check  l_node is bound.
    <i>-value = l_node->get_value( ).
  enddo.

**************************************************************
*Place data form table to TCURR
**************************************************************
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(EXC_IN) TYPE  STRING
*"     VALUE(DCURR_IN) TYPE  STRING
*"     VALUE(SCURR_IN) TYPE  STRING
*"  TABLES
*"      EXCH_RATE_LIST STRUCTURE  BAPI1093_0 OPTIONAL
*"----------------------------------------------------------------------
*
  data: exch_rate  like bapi1093_0   occurs 1 with header line,
        rettab       like bapiret2   occurs 1 with header line,
        ret2         like bapiret2   occurs 1 with header line,
        ret3         like bapiret2   occurs 1 with header line,
        exch_rate_list like bapi1093_0   occurs 1 with header line.

  data:
       i_from_curr_range type table of bapi1093_3 with header line,
       i_to_currncy_range type table of bapi1093_3 with header line.

  write: 'currency value on date: '.  write: p_date.

  loop at wa_tcur.
    replace ',' with '.' into wa_tcur-value.

    if wa_tcur-charcode = 'USD'.

      exch_rate-rate_type   = 'M'.
      exch_rate-from_curr   = wa_tcur-charcode.
      exch_rate-to_currncy  = 'RUB'.
      exch_rate-valid_from  = p_date.
      exch_rate-exch_rate   = wa_tcur-value.
      exch_rate-from_factor = wa_tcur-nominal.
      exch_rate-to_factor   = wa_tcur-nominal.

      append exch_rate.

      call function 'BAPI_EXCHANGERATE_CREATE'
        EXPORTING
          exch_rate = exch_rate
        IMPORTING
          return    = rettab.

      write: / 'USD = '. write wa_tcur-value.
      PERFORM print_protocol.

      clear exch_rate[].

      exch_rate-rate_type   = 'M'.
      exch_rate-from_curr   = 'UUSD'.
      exch_rate-to_currncy  = 'RUB'.
      exch_rate-valid_from  = p_date.
      exch_rate-exch_rate   = wa_tcur-value.
      exch_rate-from_factor = wa_tcur-nominal.
      exch_rate-to_factor   = wa_tcur-nominal.

      append exch_rate.

      call function 'BAPI_EXCHANGERATE_CREATE'
        EXPORTING
          exch_rate = exch_rate
        IMPORTING
          return    = rettab.

      write: / 'UUSD = '. write wa_tcur-value.
      PERFORM print_protocol.

      clear exch_rate[].
    elseif wa_tcur-charcode = 'EUR'.

      exch_rate-rate_type   = 'M'.
      exch_rate-from_curr   = wa_tcur-charcode.
      exch_rate-to_currncy  = 'RUB'.
      exch_rate-valid_from  = p_date.
      exch_rate-exch_rate   = wa_tcur-value.
      exch_rate-from_factor = wa_tcur-nominal.
      exch_rate-to_factor   = wa_tcur-nominal.

      append exch_rate.

      call function 'BAPI_EXCHANGERATE_CREATE'
        EXPORTING
          exch_rate = exch_rate
        IMPORTING
          return    = rettab.

      write: / 'EUR = '. write wa_tcur-value.
      PERFORM print_protocol.

      clear exch_rate[].

      exch_rate-rate_type   = 'M'.
      exch_rate-from_curr   = 'UEUR'.
      exch_rate-to_currncy  = 'RUB'.
      exch_rate-valid_from  = p_date.
      exch_rate-exch_rate   = wa_tcur-value.
      exch_rate-from_factor = wa_tcur-nominal.
      exch_rate-to_factor   = wa_tcur-nominal.

      append exch_rate.

      call function 'BAPI_EXCHANGERATE_CREATE'
        EXPORTING
          exch_rate = exch_rate
        IMPORTING
          return    = rettab.

      write: / 'UEUR = '. write wa_tcur-value.
      PERFORM print_protocol.

      clear exch_rate[].
    endif.
  endloop.

  call function 'BAPI_TRANSACTION_COMMIT'
    IMPORTING
      return = ret2.

  if ret2 is not initial.
    write / 'error: unable to commit work'.
  endif.

*&---------------------------------------------------------------------*
*&      Form  print_protocol
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM print_protocol.
  if rettab is not initial and p_coment is not initial.
    write: / 'protocol:'.

    if rettab-MESSAGE = 'Aey iaiiaeaiey ia i?aaoniio?aia ie iaia oaaee?iay caienu.'.
      rettab-MESSAGE = 'Aaiiua oniaoii iaiiaeaiu'.
    endif.

    write: / rettab-ID.
    write: / rettab-MESSAGE.
    write: / rettab-MESSAGE_V1.
    write: / rettab-MESSAGE_V2.
    write: / rettab-MESSAGE_V3.
    write: / rettab-MESSAGE_V4.
    write: / '---------------------------------------'.
  endif.
endform.                    "print_protocol


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

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


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

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


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

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