tav написал:
Вы хотите сказать что с помощью BAPI_ACC_GL_POSTING_POST я не смогу реализовать то, что мне нужно?
Дело в том, что изначально писал не я, поэтому переделывать не особо хочется, но если выхода нет, то что в данном случае порекомендуете использовать вместо BAPI?
Реализовать-то можно, но либо расширив BAPI, либо уже после проводки. Рекомендую переделать на FIPI, это по сути группа ФМов, правильно делающих пакетный ввод проводки. При этом существующая деривация у тебя отработает как надо, в точности как при проводке руками через FB01. Настройку деривации и её тест можешь посмотреть в тр-ии KEDR.
Пример пакетника через FIPI смотри в документации к ФМ POSTING_INTERFACE_DOCUMENT, либо вот:
Code:
DEFINE head.
clear t_ftpost.
t_ftpost-stype = 'K'.
t_ftpost-count = &1.
t_ftpost-fnam = &2.
t_ftpost-fval = &3.
append t_ftpost.
END-OF-DEFINITION.
DEFINE posn.
clear t_ftpost.
t_ftpost-stype = 'P'.
t_ftpost-count = &1.
t_ftpost-fnam = &2.
t_ftpost-fval = &3.
append t_ftpost.
END-OF-DEFINITION.
FORM post_fipi USING pv_tabix LIKE sy-tabix
CHANGING p_post LIKE gs_out2.
DATA: l_hkont TYPE c LENGTH 10.
DATA: t_blntab LIKE blntab OCCURS 0 WITH HEADER LINE.
DATA: t_ftpost LIKE ftpost OCCURS 0 WITH HEADER LINE.
DATA: t_fttax LIKE fttax OCCURS 0 WITH HEADER LINE.
DATA: l_wrbtr TYPE c LENGTH 16,
lv_dmbe LIKE p_post-wrbtr,
lv_sdmbe LIKE l_wrbtr.
DATA: l_blart TYPE blart.
DATA: l_budat TYPE c LENGTH 10.
DATA: l_bldat TYPE c LENGTH 10.
DATA: lv_menge TYPE c.
DATA: lv_pernr TYPE pernr_d,
lv_hkont_d TYPE hkont,
lv_hkont_c TYPE hkont,
lv_datum TYPE char11.
DATA lf_rcode LIKE sy-subrc.
DATA:
lv_tabix LIKE sy-tabix.
FIELD-SYMBOLS:
<ls_out2> LIKE LINE OF gt_out2,
<ls_log> LIKE LINE OF gt_ret_fipi.
FIELD-SYMBOLS: <ls_put> LIKE LINE OF gt_put,
<ls_tbsl> LIKE LINE OF gt_tbsl.
DATA l_zeile TYPE n LENGTH 5.
l_zeile = pv_tabix.
*
** lv_mode = 'N'. "Режим выполнения пакетного ввода
CALL FUNCTION 'POSTING_INTERFACE_START'
EXPORTING
* I_CLIENT = SY-MANDT
i_function = 'C' "Есть возможность просто создать пакетник в SM35 для последующего выполнения
* I_GROUP = ' '
* I_HOLDDATE = ' '
* I_KEEP = ' '
i_mode = p_batch
* I_UPDATE = 'S'
* I_USER = ' '
i_user = sy-uname
* I_XBDCC = ' '
EXCEPTIONS
client_incorrect = 1
function_invalid = 2
group_name_missing = 3
mode_invalid = 4
update_invalid = 5
OTHERS = 6
.
IF sy-subrc <> 0.
...
EXIT.
ENDIF.
*
WRITE p_post-budat TO l_budat.
IF p_post-bldat IS INITIAL.
WRITE p_post-budat TO l_bldat.
ELSE.
WRITE p_post-bldat TO l_bldat.
ENDIF.
WRITE p_post-wrbtr TO l_wrbtr. "#EC UOM_IN_MES
lv_dmbe = 0.
WRITE lv_dmbe TO lv_sdmbe.
WRITE sy-datum TO lv_datum.
CONCATENATE 'THAT BKTXT' lv_datum INTO p_post-bktxt SEPARATED BY space.
IF p_per = 'X'.
l_blart = 'PX'.
ELSE.
l_blart = 'SA'. "'WX'.
ENDIF.
head: 1 'BKPF-BLART' l_blart,
1 'BKPF-BUKRS' p_bukrs,
1 'BKPF-BUDAT' l_budat,
1 'BKPF-BLDAT' l_bldat,
1 'BKPF-WAERS' p_post-waers,
1 'BKPF-XBLNR' p_post-xblnr,
1 'BKPF-BKTXT' p_post-bktxt.
posn: 1 'RF05A-NEWBS' p_post-bschl_c,
1 'RF05A-NEWKO' p_post-hkont_c,
1 'BSEG-WRBTR' l_wrbtr,
1 'BSEG-DMBE2' lv_sdmbe.
* 1 'BSEG-SGTXT' p_post-sgtxt.
* IF p_post-xref1 IS NOT INITIAL.
* posn: 2 'BSEG-XREF1' p_post-xref1.
* ENDIF.
posn: 2 'RF05A-NEWBS' p_post-bschl_d,
2 'RF05A-NEWKO' p_post-hkont_d,
2 'BSEG-WRBTR' l_wrbtr,
2 'BSEG-DMBE2' lv_sdmbe.
CALL FUNCTION 'POSTING_INTERFACE_DOCUMENT'
EXPORTING
i_tcode = 'FBB1' "'FB01'
IMPORTING
e_msgid = sy-msgid
e_msgno = sy-msgno
e_msgty = sy-msgty
e_msgv1 = sy-msgv1
e_msgv2 = sy-msgv2
e_msgv3 = sy-msgv3
e_msgv4 = sy-msgv4
e_subrc = lf_rcode
TABLES
t_blntab = t_blntab
t_ftpost = t_ftpost
t_fttax = t_fttax
EXCEPTIONS
account_missing = 1
company_code_missing = 2
posting_key_invalid = 3
posting_key_missing = 4
record_type_invalid = 5
transaction_code_invalid = 6
amount_format_error = 7
too_many_line_items = 8
company_code_invalid = 9
screen_not_found = 10
no_authorization = 11
OTHERS = 12.
IF sy-subrc <> 0.
...
EXIT.
ENDIF.
CALL FUNCTION 'POSTING_INTERFACE_END'
* EXPORTING
* I_BDCIMMED = ' '
* I_BDCSTRTDT = NO_DATE
* I_BDCSTRTTM = NO_TIME
EXCEPTIONS
session_not_processable = 1
OTHERS = 2
.
IF sy-subrc <> 0.
...
EXIT.
ENDIF.
COMMIT WORK AND WAIT.
ENDFORM. " POST_FIPI