前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP FICO预制凭证界面隐藏过账按钮

SAP FICO预制凭证界面隐藏过账按钮

作者头像
matinal
发布2023-10-12 16:36:06
2310
发布2023-10-12 16:36:06
举报
文章被收录于专栏:SAP TechnicalSAP Technical

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

预制凭证的相关后台表:

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

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

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

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

代码语言:javascript
复制
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”方法,发现其中有涉及相关权限控制的逻辑:

代码语言:javascript
复制
* 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”预制画面。

如有更为简便有效的方法,请留言告知 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档