12 II.3.4.6 Thêm chú thích vào phần header của chương trình chính hoặc function module 12 III Hướng dẫn đặt tên cho đối tượng... II Hướng dẫn lập trình cho Conversion Các hướng dẫn chính
Trang 1TIÊU CHUẨN VIẾT MÃ CHƯƠNG TRÌNH SAP
VERSION 0.01
KIỂM SOÁT PHIÊN BẢN
T ng h ợ p b ở i Tr ầ n Quý Giáp
Ngày t ạ o: 13 / 04 / 2009
Xem l ạ i b ở i: Nguy ễ n Gia Khánh
Ngày xem: 15 / 04 / 2009
Xác nh ậ n b ở i: Nguy ễ n Gia Khánh
Ngày xác nh ậ n: 15 / 04 / 2009
BẢN GHI NHẬN THAY ĐỔI
Trang 2MỤC LỤC
I Tổng quan 4
I.1 Mục đích 4
I.2 Phạm vi 4
I.3 Các thuật ngữ 4
II Hướng dẫn lập trình cho Conversion 5
II.1 Định dạng Source Code 5
II.1.1 Ký tự sử dụng trong môi trường code 5
II.1.2 Hiệu chỉnh source code 5
II.1.3 Các câu lệnh 5
II.1.4 Thiết lập môi trường code 5
II.2 Cách đặt tên biến trong chương trình 6
II.2.1 Tên biến trên màn hình Selection Screen 6
II.2.2 Tên biến trên màn hình nhập liệu (Screen) 7
II.2.3 Quy tắc đặt tên biến chung cho chương trình 7
II.2.4 Quy tắc đặt tên biến cho subroutine 8
II.2.5 Quy tắc đặt tên biến cho Function Module 8
II.3 Các chuẩn lập trình chung 8
II.3.1 Truy cập tập tin 8
II.3.2 Text element 8
II.3.2.1 Phân loại text element 8
II.3.3 Chú thích chương trình 9
II.3.3.1 Phương pháp chú thích chương trình 9
II.3.3.2 Khai báo biến 9
II.3.3.3 Câu lệnh INCLUDE 9
II.3.3.4 Khối xử lý 9
II.3.3.5 Gọi subroutine hoặc function module 10
II.3.3.6 Những chú thích khác 10
II.3.4 Header của chương trình 10
II.3.4.1 Header của chương trình chính 10
II.3.4.2 Header của chương trình INCLUDE 10
II.3.4.3 Header của Subroutine 11
II.3.4.4 Header của function module 11
II.3.4.5 Theo dõi sự thay đổi của source code 12
II.3.4.6 Thêm chú thích vào phần header của chương trình chính hoặc function module 12 III Hướng dẫn đặt tên cho đối tượng 13
III.1 CÁC QUY TẮC CHUNG 13
III.1.1 Quy tắc đặt tên của SAP 13
III.1.2 Đảm bảo việc phát triển và vận hành được thuận lợi 13
III.2 QUY TẮC ĐẶT TÊN 13
III.2.1 Quy tắc đặt tên chung 13
III.2.2 Tiền tố theo quy tắc của SAP(Kí hiệu <R>) 14
III.2.3 Tiền tố cho việc phát triển các đối tượng mới trong SAP(Kí hiệu <$>) 14
III.2.4 Phân loại đối tượng (Kí hiệu <PL>) 14
III.3 QUY TẮC TẠO CÁC ĐỐI TƯỢNG VÀ THÀNH PHẦN 16
III.3.1 Quy tắc tạo field của table, structure 16
III.3.2 Quy tắc tạo table type 16
Trang 3III.3.3 Quy tắc tạo data element 17 III.3.4 Quy tắc tạo domain 17 III.3.5 Quy tắc tạo chương trình 17
Trang 4I Tổng quan
I.1 M ụ c đ ích
• Quy chuẩn cách viết code trong chương trình SAP
I.2 Ph ạ m vi
Phạm vi của tài liệu áp dụng cho tất các dự án triển khai SAP trong trung tâm dịch vụ
FIS-ERP
I.3 Các thu ậ t ng ữ
Đố i t ượ ng Là các đố i t ượ ng c ầ n phát tri ể n trong SAP Bao g ồ m: Program (ch ươ ng
trình), Table (B ả ng d ữ li ệ u), Data Element (Thông tin nghi ệ p v ụ c ủ a ki ể u
d ữ li ệ u), Domain (Ki ể u d ữ li ệ u), Search Help (Danh sách giá tr ị h ướ ng
d n), v.v…
Package Package là m ộ t thành ph ầ n dùng để ch ứ a các đố i t ượ ng khác Th ườ ng
đượ c t ạ o ra lúc t ạ o m ớ i đố i t ượ ng và r ấ t ít khi ph ả i thay đổ i trong su ố t quá trình phát tri ể n
Request Dùng để qu ả n lý các đố i t ượ ng trong ABAP và qu ả n lý các l ậ p trình viên
theo các yêu c ầ u phát tri ể n Ngoài ra request còn đượ c dùng để chuy ể n giao mã ngu ồ n sang môi tr ườ ng khác
Object Editor Màn hình dùng để so ạ n th ả o các đố i t ượ ng
Trang 5II Hướng dẫn lập trình cho Conversion
Các hướng dẫn chính từ việc thực hiện yêu cầu dạng Conversion sang mã nguồn
II.1 Đị nh d ạ ng Source Code
II.1.1 Ký t ự s ử d ụ ng trong môi tr ườ ng code
Các ký t ự s ử d ụ ng trong môi tr ườ ng code ph ả i là ch ữ hoa và dùng ngôn ng ữ là ti ế ng anh
II.1.2 Hi ệ u ch ỉ nh source code
Ph ả i đả m b ả o ch ạ y Pretty Printer sau khi code xong
II.1.3 Các câu l ệ nh
Mỗi dòng chỉ được viết một câu lệnh và một lệnh nên viết trên một dòng, trong trường hợp quá dài thì viết nhiều hơn một dòng code
II.1.4 Thi ế t l ậ p môi tr ườ ng code
Thi ế t l ậ p môi tr ườ ng code nh ư h ướ ng d ẫ n sau
T ừ màn hình ABAP Editor (SE38 ho ặ c SE80), ch ọ n Utilities->Settings
Chọn Tab Pretty Printer
Trang 6II.2 Cách đặ t tên bi ế n trong ch ươ ng trình
Tên bi ế n s ử d ụ ng trong ch ươ ng trình ph ả i theo các quy t ắ c sau
• Không đượ c dùng d ấ u "-" trong tên bi ế n để tránh nh ầ m l ẫ n v ớ i vi ệ c tri ế t xu ấ t d ữ li ệ u
t ừ b ả ng
• Dùng d ấ u "_" để phân chia n ộ i dung c ủ a bi ế n trong tr ườ ng h ợ p tên bi ế n quá dài
• Các bi ế n s ử d ụ ng trong ch ươ ng trình ph ụ (subroutine, function module) đượ c g ọ i là
bi ế n c ụ c b ộ
II.2.1 Tên bi ế n trên màn hình Selection Screen
Toàn cục Cục bộ Biến đơn trị
Dùng để khai báo biến với một chọn lựa
Biến đa trị
Dùng để khai báo biến với nhiều chọn lựa
Block N/A BL_* Định nghĩa nhóm các trường
Radio button group N/A GRG_* Định nghĩa nhóm radio button
Tên bi ế n nên đặ t tên theo các tr ườ ng trong table ho ặ c theo data element c ủ a bi ế n đ ó
Ví d ụ : P_BUKRS TYPE BUKRS dùng để đị nh ngh ĩ a bi ế n company code
Trang 7II.2.2 Tên bi ế n trên màn hình nh ậ p li ệ u (Screen)
Phân loại Quy tắc đặt
Nhóm các trường (Box) GRP*
Trong trường hợp tiêu đề của nhóm thay đổi động thì tên nhóm được đặt theo quy tắc đặt tên chung của chương trình (3.2.3)
Nút lệnh (Push Button) CMD*
Trong trường hợp Text hiển thị trên nút thay đổi động thì tên nút được đặt theo quy tắc đặt tên chung của chương trình (3.2.3)
Bảng dữ liệu (Table
Tab dữ liệu (Tab Control) TAB*
Các nút trên tab CMD*
Trong trường hợp Text hiển thị trên nút thay đổi động thì tên nút được đặt theo quy tắc đặt tên chung của chương trình (3.2.3)
Subscreen Area SUB*
Custom Control CUS*
Các trường * Các trường trên màn hình phải được thiết kế từ
structure, table hoặc view trong ABAP dictionary Combobox * Trường trên màn hình có thuộc tính list down Thuộc
tính này phải là Listbox with key
Thuộc tính group của các
* là các số để định nghĩa nhóm customize của các trường
II.2.3 Quy t ắ c đặ t tên bi ế n chung cho ch ươ ng trình
Work area GS_* LS_*
Structure type GTY_* LTY_*
Field symbol <GF_*> <LF_*>
Tên bi ế n nên đặ t tên theo các tr ườ ng trong table ho ặ c theo data element c ủ a bi ế n đ ó
Ví d ụ : GW_BUKRS TYPE BUKRS dùng để đị nh ngh ĩ a bi ế n company code
Trang 8II.2.4 Quy t ắ c đặ t tên bi ế n cho subroutine
Structure (work area) LPS_*
Tên bi ế n nên đặ t tên theo các tr ườ ng trong table ho ặ c theo data element c ủ a bi ế n đ ó
Ví d ụ : LPW_BUKRS TYPE BUKRS dùng để đị nh ngh ĩ a bi ế n company code
II.2.5 Quy t ắ c đặ t tên bi ế n cho Function Module
Tên bi ế n nên đặ t tên theo các tr ườ ng trong table ho ặ c theo data element c ủ a bi ế n đ ó
Ví d ụ : I_BUKRS TYPE BUKRS dùng để đị nh ngh ĩ a bi ế n company code
II.3 Các chu ẩ n l ậ p trình chung
II.3.1 Truy c ậ p t ậ p tin
Khi làm vi ệ c v ớ i các t ậ p tin trên máy ch ủ ph ả i s ử d ụ ng đườ ng d ẫ n t ậ p tin lu ậ n lý để tránh
tr ườ ng h ợ p đườ ng d ẫ n t ậ p tin ph ụ thu ộ c vào h ệ đ i ề u hành và ph ụ thu ộ c vào t ừ ng h ệ th ố ng
II.3.2 Text element
Qu ả n lý text trong ch ươ ng trình nh ư sau
• N ế u text ph ụ thu ộ c vào ngôn ng ữ thì s ử d ụ ng text element thay cho vi ệ c hard code
Ví d ụ : Không s ử d ụ ng các lo ạ i v ă n b ả n nh ư 'Ch ươ ng trình k ế t thúc', 'Có l ỗ i x ả y ra' , v.v… mà ph ả i s ử d ụ ng TEXT-001, TEXT-002, v.v…
• Các text không phụ thuộc vào ngôn ngữ vẫn phải dùng text element để hiển thị, không được hard code
II.3.2.1 Phân loại text element
List Thiết lập tiêu đề của báo cáo và tiêu Không dùng chức năng này của SAP
Trang 9header/row
header
đề của các cột trên báo cáo Thay vào đó sử dụng từ khóa WRITE và
các sự kiện TOP-OF-PAGE để thiết lập các tiêu đề này
Selection text Hiển thị ý nghĩa của các trường trên
màn hình Selection Screen
Dùng để giải thích ý nghĩa của các đối tượng trên màn hình selection screen Text symbol Không hard-code cho các text trong
chương trình Các text symbol chỉ có hiệu lực trong chương trình và được đăng ký tuần tự từ số 001
Dùng để xuất các thông điệp, hiển thị các tiêu đề của báo cáo thay cho việc hard-code…
II.3.3 Chú thích ch ươ ng trình
Chú thích dùng để gi ả i thích ch ứ c n ă ng, cách s ử d ụ ng và theo dõi nh ữ ng thay đổ i c ủ a
ch ươ ng trình Trong ph ạ m vi d ự án, chú thích c ầ n đượ c th ự c hi ệ n nh ư sau
• S ử d ụ ng ti ế ng anh để chú thích các đ o ạ n mã c ủ a ch ươ ng trình
• Dùng d ấ u * để chú thích cho toàn b ộ 1 dòng l ệ nh
• Dùng d ấ u “ để chú thích ở gi ữ a 1 dòng l ệ nh
Chú thích đượ c đặ t bên ph ả i c ủ a bi ế n đượ c khai báo Trong tr ườ ng h ợ p không đủ ch ỗ thì chú thích đượ c đặ t ở dòng l ệ nh tr ướ c dòng khai báo
Ví d ụ :
DATA:
LW_GPART_CNT TYPE I “ Number of Business Partner
DATA:
* Account Balance Of Business Partner
LT_BUT000 TYPE STANDARD TABLE OF BUT000
Dùng tiêu đề c ủ a INCLUDE để làm chú thích cho ch ươ ng trình Chú thích đượ c đặ t bên ph ả i
c ủ a câu l ệ nh INCLUDE Trong tr ườ ng h ợ p không đủ ch ỗ chú thích đượ c đặ t ở dòng l ệ nh
tr ướ c dòng s ử d ụ ng
Ví d ụ :
INCLUDE ZINRM01_TOP " Global data
INCLUDE ZINRM01_F01 " Subroutine
INCLUDE ZINRM01_O01 " Process before output
INCLUDE ZINRM01_I01 " Process After Input
Dùng đ ê miêu t ả ch ứ c n ă ng c ủ a kh ố i x ử lý
** -Select function -*
CASE OPT;
WHEN ‘DISP'
WHEN ‘EDIT'
END CASE
** -Select function -*
Trang 10II.3.3.5 Gọi subroutine hoặc function module
Khi g ọ i m ộ t ch ươ ng trình ph ụ (subroutine) ho ặ c m ộ t ch ứ c n ă ng chung(function module), chú thích đượ c thêm vào tr ướ c dòng l ệ nh g ọ i để mô t ả n ộ i dung x ử lý c ủ a ch ứ c n ă ng đ ó
Ví d ụ : G ọ i m ộ t function module
* Open BDC session
CALL FUNCTION ‘BDC_OPEN_GROUP'
EXPORTING
Gọi một subroutine
* Open batch input session
PERFORM BDC_OPEN
Đố i v ớ i nh ữ ng câu l ệ nh đ i ề u ki ệ n, câu l ệ nh x ử lý khó hi ể u nên thêm chú thích vào để mô t ả
ch ứ c n ă ng x ử lý
Ví d ụ :
DATA GC_DISP(4) TYPE C VALUE ‘DISP’ “ Display mode
IF OPT = GC_DISP " when the option is a display mode
LW_CNT = LW_CNT + 1 " increase the counter
II.3.4 Header c ủ a ch ươ ng trình
Header c ủ a ch ươ ng trình chính ph ả i đượ c chú thích nh ư sau
*********************************************************************
**/
*Tên<Mã>: MF0102 – Báo cáo giá thành theo kho ả n m ụ
*/*******************************************************************
***/
*********************************************************************
****
*
*********************************************************************
**/
Header c ủ a ch ươ ng trình INCLUDE ph ả i đượ c chú thích nh ư sau
*& -*
* INCLUDE ZINRM01
*& -*
* <Content Explanation>
*& -*
Trang 11II.3.4.3 Header của Subroutine
Header c ủ a subroutine ph ả i đượ c chú thích nh ư sau
*& -*
*& Form <SUBROUTINE NAME> (Ch ữ hoa)
*& -*
* <N ộ i dung x ử lý c ủ a subroutine>
* -*
* <-> LPT_TEXT : <Ý ngh ĩ a c ủ a thông s ố đầ u vào/ra>
* > LPW_IN : <Ý ngh ĩ a c ủ a thông s ố đầ u vào>
* < LPW_OUT : <Ý ngh ĩ a c ủ a thông s ố đầ u ra>
* -*
FORM <SUBROUTINE NAME>
Header c ủ a function module ph ả i đượ c chú thích nh ư sau
** -*
** Function ID: XXXXXX
** Function name: XXXXXXXXXXXXXXX
** RICEFW ID: RM1.2_001 (RICEFW chính c ủ a function module)
** Created by:
** Created date:
** Content explanation: (Mô t ả các n ộ i dung x ử lý chính c ủ a FM)
**
** -*
**< Modification tracking >
** Modification number: XXXXXXXXX
** Modification day:
** Modification reason: (Mô t ả lý do thay đổ i FM sau khi đ ã release sang môi tr ườ ng test)
**
** -*
Trang 12II.3.4.5 Theo dõi sự thay đổi của source code
M ộ t ch ươ ng trình ho ặ c m ộ t Function Module sau khi đ ã đượ c chuy ể n sang môi tr ườ ng test
ho ặ c production có th ể phát sinh l ỗ i ho ặ c yêu c ầ u thay đổ i ch ươ ng trình Trong tình hu ố ng
nh ư v ậ y, c ầ n ph ả i ghi nh ậ n nh ữ ng thay đổ i đ ó trong source code để có th ể theo dõi Quy trình này đượ c th ự c hi ệ n nh ư sau
function module
Khi có s ự thay đổ i thì developer ph ả i thêm chú thích vào ch ươ ng trình chính ho ặ c function module nh ư sau
** -*
**< Modification tracking >
** Modification number: A00000001 (S ố BUG ho ặ c s ố thay đổ i yêu c ầ u)
** Modification day: 12/12/2009
** Modification reason: (Mô t ả lý do thay đổ i FM sau khi đ ã release sang môi tr ườ ng test)
**
** -*
**< Modification tracking >
** Modification number: A00000002 (S ố BUG ho ặ c s ố thay đổ i yêu c ầ u)
** Modification day: 15/12/2009
** Modification reason: (Mô t ả lý do thay đổ i FM sau khi đ ã release sang môi tr ườ ng test)
**
Trang 13
** -Thêm và thay đổi một dòng code
Khi có yêu c ầ u thêm hay thay đổ i m ộ t dòng code thì ph ả i chú thích nh ư sau
Ví d ụ :
Tr ướ c khi thay đổ i
WRITE :/01 TEXT-001
Sau khi thay đổi
* <Modification Number> <Modification Date> <Modification By> - START
* WRITE :/01 TEXT-001 DEL XXXXXXXX
WRITE :/01 TEXT-002 “ ADD XXXXXXXX
* <Modification Number> <Modification Date> <Modification By> - END
Tuyệt đối không xóa code cũ Trong trường hợp code mới phải xóa rất nhiều code cũ thì tạo phiên bản mới và xóa code cũ đi
III Hướng dẫn đặt tên cho đối tượng
III.1 CÁC QUY T Ắ C CHUNG
Quy tắc đặt tên của tài liệu này dựa vào một số tiêu chuẩn sau
III.1.1 Quy t ắ c đặ t tên c ủ a SAP
Công ty SAP đ ã đặ t ra m ộ t s ố quy t ắ c đặ t tên cho các đố i t ượ ng bên trong h ệ th ố ng SAP Trong đ ó bao g ồ m quy t ắ c đặ t tên cho các ch ươ ng trình chu ẩ n c ủ a SAP và các ch ươ ng trình
m ớ i c ủ a khách hàng Do đ ó khi đặ t tên cho các đố i t ượ ng m ớ i, chúng ta ph ả i đặ t bi ệ t chú ý
đế n quy t ắ c này Đ i ề u này là đặ c bi ệ t c ầ n thi ế t B ở i vì trong t ươ ng lai s ẽ có các yêu c ầ u v ề
nâng c ấ p h ệ th ố ng SAP ho ặ c c ậ p nh ậ t các gói h ỗ tr ợ c ủ a SAP N ế u không tuân th ủ thì các gói này s ẽ ả nh h ưở ng đế n các đố i t ượ ng mà chúng ta đ ã phát tri ể n thêm
III.1.2 Đả m b ả o vi ệ c phát tri ể n và v ậ n hành đượ c thu ậ n l ợ i
Tên nên đượ c phân chia theo đố i t ượ ng để khi nhìn vào tên có th ể bi ế t tên đ ó thu ộ c lo ạ i đố i
t ượ ng nào Ví d ụ ZDD cho data element, ZDO cho domain, v.v… Tên c ủ a đố i t ượ ng không
nh ấ t thi ế t bao hàm n ộ i dung c ủ a đố i t ượ ng đ ó
Nh ằ m tránh vi ệ c đụ ng độ ho ặ c chép đ è khi nâng c ấ p SAP, tên c ủ a các đố i t ượ ng phát tri ể n
m ớ i không nên n ằ m ngoài ph ạ vi mà SAP cho phép
III.2 QUY T Ắ C ĐẶ T TÊN
Các quy t ắ c sau đ ây đượ c dùng để đặ t tên cho các đố i t ượ ng trong quá trình phát tri ể n m ớ i các ứ ng d ụ ng SAP Các đố i t ượ ng không đượ c đề c ậ p đế n thì theo quy t ắ c đặ t tên chu ẩ n c ủ a SAP
III.2.1 Quy t ắ c đặ t tên chung
Tên c ủ a các đố i t ượ ng có đị nh d ạ ng nh ư sau
No Tên Thành Phần Kí hiệu Nội Dung
1 Tiền tố theo quy tắc của
SAP(1 ký tự) <R>
Tiền tố này có thể có hoặc không phụ thuộc vào yêu cầu của SAP Tham khảo