ABAP FB05 清账函数:POSTING_INTERFACE_CLEARING

本文详细描述了在使用特定的会计系统中,如何通过函数POSTING_INTERFACE_START和POSTING_INTERFACE_CLEARING进行清账操作,涉及的数据结构包括LT_BLNTAB、LS_BLNTAB、LT_FTCLEAR等,以及处理错误和状态信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

清账相关事物代码: 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.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值