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

首先是调试,不断的调试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.

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

BW 转换字符空格问题的更多相关文章

  1. Java工具类-转换字符编码

    package common; /** *字符串处理公用类 */ public class DealString { /** * 转换字符编码 由“iso-8859-1”西文转换为简体中文 */ pu ...

  2. java日期和时间转换字符

    日期和时间转换字符 字符 描述 例子 c 完整的日期和时间 Mon May 04 09:51:52 CDT 2009 F ISO 8601 格式日期 2004-02-09 D U.S. 格式日期 (月 ...

  3. php转换字符编码为utf-8

    php转换字符编码为utf-8 function strToUtf8($str){ $encode = mb_detect_encoding($str, array("ASCII" ...

  4. 《BI那点儿事》数据流转换——字符映射表

    特征映射转换如图展示数据流中列的特征,它的编辑界面很简单,只有一个标签界面,点击要进行映射的列,可以选择需要添加新列或需要更新的列.可以在Output Alias列中给原来的列一个别名,选择要进行的操 ...

  5. pojg487-3279电话号码转换(字符映射)

    http://poj.grids.cn/practice/2974 注意输入中连字符可以任意添加和删除. 描述企业喜欢用容易被记住的电话号码.让电话号码容易被记住的一个办法是将它写成一个容易记住的单词 ...

  6. iOS NSString去除其他字符(空格回车符)

    很多时候大家都需要对字符串进行处理.现在就对字符串删掉特殊字符的处理进行总结一下. 1.stringByTrimmingCharactersInSet  这个方法只能对字符串前后两个部分的特殊字符进行 ...

  7. [编辑器] Tab转换成空格

    Notepad++: 设置 -> 首选项 -> 制表符设置 怎样设置EditPlus中Tab用空格替换http://jingyan.baidu.com/article/63f236280b ...

  8. 字符集转换 字符类型转换 utf-8 gb2312 url

    vs默认是GB2312编码,你看到的程序源代码是,输出结果是,内部存储是, 1 如果你想改变内部存储可以用下面的这些函数 2 如果你想改变源代码的存储方式你可以用文本编辑工具修改之后重新编译 3 如果 ...

  9. 去掉字符空格js

    1. 去掉字符串两端的空格 String.prototype.trim = function () { return this.replace(/(^\s*)|(\s*$)/g, "&quo ...

随机推荐

  1. 获取JDBC响应做接口关联

    1:从sql表中将需要取的数据查出来 2:我们需要把这个id为4451的数据从sql里面取出来,传到下一个sql里面,执行删除 3:写一个接口的传参有些不同,变成了var_id_1.var_id是之前 ...

  2. Oracle 11g Enhancements in AWR Baselines

    Enhancements in AWR Baselines A baseline is any set of snapshots taken over a period of time. The sn ...

  3. RedisClient For .Net

    Redis Client For .Net 介绍 redis支持各种语言版本的client,其中.net平台下比较火的有ServiceStack.Redis和StackExchange.Redis 选 ...

  4. 剑指offer 面试56题

    面试56题: 题目:数组中数字出现的次数 题:一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 解题思路: 方法一:异或运算,详见<剑指offer&g ...

  5. Javascript自动打开匹配的超链接

    可以用来点击广告.... 部分代码: function AutoClick() { var DivLink=document.getElementById("divLink"); ...

  6. MapX小试

    需MapX 控件 string layerName = "12Q3_new"; string tabFile = string.Format(@"E:\map\地图\现在 ...

  7. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

  8. pyhton3 logging模块

    1.简单的将日志打印到屏幕   import logging logging.debug('This is debug message')logging.info('This is info mess ...

  9. php备份mysql数据库

    <?php /*程序功能:mysql数据库备份功能*/ ini_set('max_execution_time','0'); ini_set('memory_limit','1024M');// ...

  10. start、run、join

    首先得了解什么是主线程,当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread).主线程的重要性体现在两方面:1. 它是产生其他子线程的线程:2. 通常它必须最后完 ...