ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 560|回复: 8

[原创] 问2个问题。

[复制链接]
论坛徽章:
0
发表于 2017-11-9 09:46 | 显示全部楼层 |阅读模式

问题一:TYPES:BEGIN OF ty_sales,
  customerid(3) TYPE n,
  productid(3) TYPE n,
  orderid(3) TYPE n,
   customername(10) TYPE c,
  amount TYPE i,
  END OF ty_sales.

*定义内表
DATA it_sales TYPE STANDARD TABLE OF ty_sales WITH KEY customerid productid orderid.
DATA wa_sales TYPE ty_sales.
*插入数据
wa_sales-customerid = '001'.
wa_sales-productid = '001'.
wa_sales-orderid = '001'.
wa_sales-customername = 'Apple'.
wa_sales-amount = 10.
APPEND wa_sales TO it_sales.
wa_sales-customerid = '003'.
wa_sales-productid = '002'.
wa_sales-orderid = '001'.
wa_sales-customername = 'Microsoft'.
wa_sales-amount = 10.
APPEND wa_sales TO it_sales.
wa_sales-customerid = '002'.
wa_sales-productid = '002'.
wa_sales-orderid = '001'.
wa_sales-customername = 'Google'.
wa_sales-amount = 10.
APPEND wa_sales TO it_sales.
wa_sales-customerid = '002'.
wa_sales-productid = '001'.
wa_sales-orderid = '001'.
wa_sales-customername = 'Google'.
wa_sales-amount = 10.
APPEND wa_sales TO it_sales.

WRITE:'All Datas'.
LOOP AT it_sales INTO wa_sales.
  WRITE: / wa_sales-customerid,wa_sales-productid,wa_sales-orderid,wa_sales-customername,wa_sales-amount.
ENDLOOP.

*修改数据 将客户001 改为 Apple 2
LOOP AT it_sales INTO wa_sales.
  IF wa_sales-customerid = '001'.
    wa_sales-customername = 'Apple2'.
    MODIFY it_sales FROM wa_sales.
  ENDIF.
ENDLOOP.
*将客户002 改为 Google 2
LOOP AT it_sales INTO wa_sales WHERE customerid = '002'.
  wa_sales-customername = 'Google 2'.
  MODIFY it_sales FROM wa_sales.
ENDLOOP.
*将第二条记录的客户名称改为'Microsoft 2'
READ TABLE it_sales INTO wa_sales INDEX 2.
WRITE: / wa_sales-customerid,wa_sales-productid,wa_sales-orderid,wa_sales-customername,wa_sales-amount.
*或者WITH TABLE KEY  WITH KEY
wa_sales-customername = 'Microsoft2'.
MODIFY TABLE it_sales FROM wa_sales.
wa_sales-customerid = '005'.   “为什么这句貌似没有改成功  ?? 输出的结果里面就没有005
MODIFY TABLE it_sales FROM wa_sales.

WRITE: / 'Datas after modified'.
LOOP AT it_sales INTO wa_sales.
  WRITE: / wa_sales-customerid,wa_sales-productid,wa_sales-orderid,wa_sales-customername,wa_sales-amount.
ENDLOOP.
问题二:
1、*P类型
*要指定两个参数,一个是所用的字节数,一个是小数的位数
*一个字节存储两个数字,有一个数字的位置还要存储正负号,所以如果是n个字节,则可以存储2n-1位数字
*小数位数小于15,并且小于2n-2
*整数位数为 2n-1-m 即小数位数
DATA p1(3) TYPE P DECIMALS 2.
DATA p2(2) TYPE p DECIMALS 2.
p1 = '567.21'.
*p2 = '56.43'.
p2 = '3.14'.
WRITE: / 'p1 = ',p1.
WRITE: / 'p2 = ',p2.

P1 最大可能是多少? P2呢?


认证徽章
论坛徽章:
77
蓝锆石
日期:2016-12-27 15:59:39萤石
日期:2016-12-27 15:59:39祖母绿
日期:2016-12-27 15:59:39海蓝宝石
日期:2016-12-27 15:59:39紫水晶
日期:2016-12-27 15:59:39红宝石
日期:2016-12-27 15:59:39技术图书徽章
日期:2017-08-09 10:03:41秀才
日期:2017-09-18 17:32:27乌索普
日期:2017-09-20 15:17:43
发表于 2017-11-9 09:49 | 显示全部楼层
wa_sales-customerid = '005'.   “为什么这句貌似没有改成功  ?? 输出的结果里面就没有005
MODIFY TABLE it_sales FROM wa_sales.

