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

业务需求

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

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

ABAP-数据字典-维护视图:透明表创建维护视图_第1张图片

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

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

实现步骤:

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

ABAP-数据字典-维护视图:透明表创建维护视图_第2张图片

按照说明填写如图参数:

ABAP-数据字典-维护视图:透明表创建维护视图_第3张图片

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

ABAP-数据字典-维护视图:透明表创建维护视图_第4张图片

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

ABAP-数据字典-维护视图:透明表创建维护视图_第5张图片

选择包:

ABAP-数据字典-维护视图:透明表创建维护视图_第6张图片

选择传输请求:

ABAP-数据字典-维护视图:透明表创建维护视图_第7张图片

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

ABAP-数据字典-维护视图:透明表创建维护视图_第8张图片

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

ABAP-数据字典-维护视图:透明表创建维护视图_第9张图片

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

ABAP-数据字典-维护视图:透明表创建维护视图_第10张图片

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

ABAP-数据字典-维护视图:透明表创建维护视图_第11张图片

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

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

ABAP-数据字典-维护视图:透明表创建维护视图_第12张图片

MODULE{MOD_CHANGE_XYKQ }实现如下:

ABAP-数据字典-维护视图:透明表创建维护视图_第13张图片

代码如下:

*----------------------------------------------------------------------*
***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}实现如下:

ABAP-数据字典-维护视图:透明表创建维护视图_第14张图片

代码如下:

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

你可能感兴趣的:(SAP_ABAP,开发语言)