清账相关事物代码: FB05
相关函数:POSTING_INTERFACE_START
POSTING_INTERFACE_CLEARING
-
-
- DATA: LT_BLNTAB TYPE STANDARD TABLE OF BLNTAB.
- DATA: LS_BLNTAB TYPE BLNTAB.
- DATA: LT_FTCLEAR TYPE STANDARD TABLE OF FTCLEAR.
- DATA: LS_FTCLEAR TYPE FTCLEAR.
- DATA: LT_FTPOST TYPE STANDARD TABLE OF FTPOST.
- DATA: LS_FTPOST TYPE FTPOST.
- DATA: LT_FTTAX TYPE STANDARD TABLE OF FTTAX.
- DATA: LS_FTTAX TYPE FTTAX.
-
- DATA: LT_GROUP TYPE STANDARD TABLE OF TY_DATA.
- DATA: LS_GROUP TYPE TY_DATA.
- DATA: LV_MODE TYPE CHAR01.
- DATA: LV_BLART TYPE BLART.
- DATA: LV_SUBRC TYPE SY-SUBRC .
- DATA: LV_MESSAGE TYPE STRING.
-
-
-
- DEFINE POPULATE_FTPOST.
- CLEAR LS_FTPOST.
- LS_FTPOST-STYPE = &1.
- LS_FTPOST-COUNT = &2.
- LS_FTPOST-FNAM = &3.
- LS_FTPOST-FVAL = &4.
- APPEND LS_FTPOST TO LT_FTPOST.
- END-OF-DEFINITION.
- SORT LT_GROUP BY GROUP.
- DELETE ADJACENT DUPLICATES FROM LT_GROUP COMPARING GROUP.
-
- LOOP AT LT_GROUP INTO LS_GROUP.
- READ TABLE GT_DATA INTO GS_DATA
- WITH KEY GROUP = LS_GROUP-GROUP
- ICON = ICON_RED_LIGHT.
- IF SY-SUBRC = 0.
- CONTINUE.
- ENDIF.
- CLEAR:LT_BLNTAB,LT_FTCLEAR,LT_FTPOST,LT_FTTAX,LV_MESSAGE.
-
- POPULATE_FTPOST: 'K' 1 'BKPF-BUKRS' LS_GROUP-BUKRS, "Company code
- 'K' 1 'BKPF-BLART' 'DR', "凭证类型
- 'K' 1 'BKPF-BLDAT' LS_GROUP-BUDAT, "凭证中的凭证日期
- 'K' 1 'BKPF-BUDAT' LS_GROUP-BUDAT, "凭证中的过帐日期
- 'K' 1 'BKPF-WAERS' LS_GROUP-WAERS. "货币码
- LOOP AT GT_DATA INTO GS_DATA WHERE BOX IS NOT INITIAL AND GROUP = LS_GROUP-GROUP.
- CLEAR LS_FTCLEAR.
- LS_FTCLEAR-AGKOA = 'D'.
- LS_FTCLEAR-AGUMS = 'D'.
- LS_FTCLEAR-AGKON = GS_DATA-KUNNR.
- LS_FTCLEAR-AGBUK = GS_DATA-BUKRS.
- LS_FTCLEAR-XNOPS = 'X'.
- LS_FTCLEAR-SELFD = 'SGTXT'.
- LS_FTCLEAR-SELVON = GS_DATA-SGTXT.
- APPEND LS_FTCLEAR TO LT_FTCLEAR.
- ENDLOOP.
- CALL FUNCTION 'POSTING_INTERFACE_START'
- EXPORTING
- I_CLIENT = SY-MANDT
- I_FUNCTION = 'C'
- I_MODE = LV_MODE
- I_KEEP = 'X'
- I_UPDATE = 'S'
- I_USER = SY-UNAME.
- "AUSGZAHL 付款
- "EINGZAHL 收款
- "GUTSCHRI 贷方凭证
- "UMBUCHNG 转帐并清帐
- CALL FUNCTION 'POSTING_INTERFACE_CLEARING'
- EXPORTING
- I_AUGLV = 'EINGZAHL' "具体选择参见上述参数说明
- 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
- E_SUBRC = LV_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 OR LT_BLNTAB IS INITIAL .
- * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
- * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
- CALL FUNCTION 'MESSAGE_TEXT_BUILD'
- EXPORTING
- MSGID = SY-MSGID
- MSGNR = SY-MSGNO
- MSGV1 = SY-MSGV1
- MSGV2 = SY-MSGV2
- MSGV3 = SY-MSGV3
- MSGV4 = SY-MSGV4
- IMPORTING
- MESSAGE_TEXT_OUTPUT = LV_MESSAGE.
-
- ENDIF.
-
- IF LT_BLNTAB IS NOT INITIAL AND LV_MESSAGE IS INITIAL .
- READ TABLE LT_BLNTAB INTO LS_BLNTAB INDEX 1.
- LOOP AT GT_DATA INTO GS_DATA WHERE BOX IS NOT INITIAL AND GROUP = LS_GROUP-GROUP..
- GS_DATA-BELNR1 = LS_BLNTAB-BELNR.
- GS_DATA-ICON = ICON_GREEN_LIGHT.
- MODIFY GT_DATA FROM GS_DATA.
- ENDLOOP.
- ELSE.
- LOOP AT GT_DATA INTO GS_DATA WHERE BOX IS NOT INITIAL AND GROUP = LS_GROUP-GROUP..
- GS_DATA-ICON = ICON_RED_LIGHT.
- GS_DATA-MSG = LV_MESSAGE.
- MODIFY GT_DATA FROM GS_DATA.
- ENDLOOP.
- ENDIF.
-
- CALL FUNCTION 'POSTING_INTERFACE_END'
- EXPORTING
- I_BDCIMMED = 'X'
- EXCEPTIONS
- SESSION_NOT_PROCESSABLE = 1
- OTHERS = 2.
-
- ENDLOOP.