Cấu trúc Executable Program trong SAP

Các chủ đề liên quan đến lập trình ABAP
Post Reply
User avatar
admin
Site Admin
Posts: 15
Joined: Mon Mar 07, 2022 4:43 pm
Location: HCM

Cấu trúc Executable Program trong SAP

Post by admin »

Ở chủ đề Hello ABAP Program mình có hướng dẫn cho các bạn về một chương trình đơn giản trong ABAP và chương trình trong ví dụ là một chương trình loại Executable Program(ExP), tuy nhiên ví dụ chỉ dừng lại ở mức độ tổng quan thế nào về một chương trình trong ABAP. Hôm nay mình sẽ đi chuyên sâu hơn về loại chương trình này để các bạn có thể hiểu hơn về cấu trúc của nó.
Như các bạn có thể nhìn thấy, chương trình được bắt đầu bởi câu lệnh
REPORT ZHELLO_PROG
Và đây chính là câu lệnh để chỉ định cho trình biên dịch biết được đây là kiểu chương trình ExP và code của chương trình sẽ bắt đầu kể từ dòng lệnh này.
SELECTION SCREEN
Mọi chương trình loại ExP được đều bắt đầu bởi một màn hình gọi là selection screen, đây là màn hình mà người dùng sẽ nhập dữ liệu đầu vào nhằm mục đích cung cấp dữ liệu cho các tiến trình tiếp theo sau của chương trình. Màn hình này sẽ được tạo tự động và nó sẽ tự thêm các điều khiển cho phép nhập dữ liệu đầu vào từ người dùng thông qua các khai báo trong chương trình với từ khóa: PARAMETERS hoặc SELECT-OPTIONS.

Code: Select all

PARAMETERS: p_nam(150) TYPE c,
            p_brtd     TYPE d,
            p_yro(2)   TYPE p DECIMALS 0.
SELECT-OPTIONS: s_p FOR gv_test.
PARAMETERS: định nghĩa điều khiển cho phép nhập giá trị đơn
SELECT-OPTIONS: định nghĩa điều khiển cho phép nhập nhiều giá trị hoặc các lựa chọn có điều kiện.
Trong một chương trình ExP của SAP, code được tổ chức từ trên xuống các đoạn code dành cho việc khai báo dữ liệu và định nghĩa các điều khiển nhập tham số đầu vào sẽ được khai báo liền sau câu lênh bắt đầu một chương trình. Sau các đoạn code này sẽ là các block lệnh cho các event được định nghĩa trước theo tiến trình của chương trình. Các tiến trình trong program loại này sẽ được định nghĩa bởi các từ khóa sau đây:
  • INITIALIZATION: block lệnh này sẽ được dùng để thiết lập các giá trị ban đầu cho các điều khiển ở màn hình selection screen
  • At selection-screen output: block lệnh này sẽ được gọi trước khi màn hình selection screen được hiển thị, nó sẽ được gọi liên tục mỗi khi màn hình selection screen cần phải được validate. Khác với sự kiện initialization là chỉ được gọi 1 lần duy nhất khi chương trình được load hay khởi chạy.
  • AT SELECTION-SCREEN ON FIELD: block lệnh này sẽ được gọi khi người dùng bấm F4 hoặc bấm vào nút search help trong điều khiển nhập liệu trong chương trinh. Search help(f4) là một chức năng khá hữu dụng trong chương trình SAP, nó giúp người dùng có thể tìm kiếm dữ liệu cần thiết một cách nhanh chóng thông qua dữ liệu được cung cấp trong cửa sổ popup.
  • AT USER-COMMAND: block lệnh này được gọi khi người dùng bấm vào các button được định nghĩa thêm ngoài các button mặc định trên thanh công cụ ở màn hình secletion screen. Các chức năng mặc định của chương trình sẽ được hệ thống tự xử lý.
  • AT PF-STATUS: block lệnh này được gọi khi chương trình khởi chạy hoặc màn hình selection screen validate, block lệnh này được sử dụng trong mục đích thiết lập thanh công cụ được định nghĩa riêng thay vì sử dụng thanh công cụ mặc định được sap cung cấp.
  • START-OF-SELECTION: block lệnh thực thi chính của chương trình sau khi các dữ liệu đầu vào đã được nhập và người dùng bấm F8 hoặc click vào nút lệnh execute.
Các sự kiện kể trên là một số các sự kiện thường dùng đối với một chương trình ExP SAP. Ngoài ra còn một số các sự kiện khác nhưng rất ít khi và gần như không dùng tới nên mình không đề cập ở đây. Các bạn nếu muốn biết có thể tìm hiểu thêm thông qua các trang web khác có thể tìm thấy một dễ dàng bằng google :).
Dưới đây là đoạn chương trình mẫu mô tả về các khối lệnh và các sự kiện kể trên giúp bạn có thể hình dùng tốt hơn về một chương trình ExP.

Code: Select all

DATA: gv_test TYPE c.
PARAMETERS: p_nam(150) TYPE c,
            p_brtd     TYPE d,
            p_yro(2)   TYPE p DECIMALS 0,
            p_flght    TYPE sflight-carrid.
SELECT-OPTIONS: s_p FOR gv_test.

INITIALIZATION.
  p_nam = 'ABAPER'.

AT SELECTION-SCREEN OUTPUT.
  IF p_nam = 'ABAPER'.
    p_brtd = '19910101'.
  ENDIF.

START-OF-SELECTION.
  WRITE 'Ten:' && | | && p_nam.
  DATA: lv_dat(10) TYPE c.
  WRITE p_brtd TO lv_dat DD/MM/YYYY.
  WRITE: / 'Ngay sinh:' && | | && lv_dat.
  WRITE: / 'Tuoi:' && | | && p_yro.
Kết xuất màn hình selection screen
selobjs.png
selobjs.png (29.32 KiB) Viewed 1082 times
Kết xuất màn hình khi bấm F8 hoặc nút lệnh execute
outlist.png
outlist.png (3.58 KiB) Viewed 1082 times
Post Reply