SAP ABAP SM30在查看、修改、创建时校验权限

在sm30界面校验用户是否有公司代码权限,对于用户没有公司代码权限的所在行不显示,在创建时报错。

1.对于显示和修改 ,没有权限的行不显示

MODULE exclude_auth_bukrs OUTPUT.

  DATA lv_tabix TYPE sy-tabix.

  LOOP AT extract.

    lv_tabix = sy-tabix.

    PERFORM auth_bukrs USING view_action.
    IF sy-subrc <> 0.

      DELETE extract INDEX lv_tabix.

    ENDIF.

  ENDLOOP.

  DESCRIBE TABLE extract LINES maxlines.

ENDMODULE.                 " EXCLUDE_AUTH_BUKRS  OUTPUT
FORM auth_bukrs  USING    iv_action TYPE c.

  DATA lv_actvt TYPE tact-actvt.

  DATA lv_sellist TYPE vimsellist.

  CONSTANTS lc_bukrs TYPE dd03p_d-fieldname VALUE 'BUKRS'.

  CONSTANTS: lc_actvt_display TYPE tact-actvt VALUE '03',
             lc_actvt_change TYPE tact-actvt VALUE '02',
             lc_actvt_create TYPE tact-actvt VALUE '01'.

  FIELD-SYMBOLS: <fs> TYPE any,
                 <fs_bukrs> TYPE bukrs.

  sy-subrc = 0.

  CASE iv_action.

    WHEN aendern." Change

      lv_actvt = lc_actvt_change.

    WHEN anzeigen." Display

      lv_actvt = lc_actvt_display.

    WHEN neuer_eintrag." New entry

      lv_actvt = lc_actvt_create.

    WHEN OTHERS.

      RETURN.

  ENDCASE.

  IF lv_actvt = lc_actvt_create.

    CHECK NOT vim_object IS INITIAL.
    ASSIGN (vim_object) TO <fs> CASTING TYPE (vim_object).

  ELSE.

    ASSIGN extract TO <fs> CASTING TYPE (vim_object).

  ENDIF.

  ASSIGN COMPONENT lc_bukrs OF STRUCTURE <fs> TO <fs_bukrs>.
  IF sy-subrc <> 0 OR <fs_bukrs> IS INITIAL.

    RETURN.

  ENDIF.

 AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
                    ID 'BUKRS' FIELD <fs_bukrs>
                    ID 'ACTVT' FIELD  lv_actvt.

  IF sy-subrc <> 0 AND lv_actvt = lc_actvt_create.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.


ENDFORM.                    " AUTH_BUKRS

2.创建,当新建没有权限的公司代码行时,在保存时报错。
创建时需给视图创建一个事件
视图
添加事件后创建form 即可

FORM auth_bukrs_create_entry.

  PERFORM auth_bukrs USING neuer_eintrag.

ENDFORM.                   " AUTH_BUKRS_CREATE_ENTRY
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SAP ABAP ALV 报表是一种基于 ABAP 编程语言的高级列表工具,用于生成和显示数据报表。如果你想要为 ALV 报表添加自定义校验逻辑,可以按照以下步骤进行修改: 1. 首先,创建一个包含自定义校验逻辑的 ABAP 函数模块。该函数模块可用于对 ALV 报表的数据进行验证。在函数模块中,你可以定义各种校验规则和逻辑,例如检查数据的完整性、一致性或合法性。 2. 在 ABAP 程序中,使用 ALV 报表,可以在数据填充之前或之后调用自定义函数模块。例如,你可以使用 FUNCTION MODULE_BEFORE_OUTPUT 或 FUNCTION MODULE_AFTER_OUTPUT 事件处理程序,在 ALV 表的输出之前或之后执行自定义校验逻辑。 3. 在这些事件处理程序中,可以调用定义的自定义函数模块来执行数据校验。通过将 ALV 表的数据传递给这些函数模块,你可以对数据进行校验,并根据校验结果决定是否允许数据的修改。如果校验失败,可以通过向用户显示错误消息、高亮显示错误行或阻止修改操作来提醒用户。 4. 在 ALV 报表的输出或修改事件中,你还可以根据需要调整和修改 ALV 表的格式和显示。例如,你可以通过修改字段属性、调整列宽或添加新的 ALV 功能按钮来满足特定的需求。 通过以上步骤,你可以在 SAP ABAP ALV 报表中成功添加自定义校验逻辑。这将提高报表数据的质量和准确性,并为用户提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值