BW 转换字符空格问题
2024-09-06 05:22:19
早上忙了我一早上,以前写的一个季度判断的问题,
首先是调试,不断的调试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.
多去换个维度思考问题。不要过于死板。总是能解决的。
最新文章
- winform 使用 ReportViewer做报表
- iOS学习36数据处理之SQLite数据库
- js中Frame框架的属性获取(1)
- bzoj 2095: [Poi2010]Bridges(二分法+混合图的欧拉回路)
- Designing Evolvable Web API with ASP.NET 随便读,随便记 “The Internet,the World Wide Web,and HTTP”——HTTP
- poj1066 Jugs
- [LeetCode107]Binary Tree Level Order Traversal II 二叉树层次遍历
- decimal ? 含义
- 关于onCreate(Bundle savedInstanceState, PersistableBundle persistentState)
- BP神经网络代码
- NodeJS 学习笔记一
- [Maven] Missing artifact
- MVC设计模式的简单理解
- asp.netajax与jquery和bootstrap的无刷新完美实现
- python赋值和生成器
- kindeditor4.1.11的使用方法
- vue.js 初级之一
- HDU1556:Color the ball(简单的线段树区域更新)
- data.table 中的动态作用域
- [LigerUI]使用记录
热门文章
- recyclerView布局
- msql 2000 使用DBCC CHECK DB 得出错误,槽引用错误
- ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决(转)
- [转载]在服务器端判断request来自Ajax请求(异步)还是传统请求(同步),x-requested-with XMLHttpRequest
- 1.3 使用电脑测试MC20的电话语音功能
- open函数and文件处理
- Ubuntu输入su命令提示认证失败的解决办法
- MySQL数据库(7)_MySQL 数据备份与还原
- 流量分析系统----讲解-echarts模拟迁移(结合china.js)
- bootstrap插件实用方法