Текущее время: Пн, июл 21 2025, 06:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Вт, сен 25 2012, 10:54 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 10 2007, 20:37
Сообщения: 72
Добрый день.
Задача: создать или не создать несколько FI документов одновременно.
С помощью пакетника проблем не возникло, но нужно предварительно проверить на ошибки, и если во всех проводимых документах ошибок нет, делать проводки. Для этого хочу использовать бапи, и если ошибки, то откатывать, т.к. тестового режима нет.
подзадача: с помощью BAPI создать FI документ такой, чтобы во всех суммах позиции кроме DMBE2 было 0.

Пробовал кучу вариантов задания суммы в lt_ca, но либо заполнена BSEG-WRBTR, либо не проводит документы.

Пожалуйста, подскажите правильный вариант заполнения таблиц для BAPI_ACC_DOCUMENT_POST

Code:
DATA:
  ls_header                       TYPE bapiache09,
  lt_return                       TYPE TABLE OF bapiret2,
  lt_ca                           TYPE TABLE OF bapiaccr09,
  ls_ca                           TYPE bapiaccr09,
  ls_gl                           TYPE bapiacgl09,
  lt_gl                           TYPE TABLE OF bapiacgl09.

ls_header-username = sy-uname.
ls_header-comp_code = '1100'.
ls_header-doc_date = '20120831'.
ls_header-pstng_date = '20120831'.
ls_header-fisc_year = '2012'.
ls_header-fis_period = '08'.
ls_header-doc_type = 'SA'.
ls_header-header_txt = 'test'.
ls_header-ref_doc_no = '2012'.

ls_ca-itemno_acc = '1'.
ls_ca-curr_type = '00'.
ls_ca-currency = 'RUB'.
ls_ca-amt_doccur = 0.
APPEND ls_ca TO lt_ca.

ls_ca-itemno_acc = '2'.
ls_ca-curr_type = '00'.
ls_ca-currency = 'RUB'.
ls_ca-amt_doccur = 0.
APPEND ls_ca TO lt_ca.

ls_ca-itemno_acc = '1'.
ls_ca-curr_type = '30'.
ls_ca-currency = 'RUB'.
ls_ca-amt_doccur = 1000.
APPEND ls_ca TO lt_ca.
*
ls_ca-itemno_acc = '2'.
ls_ca-curr_type = '30'.
ls_ca-currency = 'RUB'.
ls_ca-amt_doccur = -1000.
APPEND ls_ca TO lt_ca.

ls_gl-itemno_acc = '1'.
ls_gl-gl_account = '7702000000'.
ls_gl-item_text = 'ITEM_TEXT'.
ls_gl-acct_type  = 'S'.
APPEND ls_gl TO lt_gl.

ls_gl-itemno_acc = '2'.
ls_gl-gl_account = '9903080000'.
ls_gl-item_text = 'ITEM_TEXT'.
ls_gl-acct_type  = 'S'.
APPEND ls_gl TO lt_gl.

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
  EXPORTING
    documentheader          = ls_header
  TABLES
    accountgl               = lt_gl
    currencyamount          = lt_ca
    return                  = lt_return

          .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  EXPORTING
    wait = 'X'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Вт, сен 25 2012, 12:29 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пт, сен 21 2012, 21:01
Сообщения: 4
Что в lt_return ?
Для обнуления попробуйте badi ACC_DOCUMENT.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Вт, сен 25 2012, 15:13 
Ассистент
Ассистент

Зарегистрирован:
Пн, апр 18 2005, 11:09
Сообщения: 47
В цикле пусти


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Вт, сен 25 2012, 17:21 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Для проверки нет ли ошибок в документе можешь использовать BAPI_ACC_DOCUMENT_CHECK, тогда откатывать ничего не нужно.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Ср, сен 26 2012, 06:41 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
to Rednada, как это с пакетником проблем не возникло? Такую задачу вообще пакетником не реализовать. (прогнать пакетником в цикле создание доков, без нажатия кнопки сохранить и затем если не было якобы ошибок, прогнать еще раз с сохранением - не считается...).