应该是你前一个MODIFY后,记录到尾了,你输出SY-TABIX看看

使用道具 举报

回复
认证徽章
论坛徽章:
77
蓝锆石
日期:2016-12-27 15:59:39萤石
日期:2016-12-27 15:59:39祖母绿
日期:2016-12-27 15:59:39海蓝宝石
日期:2016-12-27 15:59:39紫水晶
日期:2016-12-27 15:59:39红宝石
日期:2016-12-27 15:59:39技术图书徽章
日期:2017-08-09 10:03:41秀才
日期:2017-09-18 17:32:27乌索普
日期:2017-09-20 15:17:43
发表于 2017-11-9 09:49 | 显示全部楼层
wa_sales-customerid = '005'.   “为什么这句貌似没有改成功  ?? 输出的结果里面就没有005
MODIFY TABLE it_sales FROM wa_sales.

应该是你前一个MODIFY后,记录到尾了,你输出SY-TABIX看看

使用道具 举报

回复
认证徽章
论坛徽章:
77
蓝锆石
日期:2016-12-27 15:59:39萤石
日期:2016-12-27 15:59:39祖母绿
日期:2016-12-27 15:59:39海蓝宝石
日期:2016-12-27 15:59:39紫水晶
日期:2016-12-27 15:59:39红宝石
日期:2016-12-27 15:59:39技术图书徽章
日期:2017-08-09 10:03:41秀才
日期:2017-09-18 17:32:27乌索普
日期:2017-09-20 15:17:43
发表于 2017-11-9 09:50 | 显示全部楼层
999.99, 99.99
是吗?没留意过。

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2017-11-9 13:35 | 显示全部楼层
我看了,在执行:
wa_sales-customerid = '005'.   “为什么这句貌似没有改成功  ?? 输出的结果里面就没有005
MODIFY TABLE it_sales FROM wa_sales.
前后 SY-TABIX  都是2

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2017-11-9 19:00 | 显示全部楼层
我想 既然是前后 SY-TABIX  都是2 :
wa_sales-customerid = '005'.   “为什么这句貌似没有改成功  ?? 输出的结果里面就没有005
MODIFY TABLE it_sales FROM wa_sales.

那这句是不是应该把第二行的customerid 改成 '005'?

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2017-11-9 19:32 | 显示全部楼层
我现在理解是主键不允许修改,只要不改主键,其他值都可以修改。若修改主键,当前的修改操作都不会生效。

使用道具 举报

回复
认证徽章
论坛徽章:
77
蓝锆石
日期:2016-12-27 15:59:39萤石
日期:2016-12-27 15:59:39祖母绿
日期:2016-12-27 15:59:39海蓝宝石
日期:2016-12-27 15:59:39紫水晶
日期:2016-12-27 15:59:39红宝石
日期:2016-12-27 15:59:39技术图书徽章
日期:2017-08-09 10:03:41秀才
日期:2017-09-18 17:32:27乌索普
日期:2017-09-20 15:17:43
发表于 2017-11-10 09:03 | 显示全部楼层
handsome1234 发表于 2017-11-9 19:00
我想 既然是前后 SY-TABIX  都是2 :
wa_sales-customerid = '005'.   “为什么这句貌似没有改成功  ??  ...

不是吧,修改后,sy-tabix 不是2了吧。你 断点 看下呗。

使用道具 举报

回复
认证徽章
论坛徽章:
77
蓝锆石
日期:2016-12-27 15:59:39萤石
日期:2016-12-27 15:59:39祖母绿
日期:2016-12-27 15:59:39海蓝宝石
日期:2016-12-27 15:59:39紫水晶
日期:2016-12-27 15:59:39红宝石
日期:2016-12-27 15:59:39技术图书徽章
日期:2017-08-09 10:03:41秀才
日期:2017-09-18 17:32:27乌索普
日期:2017-09-20 15:17:43
发表于 2017-11-10 09:04 | 显示全部楼层
handsome1234 发表于 2017-11-9 19:32
我现在理解是主键不允许修改,只要不改主键,其他值都可以修改。若修改主键,当前的修改操作都不会生效。

不会啊,主键也可以

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表