ストアドプロシージャのクリティカル数ドリルダウンの設定

ストアドプロシージャに基づいたクリティカル数のドリルダウン設定は、新しいものを作成するか、既存のものをコピーしてから変更することで行えます。

ストアドプロシージャに基づいたクリティカル数のドリルダウンを設定するには、以下の手順に従います。

  1. [ドリルダウン設定] フォームを開き、フィルタを実行します。
  2. [ドリルダウン] フィールドで、ドリルダウンを特定するために未使用の整数を指定します。

    ここで整数を指定しない場合、使用可能な次の整数が自動的に割り当てられます。

  3. [説明] フィールドに、ドリルダウンとその用途がわかるよう、説明的な名前を入力します。
  4. [一般] タブで、ドリルの基本仕様を指定します。

    詳細は「ドリルダウンの一般タブでの設定」を参照してください。

  5. オプションで、[出力カラム] タブを使用して、これらのカラムに表示される出力やキャプションの表示順序を調整します。

    このタブで表示されるデータは、ステップ 4 で特定したストアドプロシージャから派生します。

    詳細は「ストアドプロシージャに基づいたドリルダウンの設定 - 出力カラムタブ」を参照してください。

  6. オプションで、[カテゴリ] タブを使用して、ドリルダウンの所属先とするカテゴリを 1 つ以上指定します。

    カテゴリを選択すると、[カテゴリ説明] フィールドが自動的に入力されます。

    詳細は「クリティカル数カテゴリ」を参照してください。

  7. オプションで、[サブドリルダウン] タブを使用して、選択したドリルダウンと併用するサブドリルダウンを 1 つ以上指定します。
  8. オプションで、[静的パラメタ] タブを使用して、名前と値の組を 1 つ以上指定します。
    注: 

    データを値のハードコーディングリストで絞り込む必要があるときは、このタブで名前と値を割り当てるようお勧めします。CRPARM() 構文を使用してクリティカル数/ドリルダウンフィルタを設定するときは、スタティックパラメタを参照できます。

    例えば、勘定科目残高ストアドプロシージャに基づくクリティカル数は、[Acct] と呼ばれる静的パラメタを持つことがあります。これにより、ストアドプロシージャが使用する勘定科目番号がわかります。製品とともに出荷される番号は 10000(現金)を使用しますが、ユーザが異なる勘定科目を監視したい、または現金勘定科目が異なる勘定科目番号を使用する場合、ユーザはこの値を変更できます。

  9. オプションで、[入力パラメタ] タブを使用して、特にサブドリルダウンの処理で使用できる値を入力します。
  10. ドリルダウンをクリティカル数と関連付けます。
    • [クリティカル数設定] フォームを起動し、クリティカル数に移動します。
    • [ドリルダウン]タブで、新規ドリルダウンを選択し、その説明を指定します。
    • レコードを保存します。
  11. 好みのコードエディタでストアドプロシージャを作成します。  

    以下の例で示されるように、ドリルダウンのパラメタはクリティカル数とやや異なります。

    
    CREATE PROCEDURE WBCanCoitemPastDueDetailsSp (
      @AsOfDate        DateType
    , @DrillNum        WBDrillNumType
    , @KPINum           WBKPINumType
    , @Id              nvarchar(500)
    , @Parm1           WBSourceNameType
    , @Parm2           WBSourceNameType
    , @Parm3           WBSourceNameType
    , @Parm4           WBSourceNameType
    , @Parm5           WBSourceNameType
    , @Parm6           WBSourceNameType
    , @Parm7           WBSourceNameType
    , @Parm8           WBSourceNameType
    , @Parm9           WBSourceNameType
    , @Parm10          WBSourceNameType
    , @Parm11          WBSourceNameType
    , @Parm12          WBSourceNameType
    , @Parm13          WBSourceNameType
    , @Parm14          WBSourceNameType
    , @Parm15          WBSourceNameType
    , @Parm16          WBSourceNameType
    , @Parm17          WBSourceNameType
    , @Parm18          WBSourceNameType
    , @Parm19          WBSourceNameType
    , @Parm20          WBSourceNameType
    , @Parm21          WBSourceNameType
    , @Parm22          WBSourceNameType
    , @Parm23          WBSourceNameType
    , @Parm24          WBSourceNameType
    , @Parm25          WBSourceNameType
    , @Parm26          WBSourceNameType
    , @Parm27          WBSourceNameType
    , @Parm28          WBSourceNameType
    , @Parm29          WBSourceNameType
    , @Parm30          WBSourceNameType
    , @Parm31          WBSourceNameType
    , @Parm32          WBSourceNameType
    , @Parm33          WBSourceNameType
    , @Parm34          WBSourceNameType
    , @Parm35          WBSourceNameType
    , @Parm36          WBSourceNameType
    , @Parm37          WBSourceNameType
    , @Parm38          WBSourceNameType
    , @Parm39          WBSourceNameType
    , @Parm40          WBSourceNameType
    , @Parm41          WBSourceNameType
    , @Parm42          WBSourceNameType
    , @Parm43          WBSourceNameType
    , @Parm44          WBSourceNameType
    , @Parm45          WBSourceNameType
    , @Parm46          WBSourceNameType
    , @Parm47          WBSourceNameType
    , @Parm48          WBSourceNameType
    , @Parm49          WBSourceNameType
    , @Parm50          WBSourceNameType
    ) AS

    WBTmpDrilldowns 一時テーブルを通して、ユーザにレコードを戻します。この一時テーブルで設定したカラムは、[ドリルダウン設定]フォームの [出力カラム] タブで設定したカラムに対応しています。 [ドリルダウン設定] フォームの詳細フォームを指定していて、個別レコードの詳細を見たい場合は、以下の例で示すように RowPointer を指定してください。

    
    INSERT INTO WBTmpDrilldowns(
      RefRowPointer
    , DATE01
    , CHAR01
    , INTE01
    , CHAR02
    , CHAR03
    , SessionID
    )
    SELECT
      coitem.RowPointer
    , coitem.due_date
    , co.co_num
    , coitem.co_line
    , co.cust_num
    , custaddr.name
    , @SessionID
    FROM coitem
    INNER JOIN co
       ON co.co_num = coitem.co_num
    LEFT OUTER JOIN custaddr
      ON custaddr.cust_num = co.cust_num
     AND custaddr.cust_seq = co.cust_seq
    LEFT OUTER JOIN item itm
      ON itm.item = coitem.item
    WHERE co.cust_num = ISNULL(NULLIF(@CustNum,''), co.cust_num)
      AND co.co_num = ISNULL(NULLIF(@CoNum,''), co.co_num)
      AND charindex(coitem.stat, @CoitemStatList) > 0
      AND qty_ordered > qty_shipped
      AND ISNULL(due_date, '1900-01-01') = dateadd(dd,="" @latedays,="" @asofdate)="" and="" ship_site="@ParmsSite" charindex(co.stat,="" @costatlist)=""> 0
      AND co.credit_hold = @CredHold
      AND (@LineFilter IS NULL OR coitem.co_line = @LineFilter)
      AND (@ItemFilter IS NULL OR coitem.item = @ItemFilter)
      AND (@ProdCodeFilter IS NULL OR itm.product_code = @ProdCodeFilter)
      AND (@WhseFilter IS NULL OR co.whse = @WhseFilter)
      AND (@StatFilter IS NULL OR co.stat = @StatFilter)
  12. WBTmpDrilldowns テーブルでこれらの追加値を設定し、ドリルダウンで表示されるものに影響を与えることができます。
    • 詳細フォームを起動すると、RowPointer は個別レコードへのリンクを提供します。
    • 目標値は [ドリルダウン設定] フォームの目標値を上書きします。
    • 警告値は [ドリルダウン設定] フォームの警告値を上書きします。

以下の例は、受注オーダ納期遅延を示します。


CREATE PROCEDURE WBCanCoitemPastDueDetailsSp (
  @AsOfDate        DateType
, @DrillNum        WBDrillNumType
, @KPINum           WBKPINumType
, @Id              nvarchar(500)
, @Parm1           WBSourceNameType
, @Parm2           WBSourceNameType
, @Parm3           WBSourceNameType
, @Parm4           WBSourceNameType
, @Parm5           WBSourceNameType
, @Parm6           WBSourceNameType
, @Parm7           WBSourceNameType
, @Parm8           WBSourceNameType
, @Parm9           WBSourceNameType
, @Parm10          WBSourceNameType
, @Parm11          WBSourceNameType
, @Parm12          WBSourceNameType
, @Parm13          WBSourceNameType
, @Parm14          WBSourceNameType
, @Parm15          WBSourceNameType
, @Parm16          WBSourceNameType
, @Parm17          WBSourceNameType
, @Parm18          WBSourceNameType
, @Parm19          WBSourceNameType
, @Parm20          WBSourceNameType
, @Parm21          WBSourceNameType
, @Parm22          WBSourceNameType
, @Parm23          WBSourceNameType
, @Parm24          WBSourceNameType
, @Parm25          WBSourceNameType
, @Parm26          WBSourceNameType
, @Parm27          WBSourceNameType
, @Parm28          WBSourceNameType
, @Parm29          WBSourceNameType
, @Parm30          WBSourceNameType
, @Parm31          WBSourceNameType
, @Parm32          WBSourceNameType
, @Parm33          WBSourceNameType
, @Parm34          WBSourceNameType
, @Parm35          WBSourceNameType
, @Parm36          WBSourceNameType
, @Parm37          WBSourceNameType
, @Parm38          WBSourceNameType
, @Parm39          WBSourceNameType
, @Parm40          WBSourceNameType
, @Parm41          WBSourceNameType
, @Parm42          WBSourceNameType
, @Parm43          WBSourceNameType
, @Parm44          WBSourceNameType
, @Parm45          WBSourceNameType
, @Parm46          WBSourceNameType
, @Parm47          WBSourceNameType
, @Parm48          WBSourceNameType
, @Parm49          WBSourceNameType
, @Parm50          WBSourceNameType
) AS
DECLARE @Severity INT
, @CoNum    CoNumType
, @CustNum  CustNumType
, @ParmsSite SiteType
, @CoStatList  LongListType
, @CoitemStatList    LongListType
, @CredHold          ListYesNoType
, @LateDays INT
, @LineFilter        CoLineType
, @ItemFilter        ItemType
, @ProdCodeFilter    ProductCodeType
, @WhseFilter        WhseType
, @StatFilter        CoitemStatusType
, @SessionID      RowPointerType
SET @Severity = 0
SET @LateDays = 0
SET @SessionId = dbo.SessionIdSp()
SET @CustNum = dbo.ExpandKyByType('CustNumType', @Parm1) SET @CoNum = dbo.ExpandKyByType('CoNumType', @Parm2) SET @LineFilter = NULLIF(@Parm3, '') SET @ItemFilter = NULLIF(@Parm4, '') SET @ProdCodeFilter = NULLIF(@Parm5, '') SET @WhseFilter = NULLIF(@Parm6, '') SET @StatFilter = NULLIF(@Parm7, '')
IF @CoNum IS NULL AND @LineFilter IS NOT NULL
   SET @LineFilter = NULL
SELECT @ParmsSite = site
FROM parms
SET @CoStatList     = ISNULL(dbo.WBGetDrillParm(@DrillNum, @KPINum, 'COStatusList'), 'POS')
SET @CoitemStatList = ISNULL(dbo.WBGetDrillParm(@DrillNum, @KPINum, 'COITEMStatusList'), 'PO')
SET @CredHold       = ISNULL(dbo.WBGetDrillParm(@DrillNum, @KPINum, 'CredHold'), 0)
SET @LateDays       = ISNULL(dbo.WBGetDrillParm(@DrillNum, @KPINum, 'LateDaysTolerance'), 0)
INSERT INTO WBTmpDrilldowns(
  RefRowPointer
, DATE01
, CHAR01
, INTE01
, CHAR02
, CHAR03
, SessionID
)
SELECT
  coitem.RowPointer
, coitem.due_date
, co.co_num
, coitem.co_line
, co.cust_num
, custaddr.name
, @SessionID
FROM coitem
INNER JOIN co
   ON co.co_num = coitem.co_num
LEFT OUTER JOIN custaddr
  ON custaddr.cust_num = co.cust_num
 AND custaddr.cust_seq = co.cust_seq
LEFT OUTER JOIN item itm
  ON itm.item = coitem.item
WHERE co.cust_num = ISNULL(NULLIF(@CustNum,''), co.cust_num)
  AND co.co_num = ISNULL(NULLIF(@CoNum,''), co.co_num)
  AND charindex(coitem.stat, @CoitemStatList) > 0
  AND qty_ordered > qty_shipped
  AND ISNULL(due_date, '1900-01-01') = dateadd(dd,="" @latedays,="" @asofdate)="" and="" ship_site="@ParmsSite" charindex(co.stat,="" @costatlist)="" 0
  AND co.credit_hold = @CredHold
  AND (@LineFilter IS NULL OR coitem.co_line = @LineFilter)
  AND (@ItemFilter IS NULL OR coitem.item = @ItemFilter)
  AND (@ProdCodeFilter IS NULL OR itm.product_code = @ProdCodeFilter)
  AND (@WhseFilter IS NULL OR co.whse = @WhseFilter)
  AND (@StatFilter IS NULL OR co.stat = @StatFilter)
RETURN @Severity
関連トピック