Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 116 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
116
Dung lượng
5,52 MB
Nội dung
ABAP Programming I ABAP Programming I I. Tạo chương trình ABAP cơ bản: 1. Định nghĩa dữ liệu với trình soạn thảo ABAP (ABAP Editor): a. Tạo chương trình ABAP ABAP (Advanced Business Application Programming) là ngôn ngữ lập trình được sử dụng để phát triển các ứng dụng SAP. ABAP Editor là công cụ phát triển mà SAP R/3 cung cấp. Công cụ này cho phép bạn tạo, hiệu chỉnh và thực thi chương trình ABAP. Bạn có thể sử dụng cửa sổ ‘SAP Easy Access’ để truy cập ABAP Editor. Để mở ABAP Editor, gõ transaction code ‘SE38’ vào trường Command và nhấn Enter. Để tạo chương trình ABAP, cần xác định trên chương trình trong trường Program, tên bắt đầu là Y hoặc Z → nhấn Create. Sử dụng cửa sổ ‘Program Attributes’ để xác định tiêu đề và các thuộc tính bao gồm loại chương trình và application area mà chương trình phụ thuộc. Khi bạn hiệu chỉnh và lưu chương trình ABAP, đó là phiên bản chưa kích hoạt (inactive). Không thể thực thi chương trình này, để thực thi được cần kích hoạt (activate) nó. b. Cấu trúc ABAP: Chương trình ABAP chứa nhiều dòng mã gọi là câu lệnh (statement), được sử dụng để định nghĩa và thao tác dữ liệu. Khi viết câu lệnh, bạn cần theo nguyên tắc nhất định để đảm bảo trình xử lý ABAP có thể biên dịch đúng và thực thi câu lệnh đưa ra kết quả mong muốn. Câu lệnh bắt đầu bằng từ khóa và kết thúc bằng dấu chấm. Nên có ít nhất một khoảng trắng để phân chia các từ trong câu lệnh. Ví dụ: write / 20(5) 'Hello'. Chương trình ABAP cũng chứa chú thích để cải tiến tính dễ đọc cho chương trình và nó được bỏ qua khi thực thi. Dòng ghi chú bắt đầu bằng dấu * hoặc dấu ". Ví dụ: *& * *& Creating Sales Report * *& * c. Xác định kiểu dữ liệu: Khi chương trình được thực thi, nó thực hiện các thao tác logical trên dữ liệu cục bộ trong chương trình. Dữ liệu là các trường trong bộ nhớ (working memory). Một trường là một chuỗi các byte. Trường trong bộ nhớ lưu dữ liệu của chương trình trong quá trình thực thi gọi là đối tượng dữ liệu (data object). Các trường trong bộ nhớ này được gán cho chương trình khi nó thực thi và được giải phóng khi thực thi xong. Trường trong bộ nhớ đã giải phóng có thể được gán cho chương trình khác. Hai loại đối tượng dữ liệu: + có thể thay đổi (modifiable) + không thể thay đổi (nonmodifiable) Bạn có thể thay đổi giá trị được lưu trong đối tượng dữ liệu modifiable trong quá trình thực thi. Đối tượng modifiable bao gồm biến (variable), field string, internal table. Giá trị của đối tượng dữ liệu nonmodifiable duy trì hông đổi trong quá trình thực thi. Bạn có thể xác định giá trị của nó khi định nghĩa. Đối tượng nonmodifiable bao gồm chữ (literal) và hằng (constant). Loại dữ liệu mà ABAP hỗ trợ: + character + date + hexadecimal + numeric + time Kích cỡ của đối tượng như character, numeric hoặc hexadecimal là giữa 1 và 65,535 ký tự. Tuy nhiên kích cỡ loại dữ liệu date là 8 ký tự hoặc time là 6 ký tự => kích cở của các kiểu dữ liệu này là cố định. 1. charater: các giá trị alphanumeric 2. hexadecimal: A-F và 0-9 3. numeric: 0-9 d. Định nghĩa biến và literal: Có nhiều vùng và nhiều khối trong chương trình. Bạn có thể chỉ định các câu lệnh trong vùng xác định dựa vào loại công việc mà câu lệnh thực hiện. Có 4 vùng: + data declaration + initialization + start-of-seclection + end-of-selection Ba câu lệnh được sử dụng để định nghĩa biến: + data + parameters + select-options Định nghĩa biến sử dụng câu lệnh data, chỉ định tên, kích cỡ và kiểu dữ liệu của biến. Ví dụ: data username(15) type c. <= character data reports(5) type n. <= numeric Định nghĩa biến sử dụng câu lệnh parameters. parameters variable name(size) type data type parameters age(3) type n. Ví dụ: Sau khi định nghĩa biến user, cần khởi tạo giá trị trong quá trình thực thi. parameters user(12) type c. Để định nghĩa biến bằng câu lệnh select-options, bạn phải chỉ định tên và tiêu đề của selection screen nơi người dùng khởi tạo dãy giá trị cho biến. select-options title for variable name. Ví dụ: select-options Number for serial. <= định nghĩa biến serial với tên selection screen là Number. Khi muốn giá trị của đối tượng dữ liệiu không thay đổi, hãy định nghĩa literal => sử dụng để hiển thị kết xuất. Để định nghĩa literal, sử dụng '. Ví dụ: bạn đã định nghĩa chuỗi literal "Samantha" khi gõ 'Samantha". Sử dụng câu lệnh write để hiển thị kết xuất. Ví dụ: write / 'literal'. Giả sử bạn muốn hiển thị thông điệp "This is a literal". Bạn có thể sử dụng câu lệnh write để định nghĩa thông điệp như một literal và hiển thị nó. Bạn có thể sử dụng đối tượng dữ liệu loại I như biến, field string và internal table để lưu các giá trị trong chương trình. 2. Thực hiện các thao tác: a. Phép gán: Cây lệnh gán cho phép bạn thao tác giá trị của biến, field string và internal table: + clear + move Sử dụng câu lệnh clear để thiết lập lại giá trị cho một biến. clear variable name. Ví dụ: clear counter. => dùng câu lệnh clear để thiết lập lại giá trị mặc định của biến counter chứa giá trị 102, sau khi code được thực thi, giá trị của counter sẽ thay đổi là 0. Sử dụng câu lệnh move để gán giá trị của một biến cho một biến khác. move a to b. Ví dụ: giá trị của biến a là 10, giá trị biến b là 33. Bạn có thể sử dụng statement move để gán giá trị a cho b. move a to b. => giá trị của b thay đổi từ 33 thành 10. b. Phép tính: Statement được sử dụng để thực hiện phép tính chứa hai thành phần: + operands + operators Các statement được sử dụng để thực hiện phép tính: + add + divide + multiply + subtract + compute Phép cộng: add variable1 to variable2. Ví dụ: Giả sử giá trị của biến product là 20, giá trị của biến stock là 46. Bạn muốn cộng giá trị của cả hai biến và lưu tổng vào biến stock. Sử dụng: add product to stock. <= stock = stock + product divide effort by hours. <= effort = effort / hours multiply variable1 by variable2. <= variable1 = variable1 * variable2 subtract variable1 from variable2. <= variable2 = variable1 - variable2 Bạn có thể sử dụng câu lệnh compute để thực hiện các phép tính toán học. Không giống add, substract, divide và multiply, compute là câu lệnh đa năng cho phép bạn thực thi nhiều câu câu lệnh tính toán. Hơn nữa nó cho phép bạn lưu kết quả của biểu thức trong một biến khác. Ví dụ: Tính tổng của b và c và lưu kết quả vào biến a compute a = b + c. 3. Các câu lệnh điều kiện, vòng lặp, điều khiển: a. Sử dụng các câu lệnh điều kiện Khi tạo chương trình ABAP, bạn cần điều khiển luồng chương trình để được kết xuất như mong muốn. Ví dụ: bạn muốn kiểm tra kết quả của biểu thức logical, và hiển thị kết xuất ra màn hình dựa vào kết quả. Các loại câu lệnh được sử dụng phổ biến để điều khiển luồng chương trình là: + conditional + control + looping Câu lệnh if được sử dụng phổ biến nhất. Câu lệnh bắt đầu với từ khóa if và kết thúc với từ khóa endif. Mệnh đề elseif và else được sử dụng để kiểm tra giá trị của expression1 và expression2. Nếu biểu thức là đúng, câu lệnh ABAP tương ứng được thực thi. if expression1. statements. [elseif expression2. statements.] [else. statements.] endif. Ví dụ: if a = 0. write / 'The value of a is equal to zero!'. elseif a = 1. write / 'The value of a is equal to one!'. else. write / 'The value of a is equal to one!'. endif. Ngoài câu lệnh if, bạn có thể sử dụng câu lệnh case để thực thi các câu lệnh dựa vào giá trị của một biến. Sử dụng khi muốn thực hiện hơn 3 hành động. case variable. when value1. statements. when value2. statements. endcase. Ví dụ: data counter type n value 2. case counter. when 1. write / 'The value of counter is one.'. when 2. write / 'The value of counter is two.'. when 3. write / 'The value of counter is three.'. endcase. b. Vòng lặp: Vòng lặp cho phép bạn thực thi nhiều câu lệnh nhiều lần mà hông cần viết lại câu lệnh mỗi lần bạn muốn thực thi chúng. Câu lệnh lặp phổ biến là do và while. Câu lệnh do là câu lệnh lặp không điều kiện. Nó thực thi một khối chương trình một số lần mà bạn chỉ định. Câu lệnh while là câu lệnh lặp có điều kiện. Nó thực thi khối chương trình nếu biểu thức logical đúng. do n times. statements. enddo. Ví dụ: data num type n value 1. do 15 times. write / n. n = n + 1. enddo. while logical expression. statements. endwhile. Ví dụ: while counter < 20. counter = counter + 1. endwhile. Câu lệnh rẽ nhánh: + continue + exit + stop data counter type n value 0. do 3 times. counter = counter + 1. if counter = 2. continue. else. write / 'The value of counter is: '. write counter. endif. enddo. => câu lệnh write sẽ không được thực thi khi giá trị của counter là 2. Sử dụng câu lệnh exit để thoát khỏi vòng lặp. Câu lệnh stop để thoát khỏi khối chương trình và chuyển đến khối kế tiếp. Ví dụ: bạn chỉ định câu lệnh stop trong vùng "start of selection". Khi đến stop, sự thực thi sẽ chuyển đến vùng "end of selection". Tạo chương trình hiển thị danh sách các số từ 1 đến 20. data counter type n value 0. data out type n value 0. data final type c value 'The final value of counter is 0'. write / 'Here is the list of numbers:'. do 20 times. "begining of the loop [...]... "Bulling_BU": data: begin of itab_billing_bu occurs 0, document_number type Billing_BU-document_number, BU_code type Billing_BU-BU_code, billing_amount type billing-billing_amount, end of itab_billing_bu Tạo internal table "itab_billing" từ table "Billing" để tạo danh sách thứ hai hiển thị thông tin chi tiết về billing Bạn có thể sử dụng cấu trúc "ZBilling" trong DDIC: data : itab_billing like ZBilling... danh sách hiển thị t i khoản từ internal table "itab_billing" và table "billing" Khi bạn nhấp đ i một dòng trong danh sách cơ bản, bạn cần hiển thị một danh sách thứ hai hiển thị thông tin chi tiết của khách hàng Khi ngư i dùng chọn một dòng và nhấn F2, một danh sách thứ hai hiển thị thông tin chi tiết của billing sẽ xuất hiện start-of-selection "Basic list select * into itab_billing from billing "code... write: / itab_ITAsset-asset_number hide itab_ITAsset-asset_number write: / itab_ITAsset-acquired_date write: / itab_ITAsset-asset_value endselect at line-selection "secondary list loop at itab_ITAllocation "if the asset number of itab_ITAllocation table matched "the asset number of basic list row on which the user double-clicked "create the secondary list if itab_ITAllocation-asset_number = itab_ITAsset-asset_number... Interactive report: a Interactive report: Kết xuất của interactive report chứa hai lo i list: basic list và secondary list Interactive report cho phép bạn giao tiếp nhiều cách: + chọn dòng trong basic list + sử dụng menu + sử dụng nút nhấn Bạn có thể g i giao dịch và report khác dựa vào giao tiếp của ngư i dùng Dựa vào lo i giao tiếp v i basic list, sự kiện tương ứng được rút trích Có 3 lo i sự kiện:... hai thể hiện chi tiết khách hành tương ứng v i dòng được chọn Khi ngư i dùng nhấn Shift+F12, danh sách thứ hai hiển thị chi tiết sản phẩm start-of-selection "create the basic list here at pf1 "create the secondary list displaying customer details here at pf24 "create the secondary list displaying product details here Khi ngư i dùng chọn 1 dòng và nhấn Enter, danh sách chi tiết vendor sẽ xuất hiện Giả... name(variable name = value) emp_name->display_attributes() Ví dụ: class airplane definition private section methods get_attributes importing flight_num type c data name type string endclass class airplane implementation method get_attributes name = flight_num endmethod endclass start-of-selection data flight_list type ref to airplane create object flight_list flight_list->get_attributes(flight_num(5)... "create basic list select document_number BU_code into itab_billing_bu from from Billing_BU at start-of-selection " create secondary lists select * from into itab_billing from Billing select * from into itab_bu from BU Để tạo hai danh sách thứ hai dựa vào dòng và trường mà ngư i dùng nhấp đ i trong danh sách cơ bản, bạn cần rút trích tên và giá trị của trường vào lúc runtime II Lập trình hướng đ i tượng... thi khi chương trình được t i và không thuộc phạm vi startof-selection Giả sử bạn tạo một chương trình phát sinh ra danh sách hóa đơn Để làm i u này bạn cần viết câu lệnh lấy các record từ bảng "billings" bên trong event block thích hợp report BillingInfo tables: billing parameters : charge type N data : begin of itab_billing occurs 0, document_number like billing-document_number, party like billing-party... cần giao tiếp v i ngư i dùng cu i Bạn có thể sử dụng câu lệnh message trong chương trình report để làm i u này Sử dụng câu lệnh này cũng có thể i u khiển l i xảy ra message 'message_string' Type 'message_type' => message_string là thông tin bạn muốn giao tiếp v i ngư i dùng, message_type là lo i thông tin Có sáu lo i message: Giả sử bạn cần hiển thị t i liệu mua bán dựa vào phạm vi ngày Lấy dữ liệu... block và subroutine Trong quá trình thực thi của classical report, event block được chạy b i m i trường thực thi trong khi subroutine được g i từ chương trình report M i trường thực thi t i và chạy một event block phụ thuộc vào sự kiện xảy ra Sau khi thực thi event block, i u khiển quay trở l i m i trường thực thi Phụ thuộc vào sự kiện kế tiếp xảy ra, m i trường thực thi sẽ thực thi event block tương . ABAP Programming I ABAP Programming I I. Tạo chương trình ABAP cơ bản: 1. Định nghĩa dữ liệu v i trình soạn thảo ABAP (ABAP Editor): a. Tạo chương trình ABAP ABAP (Advanced Business Application. thay đ i (nonmodifiable) Bạn có thể thay đ i giá trị được lưu trong đ i tượng dữ liệu modifiable trong quá trình thực thi. Đ i tượng modifiable bao gồm biến (variable), field string, internal. trình khi nó thực thi và được gi i phóng khi thực thi xong. Trường trong bộ nhớ đã gi i phóng có thể được gán cho chương trình khác. Hai lo i đ i tượng dữ liệu: + có thể thay đ i (modifiable) +