更改日期-更改者

2020-08-26 15:47发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我已经创建了一个自定义表格。 除了自定义字段外,我们在此表中还需要" changed Date(AEDTM)"和" changed by"字段。

用户不会填写这些字段,系统应自动填写。

例如:每当创建新记录(使用sm31)时,更改的日期=今天的日期,并通过=用户名更改。

如何实现此目的?

有什么想法吗?

谢谢

克里希纳

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我已经创建了一个自定义表格。 除了自定义字段外,我们在此表中还需要" changed Date(AEDTM)"和" changed by"字段。

用户不会填写这些字段,系统应自动填写。

例如:每当创建新记录(使用sm31)时,更改的日期=今天的日期,并通过=用户名更改。

如何实现此目的?

有什么想法吗?

谢谢

克里希纳

付费偷看设置
发送
5条回答
me_for_i
1楼 · 2020-08-26 16:40.采纳回答

使用"表维护"事件可以填充这些字段。

您需要使用事件01

 FORM f_actions_event_01。
 如果vim_abort_saving是INITIAL。
   *更新更改历史记录字段
   包括ZZFSAI086_UPD_CHG_HSTY。
 万一。
 ENDFORM。  " f_actions_event_01
 

包含代码

数据:
   lv_index1 TYPE sy-tabix,"表'TOTAL'的索引
   lv_index2 TYPE sy-tabix,"表'EXTRACT'的索引
   lr_data TYPE REF TO数据,"参考数据对象"
   lv_action TYPE char1,"变量适用于View操作
   lv_mark TYPE char1。  "视标可变


 字段符号:
    TYPE ANY,"对于字段值
    TYPE any,"用于数据字符串
    TYPE x," from值的十六进制值
    TYPE x。  "十六进制值到值


 *使用表名动态创建数据对象
 创建数据lr_data类型(x_header-viewname)。
 ASSIGN lr_data-> *至。


 清除:lv_index1,lv_index2,lr_data。
 *遍历M.View中的所有记录
 合计。
   清除lv_index1。
   lv_index1 = sy-tabix。
   READ TABLE提取总含KEY。
   如果sy-subrc EQ 0。
     lv_index2 = sy-tabix。
   其他。
     清除lv_index2。
   万一。
   总分配到演员表。
   分配铸造。
    = 。
   移动:
   转到lv_action,
   至lv_mark。
   案例<动作>。
     当neuer_eintrag。  " 新的条目
 *如果在/日期之前创建了新的条目填充
       将结构的组件'CRNAM'分配给。
       如果sy-subrc = 0。
          = sy-uname。
       万一。
       将结构的组件" CRDAT"分配给。
       如果sy-subrc = 0。
          = sy数据。
       万一。
 *如果更改为/日期,例如 一个条目是
       复制的
      将结构的组件'AENAM'分配给。
       如果sy-subrc = 0。
         清除。
       万一。


       将结构的组件" AEDAT"分配给。
       如果sy-subrc = 0。
         清除。
       万一。


     当aendern。  "更新的条目
 *更新到现有条目,并按/日期更改
       将结构的组件'AENAM'分配到。
       如果sy-subrc = 0。
          = sy-uname。
       万一。


       将结构的组件'Aedat'分配到。
       如果sy-subrc = 0。
          = sy数据。
       万一。
   结束。


 *(对行总数进行所需的更改)


 *更改仅在更新或新条目时纳入。
   检查 EQ aendern或 EQ neuer_eintrag。
   清除:总计,提取。
   分配铸造。
   总分配到演员表。
    = 。
   移动:
   lv_action TO <动作>,
   lv_mark TO <标记>。
   总计总计lv_action lv_mark INTO总计。
   从总计INDEX lv_index1修改总计。
 *如有必要,请修改摘录
   检查lv_index2 GT 0。
   提取=总。
   从提取索引lv_index2中修改提取。
 结局。
 
野沐沐
2楼-- · 2020-08-26 16:32

您好Vijaya,

非常感谢您的解决方案。 working

落灬小鱼
3楼-- · 2020-08-26 16:42

嗨,

我认为您可以通过事件来做到这一点:

使用SE11然后使用Utility->维护屏幕生成器

然后通过菜单->环境->修改->事件

您必须在其中选择适当的事件并定义一个FORM例程。 该FORM例程是在包含维护对话框的功能组的一个表单内创建的。

如果您想在对话框开始时设置默认值,并且当用户创建新条目时,您将需要事件" 21"(填充隐藏字段)和" 05"(创建新条目)。

对于事件,在函数组的include中定义一个表单例程。 您可以在其中访问视图的结构(例如z_tabl_view)。 在此处填充z_tabl_view-column = <固定值>。

要在保存之前检查数据,您将需要事件01(在将数据保存到数据库中之前)。

有关详细信息,请参考SAP在线文档:

http://help.sap.com/saphelp_erp2005vp/ helpdata/zh-CN/91/ca9f0ea9d111d1a5690000e82deaaa/content.htm

希望这会有所帮助,

Erwan

天桥码农
4楼-- · 2020-08-26 16:27

表维护屏幕生成器

环境->修改->事件

在此处编写代码

wang628962
5楼-- · 2020-08-26 16:20

您好Vijaya,

就像感谢您提供的代码。 它非常适合我。 保持良好的工作。 再次感谢。

致谢

埃德温

一周热门 更多>