Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

1.

Debugging là gì
- Bugs là một dạng lỗi xảy ra trong logic học gây ra tình trạng ứng dụng bị
thực thi sai hoặc là không được thực thi. Bugs luôn tiềm ẩn ở mọi nơi và
không thể lường trước được, do đó chỉ có thể tùy thuộc vào khả năng trong
phát triển và bảo trì ứng dụng để có thể làm giảm lỗi này xuống mức thấp
nhất có thể.
- Debug trong lập trình được hiểu là quá trình tìm ra các lỗi và nguyên nhân
khiến lỗi xuất hiện, từ đó tìm ra được hướng giải quyết, còn được gọi là fix
bug.

2. ABAP Program Structure

Mỗi chương trình ABAP bao gồm:


- Phần khai báo chương trình (Introductory Program Part)
- Phần khai báo biến toàn cục (Declaration part for global data)
- Các khối xử lý (Processing Blocks), bao gồm:
- Procedures (Các tiến trình xử lý)
- Dialog modules (Khối xử lý các giao dịch với User)
- Event Blocks (Khối xử lý sự kiện)

a. Introductory Program Part


Định nghĩa loại của chương trình ABAP:
- REPORT: báo cáo
- Program: Chương trình
- Function-Pool: Chương trình nhóm các Function Modules ( có thể sử
dụng toàn cục )
- Class-Pool: Chương trình nhóm các Class ( có thể sử dụng toàn cục )
- Interface-Pool: Chương trình nhóm các Interface ( có thể sử dụng
toàn cục )
- Type-Pool: Định nghĩa các kiểu dữ liệu ( có thể sử dụng toàn cục )
Ngoài ra, có thể gọi các chương trình khác thông qua Keyword Include.
⇒ Đây là phần định nghĩa chương trình

b. Declaration Data
Trong mỗi chương trình ABAP, phần mở đầu của chương trình được theo sau
bởi phần khai báo dành cho dữ liệu toàn cục, lớp và màn hình lựa chọn.
Phần này bao gồm:
● Tất cả các câu lệnh khai báo cho dữ liệu toàn cục. Dữ liệu toàn cục là
dữ liệu mà có thể được sử dụng trong tất cả các khối xử lý nội bộ.
● Các câu lệnh khai báo mà xuất hiện trong các thủ tục (phương thức,
các chương trình con, các chương trình hàm) hình thành phần khai
báo cho dữ liệu cục bộ trong các khối xử lý đó. Dữ liệu này chỉ được
nhìn thấy trong thủ tục mà nó được khai báo.
c. Processing Blocks
Tuỳ vào loại chương trình và loại luồng xử lý, các keyword của từng
processing Blocks là khác nhau.
- PBO: Process Before Output
- PAI: Process After Input
3. Breakpoints, Structure, Watchpoints
a. Breakpoints

Điểm dừng (Breakpoint): Là một vị trí cụ thể trong chương trình ABAP nơi việc thực
thi các lệnh tạm dừng. Trong ABAP, có các loại Breakpoints như sau:

● Session breakpoint: Chỉ hoạt động trong phiên SAP GUI hiện tại của người đặt
breakpoints
● External breakpoint: Cho phép người đặt breakpoints debug, có hiệu lực trong
1 khoảng thời gian
Lưu ý: Không thể đặt nhiều hơn 30 breakpoints và 10 watchpoints trong một chương
trình.

⇒ Lưu ý, chỉ đặt được Breakpoint tại các khối lệnh/ dòng lệnh có thể thực thi
(Executable lines)

b. Structure
Structure là những đối tượng dữ liệu (được tạo thành từ các thành phần với
kiểu dữ liệu bất kỳ) được lưu trữ tuần tự trong bộ nhớ. Kiểu dữ liệu của một
Structure là kiểu dữ liệu có cấu trúc hoặc được định nghĩa trong ABAP Dictionary.

Tính năng Table (Bảng) Structure (Cấu trúc)


Lưu trữ dữ liệu Vĩnh cửu Chỉ trong lúc chương trình
chạy (runtime)

Kiểu lưu trữ Vật lý (physical) Logic

Khóa chính Có Không


(Primary Key)

Thuộc tính kỹ Có (lớp dữ liệu, Không


thuật kích cỡ,...)

⇒ Chỉ là nơi lưu trữ dữ liệu tạm thời lúc chạy chương trình, nên truy vấn vào dữ liệu
của Structure sẽ không có dữ liệu

c. Watchpoints

