Chinaunix首页 | 论坛 | 博客
  • 博客访问: 220309
  • 博文数量: 23
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 311
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-29 20:09
文章分类

全部博文(23)

文章存档

2009年(5)

2008年(18)

我的朋友

分类:

2008-07-14 21:35:32

 将长字符串赋值给结构体.
比如长字符串 长度 44.
结构体 4个字段长度依次是18 18 4 4 .
要求:被赋值的结构体, 各个字段能得到
长字符串对应位置的值.
SAP系统中,condition表的字段数量和长度都不样.
更新condition 表的 function,
用一个长字符记录多个condition字段的值.
为的是增加程序的可重用性.
这就涉及到一个技术问题,
如何将长字符串复制给结构体.
 
 
系统标准程序:
ECC系统program
RV13XXXX 
中的 from DB_UPDATE.
XXXX是condition表的名称.
比如:
RV13A998

REPORT z_lang_str_to_stru.
*Lang string to structure
*自建表zassigntest的结构
*FIELD1 MATNR CHAR 18 0 Material Number
*FIELD2 MATNR CHAR 18 0 Material Number
*FIELD3 VKORG CHAR 4 0 Sales Organization
*FIELD4 VKBUR CHAR 4 0 Sales office
DATA it_zassigntest LIKE TABLE OF zassigntest."內表
DATA:wa_zassigntest LIKE LINE OF it_zassigntest."结构体
FIELD-SYMBOLS: TYPE c."C 类型的field-symbols  处理结构体用
DATA: l_tem(26) TYPE c."长字符串
l_tem = 'eeeeeeeeeeeeeeeeeeTTTTKKKK'.
DELETE FROM zassigntest."清空数据库表 非重点代码.
DO 2 TIMES."往数据库表插两条数据
  wa_zassigntest-field1 = sy-index."第一个字段 key字段赋值
  ASSIGN wa_zassigntest TO CASTING."关键语法
  MOVE l_tem TO +18(26)."长字符串给 第二个 到第四个 字段赋值
  APPEND wa_zassigntest TO  it_zassigntest."追加到内表
ENDDO.
INSERT zassigntest FROM TABLE it_zassigntest."更新数据库表

 

对于 不指定特定字段的情况, 就是说将整个字符串赋值给

结构体,可以用下面的语法实现:

ASSIGN wa_zassigntest TO CASTING type

zassigntest .

注意这里的  是any 类型.

********************************************

  REPORT z_testjsw3.
data it_ZASSIGNTEST like TABLE OF ZASSIGNTEST.
data:wa_ZASSIGNTEST like LINE OF it_ZASSIGNTEST.
field-SYMBOLS:  type any.
data: L_tem(44type c.
L_tem = '111111111111111111eeeeeeeeeeeeeeeeeeTTTTKKKK'.
delete from ZASSIGNTEST.
do 1 TIMES.
  wa_ZASSIGNTEST-FIELD1 = sy-index.
  ASSIGN wa_ZASSIGNTEST to 
  CASTING type ZASSIGNTEST."动态指定field symbol类型
*  move l_tem to +18(26).
  move l_tem to .

  append wa_ZASSIGNTEST to  it_ZASSIGNTEST.

enddo.

insert ZASSIGNTEST from table it_ZASSIGNTEST.

(完)

 

读菜根谭 百事可做

http://blog.sina.com.cn/ttcgt

 

 

 


阅读(2675) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~