【转载】ABAP 对透明表的添加,修改,删除,查询等操作

来源:互联网 发布:linux文本处理命令 编辑:程序博客网 时间:2024/05/21 07:07
  1. --建立一个structure.  
  2. DATA: BEGIN OF count_line,  
  3.         carrid TYPE spfli-carrid,  
  4.         count  TYPE i,  
  5.       END OF count_line,  
  6.       spfli_tab TYPE TABLE OF spfli.  
  7.   
  8. DATA: dbcur1 TYPE cursor,  
  9.       dbcur2 TYPE cursor.  
  10.   
  11. --定义parameters参数.接收从页面获得的参数;  
  12. PARAMETERS: p_cityfr TYPE spfli-cityfrom,  
  13.             p_cityto TYPE spfli-cityto.  
  14.   
  15. --建立一个Structure.  
  16. DATA: BEGIN OF waa,  
  17.          fldate TYPE sflight-fldate,  
  18.          carrname TYPE scarr-carrname,  
  19.          connid   TYPE spfli-connid,  
  20.        END OF waa.  
  21.   
  22. --建立一个internal table.内表.  
  23. DATA itab LIKE SORTED TABLE OF waa  
  24.                WITH UNIQUE KEY fldate carrname connid.  
  25.   
  26. --多表连接查询.  
  27. SELECT c~carrname p~connid f~fldate  
  28.        INTO CORRESPONDING FIELDS OF TABLE itab  
  29.        FROM ( ( scarr AS c  
  30.          INNER JOIN spfli AS p ON p~carrid   = c~carrid  
  31.                               AND p~cityfrom = p_cityfr  
  32.                               AND p~cityto   = p_cityto )  
  33.          INNER JOIN sflight AS f ON f~carrid = p~carrid  
  34.                                 AND f~connid = p~connid ).  
  35.   
  36. --循环输出内表里面的,字段.   
  37. LOOP AT itab INTO waa.  
  38.   WRITE: / wa-fldate, wa-carrname, wa-connid.  
  39. ENDLOOP.  
  40.   
  41.   
  42. --指定透明表.  
  43. TABLES:ZEDITAB.  
  44.   
  45. --引用zeditab表的structure结构.  
  46. DATA:WA_ZDITAB TYPE ZEDITAB.  
  47. --对透明表的更新操作.  
  48. UPDATE  ZEDITAB SET EANCOMSEGMENT = 'G01DTM'  EDI_INDEX = '3'  
  49. WHERE EDI_INDEX = '11'.  
  50.   
  51. UPDATE  ZEDITAB SET EANCOMSEGMENT = 'G01DTM'  EDI_INDEX = '2'  
  52. WHERE EDI_INDEX = '10'.  
  53.   
  54. UPDATE  ZEDITAB SET EANCOMSEGMENT = 'G01DTM'  EDI_INDEX = '1'  
  55. WHERE EDI_INDEX = '9'.  
  56.   
  57. WRITE:/ 'OK'.  
  58.   
  59. TABLES:ZHT_EMPLOYEE.  
  60.   
  61. DATA:EMPLOYEE_ITAB LIKE STANDARD TABLE OF ZHT_EMPLOYEE WITH HEADER LINE,  
  62.      EMPLOYEE_WA LIKE LINE OF EMPLOYEE_ITAB.  
  63.   
  64. --给结构赋值.  
  65. EMPLOYEE_WA-EMP_ID = 101.  
  66. EMPLOYEE_WA-EMP_NAME = 'Admin'.  
  67. EMPLOYEE_WA-EMP_SEX = '男'.  
  68.   
  69. APPEND EMPlOYEE_WA TO EMPLOYEE_ITAB.  
  70.   
  71. EMPLOYEE_WA-EMP_ID = 102.  
  72. EMPLOYEE_WA-EMP_NAME = 'Apple'.  
  73. EMPLOYEE_WA-EMP_SEX = '女'.  
  74.   
  75. APPEND EMPLOYEE_WA TO EMPLOYEE_ITAB.  
  76.   
  77. EMPLOYEE_WA-EMP_ID = 103.  
  78. EMPLOYEE_WA-EMP_NAME = '周海涛'.  
  79. EMPLOYEE_WA-EMP_SEX = '男'.  
  80.   
  81. --追加到内表中.  
  82. APPEND EMPLOYEE_WA TO EMPLOYEE_ITAB.  
  83.   
  84. --循环输出.内部的记录, 这里没有用到into 的原因是,EMPLOYEE_ITAB,有 -  
  85. -with..header Line.有头行,就不需要用 into 到一个Structure中.  
  86.   
  87. LOOP AT  EMPLOYEE_ITAB.  
  88.   WRITE: / EMPLOYEE_ITAB-EMP_ID,EMPLOYEE_ITAB-EMP_NAME,EMPLOYEE_ITAB-EMP_SEX.  
  89.   INSERT INTO zht_employee VALUES employee_itab. "循环添加.  
  90. ENDLOOP.  
  91.   
  92. EMPLOYEE_WA-EMP_ID = 103.  
  93. EMPLOYEE_WA-EMP_NAME = '周海涛'.  
  94. EMPLOYEE_WA-EMP_SEX = '男'.  
  95.   
  96. --删除操作.  
  97. delete zht_employee FROM EMPLOYEE_WA.  
  98. COMMIT WORK.  
  99. WRITE: / sy-uline.  
  100.   
  101. IF sy-subrc = 0.  
  102.     WRITE: / '删除成功'.  
  103. else.  
  104.     WRITE: / '删除失败'.  
  105. ENDIF.  
  106.   
  107. CLEAR EMPLOYEE_ITAB.  
  108. SELECT * FROM zht_employee INTO CORRESPONDING FIELDS OF TABLE employee_itab.  
  109. LOOP AT  EMPLOYEE_ITAB.  
  110.   WRITE: / EMPLOYEE_ITAB-EMP_ID,EMPLOYEE_ITAB-EMP_NAME,EMPLOYEE_ITAB-EMP_SEX.  
  111. ENDLOOP.  
  112.   
  113. WRITE: / sy-uline.  
  114. IF sy-subrc = 0.  
  115.   WRITE:/ '修改成功'.  
  116. ELSE.  
  117.   WRITE: / '修改失败'.  
  118. ENDIF.  
  119.   
  120. --更新操作.  
  121. UPDATE zht_employee set emp_id = 102 emp_name = 'My Love' emp_sex = '女' WHERE emp_id  = 102.  
  122. CLEAR employee_wa.  
  123. EMPLOYEE_WA-EMP_ID = 101.  
  124. EMPLOYEE_WA-EMP_NAME = 'TestName'.  
  125. EMPLOYEE_WA-EMP_SEX = '女'.  
  126.   
  127. UPDATE ZHT_EMPLOYEE FROM  EMPLOYEE_WA.  
  128. COMMIT WORK.  
  129.   
  130. CLEAR EMPLOYEE_ITAB.  
  131. SELECT * FROM zht_employee INTO CORRESPONDING FIELDS OF TABLE employee_itab.  
  132. LOOP AT  EMPLOYEE_ITAB.  
  133.   WRITE: / EMPLOYEE_ITAB-EMP_ID,EMPLOYEE_ITAB-EMP_NAME,EMPLOYEE_ITAB-EMP_SEX.  
  134. ENDLOOP.  
  135.   
  136.   
  137. SKIP.  
  138.   
  139. DATA:ZEDI_IDOC_ITAB LIKE STANDARD TABLE OF ZEDI_IDOC_PARAM WITH HEADER LINE,  
  140.      ZEDI_IDOC_WA LIKE LINE OF ZEDI_IDOC_ITAB.  
  141.   
  142. SELECT * INTO CORRESPONDING FIELDS OF TABLE ZEDI_IDOC_ITAB FROM ZEDI_IDOC_PARAM.  
  143.   
  144. DATA:size type i.  
  145.   
  146. size = lines( ZEDI_IDOC_ITAB ).  
  147. WRITE: / '输出结果:',size.  
  148. LOOP AT ZEDI_IDOC_ITAB .  
  149.   WRITE:/ ZEDI_IDOC_ITAB-LINE_ID,ZEDI_IDOC_ITAB-MESTYP,ZEDI_IDOC_ITAB-DOCNUM.  
  150. ENDLOOP.  
  151.   
  152. SKIP.  
  153.   
  154. DELETE FROM ZEDI_IDOC_PARAM.  
  155.   
  156.   
  157. WRITE 'Please fill in your name before printing:'.  
  158. WRITE / ' Enter name here ' INPUT ON.  
  159. ULINE.  
  160. WRITE 'You can overwrite the following line:'.  
  161. FORMAT INPUT ON INTENSIFIED OFF.  
  162. ULINE.  
  163. FORMAT INPUT OFF INTENSIFIED ON.  
  164.   
  165. --包含.  
  166. INCLUDE <LIST>.  
  167. START-OF-SELECTION.  
  168. WRITE 'Now comes a'.  
  169. FORMAT HOTSPOT ON COLOR 5 INVERSE ON.  
  170. WRITE 'HOTSPOT'.  
  171. FORMAT HOTSPOT OFF COLOR OFF.  
  172. AT LINE-SELECTION.  
  173. WRITE / 'New list AT-LINE-SELECTION'.  
  174. SKIP.  
  175. WRITE 'This is also a hotspot:'.  
  176. WRITE ICON_LIST AS ICON HOTSPOT.