ABAP-数据字典-维护视图:透明表创建维护视图

业务需求

在SAP项目中,会经常碰到如下需求:

在业务处理过程中,需要手工对透明表(数据库表)进行批量的数据维护,如下图所示:

可以新增条目、删除条目、修改条目内容。

自动记录条目的创建日期与修改日期等信息。

实现步骤:

一、运行SE11(创建维护视图),打开透明表ZHYT_XYKQ;执行:应用程序->表格维护生成器。

按照说明填写如图参数:

点击查找屏幕号->建议屏幕号->对号:

概述屏幕产生后,点击创建

选择包:

选择传输请求:

双击{概述屏幕}进入屏幕绘制器:

点击{布局},进入屏幕制作器;

双击{列标题}进行数据列描述的设置,如班级:

双击{数据列},修改数据列的长度、可修改等属性,如(创建日期->不可输入):

二、添加功能,维护视图自动按照实际情况保存{创建日期、创建时间等字段}.

如下PAI位置,添加自定义MODULE{MOD_CHANGE_XYKQ }

MODULE{MOD_CHANGE_XYKQ }实现如下:

代码如下:

*----------------------------------------------------------------------*
***INCLUDE LZHYFG_202308I01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  MOD_CHANGE_XYKQ  INPUT
*&---------------------------------------------------------------------*
*       自动更新创建、记录字段
*----------------------------------------------------------------------*
MODULE MOD_CHANGE_XYKQ INPUT.
**判断当前记录是否存在
  SELECT COUNT(*)
    FROM ZHYT_XYKQ
   WHERE ZXH  = ZHYT_XYKQ-ZXH
     AND ZBJ  = ZHYT_XYKQ-ZBJ.
  IF SY-SUBRC = 0.
****记录修改
    CALL FUNCTION 'Z_HYFM_GET_DINFO'
      EXPORTING
        I_ZCZLX  = 'CHANGE'
      CHANGING
        C_S_STRU = ZHYT_XYKQ.
  ELSE.
****记录新增
    CALL FUNCTION 'Z_HYFM_GET_DINFO'
      EXPORTING
        I_ZCZLX  = 'CREATE'
      CHANGING
        C_S_STRU = ZHYT_XYKQ.
  ENDIF.
ENDMODULE.

其中函数{Z_HYFM_GET_DINFO}实现如下:

代码如下:

FUNCTION Z_HYFM_GET_DINFO .
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_ZCZLX) TYPE  STRING
*"  CHANGING
*"     REFERENCE(C_S_STRU) TYPE  ANY
*"----------------------------------------------------------------------
  FIELD-SYMBOLS: <FS_DATA> TYPE ANY.
**宏定义
  DEFINE MAC_FIELDS.
    UNASSIGN <FS_DATA>.
    ASSIGN COMPONENT &1 OF STRUCTURE C_S_STRU TO <FS_DATA>.
    IF SY-SUBRC = 0.
      CASE &1.
        WHEN 'ERDAT' OR 'AEDAT'.
          <FS_DATA> = SY-DATUM.
        WHEN 'ERTIM' OR 'AETIM'.
          <FS_DATA> = SY-UZEIT.
        WHEN 'ERNAM' OR 'AENAM'.
          <FS_DATA> = SY-UNAME.
      ENDCASE.
    ENDIF.
  END-OF-DEFINITION.

**宏调用
  CASE I_ZCZLX.
    WHEN 'CREATE'."创建
      MAC_FIELDS: 'ERDAT', "创建日期
                  'ERTIM', "创建时间
                  'ERNAM'. "创建人
    WHEN 'CHANGE'."修改
      MAC_FIELDS: 'AEDAT', "修改日期
                  'AETIM', "修改时间
                  'AENAM'. "修改人
    WHEN OTHERS.
  ENDCASE.

ENDFUNCTION.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈佛2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值