Abap/4语法(4)

*&---------------------------------------------------------------------*
*& Report  Z_CPT3_5                                                    *
*&                                                                     *
*&---------------------------------------------------------------------*
*&             内表
*
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  Z_CPT3_5.

*标准表
DATA: begin of datarow,
      value(10) TYPE c,
      end of datarow.
DATA myTable1 LIKE STANDARD TABLE OF datarow.

DO 5 TIMES.
    datarow-value = sy-index.
    APPEND datarow to myTable1.
ENDDO.

LOOP AT myTable1 INTO datarow.
    WRITE: / datarow-value.
ENDLOOP.

CLEAR myTABLE1.

*排序表
DATA:begin of employee,
         firstname(10) TYPE c,
         lastname(10) TYPE c,
         age TYPE i,
     end of employee,
     value(10) TYPE c,
     myTable2 LIKE SORTED TABLE OF employee WITH UNIQUE KEY firstname.

WRITE: / '排序表'.
employee-firstname = 'jim'.
employee-lastname = 'green'.
employee-age = '16'.
INSERT employee INTO TABLE myTable2.


employee-firstname = 'bob'.
employee-lastname = 'li'.
employee-age = '15'.
INSERT employee INTO TABLE myTable2.

employee-firstname = 'lucy'.
employee-lastname = 'king'.
employee-age = '11'.
INSERT employee INTO TABLE myTable2.



LOOP AT myTable2 INTO employee.
    WRITE: / employee-firstname,
           / employee-lastname,
           / employee-age.
ENDLOOP.

*哈希表
DATA:myTable3 LIKE HASHED TABLE OF employee WITH UNIQUE KEY firstname.
employee-firstname = 'jim'.
employee-lastname = 'green'.
employee-age = '16'.
INSERT employee INTO TABLE myTable3.

employee-firstname = 'bob'.
employee-lastname = 'li'.
employee-age = '15'.
INSERT employee INTO TABLE myTable3.

employee-firstname = 'lucy'.
employee-lastname = 'king'.
employee-age = '11'.
INSERT employee INTO TABLE myTable3.



*标准表中的一些操作
DATA:tmpTable like myTable2 WITH HEADER LINE.

*表复制操作
SKIP 3.
WRITE: / '表复制'.
*INSERT LINES OF myTable2 INTO tmpTABLE. 这句没用
APPEND LINES OF myTable2 TO tmpTABLE.

LOOP AT tmpTABLE.
    WRITE: / tmpTABLE-firstname.
ENDLOOP.

*读单行数据
SKIP 3.
WRITE: / '读取哈希表中的数据'.
READ TABLE myTABLE3 WITH  KEY firstname = 'jim' into employee.
WRITE: / employee-firstname,
       / employee-lastname.

SKIP 3.
WRITE: / '根据索引读取排序表中的数据'.
READ TABLE myTABLE2 into employee INDEX 1.
WRITE: / employee-firstname,
       / employee-lastname.


*modify内表
SKIP 3.
WRITE: / 'modify内表'.
employee-firstname = 'jim'.
employee-lastname = 'china'.
employee-age = '50'.

*TRANSPORTING用来指定需要修改的字段
MODIFY TABLE myTable2 FROM employee TRANSPORTING lastname.

LOOP AT myTable2 INTO employee.
    WRITE: / employee-firstname,
           / employee-lastname,
           / employee-age.
ENDLOOP.
*批量修改
SKIP 1.
WRITE / 'modify批量修改数据'.
employee-lastname = 'bluk modify'.
MODIFY myTable2 FROM employee TRANSPORTING lastname WHERE age < 20.
LOOP AT myTable2 INTO employee.
    WRITE: / employee-firstname,
           / employee-lastname,
           / employee-age.
ENDLOOP.



*删除操作
SKIP 3.
WRITE: / '删除操作'.
employee-firstname = 'jim'.
DELETE TABLE myTable2 FROM employee.

LOOP AT myTable2 INTO employee.
    WRITE: / employee-firstname,
           / employee-lastname,
           / employee-age.
ENDLOOP.

*根据条件删除记录
SKIP 1.
WRITE: / '根据条件删除记录'.
DELETE myTable2 WHERE firstname = 'lucy'.
LOOP AT myTable2 INTO employee.
    WRITE: / employee-firstname,
           / employee-lastname,
           / employee-age.
ENDLOOP.




*LOOP循环中操纵内表
SKIP 3.
WRITE: / 'LOOP循环中操纵内表'.
DATA: begin of student,
          stuid TYPE i,
          name TYPE string,
          grade TYPE c,
      end of student,
      stu_tbl LIKE STANDARD TABLE OF student.

student-stuid = 1.
student-name = 'bank'.
student-grade = '1'.
INSERT student INTO TABLE stu_tbl.

student-stuid = 2.
student-name = 'jim'.
student-grade = '1'.
INSERT student INTO TABLE stu_tbl.

student-stuid = 3.
student-name = 'clark'.
student-grade = '1'.
INSERT student INTO TABLE stu_tbl.

student-stuid = 4.
student-name = 'bob'.
student-grade = '2'.
INSERT student INTO TABLE stu_tbl.

student-stuid = 5.
student-name = 'lucy'.
student-grade = '3'.
INSERT student INTO TABLE stu_tbl.

student-stuid = 6.
student-name = 'alex'.
student-grade = '3'.
INSERT student INTO TABLE stu_tbl.

student-stuid = 7.
student-name = 'tim'.
student-grade = '4'.
INSERT student INTO TABLE stu_tbl.

student-stuid = 8.
student-name = 'jack'.
student-grade = '5'.
INSERT student INTO TABLE stu_tbl.

student-stuid = 9.
student-name = 'rose'.
student-grade = '4'.
INSERT student INTO TABLE stu_tbl.

student-stuid = 10.
student-name = 'bomb'.
student-grade = '2'.
INSERT student INTO TABLE stu_tbl.

LOOP AT stu_tbl INTO student.
    WRITE: /  student-stuid,
              student-name,
              student-grade.
ENDLOOP.

SKIP 1.
WRITE: / '用WHERE来控制读取数据的范围'.
LOOP AT stu_tbl INTO student WHERE stuid BETWEEN 3 AND 8.
*sy-tabix:获取当前记录在内表中的索引
      WRITE: /  student-stuid,
              student-name,
              student-grade,
              sy-tabix.
ENDLOOP.

SKIP 1.
WRITE: / '排序'.
*可以针对多个字段进行排序处理。
SORT stu_tbl by grade DESCENDING name ASCENDING.
LOOP AT stu_tbl INTO student.

      WRITE: /  student-stuid,
              student-name,
              student-grade.
ENDLOOP.

*控制级操作   -----------------------没实现
*SKIP 1.
*WRITE: / '控制级操作'.
*DATA tmpSum TYPE i.
*LOOP AT stu_tbl INTO student.
*      WRITE: /  student-stuid,
*              student-name,
*              student-grade.
*      AT level.
*          tmpSum = SUM.
*      ENDAT.
*ENDLOOP.
*WRITE: / 'SUM:',tmpSum.




*Extract Datasets
SKIP 3.
WRITE: / '测试Extract Datasets'.
DATA: f1 TYPE i,f2 TYPE i,f3 TYPE i.

FIELD-GROUPS header.
INSERT f1 f2 INTO header.

DO 10 TIMES.
    f1 = sy-index.
    f2 = sy-index ** 2.

    EXTRACT header.
ENDDO.


SORT DESCENDING.
LOOP.
    WRITE: / f1,f2,f3.
ENDLOOP.

你可能感兴趣的:(c,String,report,header,table,insert)