SAP-13-內表與工作區

內表?

作用
內表是 ABAP 程序中一種非常重要的數據結構,它類似于數據庫表,用于在程序運行時存儲和處理數據。與數據庫表不同的是,內表存在于程序的內存中,數據的讀寫速度比從數據庫中讀取要快很多。它可以存儲多條具有相同結構的數據記錄,這些記錄就像數據庫表中的行一樣。例如,當你從數據庫中讀取一批客戶數據時,可以將這些數據存儲在內表中,然后在程序中對這些數據進行各種處理,如排序、篩選、計算等。

聲明:

直接使用TYPES語句定義內表類型,然后再聲明內表變量

?參照結構體定義內表

* 使用TYPES語句定義結構體類型
TYPES: BEGIN OF ty_person,name TYPE string,age  TYPE i,END OF ty_person.* 使用TYPES語句定義基于結構體類型的內表類型
TYPES: tt_people TYPE TABLE OF ty_person.* 聲明內表變量
DATA: lt_people TYPE tt_people.

參照數據庫定義內表?

* 參考MARA表定義內表
DATA: lt_mara TYPE TABLE OF mara.

?工作區

  • 定義與作用
    工作區是一個數據對象,它的結構與內表的行結構相同。它主要用于在內表操作時臨時存儲內表中的一行數據。就像你要處理內表中的某一行數據時,不能直接在整個內表上進行復雜操作,而是先把這一行數據取到工作區中,在工作區中處理完后,再將結果寫回內表。例如,當你要對一個客戶的信息進行格式調整時,先把這個客戶的信息從內表讀到工作區,調整完后再寫回內表。
  • 聲明方式
    可以使用LIKE LINE OF語句基于內表來聲明工作區,使其結構與內表行結構一致。

?使用?LIKE LINE OF?基于內表定義

* 基于內表定義工作區
DATA: ls_employee LIKE LINE OF lt_employees.

?基于結構體定義

* 定義結構體
TYPES: BEGIN OF ty_employee,emp_id TYPE string,emp_name TYPE string,salary TYPE p LENGTH 10 DECIMALS 2,END OF ty_employee.* 基于結構體定義內表
DATA: lt_employees TYPE TABLE OF ty_employee.* 基于結構體定義工作區
DATA: ls_employee TYPE ty_employee.

?內表和工作區

工作區常用于LOOP循環中對內表數據進行逐行處理,或者在進行內表數據的增刪改操作時作為臨時存儲數據的地方。

CLEAR 語句清空工作區

  • CLEAR gs_employee.

內表是存儲多條相關數據記錄的容器,而工作區是與內表行結構相同,用于臨時處理數據


案例

1-增?

* 定義內表
DATA: lt_employees TYPE TABLE OF
{emp_id TYPE string,emp_name TYPE string,salary TYPE p LENGTH 10 DECIMALS 2
}.
* 定義工作區
DATA: ls_employee LIKE LINE OF lt_employees.* 填充工作區數據并添加到內表
ls_employee - emp_id = '001'.
ls_employee - emp_name = '張三'.
ls_employee - salary = 5000.00.
APPEND ls_employee TO lt_employees.* 展示內表所有數據
LOOP AT lt_employees INTO ls_employee.WRITE: / '員工編號:', ls_employee - emp_id,'姓名:', ls_employee - emp_name,'工資:', ls_employee - salary.
ENDLOOP.
可以將工作區數據插入到內表的指定位置。例如,要將一個新員工數據插入到內表的第二行:* 假設內表已有數據,這里省略定義和已有數據填充
DATA: new_employee LIKE LINE OF lt_employees.
new_employee - emp_id = '002'.
new_employee - emp_name = '李四'.
new_employee - salary = 6000.00.INSERT new_employee INTO TABLE lt_employees INDEX 2.

2-刪?

* 假設內表已有數據,這里省略定義和已有數據填充
* 刪除員工編號為 '001' 的員工數據
DELETE FROM lt_employees WHERE emp_id = '001'.* 展示內表所有數據
LOOP AT lt_employees INTO ls_employee.WRITE: / '員工編號:', ls_employee - emp_id,'姓名:', ls_employee - emp_name,'工資:', ls_employee - salary.
ENDLOOP.
可以通過指定內表行的索引來刪除數據。例如,要刪除內表的第三行數據:
* 假設內表已有數據,這里省略定義和已有數據填充
DELETE lt_employees INDEX 3.

?3-改

