要求の発行

5218 ワード

1、まず関数fnd_を呼び出すrequest.add_レポートを印刷するrtfテンプレートを設定します.
RESULT:= FND_REQUEST.ADD_LAYOUT(TEMPLATE_APPL_NAME => :TEMPLATE_APPL_NAME,
                                TEMPLATE_CODE      => :TEMPLATE_CODE,
                                TEMPLATE_LANGUAGE  => :TEMPLATE_LANGUAGE,
                                TEMPLATE_TERRITORY => :TEMPLATE_TERRITORY,
                                OUTPUT_FORMAT      => UTPUT_FORMAT,
                                NLS_LANGUAGE       => :NLS_LANGUAGE);

説明:戻り値:
booleanタイプの変数;template_appl_name:要求テンプレートに対応するアプリケーションジェーン;template_code:要求テンプレートの略称で、一般的に要求の略称と同じである.template_Language:要求時テンプレートを実行する言語を指し、中国語はZH、英語はUSであり、このパラメータはテンプレートを掛けるときに選択した言語範囲内でなければならない.template_territory:言語対応の地域を指し、中国はCNである.output_format:PDF、EXCELなど、レポート出力時のフォーマットタイプを指します.nls_Language:空にすればいいです. 
2、result戻り値がtrueの場合に再び関数FND_を呼び出すREQUEST.SUBMIT_REQUESTは正式に要求を提出します:
ln_request_id := FND_REQUEST.SUBMIT_REQUEST(APPLICATION => :APPLICATION,
                                            PROGRAM     => :PROGRAM,
                                            DESCRIPTION => :DESCRIPTION,
                                            START_TIME  => :START_TIME,
                                            SUB_REQUEST => :SUB_REQUEST,
                                            ARGUMENT1   .. 100 => :ARGUMENT1 .. 100);

説明:戻り値:数値タイプの変数.アプリケーション:要求に対応するアプリケーションの略称を指す.プログラム:要求の略称を指す.description:呼び出し時に空にすればよい説明を指す.         start_time:要求が実行を開始した時間を指し、呼び出し時に空にすれば、即時実行を表す.         sub_request:現在のリクエストがサブリクエストであるかどうかを指し、一般的に呼び出し時にfalseを付与する.         argument1..100:リクエストを呼び出すときのパラメータを指し、最大100個で、formで呼び出すときに最後のパラメータの後にchr(0)で最後のパラメータとして表すことができ、100個のパラメータを書く必要はありません.pl/sqlで呼び出す場合は100個のパラメータを書く必要があります.3、実行後ln_request_id>0はコミットに成功したことを示し、最終的にコミットに成功するにはcommitを明示的に実行する必要がある.期間中にcommitが明示的に実行されないと、リクエストがコミットされた後にすぐに実行されず、リクエストが成功しません.4、関数も使えます
 FND_CONCURRENT.WAIT_FOR_REQUEST(REQUEST_ID IN NUMBER DEFAULT NULL,
                                 INTERVAL   IN NUMBER DEFAULT 60,
                                 MAX_WAIT   IN NUMBER DEFAULT 0,
                                 PHASE OUT VARCHAR2,
                                 STATUS OUT VARCHAR2,
                                 DEV_PHASE OUT VARCHAR2,
                                 DEV_STATUS OUT VARCHAR2,
                                 MESSAGE OUT VARCHAR2) RETURN BOOLEAN;

説明:コンカレント・リクエストの完了を待機し、リクエストのフェーズ、ステータス、および完了メッセージを返します.待っている間に一定時間おきにチェックします.ここでrequest_idは同時要求のidを指し、intervalは2回の検査で待機している秒数を指し、2回の検査の間にプログラムが休憩し、max_waitとは、同時要求の完了を待つ最長時間を秒単位で指す.補足:Oracleの要求操作時に同時処理されるため、この関数の実行は長い間待つ可能性があります.そのため、一般的にはこの関数の使用は推奨されません.実際にはfnd_request.submit_request関数の戻り値がゼロでないことは、リクエストのコミットに成功したことを示します.5、プロシージャeditor_を使用可能pkg.Report(REQUEST_ID,'Y')は、要求が正常に実行された後に生成されたレポートを表示します.ただし、Oracleの同時処理メカニズムのため、この関数を実行すると、生成されたレポートが表示されるまで時間がかかる可能性があります.このプロセスを実行するには、要求が完了する必要があるためです.例:
PROCEDURE PRINT IS
  L_DEFAULT_LANGUAGE  VARCHAR2(20);
  L_DEFAULT_TERRITORY VARCHAR2(20);
  L_TEMPLATE_CODE     VARCHAR2(200);
  REQUEST_ID          NUMBER;
  V_LAYOUT            BOOLEAN;
BEGIN
  BEGIN
    SELECT XTV.DEFAULT_LANGUAGE,
           XTV.DEFAULT_TERRITORY,
           XTV.TEMPLATE_CODE
      INTO L_DEFAULT_LANGUAGE,
           L_DEFAULT_TERRITORY,
           L_TEMPLATE_CODE
      FROM XDO_TEMPLATES_VL XTV
     WHERE XTV.APPLICATION_SHORT_NAME = 'CUX'
       AND XTV.TEMPLATE_CODE = :PRINT_BANK_APY.TEMPLATE_CODE;
  EXCEPTION
    WHEN OTHERS THEN
      FND_MESSAGE.SET_NAME('CUX',
                           'RTF !');
      FND_MESSAGE.ERROR;
      RAISE FORM_TRIGGER_FAILURE;
  END;
  V_LAYOUT := FND_REQUEST.ADD_LAYOUT('CUX',
                                     L_TEMPLATE_CODE,
                                     L_DEFAULT_LANGUAGE,
                                     L_DEFAULT_TERRITORY,
                                     'PDF');

  REQUEST_ID := FND_REQUEST.SUBMIT_REQUEST(APPLICATION => 'CUX',
                                           PROGRAM     => 'CUXAPYPNT',
                                           DESCRIPTION => NULL,
                                           START_TIME  => NULL,
                                           SUB_REQUEST => FALSE,
                                           ARGUMENT1   => :CUX_EXP_CREDIT_HEADERS.CREDIT_HEADER_ID);
  COMMIT;
  IF REQUEST_ID IS NULL OR REQUEST_ID <= 0 THEN
    FND_MESSAGE.SET_NAME('CUX',
                         ' ');
    FND_MESSAGE.ERROR;
    RAISE FORM_TRIGGER_FAILURE;
  ELSE
    FND_MESSAGE.SET_NAME('CUX',
                         ' , :' || REQUEST_ID);
    FND_MESSAGE.SHOW;
    CANCLE;
  END IF;
END;