0

通过选择所有条目并选择未转换的下载,我已经导出了带有事务 SE16 的表的内容。

我想将这些条目导入另一个系统(同一个表存在并且处于活动状态)。

此外,当我导入时,可能已经存在许多条目(旧条目)的特定键。

其他条目在要导入它们的表中不会有具有相同键的字段(新条目)。

有没有办法使用第一个系统提供的文件轻松更新第二个系统中的表?如果需要,我可以以 3 种其他格式类型(电子表格、富文本格式和 HTML 格式)导出数据。在我看来,尽管电子表格和富文本格式有时会破坏数据,而且 html 过于冗长。

[编辑] 根据流行的需求,我尝试导出/导入的表是一个 Z 表,其字段都是数字、字符、日期或时间字段(平面数据类型)。

我正在尝试这样做,因为客户没有任何基础资源来帮助他们传输,并且希望“kinna”自动化更新一个系统中的一个表的过程。

目前,这样做是一项业务要求,但我愿意接受建议(客户也愿意)

4

2 回答 2

1

编辑

好的,我怀疑您在评论中描述的内容是开箱即用的,但是您可以轻松地编写类似的内容:

创建一个接受以下内容的方法(或功能模块,如果它能让你的船漂浮):

iv_table name TYPE string and
iv_filename   TYPE string

这将是方法:

method upload_table.

  data: lt_table     type ref to data,
        lx_root      type ref to cx_root.

  field-symbols: <table> type standard table.

  try.

      create data lt_table type table of (iv_table_name).
      assign lt_table->* to <table>.

      call method cl_gui_frontend_services=>gui_upload
        exporting
          filename            = iv_filename
          has_field_separator = abap_true
        changing
          data_tab            = <table>
        exceptions
          others              = 4.

      if sy-subrc <> 0.
        "Some appropriate error handling
        "message id sy-msgid type 'I'
        "     number sy-msgno
        "     with sy-msgv1 sy-msgv2
        "          sy-msgv3 sy-msgv4.
        return.
      endif.

      modify (p_name) from table <table>.  
      "write: / sy-tabix,  ' entries updated'.

    catch cx_root into lx_root.
      "lv_text =  lx_root->get_text( ).
      "some appropriate error handling 

      return.
  endtry.

endmethod.

这仍然需要您确保导出的文件与您要导入的表匹配。但是,在这种情况下cl_gui_frontend_services=>gui_upload应该返回sy-subrc > 0,因此您可以在损坏任何数据之前退出。

原答案:

我假设您要更新 z 表而不是 SAP 标准表。

您可能需要稍微格式化您的数据文件以使其以制表符或逗号分隔。

然后,您可以使用上传数据文件cl_gui_frontend_services=>gui_upload

然后,如果您想覆盖表中的现有数据,您可以使用

modify zmydbtab from table it_importeddata.

如果您不想覆盖现有条目,您可以使用。

insert zmydbtab from table it_importeddata.

如果任何键已存在,您将获得 sy-subrc = 4 的返回码,但将插入任何新条目。

注意 有很多原因导致您不对 SAP 标准表执行此操作。最突出的是,数据模型几乎总是比我们所知道的要多。此外,在创建事务数据时,通常会启动后续事件或工作流,如果您直接更新数据库,则不会出现这种情况。根据经验,直接更新 SAP 标准表通常不是一个好主意。

在这种情况下,请尝试查找 BADI,或者如果不可用,请记录 BDC 并以这种方式进行更新。

于 2013-08-26T02:34:31.927 回答
0

如果系统环境设置正确,您的客户端将不需要任何类型的基本操作支持来执行传输。因此,与其重新发明轮子,我强烈建议在 CTS 和 TMS 设置合理的设置后了解它们可以做什么。

于 2013-08-28T12:06:56.567 回答