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

时间:2016-03-07 09:43:33

标签: sap abap

我想以编程方式写入SAP自定义表。

如何将表条目更改到更改日志中?

我不需要运输。它只有一个表,没有相应的语言依赖表。

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

如何以编程方式将更改导入DBTABLOG?

我使用了事务SE56'生成表维护对话框'生成似乎对此任务有用的表单:

这会生成由FORM vim_bc_logs_put使用的~SingleThreadPtr() { if (c_) { if (--*c_ != 0) { return; } delete c_; } delete p_; } 之类的表单。

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

1 个答案:

答案 0 :(得分:1)

首先,您应该了解SAP日志记录的概念。登录SAP分为业务对象日志记录和表日志记录,我们称之为技术。我们不考虑应用程序日志记录(SLG1),而只讨论表格数据。 业务日志记录由变更文档(SCDO)表示,技术日志记录(表格)由标准工具(SCU3)表示。

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

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

  1. 确保在表格设置中启用了复选框日志数据更改。可以在表格的技术设置页面中查看。
  2. rec/client参数(RZ11 tcode)设置为您希望跟踪更改的客户端编号。如果要为所有客户端启用日志记录,请在那里设置ALL值(不推荐!)。
  3. 重新启动Application Server。
  4. 回答您的特定问题:
    不需要特殊的FM或方法来填充DBTABLOG表格。无论如何更改,都会记录更改:通过维护视图,以编程方式或通过手动编辑。 您不需要任何特殊操作来填充此表,并且您可以通过您喜欢的任何方式读取存储的记录(编写自己的报告,创建视图或其他任何方式)。

    其他几点需要注意:

    • 自定义表格会被记录by default
    • 您通过递送功能自定义表和按数据类自定义表之间should differentiate,即APPL02。 第一个称为组织和自定义数据,而第二个称为自定义表本身。
      交付定制表称为定制,因为它们在更新和升级期间不会被传输。它们由客户维护 数据类自定义表称为自定义表,因为它们存储在DB中的客户名称空间中,这种命名的主要原因是它们的物理表示。
      上一个要点特别适用于交付类自定义表。
    • 特定自定义表的日志数据也可以通过转到>>在SPRO交易中查看。 更改日志。在此之前,您应该选择要查看其日志的SPRO节点。