(Watchpoint) là một dạng breakpoints có điều kiện, chỉ được sử dụng trong
phiên debug ABAP (ABAP Debugger) khi đang chạy debug. Watchpoints có thể được
sử dụng để theo dõi giá trị của các biến ABAP. Khi đặt watchpoints, debugger dừng
chương trình ngay khi biến được đưa vào watchpoints xuất hiện thay đổi/ thoả mãn
điều kiện nhất định. Watchpoints sẽ được xoá đi sau khi phiên debug kết thúc.

Công dụng:

● Theo dõi giá trị của các biến ABAP riêng lẻ.
● Ngừng chương trình gỡ lỗi ABAP ngay khi giá trị của biến được theo dõi thay
đổi.
● Giúp giám sát giá trị của các biến đã chọn và sự thay đổi giá trị của chúng trong
quá trình xử lý chương trình.
4.Debugging ABAP Program
a. Cách thực thi Debug
- Sử dụng /h tại chương trình đang chạy
- Đặt breakpoints tại source code của chương trình bằng Tcode SE37/SE38
b. Giới thiệu chung
- Các command khi debug bao gồm:
Single step (F5) Use this option to execute the program
statement by statement. This allows you to branch
to other program units.
⇒ Chạy từng bước, nếu có các chương trình
nhỏ hơn được thực thi thì debugger sẽ chạy trực
tiếp vào đấy.
Execute (F6) Use this option to process a program line by
line. All of the statements on the current line are
processed in a single step. This allows you to
process the whole program.
⇒ Chạy từng dòng của chương trình giống
Single Step, tuy nhiên
Return (F7) The Debugger returns to the point at which
control is passed back to the main program. Use
this option to return from other program units.
⇒ Dùng để nhảy ra khỏi subroutine/ functional
module để về chương trình chính
Continue (F8) Use this option to process the program up to the
next breakpoint. If there are no more breakpoints in
the program, the system exits debugging mode
and executes the rest of the program normally.
⇒ Chạy chương trình và dừng ở breakpoint tiếp
theo, nếu không có breakpoint nào thì thoát
debugger và thực thi chương trình như thường
Watch-point Once can set Watch on a variable. Whenever
the value of that variable changes or reaches at
predefined value, the execution stops in debugging
mode.
⇒ Breakpoint theo điều kiện, chương trình thực thi
đến khi điều kiện được đưa vào Watchpoint được
thoả mãn
- Ngoài các biến được lựa chọn lúc Debug, hệ thống mặc định lấy ra kết quả
của 2 biến sau:

- SY-SUBRC: System return code, nghĩa là trả về trạng thái thực thi câu
lệnh, các giá trị thường gặp:
- 0 (Zero): Thực thi thành công.
- 4 (Not found): Data not found during a read operation (e.g.,
database or internal table). ⇒ Không tìm thấy dữ liệu
- 8 (Error): An error occurred during processing. ⇒ Phát sinh lỗi
- SY-TABIX: hiển thị chỉ mục của dòng đang được thực thi (trong bảng/
vòng lặp). Chỉ mục này được reset sau khi kết thúc vòng lặp/ đọc dữ
liệu từ bảng.

c. Đặt breakpoints
- Khi sử dụng /h, chỉ đặt được breakpoint tại những dòng lệnh chưa được
thực thi
- Để thêm các Breakpoint riêng lẻ, chọn vào dòng cần đặt Debug
- Tuy nhiên cách này dễ phát sinh ra lỗi không cho đặt Breakpoints
- Sử dụng F9/ chọn vào ô Breakpoints trên thanh công cụ để thêm mới
Breakpoints

- ABAP Cmnds: Đặt Breakpoints tại TOÀN BỘ những dòng code có


Statement được điền vào
- Message: Đặt breakpoint tại nơi hiển thị Message
- Source Code: Thêm breakpoint vào dòng bao nhiêu, tại chương trình
nào của Source Code (Giống như vào code đặt)

d. Structure
Structure là những đối tượng dữ liệu (được tạo thành từ các thành phần với
kiểu dữ liệu bất kỳ) được lưu trữ tuần tự trong bộ nhớ. Kiểu dữ liệu của một
Structure là kiểu dữ liệu có cấu trúc hoặc được định nghĩa trong ABAP Dictionary.
⇒ Đã tới vòng lặp, cần chú ý tới 2 biến này
⇒ Lặp tới tận dòng 766 thì mới có dữ liệu
⇒ Thế chẳng lẽ bấm tay tới dòng 766 á, nờ ô nô !
⇒ Sử dụng Watchpoint (Đặt breakpoint theo điều kiện)
⇒ Ấn F8, vì Watchpoint cũng là Breakpoint ⇒ Sẽ ngưng ở breakpoint nói trên
⇒ Ok rồi nè 😀
⇒ Xoá watchpoint vừa tạo và chạy tiếp

⇒ Chạy cái nó ra luôn cái chương trình


⇒ Oke

You might also like