FCCS_YTDメンバーにデータを入力するためのGroovyルールを使用したプロトタイプ

Financial Consolidation and Closeのフォームに年次累計(YTD)データを入力して表示するには、通常、フォームの設計にYTD_InputとYTDの2つのビュー・メンバーを含める必要があります。この要件は、フォームの設計を複雑にする可能性があります。次の例では、Groovyスクリプトを利用してこの要件を排除し、フォームにYTDビュー・メンバーのみが含まれるようにして、Groovyスクリプトで入力データを正しく管理します。この方法を使用すると、管理しやすいフォームの設計および表示が可能になります。

FCCS_YTDメンバーにデータを直接入力するためのGroovyルールを作成するには:

  1. Calculation Managerに「PreFormLoad」という名前のオンデマンド・ルールを追加します。

  2. オンデマンド・ルールのスクリプト・タイプを「Groovyスクリプト」に変更します。

  3. PreFormLoadルールに次のコードを追加します:

    operation.grid.dataCellIterator("FCCS_YTD").each { DataCell cell -> if (!cell.crossDimCell("FCCS_YTD_Input") && cell.isReadOnly())cell.forceEditable=true}
  4. PreFormLoadルールを保存して検証します。

  5. 次のように、PreFormLoadルールにデフォルトの実行時プロンプト値を指定します:

    • 連結: Entity Input

    • 通貨: Entity Currency

    • エンティティ: FCCS_Global Assumptions

    • 期間: Jul

    • シナリオ: Actual

    • 年: FY19

  6. PreFormLoadルールの6つの実行時プロンプトすべてに対して、「非表示」オプションおよび「オーバーライド値として使用」オプションを選択します。

  7. PreFormLoadルールを保存、検証およびデプロイします。

  8. Calculation Managerに「PreFormSave」という名前のオンデマンド・ルールを追加します。

  9. オンデマンド・ルールのスクリプト・タイプを「Groovyスクリプト」に変更します。

  10. PreFormSaveルールに次のコードを追加します:

    def app = operation.application
    Cube cube = operation.cube
    Member ytdInputMember =
    app.getDimension(DimensionType.VERSION).getMember("FCCS_YTD_Input")
    Collection<DataCell> pendingYtdCells =
    operation.grid.dataCellIterator("FCCS_YTD").findAll {DataCell ytd -> if (ytd.edited) {
    def ytdInput = ytd.crossDimCell(ytdInputMember.name)
    ytdInput?.formattedValue = ytd.formattedValue
    ytd.setEdited(false)
    return ytdInput == null
    }
    }
    if (pendingYtdCells) {
    DataGridBuilder builder = cube.dataGridBuilder("MM/DD/YYYY")
    Set<String> allDimNames = set(app.getDimensions(cube)*.name)
    List<String> rowDimNames = set((allDimNames -
    operation.grid.pov*.dimName) - [ytdInputMember.dimension.name]) as List
    builder.addPov(operation.grid.pov.findAll({it.dimName !=
    ytdInputMember.dimension.name})*.uniqueMbrName as String[])
    builder.addColumn(ytdInputMember.name)
    pendingYtdCells.each {DataCell cell ->
    builder.addRow(rowDimNames.collect
    {cell.getMemberName(it, MemberNameType.UNIQUE_NAME)},
    [cell.formattedValue])}
    DataGridBuilder.Status status = new DataGridBuilder.Status()
    builder.build(status).withCloseable {grid -> cube.saveGrid(grid)}
    }
    Set<String> set(Collection<String> names) {
    Set<String> set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER)
    set.addAll(names)
    return set
    }
    
  11. PreFormSaveルールを保存して検証します。

  12. 次のように、PreFormSaveルールにデフォルトの実行時プロンプト値を指定します:

    • 連結: Entity Input

    • 通貨: Entity Currency

    • エンティティ: FCCS_Global Assumptions

    • 期間: Jul

    • シナリオ: Actual

    • 年: FY19

  13. PreFormSaveルールの6つの実行時プロンプトすべてに対して、「非表示」オプションおよび「オーバーライド値として使用」オプションを選択します。

  14. PreFormSaveルールを保存、検証およびデプロイします。

  15. 次のように、行に「FCCS_Periodic」と「FCCS_YTD」がある「YTD_Test_1」という名前のフォームを追加します:

    YTDフォームのサンプル


    YTDフォームのサンプル
  16. 「ビジネス・ルール」タブをクリックし、「Consol - Rule - PreFormSave」と「Consol - Rule - PreFormLoad」を右側に移動します。「Consol - Rule - PreFormSave」ルールに対して「保存前に実行」を選択し、「Consol - Run - PreFormLoad」ルールに対して「ロード後に実行」を選択します。画面は次のように表示されます:

    ビジネス・ルールのサンプル


    ビジネス・ルールのサンプル
  17. 保存して「終了」をクリックします。

    ノート: これらのステップにより、「Actual / FY19 Jul FCCS_Global Assumptions」データが「変更」としてマークされます。プロセス単位が開始され、ロックが解除された状態になっていることを確認します。これはこのプロトタイプにのみ適用されます。実際の実装には、これらの制限はありません。

  18. 「YTD_Test_1 form」を開き、次のようにFCCS_YTDに値を追加します:

    YTD値のサンプル


    YTD値のサンプル
  19. フォームを保存します。FCCS_Periodicには、次のような対応する期別価額が移入されます:

    移入されたYTDフォームのサンプル


    移入されたYTDフォームのサンプル