* 假設內表已有數據,這里省略定義和已有數據填充
* 修改員工編號為 '001' 的員工工資,增加 1000
MODIFY lt_employeesSET salary = salary + 1000.00WHERE emp_id = '001'.* 展示內表所有數據
LOOP AT lt_employees INTO ls_employee.WRITE: / '員工編號:', ls_employee - emp_id,'姓名:', ls_employee - emp_name,'工資:', ls_employee - salary.
ENDLOOP.
先通過索引或條件找到要修改的行,然后直接修改工作區對應字段的值,再寫回內表。
例如,要給員工編號為 001 的員工漲薪 1000:* 假設內表已有數據,這里省略定義和已有數據填充
DATA: modify_employee LIKE LINE OF lt_employees.
READ TABLE lt_employees INTO modify_employee WITH KEY emp_id = '001'.
IF sy - subrc = 0.modify_employee - salary = modify_employee - salary + 1000.00.MODIFY lt_employees FROM modify_employee.
ENDIF.

?4-查

* 假設內表已有數據,這里省略定義和已有數據填充
* 定義工作區用于存放查詢結果
DATA: found_employee LIKE LINE OF lt_employees.* 根據員工編號查詢員工信息
READ TABLE lt_employees INTO found_employee WITH KEY emp_id = '001'.
IF sy - subrc = 0.WRITE: / '找到員工 - 員工編號:', found_employee - emp_id,'姓名:', found_employee - emp_name,'工資:', found_employee - salary.
ELSE.WRITE: / '未找到員工編號為 001 的員工'.
ENDIF.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81809.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81809.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81809.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dali本地安裝和使用

Dali(Distance-matrix ALIgnment)是一種廣泛使用的蛋白質結構比對工具,主要用于比較蛋白質三維結構之間的相似性。它通過計算蛋白質結構之間的距離矩陣來評估結構之間的相似性,并生成比對結果。 1. 安裝 wget http://ekhidna2.b…

Unreal 從入門到精通之SceneCaptureComponent2D實現UI層3D物體360°預覽

文章目錄 前言SceneCaptureComponent2D實現步驟新建渲染目標新建材質UI控件激活3DPreview鼠標拖動旋轉模型最后前言 我們在(電商展示/角色預覽/裝備查看)等應用場景中,經常會看到這種3D展示的頁面。 即使用相機捕獲一個3D的模型的視圖,然后把這個視圖顯示在一個UI畫布上,…

2024CCPC遼寧省賽 個人補題 ABCEGJL

Dashboard - 2024 CCPC Liaoning Provincial Contest - Codeforces 過題難度 B A J C L E G 銅獎 4 953 銀獎 6 991 金獎 8 1664 B&#xff1a; 模擬題 // Code Start Here string s;cin >> s;reverse(all(s));cout << s << endl;A&#xff1a;很…

Java基礎 Day17

一、遞歸 方法直接或者間接調用本身 將大問題, 層層轉化為一個與原問題相似的、規模更小的問題來解決 二、異常 程序在編譯或執行過程中&#xff0c;出現的非正常的情況 (錯誤) 語法錯誤不是異常 1、閱讀異常信息 從下往上看&#xff1a;發生異常的位置、異常名稱、發生異…

hook原理和篡改猴編寫hook腳本

hook原理&#xff1a; hook是常用于js反編譯的技術&#xff1b;翻譯就是鉤子&#xff0c;他的原理就是劫持js的函數然后進行篡改 一段簡單的js代碼 &#xff1a;這個代碼是順序執行的 function test01(){console.log(test01)test02() } function test02(){console.log(02)tes…

使用 Vue 展示 Markdown 文本

使用 Vue 展示 Markdown 文本可以通過以下幾種方法&#xff1a; 方法 1&#xff1a;使用 v-html 指令 可以使用 v-html 指令來渲染 Markdown 文本&#xff1a; <template><div v-html"markdownText"></div> </template> <script>e…

深度解析 Java 中介者模式:重構復雜交互場景的優雅方案

一、中介者模式的核心思想與設計哲學 在軟件開發的歷史長河中&#xff0c;對象間的交互管理一直是架構設計的核心難題。當多個對象形成復雜的網狀交互時&#xff0c;系統會陷入 "牽一發而動全身" 的困境。中介者模式&#xff08;Mediator Pattern&#xff09;作為行…

FreeCAD傻瓜教程-外螺紋的繪制,利用兩個實體進行布爾運算來實現

起因&#xff1a;因為要設計一個波珠螺絲固定器&#xff0c;為了不跑偏&#xff0c;需要在螺柱上加工一個直徑6mm&#xff0c;深度1.2mm的圓弧凹槽所以想用泉州制造的6.8車銑加工。 但是該加工目前不支持軸向的鉆孔&#xff0c;所以想著干脆在兩端加上M8的螺栓&#xff0c;也起…

權限控制相關實現

