将长字符串赋值给结构体.
比如长字符串 长度 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(44) type 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
阅读(2729) | 评论(0) | 转发(0) |