internal table 的一些操作

 *internal table with work area

DATA: BEGIN  OF  LINE,
  COL1 TYPE  I,
  COL2 TYPE  I,
END  OF  LINE.
DATA  ITAB like  LINE  occurs  10.
DO  TIMES.
  LINE-COL1 = SY-INDEX.
  LINE-COL2 = SY-INDEX ** 2.
  APPEND  LINE  TO  ITAB.
ENDDO.
LOOP  AT  ITAB INTO  LINE.
  WRITE: / LINE-COL1, LINE-COL2.
ENDLOOP.

 

*internal table with type
types: begin  of  tline,
  col1 type  i,
  col2 type  i,
end  of  tline.
types  tItab type  tline occurs  10.

data: dline type  tline,
      dItab type  tItab.
do  times.
  dline-col1 = sy-index.
  dline-col2 = sy-index ** 2.
  append  dline to  dItab.
enddo.
loop  at  dItab into  dline.
  write: / dline-col1, dline-col2.
endloop.

skip.

*internal table without work area
DATA: BEGIN  OF  ITAB2 OCCURS  10,
      COL1 TYPE  I,
      COL2 TYPE  I,
      END  OF  ITAB2.
DO  TIMES.
  ITAB2-COL1 = SY-INDEX.
  ITAB2-COL2 = SY-INDEX ** 2.
  APPEND  ITAB2. "新增至内表中
ENDDO.
LOOP  AT  ITAB2. "ITAB2 总共有两个行
  WRITE: / ITAB2-COL1, ITAB2-COL2.
ENDLOOP.

skip.

append  lines  of  dItab from  to  to  itab2.
LOOP  AT  ITAB2. "ITAB2 总共有4行
  WRITE: / ITAB2-COL1, ITAB2-COL2.
ENDLOOP.

DATA: BEGIN  OF  ITAB3 OCCURS  3,
      COL1(3) TYPE  C,
      COL2 TYPE  I,
      END  OF  ITAB3.
ITAB3-COL1 = 'ABC' . ITAB3-COL2 = 10.
COLLECT  ITAB3.
ITAB3-COL1 = 'XYZ' . ITAB3-COL2 = 20.
COLLECT  ITAB3.
ITAB3-COL1 = 'ABC' . ITAB3-COL2 = 30.
COLLECT  ITAB3. "汇总 COL2 至 COL1=ABC 的元素上
LOOP  AT  ITAB3.
  WRITE: / ITAB3-COL1, ITAB3-COL2.
ENDLOOP.

DATA: BEGIN  OF  line4,
      COL1 TYPE  I,
      COL2 TYPE  I,
      END  OF  line4.
DATA  itab4 LIKE  line4 OCCURS  10  with  header  line.
DO  TIMES.
  line4-COL1 = SY-INDEX * 10.
  line4-COL2 = SY-INDEX * 20.
  APPEND  line4 TO  itab4.
ENDDO.
line4-COL1 = 100.
line4-COL2 = 200.
INSERT  line4 INTO  itab4 index  2.  "插入在位置2 之前
LOOP  AT  itab4 INTO  line4.
  WRITE: / SY-TABIX, line4-COL1, line4-COL2. "SY-TABIX 为Table 位置
ENDLOOP.

skip.

LOOP  AT  ITAB4 INTO  LINE4 WHERE  COL1 >= 100.
  WRITE: / SY-TABIX, LINE4-COL1.
ENDLOOP.

skip.
read  table  itab4 into  line4 index  2.
WRITE: / SY-TABIX, LINE4-COL1, LINE4-COL2.

skip.
LINE4-COL1 = 4.
write  / LINE4-COL1.
LINE4-COL2 = 100.
MODIFY  ITAB4 FROM  LINE4 INDEX  2.
read  table  itab4 into  line4 index  2.
WRITE: / SY-TABIX, LINE4-COL1, LINE4-COL2.

skip.
LINE4-COL1 = 10.
MODIFY  ITAB4 FROM  LINE4 INDEX  TRANSPORTING  COL1.
read  table  itab4 into  line4 index  3.
WRITE: / SY-TABIX, LINE4-COL1, LINE4-COL2.

