SAP 配置表记录创建人/创建日期/创建时间/更改人/更改日期/更改时间

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

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

  (1)建立配置表

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

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

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

  进入表维护生成器:

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

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

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

  PBO模块:MODULE   MODIFY_ELEMENT_14 .

  实现代码:

 1 MODULE MODIFY_ELEMENT_14 OUTPUT.
 2   LOOP AT <VIM_TCTRL>-COLS INTO VIM_TC_COLS.
 3     IF VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-ERNAM‘ OR
 4        VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-ERDAT‘ OR
 5        VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-ERZET‘ OR
 6        VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-AENAM‘ OR
 7        VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-AEDAT‘ OR
 8        VIM_TC_COLS-SCREEN-NAME = ‘YFG_C_PM_AUTOSMS-AEZET‘ .
 9       VIM_TC_COLS-INVISIBLE = 1 .
10       MODIFY <VIM_TCTRL>-COLS FROM VIM_TC_COLS .
11     ENDIF.
12   ENDLOOP.
13 ENDMODULE.

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

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

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

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

1 *&---------------------------------------------------------------
2 *&  FORM  YFG_PM_AUTOSMS_NEW_ENTRY
3 *&   自動更新YFG_C_PM_AUTOSMS 的建立日期
4 *&---------------------------------------------------------------
5 FORM  YFG_PM_AUTOSMS_NEW_ENTRY.
6   YFG_C_PM_AUTOSMS-ERNAM = SY-UNAME .
7   YFG_C_PM_AUTOSMS-ERDAT = SY-DATUM .
8   YFG_C_PM_AUTOSMS-ERZET = SY-UZEIT .
9 ENDFORM.

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

 1 *&---------------------------------------------------------------
 2 *&  FORM  YFG_PM_AUTOSMS_MODIFY_SAVE
 3 *&   自動更新YFG_C_PM_AUTOSMS的更新日期
 4 *&---------------------------------------------------------------
 5 FORM  YFG_PM_AUTOSMS_MODIFY_SAVE.
 6   FIELD-SYMBOLS : <FS_FIELD> TYPE ANY .
 7   LOOP AT TOTAL .
 8     CHECK <ACTION> EQ AENDERN.
 9     ASSIGN COMPONENT ‘AENAM‘ OF STRUCTURE <VIM_TOTAL_STRUC> TO <FS_FIELD> .
10     IF SY-SUBRC = 0 .
11       <FS_FIELD> = SY-UNAME .
12     ENDIF.
13     ASSIGN COMPONENT ‘AEDAT‘ OF STRUCTURE <VIM_TOTAL_STRUC> TO <FS_FIELD> .
14     IF SY-SUBRC = 0 .
15       <FS_FIELD> = SY-DATUM .
16     ENDIF.
17     ASSIGN COMPONENT ‘AEZET‘ OF STRUCTURE <VIM_TOTAL_STRUC> TO <FS_FIELD> .
18     IF SY-SUBRC = 0 .
19       <FS_FIELD> = SY-UZEIT .
20     ENDIF.
21     READ TABLE EXTRACT WITH KEY <VIM_XTOTAL_KEY>.
22     IF SY-SUBRC = 0.
23       EXTRACT = TOTAL .
24       MODIFY EXTRACT INDEX SY-TABIX.
25     ENDIF.
26     MODIFY TOTAL.
27   ENDLOOP.
28 ENDFORM.

原文地址:https://www.cnblogs.com/sapdaniel/p/12350538.html

时间: 2024-12-07 05:10:52

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

C# 如何获取时间各种方法(日期+具体时间)

一.背景 项目经常会使用到关于获取当前时间的格式: 二.方法 我们可以通过使用DataTime这个类来获取当前的时间.通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04).时间(12:12:12).日期+时间(2008-09-04 12:11:10)等. 1.获取日期和时间 DateTime.Now.ToString();            // 2008-9-4 20:02:10DateTime.Now.ToLocalTime().ToString();     

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

日期和时间,不仅在考试面试题.处理的问题.似乎没有哪个项目能够避开它们.我们经常在处理用户的出生年月日.注冊日期,订单的创建时间等属性时用到,由此可见其重要性. java.util.Date类 提到日期和时间,我想大家最先想到应该是java.util.Date类吧.Date类能够精确到毫秒数,这个毫秒数是相对于格林威治标准时间"1970-01-01 00:00:00.000 GMT"的差值.那么.什么是格林威治标准时间呢?要回答这个问题.我们须要先来了解一下世界时间标准方面的知识. 世

JAVA面试题解惑系列(七)——日期和时间的处理

日期和时间的处理不仅在面试题中会考到,在实际项目开发中也是我们经常需要处理的问题,似乎没有哪个项目可以避开它们,我们常常在处理用户的出生年月日.注册日期,订单的创建时间等属性时用到,由此可见其重要性. java.util.Date类 提到日期和时间,我想大家最先想到应该是java.util.Date类吧.Date类可以精确到毫秒数,这个毫秒数是相对于格林威治标准时间"1970-01-01 00:00:00.000 GMT"的差值.那么,什么是格林威治标准时间呢?要回答这个问题,我们需要

Java8新特性之:新的日期和时间API

一. LocalDate.LocalTime.Instant.Duration以及Period 1.LocalDate只提供日期,不含当天时间信息 LocalDate date = LocalDate.of(2018, 5, 03); int year = date.getYear(); Month month = date.getMonth(); int day = date.getDayOfMonth(); DayOfWeek dow = date.getDayOfWeek(); int l

Java语言学习(5)-Java中基础封装类(日期、时间类)

日期和时间封装类 1. Data类 Java日期和时间采用Data类.Data类在java.util包中. Data类构造函数: 1)       Data()   采用当前时间初始化对象: 2)       Data(long millisec)   采用1970年1月1日起时间毫秒数来初始化对象. Data类的方法: 1)       boolean after(Data d).boolean before(Data d) Data对象和参数指定日期较早晚,返回boolean值. 2)   

C# 日期和时间的字符串表示形式转换为其等效的DateTime(stringToDateTime)

一. 标准的日期和时间字符串转换 将日期和时间的字符串表示形式转换为其等效的DateTime对象是开发中很常见的类型转换,我们最常使用的方式是: // 如果s为null,抛出ArgumentNullException异常 // 如果s 不包含的有效字符串表示形式的日期和时间,抛出FormatException DateTime DateTime.Parse(string s); bool DateTime.TryParse(string s, out DateTime result); Date

[转载] C/C++中怎样获取日期和时间

C/C++中怎样获取日期和时间摘要: 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时.时间的获取.时间的计算和显示格式等方面进行了阐述.本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法. 关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) 1.概念 在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有

(3.16)SQL语句中所有有关日期 、时间的用法

DateAdd 函数描述:返回已添加指定时间间隔的日期. 语法DateAdd(interval, number, date)interval: 必选.字符串表达式,表示要添加的时间间隔.有关数值,请参阅“设置”部分. number: 必选.数值表达式,表示要添加的时间间隔的个数.数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期). date: 必选.Variant 或要添加 interval 的表示日期的文字. interval 参数可以有以下值:yyyy (年) .q (季度) .

如何获取当前的日期和时间

Js获取当前日期时间及其它操作 var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate.getMonth(); //获取当前月份(0-11,0代表1月)myDate.getDate(); //获取当前日(1-31)myDate.getDay(); //获取当前星期X(0-6,0代表星期天)myDate.getTime(); //获取当前时间(