В лупе вызываете BAPI_ACC_DOCUMENT_CHECK. Если все ок, опять же в лупе вызываете BAPI_ACC_DOCUMENT_POST, после лупа анализируете общий return и вызываете один раз BAPI_TRANSACTION_COMMIT или BAPI_TRANSACTION_ROLLBACK.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Ср, сен 26 2012, 06:45 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
И еще, вот это не понятно
Цитата:
подзадача: с помощью BAPI создать FI документ такой, чтобы во всех суммах позиции кроме DMBE2 было 0.

Пробовал кучу вариантов задания суммы в lt_ca, но либо заполнена BSEG-WRBTR, либо не проводит документы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Ср, сен 26 2012, 09:37 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 10 2007, 20:37
Сообщения: 72
Похоже я неправильно объяснил постановку, не прочитал перед тем как постить. Извиняюсь.

Задача: создать или не создать несколько FI документов одновременно таких, чтобы во всех суммах позиции кроме DMBE2 было 0.

Естественно такую задачу нужно решать вызовом BAPI в цикле, это понятно и ежу )

Не получается создавать такие документы с помощью BAPI. А пакетником они создаются без проблем.

Для присланного примера lt_returns:
E RW 609 Ошибка в документе: BKPFF $ ERDCLNT150
E RW 015 RW-интерфейс: противоречивые данные заголовка RW-документа для обновления

Если в программе поставить не нулевые суммы, например 10, в типе валюты "00", то документ проведется.
Причем BSEG-WRBTR, DMBTR, DMBE2 = 10. Т.е.
Code:
ls_ca-itemno_acc = '1'.
ls_ca-curr_type = '30'.
ls_ca-currency = 'RUB'.
ls_ca-amt_doccur = 1000.

не работает, хотя вроде как должна http://scn.sap.com/thread/1521079 .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Пн, окт 01 2012, 16:54 
Начинающий
Начинающий

Зарегистрирован:
Пн, окт 01 2012, 16:41
Сообщения: 1
Добрый день.
В коде неточность. Решением проблемы будет изменение валюты в куске кода ls_ca-curr_type = '30'. Так как здесь мы должны указывать не ту же самую валюту, а Валюта концерна. Для ls_ca-curr_type = '00' - Валюту документа
Code:
ls_ca-itemno_acc = '2'.
ls_ca-curr_type = '00'.
ls_ca-currency = 'RUB'.
ls_ca-amt_doccur = 55.
APPEND ls_ca TO lt_ca.

ls_ca-itemno_acc = '1'.
ls_ca-curr_type = '30'.
ls_ca-currency = 'EUR'." например
ls_ca-amt_doccur = 1000.
APPEND ls_ca TO lt_ca.

+ тогда можно в этом куске указать 0
Code:
ls_ca-itemno_acc = '2'.
ls_ca-curr_type = '00'.
ls_ca-currency = 'RUB'.
ls_ca-amt_doccur = 0.
APPEND ls_ca TO lt_ca.

в итоге получится WRBTR и DMBTR нулевые суммы, а в dmbe2 нужная. В данном примере 1000. У меня такой код отрабатывает.

P.S. в интернете находил вот такие решения: через extention1 передать нужное значение в bapi далее поменять нужное поле в OPEN FI событие RWBAPI01 или в BADI ACC_DOCUMENT на основании extention
Работоспособность не проверял.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Пн, окт 01 2012, 17:03 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 10 2007, 20:37
Сообщения: 72
Спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Чт, дек 06 2012, 13:16 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
Добрый день.
Тема у меня такая же. Поэтому другую не открывала.
Возникла необходим ость программно выполнять транзакцию F-02 (загрузить авансы по дебиторам).
1) заполняем шапку
2) позиция 1. Вносим КП 40; Счет *********9; Сумму; Присвоение; Текст
3) позиция 2. Вносим КП 19; Счет 77(дебитор); Сумму – 10 ; Сумму налога 1.67; Код налога А2; Присвоение; Текст ;Торговый документ.
При сохранении получаем 6 строчек(мне непонятных): суммы с налогами.
После долгих мучений и поиске и инете светлых мыслей написала часть проги:

