FUNCTION ZFI_FB05_CLEARING.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_BUKRS) TYPE BUKRS
*" VALUE(I_BLART) TYPE BLART
*" VALUE(I_BLDAT) TYPE BLDAT DEFAULT SY-DATUM
*" VALUE(I_BUDAT) TYPE BUDAT DEFAULT SY-DATUM
*" VALUE(I_WAERS) TYPE WAERS DEFAULT 'CNY'
*" EXPORTING
*" VALUE(E_MSGTY) TYPE SY-MSGTY
*" VALUE(E_MEEAGE) TYPE CHAR255
*" TABLES
*" T_FTCLEAR STRUCTURE ZFIS002
*"----------------------------------------------------------------------
* 初始化
CLEAR:
GT_BLNTAB,
GS_BLNTAB,
GT_FTCLEAR,
GS_FTCLEAR,
GT_FTPOST,
GS_FTPOST,
GT_FTTAX,
GS_FTTAX.
* 内部会计界面初始信息
CALL FUNCTION 'POSTING_INTERFACE_START'
EXPORTING
I_FUNCTION = 'C' " 功能:B批处理,C调用事务,I暂不支持
I_KEEP = 'X' " 仅BDC:用于保存已处理会话的指示符
I_MODE = 'N' " 处理模式(用于调用事务)
EXCEPTIONS
CLIENT_INCORRECT = 1
FUNCTION_INVALID = 2
GROUP_NAME_MISSING = 3
MODE_INVALID = 4
UPDATE_INVALID = 5
OTHERS = 6.
IF SY-SUBRC <> 0 .
MESSAGE E010(ZFI001) INTO E_MEEAGE.
E_MSGTY = SY-MSGTY.
RETURN.
ENDIF.
* 凭证抬头和项目:K 代抬头 P 代表ITEM
PERFORM FRM_POPULATE_FTPOST USING 'K' 1 'BKPF-BUKRS'
I_BUKRS. " 公司代码
PERFORM FRM_POPULATE_FTPOST USING 'K' 1 'BKPF-BLART'
I_BLART. " 凭证类型
PERFORM FRM_POPULATE_FTPOST USING 'K' 1 'BKPF-BLDAT'
I_BLDAT. " 凭证日期
PERFORM FRM_POPULATE_FTPOST USING 'K' 1 'BKPF-BUDAT'
I_BUDAT. " 过账日期
PERFORM FRM_POPULATE_FTPOST USING 'K' 1 'BKPF-WAERS'
I_WAERS. " 货币码
* 清算数据
LOOP AT T_FTCLEAR ASSIGNING FIELD-SYMBOL(<LFS_FTCLEAR>).
GS_FTCLEAR-AGKOA = 'D'. "科目类型
GS_FTCLEAR-AGBUK = I_BUKRS. "company code
GS_FTCLEAR-SELFD = 'BELNR'. "凭证索引中的字段名
GS_FTCLEAR-XNOPS = ABAP_TRUE. "标志: 只选择不是特定总帐的未清项目 ?
GS_FTCLEAR-SELVON = <LFS_FTCLEAR>-SEL01. "选择未清项目的搜索标准的输入字段
APPEND GS_FTCLEAR TO GT_FTCLEAR.
CLEAR GS_FTCLEAR.
ENDLOOP.
* 清账
CALL FUNCTION 'POSTING_INTERFACE_CLEARING'
EXPORTING
I_AUGLV = 'UMBUCHNG' "转账并清账
I_TCODE = 'FB05'
I_SGFUNCT = 'C'
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
TABLES
T_BLNTAB = GT_BLNTAB
T_FTCLEAR = GT_FTCLEAR
T_FTPOST = GT_FTPOST
T_FTTAX = GT_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
( SY-MSGTY = 'E' OR
SY-MSGTY = 'A' ).
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
INTO E_MEEAGE.
E_MSGTY = 'E'.
ENDIF.
CALL FUNCTION 'POSTING_INTERFACE_END'
EXCEPTIONS
SESSION_NOT_PROCESSABLE = 1
OTHERS = 2.
IF SY-SUBRC <> 0 .
MESSAGE E010(ZFI001) INTO E_MEEAGE.
E_MSGTY = SY-MSGTY.
ENDIF.
ENDFUNCTION. "#EC CI_VALPAR
TOP
FUNCTION-POOL ZFM_FI_CLEARING. "MESSAGE-ID ..
* 全局变量
DATA: GT_BLNTAB TYPE STANDARD TABLE OF BLNTAB,
GS_BLNTAB TYPE BLNTAB,
GT_FTCLEAR TYPE STANDARD TABLE OF FTCLEAR ,
GS_FTCLEAR TYPE FTCLEAR ,
GT_FTPOST TYPE STANDARD TABLE OF FTPOST,
GS_FTPOST TYPE FTPOST,
GT_FTTAX TYPE STANDARD TABLE OF FTTAX,
GS_FTTAX TYPE FTTAX.
F01
*----------------------------------------------------------------------*
***INCLUDE LZFM_FI_CLEARINGF01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_POPULATE_FTPOST
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> I_BUKRS
*& --> I_BLART
*& --> I_BLDAT
*& --> I_BUDAT
*& --> I_WAERS
*&---------------------------------------------------------------------*
FORM FRM_POPULATE_FTPOST
USING PV_STYPE TYPE STYPE_PI
PV_COUNT TYPE COUNT_PI
PV_FNAM TYPE BDC_FNAM
PV_FVAL TYPE ANY.
DATA:LV_FVAL TYPE BDC_FVAL.
LV_FVAL = PV_FVAL.
GS_FTPOST-STYPE = PV_STYPE. "用于内部过帐接口的记录类型
GS_FTPOST-COUNT = PV_COUNT. "对于凭证抬头或行项目的计数器(记帐界面)
GS_FTPOST-FNAM = PV_FNAM. "BDC 字段名
GS_FTPOST-FVAL = LV_FVAL. "BDC 字段值
APPEND GS_FTPOST TO GT_FTPOST.
CLEAR GS_FTPOST.
ENDFORM.