FCCS_YTD 멤버에 데이터를 입력하기 위해 Groovy 규칙을 사용하는 프로토타입

Financial Consolidation and Close 양식에서 YTD(연 누계) 데이터를 입력하고 표시하려면 다음 방법 중 하나를 사용합니다.

FCCS_YTD 멤버에 직접 데이터를 입력할 Groovy 규칙을 생성하려면 다음을 수행합니다.

  1. Calculation Manager "PreFormLoad"에서 주문형 규칙을 추가합니다.

  2. 주문형 규칙의 스크립트 유형을 "Groovy Script"로 변경합니다.

  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 Script"로 변경합니다.

  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 양식