Code:
1)
documentheader-bus_act    = 'RFBU'.
documentheader-username   = sy-uname.
documentheader-header_txt = 'Test'.
documentheader-comp_code  = '1000'.     "BE
documentheader-doc_date   = sy-datum.
documentheader-pstng_date = sy-datum.
documentheader-doc_type   = 'OD'.
documentheader-ref_doc_no = 'test'.
documentheader-fis_period = '12'.
documentheader-ref_doc_no = '352'.  "Ссылочный номер документа
2)
accountgl-itemno_acc = '1'.
accountgl-gl_account = '*********9'.
accountgl-vendor_no  = '0000000077'.
accountgl-item_text  = 'Test'.
accountgl-pstng_date = sy-datum.
accountgl-alloc_nmbr = '356'. "присвоение
accountgl-sales_ord  = '4000000001'. "заказ
accountgl-s_ord_item = '1'. "позиция
APPEND accountgl.
3)
accounttax-itemno_acc = '3'.
accounttax-cond_key   =  'MWAS'.
accounttax-acct_key   = 'MWS'.
accounttax-tax_code   = 'A2'.
accounttax-itemno_tax = '1'.
APPEND accounttax.


С суммами вообще интересно. Я даже не знаю как прописать эти самые 10 UAH и как прописать 1.67 Так что код ниже описан не верно.А как нужно не понимаю.

Code:
currencyamount-itemno_acc = '1'.
currencyamount-currency   = 'UAH'.
currencyamount-CURRENCY_ISO = 'UAH'.
currencyamount-curr_type    = '10'.
currencyamount-amt_doccur   =  '10'.
currencyamount-amt_base     = '1.67'.
currencyamount-tax_amt      = '10'.
currencyamount-disc_base    = '10'.
APPEND currencyamount.

currencyamount-itemno_acc = '2'.
currencyamount-curr_type    = '10'.
currencyamount-currency   = 'UAH'.
currencyamount-CURRENCY_ISO = 'UAH'.
currencyamount-amt_doccur   =  '10-'.
currencyamount-amt_base     = '1.67-'.
currencyamount-disc_base    = '10-'.
currencyamount-tax_amt      = '10-'.
APPEND currencyamount.

currencyamount-itemno_acc = '3'.
currencyamount-curr_type    = '10'.
currencyamount-currency   = 'UAH'.
currencyamount-CURRENCY_ISO = 'UAH'.
currencyamount-amt_doccur   =  '10-'.
currencyamount-amt_base     = '1.67-'.
currencyamount-disc_base    = '10-'.
currencyamount-tax_amt      = '10-'.
APPEND currencyamount.

******************************************
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
  EXPORTING
    documentheader    = documentheader
  IMPORTING
    obj_type          = obj_type
    obj_key           = obj_key
    obj_sys           = obj_sys
  TABLES
    accountgl         = accountgl
    accountreceivable = accountreceivable
    accounttax        = accounttax
    currencyamount    = currencyamount
    criteria          = criteria
    extension1        = extension1
    return            = t_bapiret2.



Конечно выход есть написать пакетник, но мы предпочтения отдаем ФМ.
Может кто-то знает как решать подобные задачи.
Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Вт, дек 11 2012, 13:05 
Ассистент
Ассистент

Зарегистрирован:
Пт, ноя 03 2006, 07:42
Сообщения: 31
Ну у меня вот такой код работает (часть касательно сумм):

Code:
loop at bseg.   
    clear it_currencyamount.
    it_currencyamount-itemno_acc   = sy-tabix.
    it_currencyamount-curr_type    = '00'.

    it_currencyamount-currency     = bkpf-waers.

    if bkpf-waers = (локальная валюта).
      it_currencyamount-amt_doccur   = bseg-wrbtr.
    else.
      it_currencyamount-exch_rate = bseg-wrbtr / bseg-dmbtr. "??
      it_currencyamount-amt_doccur = bseg-dmbtr.
    endif.

    if bseg-shkzg = 'H'.
         it_currencyamount-amt_doccur = it_currencyamount-amt_doccur * ( -1 ).
    endif.
    append it_currencyamount.
endloop.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Пт, дек 13 2013, 12:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 19 2012, 08:33
Сообщения: 182
Пол: Мужской
Добрый день, есть небольшая проблема.

Загружаю зарплаты из входного excel файла.

