FB05清账功能封装

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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值