如何取某日的周几,月周,年周(转换例程)

原创 2015年11月17日 19:32:03

周几

 DATAdiw_first TYPE VALUE '19790101'.
  RESULT SOURCE_FIELDS-/BIC/ZBUSDE diw_first MOD 1.


月周

=====

FM 

ZGET_WEEK_INFO_BASED_ON_DATE

参考 ECC中的

GET_WEEK_INFO_BASED_ON_DATE

因为BW中没有这个FM

=====

FM:

import: date

export: ZWEEK_MON  type /BIC/OIZWEEK_MON( numc 2)

ZWEEK_YEAR type  /BIC/OIZWEEK_YER   (numc 2)





FUNCTION ZGET_MONTH_WEEK.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(DATE) TYPE  SY-DATUM DEFAULT SY-DATUM
*"  EXPORTING
*"     REFERENCE(ZWEEK_MON) TYPE  /BIC/OIZWEEK_MON
*"     REFERENCE(ZWEEK_YEAR) TYPE  /BIC/OIZWEEK_YER
*"----------------------------------------------------------------------
DATA:
  ZFLAG TYPE /BIC/OIZFLAG,
  p_date1 type sy-datum,
  p_date2 type sy-datum,
  p_date3 type sy-datum,
  P_DATE5 TYPE SY-DATUM,
  P_DATE6 TYPE SY-DATUM,
  P_DATE7 TYPE SY-DATUM,
  P_DATE8 TYPE SY-DATUM,
  L_DATE TYPE SY-DATUM,
  L_DATE1 TYPE SY-DATUM,
  current_week type scal-week,
  current_week1 type scal-week,
  previous_week type scal-week.

  p_date3 DATE.
  CALL FUNCTION  'ZGET_WEEK_INFO_BASED_ON_DATE'
  EXPORTING
  date =  p_date3
  IMPORTING
  week current_week
  monday p_date1
  sunday p_date2.
ZWEEK_YEAR current_week+4(2).
* 输入日期的年周,周一与周日。

"判断1日是否跨月
* CONCATENATE p_date3+0(6) '01' INTO L_DATE1.
*  CALL FUNCTION  'ZGET_WEEK_INFO_BASED_ON_DATE'
*  EXPORTING
*  date = L_DATE1
*  IMPORTING
*  week = CURRENT_WEEK1
*  monday = p_date7
*  sunday = p_date8.
*  IF P_DATE7+4(2) <> P_DATE3+4(2). "1日跨月
*    ZFLAG = 'X'.
*  ELSE.
*    ZFLAG = 'Y'.
*  ENDIF.

  If p_date1+4(2<> p_date2+4(2)."如果跨月
    IF DATE+4(2P_DATE2+4(2)"如果输入日期与星期日同月(某月最前几天)
  ZWEEK_MON 1.
     ELSEIF P_DATE3+4(2P_DATE1+4(2)."如果输入日期与星期一同月(某月最后几天)
       p_date3 p_date3 7.
       CALL FUNCTION 'ZGET_WEEK_INFO_BASED_ON_DATE'
  EXPORTING
  date =  p_date3
  IMPORTING
  week current_week1
  monday p_date5
  sunday p_date6."取出上周的周一和周日
 L_date p_date3.
       WHILE p_date6+4(2L_DATE+4(2).

       CALL FUNCTION  'ZGET_WEEK_INFO_BASED_ON_DATE'
  EXPORTING
  date p_date3
  IMPORTING
  week previous_week
  monday p_date5
  sunday p_date6.
  P_DATE3 P_DATE3 7.
  ENDWHILE.
IF CURRENT_WEEK+0(4> PREVIOUS_WEEK+0(4)"如果跨年
    CONCATENATE CURRENT_WEEK+0(4'01' INTO PREVIOUS_WEEK.
    ZWEEK_MON CURRENT_WEEK PREVIOUS_WEEK + 1.
  ELSE.
  ZWEEK_MON current_week previous_week.
  ENDIF.
 ENDIF.


  ELSE."如果不跨月
    L_DATE P_DATE3.
  WHILE p_date2+4(2L_DATE+4(2)"只要周日月份等于输入日月份
  p_date3 p_date3 7.
  CALL FUNCTION  'ZGET_WEEK_INFO_BASED_ON_DATE'
  EXPORTING
  date p_date3
  IMPORTING
  week previous_week
  monday p_date1
  sunday p_date2.
  ENDWHILE.
  IF CURRENT_WEEK+0(4> PREVIOUS_WEEK+0(4)"如果跨年
    CONCATENATE CURRENT_WEEK+0(4'01' INTO PREVIOUS_WEEK.
    ZWEEK_MON CURRENT_WEEK PREVIOUS_WEEK + 2.
  ELSE.
  ZWEEK_MON current_week previous_week."不跨年,不跨月
  ENDIF.
  ENDIF.







ENDFUNCTION.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

例程

什么是例程(Routine)? 例程就是我们可以自己定义的程序代码。通过程序代码来完成我们的需求,因为业务是千变万化,如果想让产品能跟随上业务的脚步,就必须要有非常灵活的功能来补充。大家都知道软件产...

计算某日是该年的第几天

  • 2012年11月03日 16:02
  • 1.06MB
  • 下载

计算某日是该年的第几天——c语言算法实现

题目: 用户从键盘输入年月日,在屏幕中输出此日期是该年的第几天。 解析: 这12个月份中最大区别的月份是2月,它的天数要看年份是闰年还是平年(能被4整除但不能被100整除...
  • byhuamo
  • byhuamo
  • 2013年11月24日 10:46
  • 2247

根据圣人改变,如何求得某一年是否为闰年,并且该年的某月某日是该年哪一天

//每四年一闰;一下是闰年的判断方法; //1.如果能被4整除,不能被100整除,则闰 //2.但如果能被100整除,能整除400,则闰; //3.能整除400,又能整除3200,则不闰    ...

第三天、计算某日是该年的第几天

编写一个计算天数的程序,用户从键盘中输入年、月、日,在屏幕中输出此日期是该年的第几天。...

C语言 计算某年某日是该年的第几天 014

#include #include /* 计算某年某日是该年的第几天 例如: 2016-03-15 是该年的第75天. */ //判断是否是闰年 是返回1 不是返回0; ...

Linux生成以当前时间年/月/日命名的文件夹并向相应目录文件中写数据例程

功能需求:在linux下一切皆文件,由于需要向SD卡里面写数据,并且在相应的目录下要一天一个TXT文档。比如当前时间 2016年3月7日,则要生成一个以年为目录名的文件夹2016,然后在2016这个目...

C语言实现某年某月某日是某年的第几天

看到这个标题,想实现这样的功能其实挺简单的,用C语言的switch语句加上闰年,平年条件的判断,再加上一定的逻辑可以轻松实现这样的函数,在linux内核中,存在判断闰年平年的接口,我将它移植出来后,写...

C语言常用程序(1):计算某日是该年的第几天

程序功能:输入某个日期的年、月、日,程序计算出该日期为该年的第几天。 #include /* 函数leap用于判断该年是否为闰年 */ int leap(int a) { if (a%4 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何取某日的周几,月周,年周(转换例程)
举报原因:
原因补充:

(最多只允许输入30个字)