ABAP FIELD-SYMBOLS 学习资料
有关FIELD-SYMBOLS的用法,FIELD-SYMBOLS: <fs> [<type>]为内部字段定义field-symbols . 当不输入<type>时﹐<fs>继承赋给它的变量的所有属性 当输入<type>时﹐赋给它的变量必须与<fs>同类型 在ABAP编程中,FIELD-SYMBOLS是一个非常重要的概念,它允许我们动态地引用数据结构,无需预先声明具体的变量。这在处理多种不同类型的变量或处理结构化数据时非常有用,可以提高代码的灵活性和可维护性。下面将详细解释FIELD-SYMBOLS的使用方法。 1. **定义FIELD-SYMBOLS** - 当我们定义FIELD-SYMBOLS,如`FIELD-SYMBOLS: <fs>`时,没有指定 `<type>`,那么 `<fs>` 将继承它所赋值的变量的所有属性,包括数据类型和长度。 - 如果指定了 `<type>`,如 `FIELD-SYMBOLS: <fs> TYPE d`,则 `<fs>` 必须被赋值为相同类型的数据。如果尝试赋值一个不同类型的变量,将会产生类型不匹配的错误,除非进行显式类型转换,如 `ASSIGN dat TO <f1> TYPE 'D'`。 2. **赋值和类型检查** - 示例中展示了当 `<fs>` 继承了数据变量 `dat` 的属性时,如果 `dat` 是C型(字符类型),`<fs>` 也会是C型,并且可以直接写入数据。但如果 `<fs>` 被定义为D型(日期类型),则必须确保赋值的变量也是D型或者通过类型转换操作赋值。 3. **结构化的FIELD-SYMBOLS** - 我们可以定义结构化的FIELD-SYMBOLS,如 `FIELD-SYMBOLS: <fs> STRUCTURE <s> DEFAULT <f>`。这里 `<fs>` 将继承结构 `<s>` 的属性,同时默认赋值为 `<f>`。需要注意的是: - a. 如果 `<s>` 中没有I型(整数)或F型(浮点数)字段,那么 `<f>` 的定义长度应大于等于 `<s>` 中所有字段长度之和,否则会引发语法错误。 - b. 当 `<s>` 包含I型或F型字段时,推荐 `<f>` 为结构类型,且结构应与 `<s>` 相同,否则容易导致错误。 4. **示例和错误情况** - 示例代码展示了如何正确地将结构化数据赋值给结构化的FIELD-SYMBOLS,以及当数据长度不符合要求时会出现的问题。比如,如果 `<f2>` 被期望赋值一个比 `wa` 长的结构,就会导致错误。 5. **处理结构中有I型或F型的场景** - 在结构中包含I型或F型字段时,可以通过FIELD-SYMBOLS进行处理。示例中 `line1` 和 `line2` 结构虽然包含不同类型的字段,但可以通过FIELD-SYMBOLS `<f2>` 结构化赋值并正常输出。 总结来说,ABAP中的FIELD-SYMBOLS是一个强大的工具,它可以动态地适应各种数据类型和结构,提高了程序的灵活性。但是,使用时需要注意类型匹配、数据长度和结构兼容性等问题,以避免潜在的运行时错误。熟练掌握FIELD-SYMBOLS的使用,可以使ABAP编程更加高效且易于维护。
剩余8页未读,继续阅读
- SAP剑客2012-02-24就一个Word啊,而且是网上的,太失望了。
- 粉丝: 1
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 适用于 Java 的 Chef 食谱.zip
- Simulink仿真快速入门与实践基础教程
- js-leetcode题解之179-largest-number.js
- js-leetcode题解之174-dungeon-game.js
- Matlab工具箱使用与实践基础教程
- js-leetcode题解之173-binary-search-tree-iterator.js
- js-leetcode题解之172-factorial-trailing-zeroes.js
- js-leetcode题解之171-excel-sheet-column-number.js
- 安卓开发从入门到精通基础教程
- js-leetcode题解之170-two-sum-iii-data-structure-design.js