在实际开发需求中,为了使客制功能具有灵活的可配置性,通常采用开发功能+配置表的形式处理。有些客制的配置功能需要追溯到谁在什么时候增加了什么配置,或者谁在什么时候更改了什么位置,配置表的Log功能就显得很有必要了。以下过程说明SAP在配置表中如何实现配置表的Log功能。

  说明:本文中的截图皆为作者本人编写和制作,如果转载或引用请务必通知作者本人!!!

  (1)建立配置表

  建立配置表,在配置表中增加建立者、建立日期、建立时间、更改者、更改日期、更改时间:

  (2)维护表维护生成器:

  在菜单栏:实用程序->表维护生成器:

  进入表维护生成器:

  (3)维护表生成器维护界面

  双击画面编号,进入画面的程序代码页面:

  在PBO中用代码实现将Log的字段隐藏(这里的隐藏是指,在对配置表做配置时会看不到这些字段):

  PBO模块:MODULE   MODIFY_ELEMENT_14 .

  实现代码:

 MODULE MODIFY_ELEMENT_14 OUTPUT.
   LOOP AT <VIM_TCTRL>-COLS INTO VIM_TC_COLS.
     IF VIM_TC_COLS-SCREEN-NAME = 'YFG_C_PM_AUTOSMS-ERNAM' OR
        VIM_TC_COLS-SCREEN-NAME = 'YFG_C_PM_AUTOSMS-ERDAT' OR
        VIM_TC_COLS-SCREEN-NAME = 'YFG_C_PM_AUTOSMS-ERZET' OR
        VIM_TC_COLS-SCREEN-NAME = 'YFG_C_PM_AUTOSMS-AENAM' OR
        VIM_TC_COLS-SCREEN-NAME = 'YFG_C_PM_AUTOSMS-AEDAT' OR
        VIM_TC_COLS-SCREEN-NAME = 'YFG_C_PM_AUTOSMS-AEZET' .
       VIM_TC_COLS-INVISIBLE =  .
       MODIFY <VIM_TCTRL>-COLS FROM VIM_TC_COLS .
     ENDIF.
   ENDLOOP.
 ENDMODULE.

  (4)实现在配置时新增或更改时自动更新记录

  回到表维护生成器界面,增加表维护事件,在菜单:环境->修改->事件:

  点击“新输入项”,建立维护事项。注意,维护事项的类型选择,这里选择01-在存储资料前和05-建立新输入项,如:

  示例05-在新建输入项时保存记录:YFG_PM_AUTOSMS_NEW_ENTRY

 *&---------------------------------------------------------------
 *&  FORM  YFG_PM_AUTOSMS_NEW_ENTRY
 *&   自動更新YFG_C_PM_AUTOSMS 的建立日期
 *&---------------------------------------------------------------
 FORM  YFG_PM_AUTOSMS_NEW_ENTRY.
   YFG_C_PM_AUTOSMS-ERNAM = SY-UNAME .
   YFG_C_PM_AUTOSMS-ERDAT = SY-DATUM .
   YFG_C_PM_AUTOSMS-ERZET = SY-UZEIT .
 ENDFORM.

  示例01-在更改时保存记录:YFG_PM_AUTOSMS_MODIFY_SAVE

 *&---------------------------------------------------------------
 *&  FORM  YFG_PM_AUTOSMS_MODIFY_SAVE
 *&   自動更新YFG_C_PM_AUTOSMS的更新日期
 *&---------------------------------------------------------------
 FORM  YFG_PM_AUTOSMS_MODIFY_SAVE.
   FIELD-SYMBOLS : <FS_FIELD> TYPE ANY .
   LOOP AT TOTAL .
     CHECK <ACTION> EQ AENDERN.
     ASSIGN COMPONENT 'AENAM' OF STRUCTURE <VIM_TOTAL_STRUC> TO <FS_FIELD> .
      .
       <FS_FIELD> = SY-UNAME .
     ENDIF.
     ASSIGN COMPONENT 'AEDAT' OF STRUCTURE <VIM_TOTAL_STRUC> TO <FS_FIELD> .
      .
       <FS_FIELD> = SY-DATUM .
     ENDIF.
     ASSIGN COMPONENT 'AEZET' OF STRUCTURE <VIM_TOTAL_STRUC> TO <FS_FIELD> .
      .
       <FS_FIELD> = SY-UZEIT .
     ENDIF.
     READ TABLE EXTRACT WITH KEY <VIM_XTOTAL_KEY>.
     .
       EXTRACT = TOTAL .
       MODIFY EXTRACT INDEX SY-TABIX.
     ENDIF.
     MODIFY TOTAL.
   ENDLOOP.
 ENDFORM.

  实现效果:

  配置界面:

 

  表内容显示:

SAP 配置表记录创建人/创建日期/创建时间/更改人/更改日期/更改时间的更多相关文章

  1. toLocaleTimeString()方法在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为“时间字符串”存在区别

    这两天修改一个bug,发现一个问题:  toLocaleTimeString()方法在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为“时间字符串”存在区别.方法原 ...

  2. SAP 配置表根据输入的值带出描述

    在SAP客制功能需求中,为了程式的灵活配置采用配置表的形成,使后期使用中不需要更改源代码实现功能的增加.在配置表的使用过程中,有时候会有这样的需求:在配置中输入或选择了编码,根据编码带出描述.以下详细 ...

  3. 廖雪峰Java7处理日期和时间-1概念-1日期和时间

    1.日期 日期是指某一天,如2016-11-20,2018-1-1 2.时间有2种: 不带日期的时间:14:23:54 带日期的时间:2017-1-1 20:21:23,唯一确定某个时刻 3.时区 时 ...

  4. JS 获取当天所在月的第一天的日期,最后一天日期,所在周的每天的日期,时间,所在每月日期,时间的计算

    /** * 获取当天所在月的最后一天日期,和下一个月的第一天日期 * 调用getMonthDay(d), d默认值为01,d为要设置成的day: */ const getMonthMaxDay = ( ...

  5. 自带日期时间 showDatePicker显示中文日期_Flutter时间控件显示中文

    flutter showDatePicker showTimePicker显示中文日期 1.配置flutter_localizations依赖 找到pubspec.yaml配置flutter_loca ...

  6. CentOS 7 设置日期和时间

    现代操作系统分为以下两种类型的时钟: 实时时钟(Real-Time Clock,RTC),通常称为硬件时钟(一般是系统主板上的集成电路),它完全独立于操作系统的当前状态,即使在计算机关闭时也能运行. ...

  7. MySQL数据类型--日期和时间类型

    MySQL中的多种时间和格式数据类型 日期和时间类型是为了方便在数据库中存储日期和时间而设计的.MySQL中有多种表示日期和时间的数据类型. 其中,year类型表示时间,date类型表示日期,time ...

  8. JAVA面试题解惑系列(七)——使用日期和时间

    日期和时间,不仅在考试面试题.处理的问题.似乎没有哪个项目能够避开它们.我们经常在处理用户的出生年月日.注冊日期,订单的创建时间等属性时用到,由此可见其重要性.  java.util.Date类  提 ...

  9. Java8新特性--日期和时间API

    如何正确处理时间 现实生活的世界里,时间是不断向前的,如果向前追溯时间的起点,可能是宇宙出生时,又或是是宇宙出现之前, 但肯定是我们目前无法找到的,我们不知道现在距离时间原点的精确距离.所以我们要表示 ...

随机推荐

  1. 类似今日头条,头部tab可滑动,下面的内容可跟着滚动,掺杂着vue和require等用法例子

    1.在main.js里 /*主模块的入口 结合require一起使用*/ require.config({//require的基础用法 配置一下 paths: { "Zepto" ...

  2. PTA天梯赛L2

    L2-001 紧急救援 题意:就是给你一张n<500的图:让你求最短路径,最短路条数,以及路径: 做法,先用dijkstra求最短路,然后dfs找最短路条数,以及点权的最大值: 一般dfs不就可 ...

  3. 2020/2/3 PHP代码审计之PHP伪协议

    0x00 简介 开局一张图233 0x01 file://协议 说明: file:// 文件系统是 PHP 使用的默认封装协议,展现了本地文件系统.当指定了一个相对路径(不以/..\或 Windows ...

  4. JavaWeb之搭建自己的MVC框架(三)

    1. 前言         在前两节的内容中,我们完成了一个基本的框架搭建.但是如果我们在前端请求中增加参数,我们要怎么传递到后台方法呢?接下来我们就来研讨这部分内容. 2. 实现         ( ...

  5. 数据可视化BI平台——CBoard的部署与使用(笔记整理)

    CBoard作为国内自主开发的数据可视化平台,因其方便好用而受到广大用户的使用和好评.现今CBoard有社区版和企业版两个版本,本文所述为社区版的0.4.2版本.注意:所需的一切资源以及相关参考链接都 ...

  6. 工程日记之ChildLost(2) :如何编写一个多线程的程序

    Dispatch Dispatch结合语言特性,运行时,和系统的特点,提供了系统的,全面的高层次API来提升多核多线程编程的能力. Dispatch会自动的根据CPU的使用情况,创建线程来执行任务,并 ...

  7. 拷贝构造函数[c++]

    拷贝构造函数何时会被调用? 1. 对象以值传递的方式传入函数参数 2.对象以值传递的方式从函数返回 3.对象需要通过另外一个对象进行初始化 下面我们来看代码: //#include <iostr ...

  8. symmetry methods for differential equations,exercise 1.4

    tex文档: \documentclass[a4paper, 12pt]{article} % Font size (can be 10pt, 11pt or 12pt) and paper size ...

  9. 大数据攻城狮之进阶技能-Github的使用

    引用百度百科中的介绍: github GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线 ...

  10. Python登录TP-Link路由器换ip脚本

    有些时候我们需要更换IP(你懂得),网络下载的拨号软件大部分是需要电脑直接链接调制解调器(猫),对于局域网用户来说就比较麻烦了,下面我们用python来实现登录路由器自动切换ip的功能 # -*- c ...