系统单据编号的几种实现方法

系统单据编号介绍:
<1>直接调用系统函数:(模组名,单号,单据日期,单据性质,表名,栏位名……)

CALL s_auto_assign_no("aco",g_cno.cno01,g_cno.cno02,"14","cno_file","cno01","","","")
RETURNING li_result,g_cno.cno01


<2>简单的一句SQL语句实现编号,主要单别+日期年月日+时间时分秒毫秒

SELECT 'E11-'||TO_CHAR(SYSDATE,'YY')||
(SELECT CASE  MONTH(TO_CHAR(SYSDATE)) 
WHEN 01 THEN '1' WHEN 02 THEN '2' WHEN 03 THEN '3' WHEN 04 THEN '4'
WHEN 05 THEN '5' WHEN 06 THEN '6' WHEN 07 THEN '7' WHEN 08 THEN '8' 
WHEN 09 THEN '9' WHEN 10 THEN 'A' WHEN 11 THEN 'B' WHEN 12 THEN 'C' 
END 
FROM DUAL)||TO_CHAR(SYSDATE,'DDHH24MI')||TO_CHAR(SYSTIMESTAMP,'ssff2') 
FROM DUAL 

Systimestamp 函数返回本机数据库上当前系统日期和时间(包括微秒和时区).
你也可以选择使用to_char()函数来转换systimestamp()函数.

例如:
1.SQL> select systimestamp 时间 from dual;
时间
--------------------------------------------------------------------------------
22-9月 -12 09.02.21.389797 上午 -04:00

2.SQL> select to_char(systimestamp,'SSSS.FF') 格式化 from dual;

格式化
--------------
1313.327268

3.SQL> select to_char(systimestamp,'YYYY-MM-DD HH24MISSFF9') 格式化后 from dual;

格式化后
--------------------------
2012-09-22 090815972656000

 

<3>单据流水号函数(没加单别)

#单据编号为l_slip
FUNCTION s_auno(p_date)
DEFINE   l_slip     VARCHAR(8),   #单别
          t_slip     VARCHAR(8),   #单号
          p_date     DATE,         #日期参数,根据日期得到年月
          l_date     VARCHAR(6),
         l_yymm     VARCHAR(4),
         l_mxno     VARCHAR(8),
         t_mxno     VARCHAR(4),
         t_s        VARCHAR(4)

WHENEVER ERROR CONTINUE
MESSAGE "单据取号中..."
#--编号前四位(单据年月号)--
#--如果日期没有输入则以当前日期为准
   IF cl_null(p_date) THEN
      LET l_date = g_today USING 'YYYYMM'
   ELSE
      LET l_date = p_date USING 'YYYYMM'
   END IF 
#--截取年月的后四位--
   LET l_yymm = l_date[3,6]
   LET t_slip[1,4] = l_yymm
#--编号后四位(单据流水号)--
   LET t_s = t_slip[1,4]
   SELECT MAX(编号) INTO l_mxno FROM 表
   WHERE  编号[1,4] = t_s
   CASE WHEN l_mxno IS NULL      LET t_slip[5,8] = '0001'
        WHEN l_mxno IS NOT NULL  LET t_slip[5,8] = (t_mxno+1) USING '&&&&'
        OTHERWISE                CALL cl_err('',SQLCA.sqlcode,1)
   END CASE
   LET t_mxno = l_mxno[5,8]
#--编号OK--
   MESSAGE "已经产生单据编号:",t_slip
   LET l_slip = t_slip
   RETURN l_slip
END FUNCTION

 

******************************************************************************************************************************************

大笑大笑==== Till good is better, but better best

大笑大笑====“我的努力不会停止,敬请期待吧!”My trying hard will go on!Please wait and see!

 ******************************************************************************************************************************************


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
进存销系统单据编号格式设计通常根据具体需求和业务流程来制定。下面是一些常见的单据编号格式设计方法,供参考: 1. 顺序编号:使用连续的数字作为单据编号。例如,001、002、003等。这种格式简单直观,易于管理,但缺点是无法提供额外的信息。 2. 年份+顺序编号:在顺序编号的基础上添加年份信息。例如,2022-001、2022-002、2022-003等。这种格式可以提供时间参考,并且每年重置编号,便于归档和查询。 3. 类别+顺序编号:根据不同的单据类型为每种类型分配一个特定的字母或简称,并结合顺序编号。例如,进货单可以用字母"J"示,销售单可以用字母"S"示,采购退货单可以用字母"T"示,编号为J001、S001、T001等。这种格式可以区分不同的单据类型,并且便于识别和整理。 4. 组合编码:将多个信息元素组合在一起形成单据编号。例如,供应商代码+日期+顺序编号,或者仓库代码+日期+顺序编号等。这种格式可以提供更丰富的信息,便于跟踪和管理。 无论选择哪种格式,设计单据编号时应考虑以下几点: - 唯一性:确保每个单据都有唯一的编号,避免重复和混淆。 - 可读性:保证编号清晰易读,方便用户理解和操作。 - 有序性:确保编号按照一定的规则或顺序生成,便于管理和查找。 - 可扩展性:考虑到未来可能的业务扩展和需求变化,设计灵活的编号格式。 根据实际情况和业务需求,您可以选择适合您企业的单据编号格式,并结合系统功能进行设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值