2012-01-19 32 views
4

イム:ABAP:次のコードを使用してローカルファイルにテキストを書き込むしようとしているローカルファイルへのハウツー書き込みテキスト

data: fname(60), text type string value 'la la la'. 
fname = 'myfile.txt'. 
OPEN DATASET fname FOR OUTPUT IN TEXT MODE encoding default. 
transfer text to fname. 
close dataset fname. 
write 'done'. 

プログラムは、罰金と実行後に表示される「完了」実行されます。しかし私のPC(SAPの作業ディレクトリにない)でテキストファイル "myfile.txt"を見つけることができません。私はFM GUI_DOWNLOADを使用してこの作業 得ている情報 追加

は、しかし、私は(SUBMIT使用してBSPで呼ばれるように)バックグラウンドプログラムでこれを書いイムとしてOPEN DATASET、転送方法を使用する必要があります。

答えて

6

バックグラウンド処理中にクライアントに書き込むことはできません。
バックグラウンド処理の性質は、クライアントマシンをWASに接続する必要がないことです。

ファイルの作成に時間がかかる場合は、WASでファイルを作成し、BSPアプリケーションのどこかにダウンロードするファイルのリストを提供することができます。

更新:
あなただけのファイルは、プロファイルパラメータDIR_HOMEで指定されたディレクトリに置かれているファイル名を指定した場合。 RZ11でプロファイルパラメータを確認/編集したり、AL11のディレクトリを表示したりすることができます。あなたはhttp://wiki.sdn.sap.com/wiki/display/ABAP/Working+with+filesを参照することができABAP内のファイルの操作に関する一般的な情報については

2回目の更新:
一般的にダウンロードしたデータは、HTTPレスポンスにバイナリデータを右HTTPヘッダフィールドを設定し、押し込むことによって達成され、 。
cl_bsp_utility=>downloadをご覧ください。
これは、応答に正しいコンテンツヘッダーを設定します。データを指定する必要があります(XSTRING)、Content-TypeContent-Dispositionのいずれかを指定してください。
Content-TypeはファイルのMIMEタイプです。だからapplication/vnd.ms-excelになるExcelファイル、またはapplication/octetstreamのような一般的なものを使うことができます。
Content-Dispositionは、使用するデフォルトのファイル名をブラウザに伝えるために使用できます。値の例はattachment; filename=filexyz.xlsです。

Content-TypeContent-Dispositionの組み合わせに基づいてブラウザの動作が多少異なる場合があることにご注意ください(インラインではなく[名前を付けて保存]ダイアログが表示されます)。

+0

ご返信いただきありがとうございます。サーバー上でファイルを作成し、ダウンロードオプションを提供することが最善の考えです。プログラムは、 "afile.txt"をサーバーに保存するプログラムを作成すると、サーバー上でそれを見つけることができないようです。プログラムのファイルが保存されるデフォルトの場所、または場所の検索方法を知っていますか? –

+0

@ B.Bowles私は自分の答えを更新しました。 – Turismo

+0

その情報をありがとうございました。私はこれを数時間行っており、サーバーから私のボックスにファイルをダウンロードする方法を理解することはできません。私はAL11を使ってテキストファイル "myfile.txt"を見つけました。そのパスは "./myfile.txt"です。私は 'ARCHIVFILE_SERVER_TO_SERVER'のようなFMを使ってみましたが、これはAS上でのみコピーするためです。私は喜んで 'cl_gui_frontend_services'メソッドの範囲を試してみました。前にこれを行い、サンプルコードをお持ちですか?私はBSPを介してファイルをダウンロードする方が簡単だと思っていたでしょう。これまでのご協力ありがとうございます! –

4

OPEN DATASETおよび関連するキーワードは、サーバー上のファイルでのみ動作します。バックグラウンドプロセスからターゲットマシンにファイルを取得するためのさまざまなオプションがあります。

  1. サーバーとクライアントマシンがWindows上で実行されている場合は、WindowsパスをAL11にマップしてファイルをそこに保存することができます。 (このトラフィックを許可するには、ターゲットのWindowsマシンファイアウォールを開く必要があります)。

  2. ターゲットマシン上でFTPサーバーを実行し、そこにあるファイルをftpできます。 SAPにはこれに対処する汎用モジュールがあります。 SFTP機能グループを見てください。

  3. 両方のマシンでいくつかのバージョンのUNIXが実行されている場合は、SCPでもターゲットマシンにファイルを置くことができます(ほとんどのUnixにはssh、したがってscpが含まれているため)。 SM49で外部コマンドを作成し、サーバからターゲットマシンに公開鍵認証を設定する必要があります。これは、SAPサーバの管理者権限を持っていない場合はもう少し難しいですが、あまりにも。

0

Turismoは次のように書いています。バックグラウンド処理では、PCに書き込むことはできません。 PCに書き込むには、接続されたSAPGui(=クライアント)が必要です。

OPEN DATASETおよびTRANSFERは、サーバーにデータを書き込みます。

関連する問題