SAPscript Form小数点格式问题总结
来源:互联网 发布:seo外链发布平台 编辑:程序博客网 时间:2024/05/17 08:07
Created by
Leon Li
Date
2011/5/21
目录
SAPscript Form小数点格式问题总结... 1
一、 问题:... 1
二、 ‘SET COUNTRY country_key’介绍... 1
三、 实验:... 2
四、 总结:... 9
一、问题:
SAPscript Form在显示数值的时候,会根据系统或者个人参数中的‘Decimal Notation’选项的值来显示。如下图事务代码‘SU03’中的‘Decimal Notation’选项的值是小数点为逗号。
图1 个人参数设置图
但是,SAPscript Form在显示的时候常常需要强制小数点显示为点号,那么应该怎么处理呢?这里介绍一个使用SAPscript Form的‘SET COUNTRY country_key’命令的方式。
二、‘SET COUNTRY country_key’介绍
‘SET COUNTRYcountry_key’命令用于处理和国家相关的数值和日期的显示方式。Country_key存储在系统表T005X中。该命令会去T005X表中根据输入的Country_key查找数值和日期的显示方式,然后再决定用什么样的方式显示。
T005X有 三个主要的字段,LAND是Country Key,如中国的LAND值为CN;XDEZP是Decimalnotation,储存的是数值显示的方式,具体的值与显示方式的关系如表1所示;DATFM是Date format,储存的是日期的显示方式,具体的值与显示方式的关系如表2所示。
表1 XDEZP值与显示方式的关系表
表2 DATFM值与显示方式的关系表
三、实验:
1. 将个人参数中的‘Decimal Notation’选项的值设为小数点为逗号。
2. 查看T005X表中中国的数值和日期的显示代码。如图3。如果XDEZP的值不是‘X’的话可以自己写个SQL语句修改一下。
update t005x set xdezp = 'X' where land = 'CN'.
图3 T003X表中LAND=’CN’的值
3. 创建一个ScripForm:ZSF_DECIMAL_TEST。基本设置如下:
4. 设置MAIN Window里的文本数据,先不添加‘SET COUNTRY country_key’命令。
5. 创建程序Z_CALL_SFDECIMALTEST调用此ScriptForm,代码如下:
REPORT Z_CALL_SFDECIMALTEST.
DATA: sflight TYPE TABLE OF sflight WITH HEADER LINE.
SELECT * INTO TABLE sflight FROM sflight UP TO 25 ROWS.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX =
* ARCHIVE_PARAMS =
* DEVICE = 'PRINTER'
* DIALOG = 'X'
form = 'ZSF_DECIMAL_TEST'
* LANGUAGE = SY-LANGU
* OPTIONS =
* MAIL_SENDER =
* MAIL_RECIPIENT =
* MAIL_APPL_OBJECT =
* RAW_DATA_INTERFACE = '*'
* SPONUMIV =
* IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
* RESULT =
* EXCEPTIONS
* CANCELED = 1
* DEVICE = 2
* FORM = 3
* OPTIONS = 4
* UNCLOSED = 5
* MAIL_OPTIONS = 6
* ARCHIVE_ERROR = 7
* INVALID_FAX_NUMBER = 8
* MORE_PARAMS_NEEDED_IN_BATCH = 9
* SPOOL_ERROR = 10
* CODEPAGE = 11
* OTHERS = 12
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Output title
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'TITLE'
function = 'SET'
type = 'BODY'
window = 'TITLE'
* IMPORTING
* PENDING_LINES =
* EXCEPTIONS
* ELEMENT = 1
* FUNCTION = 2
* TYPE = 3
* UNOPENED = 4
* UNSTARTED = 5
* WINDOW = 6
* BAD_PAGEFORMAT_FOR_PRINT = 7
* SPOOL_ERROR = 8
* CODEPAGE = 9
* OTHERS = 10
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Output content
LOOP AT sflight.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'DATA'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
* IMPORTING
* PENDING_LINES =
* EXCEPTIONS
* ELEMENT = 1
* FUNCTION = 2
* TYPE = 3
* UNOPENED = 4
* UNSTARTED = 5
* WINDOW = 6
* BAD_PAGEFORMAT_FOR_PRINT = 7
* SPOOL_ERROR = 8
* CODEPAGE = 9
* OTHERS = 10
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
*Close form
CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
* RESULT =
* RDI_RESULT =
* TABLES
* OTFDATA =
* EXCEPTIONS
* UNOPENED = 1
* BAD_PAGEFORMAT_FOR_PRINT = 2
* SEND_ERROR = 3
* SPOOL_ERROR = 4
* CODEPAGE = 5
* OTHERS = 6
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
6. 激活ScriptForm和程序。运行程序。可见不添加‘SET COUNTRY country_key’命令时,数值的显示时的小数点是逗号。
7. 修改MAIN Window里的文本数据。
8. 激活ScriptForm并运行程序。可见数值的显示时的小数点是点号。
四、总结:
通过这个命令可以较方便的改变数值和日期的显示方式。‘SET COUNTRY country_key’命令也可以用在ABAP程序中。例子如下:
DATA: dat TYPE sy-datum VALUE '20020127',
num TYPE p LENGTH 8 DECIMALS 2 VALUE '1234567.89',
t005x_wa TYPE t005x,
t005x_tab TYPE SORTED TABLE OF t005x
WITH NON-UNIQUE KEY xdezp datfm.
SELECT *
FROM t005x
INTO TABLE t005x_tab.
DELETE ADJACENT DUPLICATES FROM t005x_tab.
LOOP AT t005x_tab INTO t005x_wa.
SET COUNTRY t005x_wa-land.
WRITE: / num, dat.
ENDLOOP.
结果如下图:
- SAPscript Form小数点格式问题总结
- SAPScript复杂格式字段固定定位问题例子
- SAPScript
- ABAP总结之十,SMARTFORM & SAPScript
- Form问题总结
- Xerox Phaser 3124打印sapscript问题
- 德语环境下 小数点格式化时数字格式异常问题
- 使用DecimalFormat类时小数点格式化时格式异常问题
- webapi的form格式请求的问题
- SMARTFORM & SAPScript
- SAPscript Forms
- SMARTFORM & SAPScript
- CSDN第一期总结之一:Form问题
- CSDN第一期总结之一:Form问题
- CSDN第一期总结之一:Form问题
- CSDN第一期总结之一:Form问题
- CSDN第一期总结之一:Form问题
- CSDN第一期总结之一:Form问题
- Android源码分析
- .NET面试题 - 3
- Android2.1消息应用(Messaging)源码学习笔记
- c语言 数据结构 课程设计 通讯录制作
- .NET面试题 - 4
- SAPscript Form小数点格式问题总结
- Android 自动朗读TT
- 图片自动调整大小JS代码
- android语音识别方法一:使用intent调用语音识别程序
- GetLogicalDriveStrings函数
- O_ACCMODE
- AD的设计
- 在smack中实现 Jabber 的远程调用
- 中国60个优秀电子技术网站