Заполняю заголовок и позиции бапи:
Code:
  CONCATENATE 'SALARY' i_month p_gjahr INTO ls_bapi_docheader-header_txt SEPARATED BY space.
  ls_bapi_docheader-comp_code = p_bukrs.
  ls_bapi_docheader-doc_date = sy-datum.
  ls_bapi_docheader-pstng_date = sy-datum.
  ls_bapi_docheader-fisc_year = p_gjahr.
  ls_bapi_docheader-doc_type = ls_settings_zp-blart.


"Куда ( сумма с + )
  clear ls_gl.
  ls_gl-itemno_acc = '1'.
  ls_gl-gl_account = ls_settings_zp-zacc_d.
  append ls_gl to lt_gl.

  clear ls_ca.
  ls_ca-itemno_acc = '1'.
  ls_ca-curr_type  = '00'.
  ls_ca-currency   = 'RUB'.
  ls_ca-amt_doccur = i_summ.
  append ls_ca to lt_ca.


"Откуда ( сумма с - )
  clear ls_gl.
  ls_gl-itemno_acc = '2'.
  ls_gl-gl_account = ls_settings_zp-zacc_k.
  append ls_gl to lt_gl.

  clear ls_ca.
  ls_ca-itemno_acc = '2'.
  ls_ca-curr_type  = '00'.
  ls_ca-currency   = 'RUB'.
  ls_ca-amt_doccur = i_summ * ( -1 ).
  append ls_ca to lt_ca.

  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
      EXPORTING
        DOCUMENTHEADER          = ls_bapi_docheader
      TABLES
        ACCOUNTGL               = lt_gl
        CURRENCYAMOUNT          = lt_ca
        RETURN                  = lt_return
        .


На выходе бапи бодро рапортует что Осч такой-то не определен в плане счетов 1000
При проверке в fs03 эти счета есть.
Что я делают не так?

_________________
crusty написал(а):
Логистика - понятие растяжимое


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование BAPI_ACC_DOCUMENT_POST
СообщениеДобавлено: Пт, дек 13 2013, 12:53 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 19 2012, 08:33
Сообщения: 182
Пол: Мужской
Orgazm написал:
Добрый день, есть небольшая проблема.

Загружаю зарплаты из входного excel файла.

Заполняю заголовок и позиции бапи:
Code:
  CONCATENATE 'SALARY' i_month p_gjahr INTO ls_bapi_docheader-header_txt SEPARATED BY space.
  ls_bapi_docheader-comp_code = p_bukrs.
  ls_bapi_docheader-doc_date = sy-datum.
  ls_bapi_docheader-pstng_date = sy-datum.
  ls_bapi_docheader-fisc_year = p_gjahr.
  ls_bapi_docheader-doc_type = ls_settings_zp-blart.


"Куда ( сумма с + )
  clear ls_gl.
  ls_gl-itemno_acc = '1'.
  ls_gl-gl_account = ls_settings_zp-zacc_d.
  append ls_gl to lt_gl.

  clear ls_ca.
  ls_ca-itemno_acc = '1'.
  ls_ca-curr_type  = '00'.
  ls_ca-currency   = 'RUB'.
  ls_ca-amt_doccur = i_summ.
  append ls_ca to lt_ca.


"Откуда ( сумма с - )
  clear ls_gl.
  ls_gl-itemno_acc = '2'.
  ls_gl-gl_account = ls_settings_zp-zacc_k.
  append ls_gl to lt_gl.

  clear ls_ca.
  ls_ca-itemno_acc = '2'.
  ls_ca-curr_type  = '00'.
  ls_ca-currency   = 'RUB'.
  ls_ca-amt_doccur = i_summ * ( -1 ).
  append ls_ca to lt_ca.

  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
      EXPORTING
        DOCUMENTHEADER          = ls_bapi_docheader
      TABLES
        ACCOUNTGL               = lt_gl
        CURRENCYAMOUNT          = lt_ca
        RETURN                  = lt_return
        .


На выходе бапи бодро рапортует что Осч такой-то не определен в плане счетов 1000
При проверке в fs03 эти счета есть.
Что я делают не так?


Вопрос снят, нужно использовать преобразование с ведущими нулями 8)

_________________
crusty написал(а):
Логистика - понятие растяжимое


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

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


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

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


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

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