会计期间、日期区间
1、取一个日期的 年、月、日、星期
#TODAY、YEAR(日期)、MONTH(日期)、DAY(日期)、WEEKDAY(日期)
LET l_today = TODAY #当前日期
LET l_year = YEAR(2014/02/13) #取日期的年:2014
LET l_month = MONTH(2014/02/13) #取日期的月:2
LET l_day = DAY(2014/02/13) #取日期的日:13
= s_day(2014/02/13)
LET l_weekday = WEEKDAY(2014/02/13) #取日期是星期几:4
2、取一个日期所在月份的 第一天、最后一天、月一共多少天
#s_months(日期)、s_first(日期)、s_getfirstday(日期)、s_last(日期)、s_getlastday(日期)
#下面是只计算日期,不是会计期间的月初、月末天、一个会计期间多少天
#如果是12期制,则一般都是一样;具体还要考虑aoos010、aoos021、aoos031的期间设置
LET l_monDays = s_months(2014/02/13) #返回日期所在月份的月天数:28
LET l_monFirstDay = s_first(2014/02/13) #返回日期所在月份的第一天:1
= s_getfirstday(2014/02/13)
LET l_monLastDay = s_last(2014/02/13) #返回日期所在月份的最后一天:28
= s_getlastday(2014/02/13)
3、会计期间相关
#1.取得日期所在会计年月: s_yp(日期) RETURNING 日期所在会计年,日期所在会计月
s_yp(p_date) RETURNING l_year,l_month
#代码:s_yp.4gl
# Input Parameter: p_date 日期
# Return Code....: l_year 会计年度
# l_month 期別
Demo:CALL s_yp(p_date) RETURNING l_year,l_month
#2.取得日期所在会计年or期别or季度or周
s_get_aznn(p_plant,p_bookno,p_date,p_flag) RETURN p_mm
#代码:s_get_aznn.4gl
# Descriptions...: 传入营运中心,账别,日期,抓取aznn_file的年度,季别,期别和周别
# Input Parameter:
# p_plant 营运中心
# p_bookno 账别
# p_date 日期
# p_flag 标识符 1,回传年度 2,回传季别 3,回传期别 4,回传周别
# Return code: p_mm 回传值 年度 /季别 /期别 /周别
Demo:CALL s_get_aznn(p_plant,p_bookno,p_date,p_flag) RETURN p_mm
#3.根据当前取年度期别 取 上一期年度期别: s_lsperiod(本期年度,本期期别) RETURNING 上期年度,上期期别
s_lsperiod(p_sma51,p_sma52) RETURNING l_sma51, l_sma52
#代码:s_lsperiod.4gl
# Input Parameter: p_sma51 本期年度
# p_sma52 本期期別
# Return code....: l_sma51,l_sma52
Demo:CALL s_lsperiod('2014','1') RETURNING 2013,12 #注意,需是否是12期
#4.根据会计年,月,取该会计年月期起始、截止日期
s_azm(p_year,p_mon) RETURNING l_flag,l_bdate,l_edate
或
s_azn01(p_year,p_month) RETURNING l_bdate,l_edate
#代码:s_azm.4gl 或 s_azn01.4gl
# Input PARAMETER: p_year 會計年度
# p_mon 日期
# RETURN Code....: l_flag 成功否
# 1 YES
# 0 NO
# l_bdate 起始日期
# l_edate 截止日期
Demo:CALL s_azm(p_year,p_mon) RETURNING l_flag,l_bdate,l_edate
Demo:CALL s_azn01(p_year,p_month) RETURNING l_bdate,l_edate
#5.多帐别,根据该帐别,会计年,月,取该会计年月期起始、截止日期
s_azmm01(p_year,p_month,p_ooz02p,p_ooz02b_c) RETURNING l_bdate,l_edate
或
s_azmm(p_year,p_mon,p_ooz02p,p_ooz02b_c) RETURNING l_flag,l_bdate,l_edate
#代码:s_azmm01.4gl 或 s_azmm.4gl
# Input PARAMETER: p_year 會計年度
# p_month 期別
# p_ooz02p 總帳管理系統所在營運中心編號
# p_ooz02b_c 總帳管理系統使用帳套編號
# RETURN Code....: l_flag 成功否 1 YES;0 NO
# l_bdate 起始日期
# l_edate 截止日期
Demo:CALL s_azmm(p_year,p_mon,p_ooz02p,p_ooz02b_c) RETURNING l_flag,l_bdate,l_edate
Demo:CALL s_azmm01(p_year,p_month,p_ooz02p,p_ooz02b_c) RETURNING l_bdate,l_edate
4、工作日、交期计算
#1.检查当前日是否工作日:s_daywk(日期) RETURNING 返回是否工作日
s_daywk(p_date) RETURNING l_flag
#代码:s_daywk.4gl
# Input Parameter: p_date date
# Return code....: 1 YES 工作日
# 0 NO 非工作日
# 2 無資料 工作日未设置,检查asmp400、asmi400
Demo:IF NOT s_daywk(p_date) ...
#2.检查当前日是否工作日:s_daywk(日期) RETURNING 返回是否工作日,最近的工作日
s_wkday(p_date) RETURNING l_flag,l_date
#代码:s_wkday.4gl
# Input Parameter: p_date date
# Return code....: 1 YES 工作日 / 0 NO 非工作日
# 2 l_date 最近的working date
Demo:CALL s_wkday(p_date) RETURNING l_flag,l_date
#3.计算2个日期区间有多少个工作日:s_wksize(起始日,结束日) RETURNING 计算正确flag,多少个工作日
s_wksize(p_fdate,p_edate) RETURNING l_flag,l_n
#代码:s_wksize.4gl
# Input Parameter: p_fdate 起始日期
# p_edate 截止日期
# Return Code....: l_flag 0:正確 1:錯誤
# l_n 工作日天數
Demo:CALL s_wksize(p_fdate,p_edate) RETURNING l_flag,l_n
#4.交期计算:推算日期, 但跳過非工作日: s_aday(日期,向前or向后,多少天) RETURNING 推算出日期
s_aday(p_date,p_op,p_offset) RETURNING l_date
#代码:s_aday.4gl
# Input Parameter: p_date 日期
# p_op 1:往后推算
# -1:往前推算
# p_offset 天數,無條件進位
# Return Code....: p_wdate working date
Demo:CALL s_aday(p_date,p_op,p_offset) RETURNING l_date
库存有效期设置、检查库存有效期、库存有效期剩余天数
#1.检查料+仓+库+批的库存是否超出有效期
s_actimg(p_item,p_ware,p_loc,p_lot)
或
s_actimg1(p_item,p_ware,p_loc,p_lot,p_dbs)
#代码:s_actimg.4gl 或 s_actimg1.4gl
# Input Parameter: p_item 料件編號
# p_ware 倉庫號碼
# p_loc 儲位號碼
# p_lot 批次
# p_dbs 資料庫代號
# Return Code....: 0 該批號已過期
# 1 該批號未過期
Demo:IF NOT s_actimg1(p_item,p_ware,p_loc,p_lot,p_dbs) ...
转载请注明:赫非域 » TIPTOP 会计期间、日期区间函数