Текущее время: Вс, июл 20 2025, 22:52

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


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

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


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

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