SAP Fiori开发中的JavaScript基础知识16 - 用JavaScript实现ABAP的内表效果

1. ABAP内表

内表是ABAP编程过程中最常用的一种数据类型,下面是一个简单的内表程序,也即使用内表存储多个"人名数据"。

先定义结构ts_person,并基于结构定义内表变量lt_people,然后通过insert语句为内表赋值。

javascript 复制代码
REPORT ztest_interal_table.

TYPES: BEGIN OF ts_person,
         first_name TYPE string,
         last_name  TYPE string,
       END OF ts_person.

DATA: ls_person TYPE ts_person,
      lt_people TYPE STANDARD TABLE OF ts_person.

ls_person-first_name = 'Mick'.
ls_person-last_name  = 'Wang'.
INSERT ls_person INTO TABLE lt_people.

ls_person-first_name = 'Tom'.
ls_person-last_name  = 'li'.
INSERT ls_person INTO TABLE lt_people.

ls_person-first_name = 'Jone'.
ls_person-last_name  = 'Xu'.
INSERT ls_person INTO TABLE lt_people.

LOOP AT lt_people ASSIGNING FIELD-SYMBOL(<ls_person>).
  WRITE: / <ls_person>-first_name, <ls_person>-last_name.
ENDLOOP.

2. JavaScript的等价实现

如何用JavaScript进行等价实现呢?

首先让我们声明一个构造函数Person,用于定义类型;然后定义一个数组people来存储数据;数组中存储的是基于Person生成的对象实例。

javascript 复制代码
// construct Person as object with the fields firstName and lastName
function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

// create an arrary to store different people
let people = [];
people.push(new Person("Mick", "Wang"));
people.push(new Person("Tom", "Li"));
people.push(new Person("Jone", "Xu"));

// loop over the arrary and print out
for (let person of people) {
    console.log(person.firstName + " " + person.lastName);
}

如果要进行类比的话,可以有如下的对应关系:

  • JavaScript的function Person()实现了ABAP中定义的数据结构ts_person;
  • JavaScript的数组people实现了ABAP中内表变量lt_people的功能;
  • JavaScript中数组的push()方法为数组赋值,实现了ABAP中Insert关键字向内表插入数据的效果。

3. 小结

本文通过一个小的示例程序,展示了用JavaScript的函数和数组实现ABAP中内表的效果。希望本文对你有帮助!

相关推荐
じòぴé南冸じょうげん9 小时前
若依框架favicon.ico缓存更新问题解决方案:本地生效但线上未更新
前端·javascript·前端框架·html
狮子座的男孩9 小时前
js基础高级:01、数据类型(typeof、instanceof、===的使用)、数据与变量与内存(定义、赋值与内存关系、引用变量赋值、js调函数传参)
前端·javascript·经验分享·数据类型·数据与变量与内存·赋值与内存关系·引用变量赋值
椒盐螺丝钉15 小时前
Vue Router应用:组件跳转
前端·javascript·vue.js
顾安r15 小时前
11.20 开源APP
服务器·前端·javascript·python·css3
敲敲了个代码15 小时前
CSS 像素≠物理像素:0.5px 效果的核心密码是什么?
前端·javascript·css·学习·面试
二川bro16 小时前
第57节:Three.js企业级应用架构
开发语言·javascript·架构
芳草萋萋鹦鹉洲哦16 小时前
【vue】调用同页面其他组件方法几种新思路
前端·javascript·vue.js
巴啦啦臭魔仙16 小时前
uniapp scroll-view自定义下拉刷新的坑
前端·javascript·uni-app
晨枫阳17 小时前
不同语言的元组对比
java·前端·javascript
柒儿吖18 小时前
Electron for 鸿蒙PC 窗口问题完整解决方案
javascript·electron·harmonyos