概要
4.6CからECC6.0へバージョンアップする時にアドオンプログラム内に廃止された汎用モジュールを使用している事がある。
今後使用できなくなるため別のものに置換える必要があります。
今回廃止汎用モジュール「WS_UPLOAD」の置換えについて一部解説していきます。
修正前後のサンプルコードがあるのでコーディングだけ確認するだけでも理解が深まると思います。
置換え方法
廃止汎用モジュール「WS_UPLOAD」は以下の1つの汎用モジュールを用いる事で置換える事が出来ます。
・汎用モジュール「GUI_UPLOAD」
ポイント
置換える際のポイントは以下2つとなります。
- コードページの変換
- 型の変換
コードページの変換
「GUI_UPLOAD」では4桁の数字で表現されますが「WS_UPLOAD」ですと’IBM’となっているかと思います。
そのため適切なコードページに変更する必要があります。
状況に応じて対応が必要なため、テーブル「TCP00」やノート「73606」のファイル「R3languages.pdf」が参考となりそうです。
型の変換
以下の様に型が異なるため、廃止汎用モジュールで使用していた変数をそのまま使用するとショートダンプの原因となります。
そのため一度型変換を行う必要があります。
廃止汎用モジュール「WS_UPLOAD」のFILETYPEはC型の3桁
汎用モジュール「GUI_UPLOAD」のTILETYPEの型は「CHAR10」(C型の10桁)
置換えソースコードサンプル
修正後については廃止汎用モジュール「WS_UPLOAD」が使用されていたものを置換えて修正しているため、改修を想定したコーディングサンプルとなっています。
修正前
*使用するパラメータ値 DATA: L_FILE LIKE RLGRAP-FILENAME, C_DAT(3) TYPE C VALUE 'DAT', IT_DATA_TAB TYPE TABLE OF BKPF. CALL FUNCTION 'WS_UPLOAD' EXPORTING CODEPAGE = 'IBM' FILENAME = L_FILE FILETYPE = C_DAT TABLES DATA_TAB = IT_DATA_TAB EXCEPTIONS CONVERSION_ERROR = 1 FILE_OPEN_ERROR = 2 FILE_READ_ERROR = 3 INVALID_TYPE = 4 NO_BATCH = 5 UNKNOWN_ERROR = 6 INVALID_TABLE_WIDTH = 7 GUI_REFUSE_FILETRANSFER = 8 CUSTOMER_ERROR = 9 NO_AUTHORITY = 10 OTHERS = 11 .
修正後
*使用するパラメータ値 DATA: L_FILE LIKE RLGRAP-FILENAME, C_DAT(3) TYPE C VALUE 'DAT', IT_DATA_TAB TYPE TABLE OF BKPF. ***新規追加変数(START) DATA: L_FILENAME2 TYPE STRING, L_DAT2 TYPE CHAR10, ***新規追加変数(END) ***型変換を実施(START) L_FILENAME2 = L_FILE. L_DAT2 = C_DAT. ***型変換を実施(END) * 指定先パスにファイルをダウンロード CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = L_FILENAME2 FILETYPE = L_DAT2 CODEPAGE = '1103' IGNORE_CERR = ABAP_FALSE TABLES DATA_TAB = IT_DATA_TAB EXCEPTIONS FILE_OPEN_ERROR = 1 FILE_READ_ERROR = 2 NO_BATCH = 3 GUI_REFUSE_FILETRANSFER = 4 INVALID_TYPE = 5 NO_AUTHORITY = 6 UNKNOWN_ERROR = 7 BAD_DATA_FORMAT = 8 HEADER_NOT_ALLOWED = 9 SEPARATOR_NOT_ALLOWED = 10 HEADER_TOO_LONG = 11 UNKNOWN_DP_ERROR = 12 ACCESS_DENIED = 13 DP_OUT_OF_MEMORY = 14 DISK_FULL = 15 DP_TIMEOUT = 16 OTHERS = 17 .