編集
わかりました、コメントで説明したことがすぐに使えるとは思いませんが、そのようなものを簡単に書くことができます:
以下を受け入れるメソッド (またはボートをフロートする場合は関数モジュール) を作成します。
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
元の回答:
SAP 標準テーブルではなく、Z テーブルを更新すると仮定します。
タブまたはカンマで区切られるように、おそらくデータファイルを少しフォーマットする必要があります。
その後、次を使用してデータ ファイルをアップロードできます。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 を記録し、その方法で更新を行います。