четверг, 24 февраля 2011 г.

POSTING_INTERFACE

IF NOT ls_bkpf_key_1 IS INITIAL AND NOT ls_bkpf_key_2 IS INITIAL.
* Выравниванием получившиеся документы
CALL FUNCTION 'POSTING_INTERFACE_START'
EXPORTING
i_function = 'C'
i_mode = md_mode
EXCEPTIONS
OTHERS = 0.

* Header
ls_ftpost-stype = 'K'. "header indicator
ls_ftpost-count = 1.

ls_ftpost-fnam = 'BKPF-BLDAT'.
WRITE l_datum TO ls_ftpost-fval DD/MM/YYYY.
APPEND ls_ftpost TO lt_ftpost.

ls_ftpost-fnam = 'BKPF-BLART'.
ls_ftpost-fval = 'KA'.
APPEND ls_ftpost TO lt_ftpost.

ls_ftpost-fnam = 'BKPF-BUKRS'.
ls_ftpost-fval = -bukrs.
APPEND ls_ftpost TO lt_ftpost.

ls_ftpost-fnam = 'BKPF-BUDAT'.
WRITE l_datum TO ls_ftpost-fval DD/MM/YYYY.
APPEND ls_ftpost TO lt_ftpost.

ls_ftpost-fnam = 'BKPF-WAERS'.
ls_ftpost-fval = -unitpriceunit.
APPEND ls_ftpost TO lt_ftpost.

ls_ftpost-fnam = 'BKPF-XBLNR'.
ls_ftpost-fval = -recntxtold(16).
APPEND ls_ftpost TO lt_ftpost.

ls_ftpost-fnam = 'BKPF-BKTXT'.
ls_ftpost-fval = -recntxtold.
APPEND ls_ftpost TO lt_ftpost.

* Items for clearing
ls_ftclear-agkoa = 'K'.
ls_ftclear-agkon = -partner.
ls_ftclear-agbuk = -bukrs.
ls_ftclear-xnops = 'X'.
ls_ftclear-agums = ' '.
ls_ftclear-selfd = 'BELNR'.

ls_ftclear-selvon = ls_bkpf_key_1-belnr.
ls_ftclear-selvon+10 = ls_bkpf_key_1-gjahr.
ls_ftclear-selvon+14 = '001'. "BELNR/GJAHR/BUZEI
CONDENSE ls_ftclear-selvon NO-GAPS.
APPEND ls_ftclear TO lt_ftclear.

ls_ftclear-selvon = ls_bkpf_key_2-belnr.
ls_ftclear-selvon+10 = ls_bkpf_key_2-gjahr.
ls_ftclear-selvon+14 = '001'. "BELNR/GJAHR/BUZEI
CONDENSE ls_ftclear-selvon NO-GAPS.
APPEND ls_ftclear TO lt_ftclear.

CALL FUNCTION 'POSTING_INTERFACE_CLEARING'
EXPORTING
i_auglv = 'UMBUCHNG'
i_tcode = 'FB05'
IMPORTING
e_msgid = l_msgid
e_msgno = l_msgno
e_msgty = l_msgty
e_msgv1 = l_msgv1
e_msgv2 = l_msgv2
e_msgv3 = l_msgv3
e_msgv4 = l_msgv4
e_subrc = l_subrc
TABLES
t_blntab = lt_blntab
t_ftclear = lt_ftclear
t_ftpost = lt_ftpost
t_fttax = lt_fttax
EXCEPTIONS
clearing_procedure_invalid = 1
clearing_procedure_missing = 2
table_t041a_empty = 3
transaction_code_invalid = 4
amount_format_error = 5
too_many_line_items = 6
company_code_invalid = 7
screen_not_found = 8
no_authorization = 9
OTHERS = 10.
IF sy-subrc = 0 AND l_subrc = 0.
-status = mc_stat_good.
LOOP AT lt_blntab INTO ls_blntab.
ls_items-bukrs = ls_blntab-bukrs.
ls_items-lifnr = -partner.
ls_items-zuonr = -recnnr.
ls_items-flowtype = -flowtype.
ls_items-taxcode = -taxcode.
ls_items-belnr = ls_blntab-belnr.
ls_items-gjahr = ls_blntab-gjahr.
COLLECT ls_items INTO mt_items.
ENDLOOP.
ELSE.
IF sy-subrc <> 0.
es_message-msgty = sy-msgty.
es_message-msgid = sy-msgid.
es_message-msgno = sy-msgno.
es_message-msgv1 = sy-msgv1.
es_message-msgv2 = sy-msgv2.
es_message-msgv3 = sy-msgv3.
es_message-msgv4 = sy-msgv4.
ELSE.
es_message-msgty = l_msgty.
es_message-msgid = l_msgid.
es_message-msgno = l_msgno.
es_message-msgv1 = l_msgv1.
es_message-msgv2 = l_msgv2.
es_message-msgv3 = l_msgv3.
es_message-msgv4 = l_msgv4.
ENDIF.
ENDIF.


* Другой пример

AUGLV                                              EINGZAHL
TCODE                                              FB05

FTPOST[]
1             K             001        BKPF-BLDAT       25.05.2012
2             K             001        BKPF-BLART       KZ
3             K             001        BKPF-BUKRS       0700
4             K             001        BKPF-BUDAT      25.05.2012
5             K             001        BKPF-WAERS      EUR
6             K             001        BKPF-XBLNR       GPB1 EURC 12525
7             K             001        BKPF-BKTXT        0000053400001
8             K             001        RF05A-AUGTX    Поступление валюты. Договор пос
9             P             001        BSEG-BSCHL       40
10          P             001        BSEG-HKONT     5212011021
11          P             001        BSEG-WRBTR     2.500,00
12          P             001        BSEG-VALUT      25.05.2012
13          P             001        BSEG-ZUONR     0000053400001EUR
14          P             001        BSEG-SGTXT       Поступление валюты. Договор пос

FTCLEAR[]
1             K             0005000011       0700                                   C                           BELNR   1500000021
2             K             0005000011       0700                                   C                           BELNR   1500000023

Комментариев нет: