设置存储过程关键编号向下钻取

创建新向下钻取或复制现有向下钻取,然后进行修改,即可根据存储过程设置关键编号向下钻取。

要根据存储过程设置关键编号向下钻取:

  1. 打开向下钻取设置表单,并执行在用筛选器。
  2. 向下钻取字段中,指定用于识别向下钻取的未使用的整数。

    如果您没有在此处指定整数,系统将自动指派下一个可用的整数。

  3. 说明字段中,提供可轻松识别向下钻取及其使用的说明性名字。
  4. 常规选项卡上,设置向下钻取的基本规范。

    有关详细信息,请参见进行向下钻取的常规选项卡设置

  5. (可选)使用输出列选项卡重新排列这些列的输出和标题的显示顺序。

    在该选项卡中显示的数据源于在步骤 4 中确定的存储过程。

    有关详细信息,请参见设置基于存储过程的向下钻取 - 输出列选项卡

  6. (可选)使用类别选项卡可指定向下钻取所属的一个或多个类别。

    选择类别后,系统将自动填充类别说明字段。

    有关详细信息,请参见关键编号类别

  7. (可选)使用次级向下钻取选项卡可指定要与配合使用的一个或多个次级向下钻取。

    有关详细信息,请参见设置基于存储过程的次级向下钻取

  8. (可选)使用静态参数选项卡指定一个或多个名称-值对。
    注意:

    如果数据需要按硬编码值列表细化,我们建议您在此选项卡上指定名称和值。随后在使用 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 在启动明细表单时提供特定记录的链接。
    • GoalValue 覆盖来自详查设置表单的目标值
    • AlertValue 覆盖来自详查设置表单的警报值

下面显示了客户订单过期示例:


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
相关主题