skip.
write  'delete internal table use index:' .
delete  ITAB4 index  2.
loop  at  itab4 into  line4.
  write: / line4-col1, line4-col2.
endloop.

skip.
write  'delete internal table by condition.' .
delete  itab4 where  col2 = 40.
loop  at  itab4 into  line4.
  write: / line4-col1, line4-col2.
endloop.

skip.
line4-col1 = 100.
line4-col2 = 400.
append  line4 to  itab4.

line4-col1 = 100.
line4-col2 = 200.
append  line4 to  itab4.

write  'sort internal table' .
*sort itab4 descending by col1 col2.
sort  itab4 by  col1 descending  col2 ascending.
loop  at  itab4 into  line4.
  write: / line4-col1, line4-col2.
endloop.

skip.
write  'calc numeric field sum.' .
LOOP  AT  ITAB4 INTO  LINE4.
  SUM.
ENDLOOP.
WRITE: / LINE4-COL1, LINE4-COL2.

skip.
write  'refresh internal table.' .
clear  ITAB3[].
LOOP  AT  ITAB3.
  WRITE: / ITAB3-COL1, ITAB3-COL2.
ENDLOOP.
free  itab3.

 

span { font-family: "Courier New"; font-size: 10pt; color: rgb(0, 0, 0); background: none repeat scroll 0% 0% rgb(217, 217, 217); }.L0S32 { color: rgb(51, 153, 255); }.L0S33 { color: rgb(77, 166, 25); }.L0S52 { color: rgb(0, 0, 255); } write  'internal table with header line.' .
TYPES: BEGIN  OF  LINE5,
         COL1 TYPE  I,
         COL2 TYPE  I,
       END  OF  LINE5.

DATA  ITAB5 TYPE  HASHED  TABLE  OF  LINE5 WITH  UNIQUE  KEY  COL1
               WITH  HEADER  LINE.

DO  TIMES.
  ITAB5-COL1 = SY-INDEX.
  ITAB5-COL2 = SY-INDEX ** 2.
  INSERT  TABLE  ITAB5.
ENDDO.

write 'read table.' .
ITAB5-COL1 = 2.
READ  TABLE  ITAB5 FROM  ITAB5.
WRITE: / ITAB5-COL1, ITAB5-COL2.

write 'modify table.' .
ITAB5-COL2 = 100.
MODIFY  TABLE  ITAB5.
LOOP  AT  ITAB5.
  WRITE: / ITAB5-COL1, ITAB5-COL2.
ENDLOOP.

write 'delete table.' .
ITAB5-COL1 = 4.
DELETE  TABLE  ITAB5.
LOOP  AT  ITAB5.
  WRITE: / ITAB5-COL1, ITAB5-COL2.
ENDLOOP.

skip.
write  'internal table without header line.' .
TYPES: BEGIN  OF  LINE6,
         COL1 TYPE  I,
         COL2 TYPE  I,
       END  OF  LINE6.

DATA: ITAB6 TYPE  HASHED  TABLE  OF  LINE6 WITH  UNIQUE  KEY  COL1,
      WA LIKE  LINE  OF  ITAB6.

DO  TIMES.
  WA-COL1 = SY-INDEX.
  WA-COL2 = SY-INDEX ** 2.
  INSERT  WA INTO  TABLE  ITAB6.
ENDDO.

WA-COL1 = 2.
READ  TABLE  ITAB6 FROM  WA INTO  WA.

WA-COL2 = 100.
MODIFY  TABLE  ITAB6 FROM  WA.

WA-COL1 = 4.
DELETE  TABLE  ITAB6 FROM  WA.

LOOP  AT  ITAB6 INTO  WA.
  WRITE: / WA-COL1, WA-COL2.
