FI财务预制凭证界面隐藏过账按钮

Posted SAP剑客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FI财务预制凭证界面隐藏过账按钮相关的知识,希望对你有一定的参考价值。

FI】财务预制凭证界面隐藏过账按钮

【背景介绍】

SAP中的会计凭证一旦过账了就不能再进行修改,但其也提供了类似国内财务软件同样的预制功能,预制凭证过账之前不会更新会计系统。预制凭证虽然不更新科目余额,但同样会生成凭证编号,其凭证内容可以随意更改,也可以删除。一旦过账,则会更新科目余额,但凭证编号不会改变。

预制凭证的相关后台表:

表名

描述

BKPF

会计核算凭证抬头表

VBKPF

预制凭证的凭证抬头表

VBSEGA

凭证预制的凭证段 - 资产数据库

VBSEGD

客户凭证预制的凭证段

VBSEGK

供应商凭证预制的凭证段

VBSEGS

凭证预制的凭证段 - 总帐科目数据库

【需求描述】

此前用户在使用事务代码“FV70”预制客户发票时发现界面中直接有“过账”按钮,点击后会立即生成正式会计凭证,无需财务部同事通过事务代码“FBV0”审批,完全不符合企业内审的要求,能否对此进行控制?

【分析处理】

根据有的朋友反馈,可以通过用户的参数文件设置指定参数实现,不过暂时没有尝试成功。

这里为了快速相应用户需求,本人采用了如下方式进行处理。

首先找到事务代码“FV70”涉及的程序名称“SAPMF05A”和屏幕编号“1200”,进入查看其PBO逻辑。

PROCESS BEFORE OUTPUT.

*------------ Most of the modules of Dynpro 1100 can be used ... -------
  MODULE INIT_1100.
  MODULE DYNPRO_MODIFICATION_1100.
  MODULE TREE.
  MODULE STATUS.
  MODULE EXPORT_TO_APAR_DIALOG_PBO.
  MODULE EXPORT_TO_TAX_DIALOG_PBO.
  MODULE DETERMINE_SUBSCREEN_APAR.
  CALL SUBSCREEN PAGE  INCLUDING PROGNR     DYNNRD.
  CALL SUBSCREEN ADR   INCLUDING 'SAPLFDCB' DYNNRA.
  MODULE IMPORT_FROM_APAR_DIALOG_PBO.
  MODULE EXPORT_TO_GL_DIALOG_PBO.
  CALL SUBSCREEN ITEMS INCLUDING 'SAPLFSKB' '0100'.
  MODULE FIRST_CALL_CLEAR.
PROCESS AFTER INPUT.
  MODULE EXIT_1100 AT EXIT-COMMAND.
  FIELD OK-CODE MODULE CHECK_STATE.
  MODULE OKCODE_SEND_AT_PAI.
  FIELD RF05A-BUSCS MODULE EXPORT_TO_APAR_DIALOG_PAI.
  CALL SUBSCREEN PAGE.
  CALL SUBSCREEN ADR.
  MODULE IMPORT_FROM_APAR_DIALOG_PAI.
  MODULE IMPORT_FROM_TAX_DIALOG_PAI.
  MODULE EXPORT_TO_GL_DIALOG_PAI.
  CALL SUBSCREEN ITEMS.
  MODULE IMPORT_FROM_GL_DIALOG_PAI.
  MODULE CONTROL_DISPATCH.
  MODULE DOCUMENT_MERGE.
  MODULE BALANCE.
  MODULE ACTIVETAB_PROCESS.
  MODULE SAVE_CONTEXT_1100_1200.
  FIELD OK-CODE MODULE USER_COMMAND_1100.

可以根据表“T020”找到相应事务代码使用的“GUI状态”(T020-STATU)。

我们所需要做的就是想办法将功能码“BU”(过账)隐藏。

一开始为了快速实现需求,采用了直接添加ENHANCEMENT代码的方式实现,虽然效果上可以满足需求,但总觉得不够灵活。

仔细阅读PBO模块中的“SET_EXCTAB”方法,发现其中有涉及相关权限控制的逻辑:

* Check posting
  CALL FUNCTION 'DOCHEADER_AUTHORITY_CHECK'
    EXPORTING
      I_BUKRS      = BKPF-BUKRS
      I_BLART      = BKPF-BLART
      I_BRGRU      = T003-BRGRU
      I_STATUS     = CHAR_1
    EXCEPTIONS
      NO_AUTHORITY = 4.
  IF SY-SUBRC NE 0.
    EXCTAB-OKCOD = 'BU'.
    COLLECT EXCTAB.
  ENDIF.

* Check parking
  CALL FUNCTION 'DOCHEADER_AUTHORITY_CHECK'
    EXPORTING
      I_BUKRS      = BKPF-BUKRS
      I_BLART      = BKPF-BLART
      I_BRGRU      = T003-BRGRU
      I_STATUS     = CHAR_2
    EXCEPTIONS
      NO_AUTHORITY = 4.
  IF SY-SUBRC NE 0.
* posting to single ledger exclude document parking
*  or ( not bkpf-ldgrp is initial.                             "/glflex/
*  and tcode = 'FB50L' ).                                      "n961805
    EXCTAB-OKCOD = 'BP'.
    COLLECT EXCTAB.
    EXCTAB-OKCOD = 'PBBP'.
    COLLECT EXCTAB.
  ENDIF.
* Note 409909: End of insertion

经测试可以通过权限对象“F_BKPF_BUK”来控制相关按钮的隐藏/显示。

【效果展示】

经过权限控制后的“FV70”预制画面。

如有更为简便有效的方法,请留言告知,以帮助更多有需要的朋友,谢谢。

以上是关于FI财务预制凭证界面隐藏过账按钮的主要内容,如果未能解决你的问题,请参考以下文章

sap中凭证已过账,生成财务凭证,发现有错,有啥办发可以冲销

ebs标准程序过账卡住

F-02 创建财务凭证BAPI

FICOFI种常用的事务代码

SAP中已过帐凭证的抬头文本写错,怎么修改?

SAP凭证编号确认后还能撤销吗