ABAP (การเขียนโปรแกรมแอพพลิเคชันทางธุรกิจขั้นสูง) เป็นภาษาการเขียนโปรแกรมรุ่นที่ 4 ซึ่งใช้สำหรับวัตถุประสงค์ในการพัฒนาและปรับแต่งซอฟต์แวร์ SAP ขณะนี้ตำแหน่งพร้อมกับ Java เป็นภาษาหลักสำหรับการเขียนโปรแกรมเซิร์ฟเวอร์แอ็พพลิเคชัน SAP ส่วนใหญ่ของโปรแกรมจะทำงานภายใต้การควบคุมของระบบรันไทม์ บทแนะนำนี้อธิบายถึงแนวคิดหลักของ SAP ABAP
1.รูปแบบโครงสร้าง
จากรูป
จะเป้นว่าโครงสร้างการทำงานจะแบ่งเป้น 3 ชั้น คือ ต้องมี sap gui ก่อน เพื่อเข้าระบบ จากนั้นก็ชัน server กับ databese ส่วนที่ผมใช้ตอนนี้ ใช้ sybase
2. การเขียนโปรแกรม abap มีอะไรบ้าง
2.1 เขียนพวก form เอกสารต่าง โดยใช้ smartforms (tcode smartforms)
2.2 เขียนพวกออกรายงาน excel ให้ user (alv)
2.3 เขียนโปรแกรมเสริม ตาม user ต้องการ โดยใช้ abap tcode se80 , table control abap ,Dialog programming
3. เริ่มต้นเขียน abap ตัวอย่าง รูปแบบ ไวยากรณ์
เข้า tcode se38
*&---------------------------------------------------------------------* *& Report ZHELLO1 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* *& เรียกใช้โปรแกรม ที่เราสร้าง REPORT ZHELLO1.
*เรียกใช้ Subroutine PERFORM SUB_DISPLAY. *& ประการศ hello world WRITE 'Hello World'. ULINE. WRITE 'Hello'. WRITE 'ABAP'. WRITE 'World'. ULINE. DATA: W_NUR(10) TYPE N. MOVE 50 TO W_NUR. WRITE W_NUR NO-ZERO.ULINE.
* ship เว้นบรรทัด WRITE 'This is the 1st line'. SKIP. WRITE 'This is the 2nd line'. * จบ ship เว้นบรรทัด
*ขีดเส้นใต้ ULINE. WRITE 'This is Underlined'. ULINE.
*ประการศตัวแปร DATA TEXT_LINE TYPE C LENGTH 40. TEXT_LINE = 'A Chapter on Data Types'. WRITE TEXT_LINE. ULINE.
*ประการศตัวแปร / คือเว้นบรรทัด DATA TEXT_STRING TYPE STRING. TEXT_STRING = 'A Program in ABAP'. WRITE / TEXT_STRING. ULINE.
*ประการศตัวแปร SY-DATUM คือตัวแปร วันที่ ในระบบ DATA D_DATE TYPE D. D_DATE = SY-DATUM. WRITE / D_DATE. ULINE.
*บวกลบ คูณ หาร DATA: A TYPE I VALUE 150, B TYPE I VALUE 50, RESULT TYPE I. RESULT = A + B. WRITE / RESULT.
*แปลงเลข 20000 เป็น 20,000 DATA: CHARACTERS(200) TYPE C, INTS TYPE P DECIMALS 2 . INTS = '2000000000'.
*WRITE INTS TO CHARACTERS CURRENCY 'THB' DECIMALS 0. *CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' * CHANGING * VALUE = CHARACTERS. *. WRITE: / 'example',INTS . ULINE. *สร้าง ช่องกรอก ข้อมูล PARAMETERS: NAME(10) TYPE C, CLASS TYPE I, SCORE TYPE P DECIMALS 2, CONNECT TYPE MARA-MATNR.
*ตัวแปร ระบบทั้งหมด WRITE:/'SY-ABCDE', SY-ABCDE, /'SY-DATUM', SY-DATUM, /'SY-DBSYS', SY-DBSYS, /'SY-HOST ', SY-HOST, /'SY-LANGU', SY-LANGU, /'SY-MANDT', SY-MANDT, /'SY-OPSYS', SY-OPSYS, /'SY-SAPRL', SY-SAPRL, /'SY-SYSID', SY-SYSID, /'SY-TCODE', SY-TCODE, /'SY-UNAME', SY-UNAME, /'SY-UZEIT', SY-UZEIT. ULINE.
*ประกาศตัวแปรคงที่ CONSTANTS PQR TYPE P DECIMALS 4 VALUE '1.2356'. WRITE: / 'The value of PQR is CONSTANTS :', PQR. ULINE.
*WHILE loop DATA: AAAA TYPE I. AAAA = 0. WHILE AAAA <> 8. WRITE: / 'This is the line:', AAAA. AAAA = AAAA + 1. ENDWHILE.
ULINE. * loop exit DO 5 TIMES. IF SY-INDEX = 3. EXIT. ENDIF. WRITE / SY-INDEX. ENDDO. ULINE. * ตัวอย่างใช้ if DATA TITLE_1(20) TYPE C. TITLE_1 = 'Tutorials'. IF TITLE_1 = 'Tutorials'. WRITE 'This is IF statement'. ENDIF. ULINE. * if elseif DATA TITLE_11(20) TYPE C. TITLE_11 = 'Tutorials'. IF TITLE_11 = 'Tutorial'. WRITE 'This is IF Statement'. ELSE. WRITE 'This is ELSE Statement'. ENDIF. ULINE. *if elseif else IF TITLE_11 = 'Tutorial'. WRITE 'This is IF Statement'. ELSEIF TITLE_11 = 'Tutorials' . WRITE 'This is ELSEif Statement'. ELSE. WRITE 'xxx'. ENDIF. ULINE.
*create string DATA MY_CHAR(5) VALUE 'Hello'. WRITE MY_CHAR. ULINE. *strstring หาความยาวของคำ DATA: TITLE_NONG(10) VALUE 'Tutorials', LENGTH_1 TYPE I. LENGTH_1 = STRLEN( TITLE_NONG ). WRITE: / 'The Length of the Title is:', LENGTH_1. ULINE.
*ต่อคำ DATA: TITLE_NONGTEST1(10) VALUE 'Tutorials', TITLE_NONGTEST2(10) VALUE 'Point', SPACED_TITLE(30) VALUE 'Tutorials Point Limited', SEP, DEST1(30), DEST2(30). CONCATENATE TITLE_NONGTEST1 TITLE_NONGTEST2 INTO DEST1. WRITE: / 'Concatenation:', DEST1. CONCATENATE TITLE_NONGTEST1 TITLE_NONGTEST2 INTO DEST2 SEPARATED BY SEP. WRITE: / 'Concatenation with Space:', DEST2. CONDENSE SPACED_TITLE. WRITE: / 'Condense with Gaps:', SPACED_TITLE. *ไม่ให้มีช่องว่าง CONDENSE SPACED_TITLE NO-GAPS. WRITE: / 'Condense with No Gaps:', SPACED_TITLE. ULINE. *Current Date and Time การกำหนด ค่า วันที่ DATA: DATE_1 TYPE D. DATE_1 = SY-DATUM. WRITE: / 'Present Date is:', DATE_1 DD/MM/YYYY.
* บวกวันที่ 6 จากวันที่ปัจจัุบัน DATE_1 = DATE_1 + 06. WRITE: / 'Date after 6 Days is:', DATE_1 DD/MM/YYYY. ULINE. *เรื่อง การใช้ timestamp DATA: STAMP_1 TYPE TIMESTAMP, STAMP_2 TYPE TIMESTAMPL. GET TIME STAMP FIELD STAMP_1. WRITE: / 'The short time stamp is:', STAMP_1 TIME ZONE SY-ZONLO. GET TIME STAMP FIELD STAMP_2. WRITE: / 'The long time stamp is:', STAMP_2 TIME ZONE SY-ZONLO. ULINE. * create Macros DEFINE MAC_TEST. WRITE: '&1'. END-OF-DEFINITION. PARAMETERS: S1 TYPE C AS CHECKBOX. PARAMETERS: S2 TYPE C AS CHECKBOX. PARAMETERS: S3 TYPE C AS CHECKBOX DEFAULT 'X'. START-OF-SELECTION. IF S1 = 'X'. MAC_TEST 44. ENDIF. IF S2 = 'X'. MAC_TEST 2. ENDIF. IF S3 = 'X'. MAC_TEST 3. ENDIF. *สร้าง เรียกใช้ function DATA RESULT22 LIKE SPELL. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(15) TEXT-001. PARAMETER NUM_1 TYPE I. SELECTION-SCREEN END OF LINE. CALL FUNCTION 'SPELL_AMOUNT' EXPORTING AMOUNT = NUM_1 IMPORTING IN_WORDS = RESULT22. IF SY-SUBRC <> 0. WRITE: 'Value returned is:', SY-SUBRC. ELSE. WRITE: 'ตัวหนังสือ ยอด', RESULT22-WORD. ENDIF.
*สร้าง internal table และเลือก คิวรี่ จากแบบ native sql และวนแสดง DATA: BEGIN OF WA, CONNID TYPE SPFLI-CONNID, CITYFROM TYPE SPFLI-CITYFROM, CITYTO TYPE SPFLI-CITYTO, AIRPTO TYPE SPFLI-AIRPTO, END OF WA. DATA C1 TYPE SPFLI-CARRID VALUE 'LH'. EXEC SQL PERFORMING LOOP_OUTPUT. SELECT connid, cityfrom,cityto,AIRPTO INTO :wa FROM SPFLI WHERE carrid = :c1 FETCH FIRST 10 ROWS ONLY ENDEXEC. FORM LOOP_OUTPUT. WRITE: / WA-CONNID, WA-CITYFROM, WA-CITYTO , WA-AIRPTO. ENDFORM. *การสร้าง obj class CLASS CLASS1 DEFINITION. PUBLIC SECTION. DATA: TEXT1(45) VALUE 'ABAP Objects.'. METHODS: DISPLAY1. ENDCLASS. CLASS CLASS1 IMPLEMENTATION. METHOD DISPLAY1. WRITE:/ 'This is the Display method.'. ENDMETHOD. ENDCLASS. START-OF-SELECTION. DATA: CLASS1 TYPE REF TO CLASS1. CREATE OBJECT: CLASS1. WRITE:/ CLASS1->TEXT1. CALL METHOD: CLASS1->DISPLAY1. * Inheritance พ่อมัน CLASS SUPER_CLASS DEFINITION. PUBLIC SECTION. METHODS: ADDITION1 IMPORTING G_A TYPE I G_B TYPE I EXPORTING G_C TYPE I. ENDCLASS. CLASS SUPER_CLASS IMPLEMENTATION. METHOD ADDITION1. G_C = G_A + G_B. ENDMETHOD. ENDCLASS. *ลูกมันอ้างอิงหา พ่อมัน CLASS SUB_CLASS DEFINITION INHERITING FROM SUPER_CLASS. PUBLIC SECTION. METHODS: ADDITION1 REDEFINITION. ENDCLASS. CLASS SUB_CLASS IMPLEMENTATION. METHOD ADDITION1. G_C = G_A + G_B + 10. ENDMETHOD. ENDCLASS. START-OF-SELECTION. PARAMETERS: P_A TYPE I, P_B TYPE I. DATA: H_ADDITION1 TYPE I. DATA: H_SUB TYPE I. DATA: REF1 TYPE REF TO SUB_CLASS. CREATE OBJECT REF1. CALL METHOD REF1->ADDITION1 EXPORTING G_A = P_A G_B = P_B IMPORTING G_C = H_ADDITION1. WRITE:/ H_ADDITION1. **สร้าง Subroutine FORM SUB_DISPLAY. WRITE: 'This is Subroutine'. WRITE: / 'Subroutine created successfully'. ULINE. ENDFORM. " Sub_Display *ARAMETERS P_NONG1 LIKE VBAK-ERDAT.
4. tcode ที่ใช้พัฒนา
5.ตัวอย่างสอน สร้าง table control se80
https://www.youtube.com/watch?v=9ZfuH24dEy0&t=162s
6.table หลัก ของ sap ครับ
เข้าดู tabe tcode - se16n
table ควรจำไว้ หลัก ทาง ฝั่ง sd
vbak ขาย
vbap
vbpa
vbfa
vbuk
vbup
konv เงื่อนไขการขาย
likp
lips
ตั้งหนี้
vbrk
vbrp
ไม่มีความคิดเห็น:
แสดงความคิดเห็น