早上忙了我一早上,以前写的一个季度判断的问题,

首先是调试,不断的调试DTP。让我头晕眼花。

首先关于空格问题,我自我批评,愚蠢的定义成STRING 类型,然后相互加减出现问题。应该定义成内部的日期格式,或者数字类型。

其次找到了很多ABAP日期函数,所以一并贴出来。下面就不改了。当个教训。

http://www.sapjx.com/abap-datetime-function.html#FIMA_DATE_CREATE

loop at RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>  .
CLEAR <RESULT_FIELDS>-PSTNG_DATE.
<RESULT_FIELDS>-PSTNG_DATE = ''.
l_date = <RESULT_FIELDS>-PSTNG_DATE+().
l_date1 = <RESULT_FIELDS>-PSTNG_DATE+().
year = <RESULT_FIELDS>-PSTNG_DATE+(). if l_date = . --错误一
l_year = year + . -- 错误二
endif.
IF '' <= l_date AND l_date <= ''.
CONCATENATE year '' INTO <RESULT_FIELDS>-CALQUARTER.
ELSEIF '' <= l_date AND l_date <= ''.
CONCATENATE year '' INTO <RESULT_FIELDS>-CALQUARTER..
ELSEIF '' <= l_date AND l_date <= ''.
CONCATENATE year '' INTO <RESULT_FIELDS>-CALQUARTER..
ELSEIF l_date <= ''.
CONCATENATE year '' INTO <RESULT_FIELDS>-CALQUARTER..
ELSE.
CONCATENATE l_year '' INTO <RESULT_FIELDS>-CALQUARTER..
ENDIF.

问题:

  错误一

  本来应该是 20171 ,第一季度。居然明奇妙出现了 1 这个季度。

   回过头来看转换里的ABAP 。

   发现是 判断的问题,

   if l_date = 12.  -- 问题就在这里
  
    l_year = year + 1.
  endif.
      调试发现应该是用L_DATE1 ,月份,而不是月日。这是个简单问题。一下发现了。改正过来。 错误一好改
  错误二,就比较匪夷所思了。
  发现了 ,这一句根本没有生效
  
CONCATENATE l_year  '' INTO <RESULT_FIELDS>-CALQUARTER..

结果还是 2018


  

后来发现是

l_year = year + 1.    l_year 有空格 2018  只是看不出来 
字段 <RESULT_FIELDS>-CALQUARTER 只有五位,所以造成了这个问题。 要是改成六位 就会变成 2018 1
可以在调试里更改 成 2018 ,下面的数字就会发生变化。不一样。

 
更正后的代码:
loop at RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>  .
CLEAR <RESULT_FIELDS>-PSTNG_DATE.
<RESULT_FIELDS>-PSTNG_DATE = ''.
l_date = <RESULT_FIELDS>-PSTNG_DATE+().
l_date1 = <RESULT_FIELDS>-PSTNG_DATE+().
year = <RESULT_FIELDS>-PSTNG_DATE+(). if l_date1 = .
l_year = year + . -- 问题就在这里
      CONDENSE l_year NO-GAPS.  --去除空格
endif.
IF '' <= l_date AND l_date <= ''.
CONCATENATE year '' INTO <RESULT_FIELDS>-CALQUARTER.
ELSEIF '' <= l_date AND l_date <= ''.
CONCATENATE year '' INTO <RESULT_FIELDS>-CALQUARTER..
ELSEIF '' <= l_date AND l_date <= ''.
CONCATENATE year '' INTO <RESULT_FIELDS>-CALQUARTER..
ELSEIF l_date <= ''.
CONCATENATE year '' INTO <RESULT_FIELDS>-CALQUARTER..
ELSE.
CONCATENATE l_year '' INTO <RESULT_FIELDS>-CALQUARTER..
ENDIF.

多去换个维度思考问题。不要过于死板。总是能解决的。

最新文章

  1. winform 使用 ReportViewer做报表
  2. iOS学习36数据处理之SQLite数据库
  3. js中Frame框架的属性获取(1)
  4. bzoj 2095: [Poi2010]Bridges(二分法+混合图的欧拉回路)
  5. Designing Evolvable Web API with ASP.NET 随便读,随便记 “The Internet,the World Wide Web,and HTTP”——HTTP
  6. poj1066 Jugs
  7. [LeetCode107]Binary Tree Level Order Traversal II 二叉树层次遍历
  8. decimal ? 含义
  9. 关于onCreate(Bundle savedInstanceState, PersistableBundle persistentState)
  10. BP神经网络代码
  11. NodeJS 学习笔记一
  12. [Maven] Missing artifact
  13. MVC设计模式的简单理解
  14. asp.netajax与jquery和bootstrap的无刷新完美实现
  15. python赋值和生成器
  16. kindeditor4.1.11的使用方法
  17. vue.js 初级之一
  18. HDU1556:Color the ball(简单的线段树区域更新)
  19. data.table 中的动态作用域
  20. [LigerUI]使用记录

热门文章

  1. recyclerView布局
  2. msql 2000 使用DBCC CHECK DB 得出错误,槽引用错误
  3. ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决(转)
  4. [转载]在服务器端判断request来自Ajax请求(异步)还是传统请求(同步),x-requested-with XMLHttpRequest
  5. 1.3 使用电脑测试MC20的电话语音功能
  6. open函数and文件处理
  7. Ubuntu输入su命令提示认证失败的解决办法
  8. MySQL数据库(7)_MySQL 数据备份与还原
  9. 流量分析系统----讲解-echarts模拟迁移(结合china.js)
  10. bootstrap插件实用方法