32FastFormula

この章の内容は次のとおりです。

FastFormulaは、様々な入力変数を使用して繰り返す計算または比較の汎用的な式です。このトピックでは、特定のFormulaの入力および出力が必要な、1つ以上のFormulaタイプに対応する各Formulaの使用方法の要約を示します。

Formulaは翻訳可能です。事前定義済Formulaは任意の言語の英数字です。Formulaテキストは翻訳の対象ではなく、英語以外のユーザー定義エレメント、入力値またはバランスを処理できます。たとえば、エレメント名を中国語で定義した場合、ベース・エレメント名は中国語で保存されます。データベース・アイテムはベース表のデータを使用して生成されるため、生成されたデータベース・アイテムには中国語のエレメント名が含まれ、Formula内でこのようなデータベース・アイテムを参照できます。

注意: 「ワークフォース配置」の「設定および保守」作業領域、または「給与計算」などのFormulaタイプに関連する各作業領域で、「FastFormula」タスクを使用できます。

給与の計算

支給項目と控除項目を表すエレメントに対して、給与計算およびスキップ・ルールを記述できます。

FastFormulaを使用して次のタスクを実行できます。

  • 各エレメントに複数の給与計算Formulaを関連付けて、ステータスの異なる従業員アサイメントに対して異なる処理を実行します。

  • 複数のデータベース・コールが必要となる非常に複雑な計算を使用する支給項目および控除項目に対して、エレメントおよびFormulaを定義します。

  • スキップ・ルールFormulaをエレメントに関連付けて、それを処理する状況を定義します。

  • 中間時点でのエレメント・エントリ値の変更など、イベントの発生時に給与計算で按分エレメント・エントリをどのように実行するかを制御する、事前定義済の按分Formulaを変更します。

福利厚生管理の計算の定義

Formulaを使用して、福利厚生プランを構成できます。Formulaは、提供されているビジネス・ルールの柔軟な代替手段として使用できます。Formulaを使用して、次のものを構成します。

  • 日付計算(登録開始日と終了日、レートや補償範囲の開始日と終了日、待機期間と登録期間、処理項目の期日など)

  • レート額と補償範囲額、最小値と最大値、または上限と下限の計算

  • 証明要件

  • 不完全月と按分の計算

  • 適格性および加入の評価

たとえば、提供された適格基準では特定の要件が満たされない場合に福利厚生適格を計算するFormulaを記述できます。