ENDLOOP.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: vxe-table 的 fillhandle 功能可以通过使用 `edit-config` 属性中的 `trigger` 和 `mode` 属性来实现,具体操作步骤如下: 1. 在 `columns` 中设置需要填充的列,其中需要设置 `edit-render` 属性为 `Input` 或 `Textarea`。 ```javascript columns: [ { field: 'name', title: '姓名', editRender: { name: 'Input' } }, { field: 'age', title: '年龄', editRender: { name: 'Input' } }, // ... ] ``` 2. 在 `table` 中设置 `edit-config` 属性,其中需要设置 `trigger` 为 `click` 或 `dblclick`,`mode` 为 `cell`。 ```html <vxe-table :data="tableData" :columns="columns" :edit-config="{trigger: 'click', mode: 'cell'}" > </vxe-table> ``` 3. 在 `mounted` 钩子函数中添加 fill-handle 监听事件。 ```javascript mounted() { this.$nextTick(() => { this.$refs.xTable.$xetable.handleFillHandle({ move: (params, callback) => { const { row, column, cell } = params // ... callback() } }) }) } ``` 4. 在 `move` 回调函数中实现填充逻辑。 ```javascript move: (params, callback) => { const { row, column, cell } = params const { $table } = this.$refs.xTable const { columns, data } = $table const { field } = column const { rowIndex: start, columnIndex } = cell const { rowIndex: end } = row const startValue = data[start][field] for (let i = Math.min(start, end); i <= Math.max(start, end); i++) { const item = data[i] item[field] = startValue $table.updateStatus(item, columns[columnIndex]) } callback() } ``` 这样,当用户选中一段区域并拖拽填充时,就会触发 fill-handle 监听事件,并且执行填充逻辑。 ### 回答2: 实现vxe table的fillhandle功能可以通过以下步骤来完成: 1. 首先,在vue项目中使用vxe table组件,并引入所需的表格组件和样式。 2. 在表格中添加一个需要填充的列,可以是一个普通的输入框或者选择框。 3. 给需要填充的列添加一个自定义的模板,可以通过vxe table的formatter属性来实现。例如,可以使用一个普通的输入框作为模板。 4. 在表格的mounted生命周期钩子函数中,获取表格的实例对象,可以使用ref来获取。 5. 给表格实例对象添加一个fillHandle的事件,可以使用vxe tableinternal-event的方式来进行绑定。 6. 在fillHandle事件的回调函数中,获取填充操作的起始和终止单元格的坐标。 7. 使用vxe table的setCellValue方法,将填充的值应用到目标单元格中。 8. 使用vxe table的updateCell方法,更新填充后的单元格的数据。 9. 使用vxe table的clearCopyCellArea方法,清除复制的范围。 通过以上步骤,可以实现vxe table的fillhandle功能。当用户在填充列中输入值后,选择需要填充的范围,然后拖动鼠标进行填充操作,目标单元格将会按照填充规则自动填充相应的值。 ### 回答3: vxe-table是一个基于Vue.js的快速、灵活的表格组件库,用于实现数据展示和操作。它提供了丰富的功能,其中之一就是Fill Handle(填充手柄)功能。 Fill Handle功能可以方便地在表格中快速填充数据。它通常用于在表格中填充一系列连续的数据,比如日期序列、数字递增等。具体实现Fill Handle功能的步骤如下: 1. 首先,在vxe-table的表格中启用Fill Handle功能,可以在表格的属性中设置 `show-fill-handle` 为 `true`。 2. 确定Fill Handle的操作范围,可以设置 `fill-handle-config` 属性来指定需要启用Fill Handle功能的列范围。可以通过设置 `start` 和 `end` 属性,来设置起始列和结束列的索引。 3. 在表格中目标单元格上,可以看到一个小黑点,就是Fill Handle手柄。将鼠标移动到该手柄上方,鼠标会变成一个十字箭头的形状。 4. 按住鼠标左键,移动鼠标即可拖动Fill Handle手柄。在拖动的过程中,可以看到手柄处会显示填充数据的预览。 5. 当手柄拖动到预期位置时,释放鼠标左键即可完成数据填充。填充的数据为连续的数据序列,根据拖动的方向和距离自动生成。 通过以上步骤,vxe-table的Fill Handle功能就可以实现。借助这个功能,用户可以方便地在表格中填充连续的数据,提高数据填写的效率。同时,vxe-table还提供了其他强大的功能,如分页、筛选、排序等,可以满足各种表格展示和操作的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值