写入以编程方式自定义 table 并记录更改

Writing to customizing table programmatically and logging changes

我想以编程方式写入 SAP 定制 table。

如何将对 table 条目的更改添加到更改日志中?

我不需要运输。只有一个table,没有对应的语言依赖table.

我知道自定义 table 更改已记录到​​ table DBTABLOG。 (这与使用更改文档的应用程序数据更改不同)。

如何以编程方式将更改获取到 DTBABLOG 中?

我使用事务 SE56 'Generate Table Maintenance Dialog' 生成了似乎对这项任务有用的表格:

这会生成像 FORM bc_entry_log_fill 这样的形式,FORM vim_bc_logs_put 使用它。

是否有示例如何在没有生成对话框的情况下使用这些生成的表单?

首先,您应该稍微了解一下 SAP 日志记录概念。 SAP中的日志记录分为业务对象日志记录和table日志记录,暂且称其为技术性的吧。我们不考虑应用程序日志记录 (SLG1),只讨论表格数据。 业务日志记录由变更文档 (SCDO) 提供,技术日志记录 (tables) 由标准工具 (SCU3) 提供。

  • 更改文档用于记录自定义业务对象(但是通过预定义的 CD 对象记录标准对象也是可能的)。它是通过更改文档对象和相应的 FM 来实现的。
  • 技术 table 日志记录或简单的 logging 用于跟踪 any table 中的更改,字面意思是任何.它在系统设置中设置,日志存储在 DBTABLOG table.

您可以通过以下方式为任何 table(包括自定义)启用日志记录:

  1. 确保在 table 设置中启用复选框 记录数据更改 。可以在 table 的 技术设置 页面中检查。
  2. rec/client 参数 (RZ11 tcode) 设置为您要跟踪更改的客户编号。如果要为所有客户端启用日志记录,请在此处设置 ALL 值(不推荐!)。
  3. 重新启动应用程序服务器。

回答您的特定问题:
不需要 特殊的 FM 或方法来填充 DBTABLOG table。无论更改是如何进行的,都会记录更改:通过维护视图、以编程方式或通过手动编辑。 您不需要任何特殊操作来填充此 table,并且您可以通过任何您喜欢的方式读取存储的记录(编写自己的报告、创建视图或其他)。

其他几个需要注意的地方:

  • 自定义 table 已记录 by default
  • should differentiate 在按交付功能自定义 table 和按数据 class 自定义 table 之间,即 APPL02。 第一个称为 组织和自定义数据 而第二个称为 自定义 tables 本身。
    交付自定义 table 称为自定义,因为它们在更新期间不传输并且 upgrades.They 由客户维护。
    数据 class 自定义 table 称为自定义,因为它们存储在数据库中的客户名称空间中,这种命名的主要原因是它们的物理表示。
    前面的要点特别适用于交付 class 定制 tables.
  • 特定定制的日志数据 table 也可以在 SPRO 事务中通过 转到 >> 更改日志。事先你应该 select 要查看日志的 SPRO 节点。