注意: 詳細は、My Oracle Support (https://support.oracle.com)のBenefits Fast Formula Reference Guide (1456985.1)を参照してください。

エレメント入力またはユーザー定義表の検証

ユーザー・エントリを検証するには、参照または最大値と最小値を使用します。

より複雑な検証を行う場合、エントリをチェックするFormulaを記述できます。また、ユーザー表のエントリを検証するFormulaを使用することもできます。

雇用関係または給与関係グループへの移入のルールの編集

給与関係グループまたは雇用関係グループを動的に移入するための基準を定義できます。

給与関係グループまたは雇用関係グループのFormulaタイプを作成する際には、式エディタまたはテキスト・エディタを使用できます。式エディタを使用すると、グループを定義するための基準を簡単に作成できます。検証など、より複雑な条件の場合は、テキスト・エディタを選択できます。

報酬の構成の定義

Formulaを使用して変更でき、既存の報酬プラン構成に柔軟性を追加できるものを次に示します。

  • 個別報酬プランの報酬割付の開始日と終了日

  • ワークフォース報酬プランの個人選択、階層決定、列のデフォルト値および通貨選択

  • 総合報酬文書に表示される項目のソース

勤怠管理用のルール・テンプレートを作成するためのFormulaの定義

Formulaを時間リポジトリ・ルール・テンプレートで使用して、ルールを作成します。Formula内には、ルール・パラメータと出力結果の組合せが提供されています。テンプレート構成を変えることにより、1つのFormulaを複数のルール・テンプレートで使用できます。

ルール・テンプレートを作成する際には、Formula名を選択してから、パラメータ・タイプと、パラメータおよび変数の表示名を構成します。どの詳細を変更すると特定の結果を達成できるかを判断するために、Formula文全体を再実行する必要はありません。

Formulaを使用して勤怠管理に適用できる内容は次のとおりです。

  • 時間を処理または計算するためのロジック

  • ルールが計算で使用する式に値を渡すことを可能にするパラメータ

  • Formulaが計算結果をルールに返すために使用する出力変数

たとえば、期間最大時間数テンプレートでは、WFM_PERIOD_MAXIMUM_TIME_ENTRY_RULE Formulaを使用して、レポートされた時間カテゴリの時間数を、定義された最大時間数と比較します。

注意: 詳細は、My Oracle Support (https://support.oracle.com)のTime and Labor Fast Formula Reference Guide (1990057.1)を参照してください。

この例では、テキスト・エディタを使用して、2つの異なる予定時間数の範囲(マネージャの範囲と他の就業者の範囲)を返すFastFormulaを作成します。

作成するFormulaを決定する際の主な検討事項は次のとおりです。

主な決定事項 この例の場合

このFormulaは特定の国別仕様データ・グループに対するFormulaですか。

いいえ、これはどの国別仕様データ・グループでも使用できるグローバルFormulaです。

このFormulaのFormulaタイプは何ですか。

予定時間数の範囲

このFormulaで使用されるコンテキストはありますか。

いいえ

データベース・アイテムのデフォルトはありますか。

はい、ASG_JOBです

入力値のデフォルトはありますか。

いいえ

戻り値は何ですか。

MIN_HOURS、MAX_HOURS、FREQUENCY

テキスト・エディタを使用したFastFormulaの作成によるマネージャの予定時間の決定

  1. 「設定および保守」作業領域で、次のオプションを選択します。

    オファリング: ワークフォース配置

    機能領域: 給与

    タスク: FastFormula

  2. 「タスクに進む」をクリックします。

  3. 「FastFormula」ページで、「作成」アイコンをクリックします。

  4. 「FastFormulaの作成」ページで、次のようにフィールドに入力します。

    FastFormulaのフィールド FastFormulaの値

    Formula名

    マネージャの予定時間数の範囲

    Formulaタイプ

    予定時間数の範囲

    説明

    マネージャの時間数の範囲

    有効開始日

    2010年1月1日

  5. 「続行」をクリックします。

  6. 「Formulaテキスト」セクションに次のFormula詳細を入力します。

    /* DATABASE ITEM DEFAULTS BEGIN */
    DEFAULT FOR asg_job IS ' '
    /* DATABASE ITEM DEFAULTS END */
    JOB_1 = ASG_JOB
    IF JOB_1 = 'Manager' then
    (MIN_HOURS = 25
    MAX_HOURS = 40
    FREQUENCY = 'H')
    else
    (MIN_HOURS = 20
    MAX_HOURS = 35
    FREQUENCY = 'H')
    return MIN_HOURS, MAX_HOURS, FREQUENCY

  7. 「コンパイル」をクリックします。

  8. 「保存」をクリックします。

この例では、レポートおよび処理のために役員をグループ化するFastFormulaを作成します。すべての役員は、部門EXECT_10000に属します。Formulaを作成した後、それをオブジェクト・グループ・パラメータに追加して、EXECT_10000部門に属する就業者のみが処理で使用されるようにする必要があります。

作成するFormulaを決定する際の主な検討事項は次のとおりです。

主な決定事項 この例の場合

このFormulaは特定の国別仕様データ・グループに対するFormulaですか。

はい、InVisionです

このFormulaのFormulaタイプは何ですか。

給与関係グループ

式エディタを使用したFastFormulaの作成

  1. 給与計算タスク・ページで、「FastFormula」タスクをクリックします。

  2. 「FastFormula」ページで、「作成」アイコンをクリックします。

  3. 「FastFormulaの作成」ページで、次のようにフィールドに入力します。

    FastFormulaのフィールド FastFormulaの値

    Formula名

    役員の給与関係グループ

    タイプ

    給与関係グループ

    説明

    役員

    国別仕様データ・グループ

    Vision LDG

    有効基準日

    2010年1月1日

    エディタのタイプ

    式ビルダー

    注意: より複雑な条件を使用してグループを作成する場合は、「テキスト」を選択できます。ただし、Formulaを保存した後でエディタのタイプを変更することはできません。
  4. 「続行」をクリックします。

  5. 「Formula詳細」セクションで、「後に追加」をクリックして行を追加し、次のフィールドに入力します。

    結合 データベース・アイテム名 データ型 オペランド リテラル値

    適用なし

    DEPARTMENT

    文字

    =

    'EXECT_10000'

    and

    SELECT_EMP

    文字

    =

    'YES'

  6. 「コンパイル」をクリックします。

  7. 「保存」をクリックします。

コンパイル・エラーは、Formulaのコンパイル後に「FastFormula」ページに表示されます。エラーが発生すると、コンパイラはコンパイル・プロセスを停止します。エラー・メッセージには、行番号およびエラー・タイプが表示されます。

一般的なコンパイル・エラー

一般的なFormulaコンパイル・エラーをいくつか次に示します。

Formulaコンパイル・エラー 説明

構文エラー

FormulaテキストがFormula言語の文法に違反しています。たとえば、IF文でIFのかわりにIF1を使用した場合。

文の順序が正しくない

ALIASDEFAULTまたはINPUT文は、他の文よりも後に配置します。

ASSIGNMENTの使用方法が間違っている

次のいずれかの条件が存在する場合に発生します。

  • ASSIGNMENTによって値がデータベース・アイテムに割り当てられています。

  • CHANGE_CONTEXTS文の外部でコンテキストに値が割り当てられています。

  • FormulaがCHANGE_CONTEXTS文の内部で値を非コンテキスト変数に割り当てています。

CHANGE_CONTEXTS文をFormulaで使用できます。

ALIAS文の使用方法が間違っている

ALIAS文はデータベース・アイテムに対してのみ使用できます。

DEFAULT文がない

デフォルト値を指定するデータベース・アイテムにはDEFAULT文が必要です。

DEFAULT文の使用方法が間違っている

DEFAULT文は、入力またはデータベース・アイテム以外の変数に対して指定します。

変数が初期化されていない

コンパイラは、使用する変数が初期化されていないことを検出しました。すべての場合、コンパイラがこれを行うことはできません。このエラーは、Formulaタイプでサポートされていないコンテキストを必要とするデータベース・アイテムがFormulaに含まれている場合によく発生します。Formulaは、データベース・アイテムをローカル変数として処理します。たとえば、バランス・データベース・アイテムには、PAYROLL_REL_ACTION_ID、PAYROLL_ASSIGNMENT_IDおよびCALC_BREAKDOWN_IDのコンテキストが必要です。通常、これらの文は「Oracle Payroll」タイプのFormulaで使用します。

関数コールがない

コンパイラは関数コールを認識していません。戻りタイプ、関数名およびパラメータ・タイプの組合せが、いずれの使用可能な関数とも一致しません。

演算子の使用方法が間違っている

Formulaの演算子を使用しているインスタンスが、その演算子の許可される使用方法と一致していません。

たとえば、+演算子には2つの使用方法が許可されています。オペランドのデータ型は、両方ともNUMBERであるか、両方ともTEXTです。

データ型の使用方法が整合していない

Formulaで複数のデータ型のFormula変数が使用されています。あるいは、間違ったデータ型のデータベース・アイテムまたはコンテキストがFormulaで使用されています。

たとえば、Formulaの開始部分で変数AにNUMBERの値が割り当てられているのに、後からTEXT値が割り当てられている場合などです。

EXIT文がWHILEループ内にない

最終的にfalseになるか、ループを抜けるためのEXITコールが存在しない条件。

コンテキストの使用方法が間違っている

コンテキストとしての変数、または変数としてのコンテキストがFormulaで使用されています。

たとえば、FormulaでAREA1に通常の変数としての値が割り当てられているのに、後からGET_CONTEXTコール内でコンテキストとしてAREA1が使用されている場合などです。

FastFormula実行エラーは、Formulaの実行中に問題が生じたときに発生します。通常、Formulaまたはアプリケーション・データベースでデータ関連の問題があると、このようなエラーが発生します。

Formula実行エラー

Formula実行エラーをいくつか次に示します。

Formula実行エラー 説明

変数が初期化されていない

変数またはコンテキストが初期化されているかどうかをFormulaコンパイラが完全には判断できない場合、変数が初期化されているかどうかをテストするコードが生成されます。

Formulaの実行時に、変数またはコンテキストが初期化されていないと、このコードによりエラーが表示されます。

ゼロで除算

数値がゼロで除算された場合に発生します。

データが見つからない

非配列型のデータベース・アイテムが予期せずデータの戻しに失敗した場合に発生します。データベース・アイテムがデータを戻せない場合は、デフォルト値を提供する必要があります。

DEFAULT文を使用してデフォルト値を指定できます。また、Formula関数コードにエラーがある場合も、このエラー・メッセージが表示されることがあります。

行が多すぎる

非配列型のデータベース・アイテムが予期せず複数のデータ行を返した場合に発生します。原因は、データへのアクセスの状況に関する前提が間違っていることです。

また、Formula関数コードにエラーがある場合も、このエラー・メッセージが表示されることがあります。

NULLデータが見つからない

データベース・アイテムが予期せずNULLデータ値を返した場合に発生します。データベース・アイテムがNULL値を返すことができる場合は、デフォルト値を提供します。

注意: 一部のデータベース・アイテムは、NULL値を返すことができません。データベース・アイテムがNULL値を返すことができる場合は、そのデータベース・アイテムのデフォルト値を指定できます。

値が許容範囲を超えている

文字列の最大許容長を超えているなど、様々な理由で発生します。

無効な数値

Formulaが数値以外の文字列を数値に変換しようとした場合に発生します。

ユーザー定義関数エラー

Formula関数内で発生します。このエラー・メッセージ・テキストは、Formulaエラー・メッセージの一部として提供されます。

外部関数コール・エラー

Formula関数がエラーを返しますが、Formulaコードに追加情報を提供しません。関数が実行コードのロギング先にエラー情報を送信している可能性があります。

関数がNULL値を返した

Formula関数がNULL値を返します。

反復が多すぎる

単一のWHILEループ、またはWHILEループの組合せが、許可される最大反復数を超えています。このエラーは、終了できないループを終了するために発生します。終了できないループは、Formula内のプログラミング・エラーを示しています。

配列データ値が設定されていない

Formulaがデータ値のない配列索引へのアクセスを試みています。このエラーは、Formulaコード内で発生します。

WSA_EXISTSの無効なタイプ・パラメータ

WSA_EXISTSコールで無効なデータ型を指定しています。

格納済アイテムのデータ型が間違っている

WSA_GETを使用してアイテムを取得する際に、実際のデータ型が格納済アイテムのデータ型と一致していません。このエラーは、コール元のFormula内で発生します。

コールされた式が見つからない

FormulaからFormulaをコールしようとしたときに、コールされたFormulaが見つかりません。このエラーは、コール元Formulaの問題またはインストールの問題によって発生する可能性があります。

再帰Formulaコール

FormulaをそのFormula自体からコールしようとしました。コールは、別のコール先Formulaから直接または間接的に行うことができます。再帰的な方法でFormulaをコールすることは許可されていません。

コール先Formulaとコール元Formula内の入力データの型が異なる

FormulaからFormulaをコールする際に、コール先のFormula内の入力データ型がコール元Formulaで指定されているデータ型と一致しません。

コール先Formulaとコール元Formula内の出力の型が異なる

FormulaからFormulaをコールする際に、コール先のFormula内の出力データ型がコール元Formulaで指定されているデータ型と一致しません。

Formulaコールが多すぎる

Formulaがそのテキスト内で別のFormulaをコールしたために、階層になった場合。階層の最大の深さは10です。

FastFormulaに関するFAQ

複数のFastFormulaを同時に作成または更新する場合、「給与管理」作業領域の「プロセスまたはレポートの送信」ページで「Formulaのコンパイル」プロセスを実行します。

コンパイル・エラーは、Formulaをコンパイルするときに「FastFormula」ページで発生します。エラー・メッセージにエラーの性質が説明されます。よくあるコンパイル・エラーは、入力ミスによる構文エラーです。ダッシュボードでエラー・メッセージを参照することも、プロセスの実行直後に「メッセージ」タブに移動することもできます。

実行エラーは、Formulaの実行中に問題が発生した場合に発生します。通常、Formulaまたはアプリケーション・データベースでデータ関連の問題があると、このようなエラーが発生します。