POSTING_INTERFACE_DOCUMENT解决特别总账'W'类型的过账问题

Error F5246 "Special G/L transactions of type & are not supported" is being raised when trying to post a
document via BAPI (i.e. BAPI_ACC_DOCUMENT_POST).
环境
SAP Release Independent •
ERP Financial Accounting •
General Ledger Accounting •
Posting/Clearing •
Accounting interface •
重现问题
Enter a BAPI (i.e. BAPI_ACC_DOCUMENT_POST). 1.
Inform special G/L indicators class = 'W' (bill of exchange). 2.
Post the document. 3.
The system issues message F5246. 4.
原因
Bill of exchange postings are not supported by accounting interface, therefore a bill of exchange posting via
BAPI_ACC_DOCUMENT_POST is not possible. The reason for error F5246 to be raised is that the interface
posting with special G/L indicator W is not designed for a posting with this indicator for downpayment or bill of
exchange.
解决方案
In this case the bill of exchange documents should be posted manually in financial accounting.
Another option to post bill of exchange documents in an automated process is to use batch-input.

SAP给出的解决方案是采用BDC的方式,其实SAP有提供一个函数实现F-02的BATCH-INPUT,代码如下:

1@34qwer*&---------------------------------------------------------------------*
*& Report Y_BAPI_POSTING_INTERFACE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT y_bapi_posting_interface.

DATA: ls_ftpost TYPE ftpost,
      lt_ftpost TYPE TABLE OF ftpost,
      lt_fttax  TYPE TABLE OF fttax,
      lt_blntab TYPE TABLE OF blntab,
      lv_subrc  TYPE sy-subrc,
      lv_msg    TYPE bapiret2.


CALL FUNCTION 'POSTING_INTERFACE_START'
  EXPORTING
    i_function = 'C'         "For Batch Input.
    i_group    = 'ZSESSION1'  "Name of the session for creation
    i_keep     = 'X'          "Retain the session
    i_user     = sy-uname.    "User name
*CALL FUNCTION 'POSTING_INTERFACE_START'
*  EXPORTING
*    i_function = 'B'         " For Batch Input.
*    i_group    = 'ZSESSION'  " Name of the session for creation
*    i_keep     = 'X'          " Retain the session
*    i_user     = sy-uname.    " User name

DEFINE macro.
  ls_ftpost-fnam = &1.
  ls_ftpost-fval = &2.
  APPEND ls_ftpost TO lt_ftpost.
END-OF-DEFINITION.


"header:
ls_ftpost-stype = 'K'.        "Header indicator
ls_ftpost-count = '001'.      "First item

macro: 'BKPF-BLDAT' '20190919',
       'BKPF-BLART' 'SA',
       'BKPF-BUKRS' '1111',
       'BKPF-BUDAT' sy-datum.

*"items:
ls_ftpost-stype = 'P'.
ls_ftpost-count = '001'.

macro: 'RF05A-NEWBS' '39',
       'RF05A-NEWKO' '2000010',
       'RF05A-NEWUM' 'W',
       'BSEG-ZFBDT' '20190919',
       'BSEG-WRBTR' '100'.

ls_ftpost-stype = 'P'.
ls_ftpost-count = '002'.

macro: 'RF05A-NEWBS' '40',
       'RF05A-NEWKO' '40030103',
       'BSEG-WRBTR' '100',
       'COBL-RMVCT' '100'.


*
CALL FUNCTION 'POSTING_INTERFACE_DOCUMENT'
  EXPORTING
    i_tcode   = 'FB01'          "Name of t-code for Posting
    i_sgfunct = 'C'            "Batch input session
  IMPORTING
    e_subrc   = lv_subrc
    e_msgid   = lv_msg-id        "Error handling
    e_msgty   = lv_msg-type      "Error handling
    e_msgno   = lv_msg-number    "Error handling
    e_msgv1   = lv_msg-message_v1 "Error handling
    e_msgv2   = lv_msg-message_v2 "Error handling
    e_msgv3   = lv_msg-message_v3 "Error handling
    e_msgv4   = lv_msg-message_v4 "Error handling
  TABLES
    t_ftpost  = lt_ftpost        "Internal table populated in Step 2
    t_fttax   = lt_fttax        "Relevant for Tax calculation manually
    t_blntab  = lt_blntab       "Relevant only for Call Trans…
  EXCEPTIONS
    OTHERS    = 1.


CALL FUNCTION 'POSTING_INTERFACE_END'.

LOOP AT lt_blntab INTO DATA(ls_blntab).
   WRITE: ls_blntab-belnr,
          ls_blntab-gjahr.
ENDLOOP.

 

你可能感兴趣的:(『SAP』ABAP-BAPI)