Разбирался когда то с созданием фай дока. Все получилось, кроме налогов, если есть налоговые позиции то система отказывается создавать документ через бапи, там эта проверка прям в коде зашита.
http://sapboard.ru/forum/viewtopic.php?f=13&t=51216http://sapboard.ru/forum/viewtopic.php?f=13&t=47035&start=0Как мне подсказали коллеги из фай, в ТАПе не может быть налоговых позиций, думаю в Вашем случае вполне решаемо через этот Бапи.
Code:
*&---------------------------------------------------------------------*
*& Report ZTESTI
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ztesti.
*описание переменных
DATA: it_mwdat LIKE TABLE OF rtax1u15 WITH HEADER LINE.
DATA: my_accounttax LIKE TABLE OF bapiactx09 WITH HEADER LINE.
DATA: helpext LIKE zaccit OCCURS 10 WITH HEADER LINE.
DATA: my_header TYPE bapiache09,
my_accountgl LIKE TABLE OF bapiacgl09 WITH HEADER LINE,
my_accountreceivable LIKE TABLE OF bapiacar09 WITH HEADER LINE,
my_accountpayable LIKE TABLE OF bapiacap09 WITH HEADER LINE,
my_currencyamount LIKE TABLE OF bapiaccr09 WITH HEADER LINE,
my_extension2 LIKE TABLE OF bapiparex WITH HEADER LINE,
my_return
LIKE TABLE OF bapiret2 WITH HEADER LINE.
DATA: zwrbtr LIKE bseg-wrbtr VALUE 100.
BREAK-POINT.
*заголовок
PERFORM header.
*позиция основного счета
PERFORM gl.
"позиция кредита
PERFORM pay.
*налоги
PERFORM tax.
BREAK-POINT.
*проверка
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
EXPORTING
documentheader = my_header
* CUSTOMERCPD =
* CONTRACTHEADER =
TABLES
accountgl = my_accountgl
* ACCOUNTRECEIVABLE =
accountpayable = my_accountpayable
accounttax = my_accounttax
currencyamount = my_currencyamount
* CRITERIA =
* VALUEFIELD =
* EXTENSION1 =
return = my_return
* PAYMENTCARD =
* CONTRACTITEM =
* EXTENSION2 =
* REALESTATE =
* ACCOUNTWT =
.
BREAK-POINT.
*создание
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING: documentheader = my_header
* customercpd = my_customercpd
TABLES: accountgl = my_accountgl
accountpayable = my_accountpayable
currencyamount = my_currencyamount
extension2 = my_extension2
return = my_return
accounttax = my_accounttax.
READ TABLE my_return WITH KEY type = 'S' id = 'RW' number = '605'.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
.
ELSE.
ROLLBACK WORK.
ENDIF.
*&---------------------------------------------------------------------*
*& Form HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM header .
my_header-bus_act = 'FB01'. " GLVOR -> Организационно-экономическая операция(ТР.)
my_header-username = sy-uname. " USNAM -> Имя пользователя
my_header-header_txt = 'test ivan'. " BKTXT -> ТекстЗагДок/№ договора
my_header-comp_code = '1000'. " BUKRS -> Балансовая единица
my_header-doc_date = sy-datum. " BLDAT -> Дата документа
my_header-pstng_date = sy-datum. " BUDAT -> Дата проводки в документе
* my_HEADER-TRANS_DATE = my_HEADER-DOC_DATE. " WWERT_D -> Дата пересчета
my_header-fisc_year = sy-datum(4). " GJAHR -> Финансовый год
my_header-fis_period = sy-datum+4(2). " MONAT -> Месяц финансового года
my_header-doc_type = 'SA'. " BLART -> Вид документа
* my_HEADER-REF_DOC_NO = t_bkpf-xblnr. " XBLNR -> Ссылочный номер документа
ENDFORM. " HEADER
*&---------------------------------------------------------------------*
*& Form GL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM gl .
REFRESH my_accountgl.
my_accountgl-itemno_acc = '0000000001'. " POSNR_ACC -> Номер позиции документа учета и отчетности
my_accountgl-gl_account = '7950000022'."<<<<<<<<<<< " HKONT -> Основной счет главной бухгалтерии
my_accountgl-item_text = ''. " SGTXT -> Текст позиции
my_accountgl-pstng_date = my_header-doc_date. " BUDAT -> Дата проводки в документе
my_accountgl-fis_period = my_header-fis_period. " MONAT -> Месяц финансового года
my_accountgl-fisc_year = my_header-fisc_year. " GJAHR -> Финансовый год
* my_ACCOUNTGL-ALLOC_NMBR = t_bseg-ZUONR. " ACPI_ZUONR -> Номер присвоения
* my_ACCOUNTGL-FUNDS_CTR = t_bseg-FISTL. " FISTL -> Подразделение финансового менеджмента
my_accountgl-doc_type = my_header-doc_type. " BLART -> Вид документа
my_accountgl-comp_code = my_header-comp_code. " BUKRS -> Балансовая единица
my_accountgl-pstng_date = my_header-doc_date. " BUDAT -> Дата проводки в документе
my_accountgl-costcenter = '0001020603'."мвз<<<<<<<<<<<<<
my_accountgl-tax_code = '60'."<<<<<<<<<<<<<<<<<<
APPEND my_accountgl.
my_currencyamount-itemno_acc = '0000000001'. " POSNR_ACC -> Номер позиции документа учета и отчетности
my_currencyamount-currency_iso = 'KZT'. " WAERS_ISO -> Код ISO для валюты
my_currencyamount-currency = 'KZT'. " WAERS -> Код валюты
my_currencyamount-curr_type = '00'.
my_extension2-structure = 'ZACCIT'."доп структура для кода проводки
helpext-posnr = '0000000001'.
CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT'
EXPORTING
i_bukrs = '1000'
i_mwskz = '60'
i_waers = 'KZT'
i_wrbtr = zwrbtr
TABLES
t_mwdat = it_mwdat.
READ TABLE it_mwdat INDEX 1.
my_currencyamount-amt_doccur = it_mwdat-kawrt."t_bseg-wrbtr * -1. " BAPIWRBTR -> Сумма в валюте документа
helpext-bschl = '40'.
my_extension2-valuepart1+0(10) = helpext-posnr.
my_extension2-valuepart1+11(2) = helpext-bschl.
APPEND: my_currencyamount, my_extension2.
ENDFORM. " GL
*&---------------------------------------------------------------------*
*& Form PAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM pay .
CLEAR: my_accountpayable, my_currencyamount, my_extension2, helpext.
my_accountpayable-itemno_acc = 2. " POSNR_ACC -> Номер позиции документа учета и отчетности
my_accountpayable-vendor_no = '0005000005'. " -> Номер кредтора 1
my_accountpayable-gl_account = '3311100000'. " HKONT -> Основной счет главной бухгалтерии
my_accountpayable-alloc_nmbr = '620/УМГ-2007'. " ACPI_ZUONR -> Номер присвоения
my_accountpayable-item_text = 'sf'. " SGTXT -> Текст позиции
my_accountpayable-bus_area = '0010' .
APPEND my_accountpayable.
my_currencyamount-itemno_acc = 2. " POSNR_ACC -> Номер позиции документа учета и отчетности
my_currencyamount-currency_iso = 'KZT'. " WAERS_ISO -> Код ISO для валюты
my_currencyamount-currency = 'KZT'. " WAERS -> Код валюты
my_currencyamount-curr_type = '00'.
my_extension2-structure = 'ZACCIT'.
helpext-posnr = 2.
* IF t_bseg-shkzg EQ 'H'.
my_currencyamount-amt_doccur = zwrbtr * -1. " BAPIWRBTR -> Сумма в валюте документа
helpext-bschl = '31'.
* ELSE.
* my_currencyamount-amt_doccur = t_bseg-wrbtr. " BAPIWRBTR -> Сумма в валюте документа
* helpext-bschl = '40'.
* ENDIF.
my_extension2-valuepart1+0(10) = helpext-posnr.
my_extension2-valuepart1+11(2) = helpext-bschl.
APPEND: my_currencyamount, my_extension2.
ENDFORM. " PAY
*&---------------------------------------------------------------------*
*& Form TAX
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM tax .
CLEAR: my_currencyamount, my_extension2, helpext.
my_accounttax-itemno_acc = 3.
my_accounttax-gl_account = it_mwdat-hkont.
my_accounttax-tax_code = '60'.
my_accounttax-tax_rate = it_mwdat-msatz.
my_accounttax-acct_key = it_mwdat-ktosl.
my_accounttax-cond_key = it_mwdat-kschl.
my_accounttax-itemno_tax = 1.
APPEND my_accounttax.
my_currencyamount-itemno_acc = 3. " POSNR_ACC -> Номер позиции документа учета и отчетности
my_currencyamount-currency_iso = 'KZT'. " WAERS_ISO -> Код ISO для валюты
my_currencyamount-currency = 'KZT'. " WAERS -> Код валюты
my_currencyamount-curr_type = '00'.
my_extension2-structure = 'ZACCIT'.
helpext-posnr = 3.
* IF t_bseg-shkzg EQ 'H'.
* my_currencyamount-amt_doccur = it_mwdat-wmwst * -1. " BAPIWRBTR -> Сумма в валюте документа
* helpext-bschl = '31'.
* my_currencyamount-amt_base = it_mwdat-kawrt * -1.
* ELSE.
my_currencyamount-amt_doccur = it_mwdat-wmwst. " BAPIWRBTR -> Сумма в валюте документа
helpext-bschl = '40'.
my_currencyamount-amt_base = it_mwdat-kawrt.
* ENDIF.
my_extension2-valuepart1+0(10) = helpext-posnr.
my_extension2-valuepart1+11(2) = helpext-bschl.
APPEND: my_currencyamount, my_extension2.
ENDFORM. " TAX