Spring Boot-Shiro-Vue&#xff1a; 這個項目可以滿足基本的權限控制需求&#xff0c;前后端都有&#xff0c;開箱即用

Node.js路徑處理指南:如何安全獲取當前腳本目錄路徑

本文適用于 Node.js 14.x及以上版本&#xff0c;同時覆蓋 CommonJS 和 ES Modules 模塊系統 文章目錄 一、為什么需要關注路徑問題&#xff1f;二、三種核心方法詳解方法1&#xff1a;經典方案 __dirname (CommonJS)方法2&#xff1a;ES Modules 解決方案方法3&#xff1a;動態…

web基礎

域名概述 2-1 域名的概念&#xff1a;IP 地址不易記憶&#xff0c;域名是互聯網絡上識別和定位計算機的層次結構式的字符標識&#xff0c;與該計算機的互聯網協議 (IP) 地址相對應&#xff0c;用于在數據傳輸時標識計算機的電子方位&#xff0c;方便人們記憶和輸入。 早期使用…

醫療行業數據共享新實踐:如何用QuickAPI打通診療全流程數據壁壘

在醫療行業&#xff0c;數據的高效流轉直接影響診療效率和患者體驗。某三甲醫院在數字化轉型中發現&#xff0c;雖然已積累大量核心業務數據&#xff0c;但各科室系統間的數據互通仍存在明顯瓶頸——檢驗科的報告無法實時同步至門診系統&#xff0c;藥房庫存數據與采購系統脫節…

高級認知型Agent

目標: 構建一個具備自主規劃、多步推理、工具使用、自我反思和環境交互能力的智能代理,使其能夠高效、可靠地完成復雜任務。 核心理念: Agent的智能涌現于一個精密的認知循環: 感知 (Perceive) -> 理解與規劃 (Think/Plan - 想) -> 信息獲取 (Search/Act - 查) -&g…

百度地圖的地鐵圖API所有城市的城市名和citycode的對照關系列表

百度地圖的地鐵圖API所有城市的城市名和citycode的對照關系列表 城市keywordcitycode北京beijing131上海shanghai289廣州guangzhou257深圳shenzhen340重慶chongqing132天津tianjin332石家莊shijiazhuang150南京nanjing315成都chengdu75沈陽shenyang58杭州hangzhou179武漢wuhan2…

SymPy | 獲取表達式自由變量方法與因式分解

SymPy 是 Python 中強大的符號計算庫&#xff0c;廣泛應用于數學建模、公式推導和科學計算。本文將從兩個核心功能展開&#xff1a;表達式中自由變量的獲取與因式分解的實現&#xff0c;通過完整代碼示例和深入分析&#xff0c;幫助讀者掌握其使用方法。 第一部分&#xff1a;獲…

掩膜合并代碼

def ensure_dir(path):"""若目錄不存在則創建"""if not os.path.exists(path): #判斷路徑是否存在os.makedirs(path) #創建路徑def read_and_resize(img_path, size):"""讀取并縮放圖像到指定尺寸&#xff0c;返回 numpy 數組&qu…

藍橋杯5130 健身

問題描述 小藍要去健身&#xff0c;他可以在接下來的 1~n 天中選擇一些日子去健身。 他有 m 個健身計劃&#xff0c;對于第 i 個健身計劃&#xff0c;需要連續的 天&#xff0c;如果成功完成&#xff0c;可以獲得健身增益 si? &#xff0c;如果中斷&#xff0c;得不到任何…

auto關鍵字解析

前言 在11標準之前&#xff0c;auto在c中是聲明存儲器類型的關鍵字。而在11標準中它的功能變為了類型推導。 對此&#xff0c; 在這里引入Cprimer中的原句&#xff1a; 編程時常常需要把表達式的值賦給變量&#xff0c;這就要求在聲明變量的時候清楚的知道表達式的類型。然而…

嵌入式STM32學習——串口USART 2.0(printf重定義及串口發送)

printf重定義&#xff1a; C語言里面的printf函數默認輸出設備是顯示器&#xff0c;如果要實現printf函數輸出正在串口或者LCD顯示屏上&#xff0c;必須要重定義標準庫函數里調用的與輸出設備相關的函數&#xff0c;比如printf輸出到串口&#xff0c;需要將fputc里面的輸出指向…

信號量機制:操作系統中的同步與互斥利器

在計算機操作系統中&#xff0c;信號量機制是一種重要的進程同步與互斥工具。它廣泛應用于多進程或多線程環境中&#xff0c;用于解決并發訪問共享資源時可能出現的競態條件問題。本文將從信號量的基本概念出發&#xff0c;逐步深入探討其工作原理、實現方式以及實際應用&#…