วันจันทร์ที่ 11 ธันวาคม พ.ศ. 2560

ABAP in sap


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 ที่ใช้พัฒนา


T-CODEคำอธิบาย
SE11ดูข้อมูล table
SE16ดูข้อมูล table
MM01สร้างรายการวัสดุเข้ามาใหม่
MM02แก้ไขและเปลี่ยนแปลง
MM03ดูรายการ
SCC3ตรวจสอบดูว่าทำงานหรือไม่
SCC4สร้าง clinent
SCC5Deleting client
SCC7import/export
SCC8import/export
SCCLcopy clinent
SU01สร้าง user
SU02authorizations
SU53ตรวจสอบสถานะ t-code ทำไม่เข้าไม่ได้
SU10ดู user ทั้งหมด
SM36define background job
SM37หยุดรันคอนจ็อบ ดูคอนจ็อบ ลบคอนจ็อบ
STMSจัดการ Transport
SM59RFC
SM51system Monitering
SM04ดู user ใช้โปรแกรมอะไร
SM13update process
SM21moniter system log
ST02ปรับแต่งข้อมูล
ST06ดู cpu
ST22ABAP Dump
SP01spool req
SM37moniter bach job
DB02Database admin
DB12Database backup logs
SE93ผูก T- code
smartformssmartforms
se10เอาไว้ รีลิส
SM12ลบ user dev lock
se73ปรับปรุง font css
SPATสร้างรูปแบบเอกสาร
se78upload รูปภาพ ลง sap
se16nดูข้อมูล table
se38เขียนโปรแกรม
SP01Spool Transaction
SPADสร้างรูปแบบเอกสาร
xd02แก้้ไข ข้อมูลลูกค้า
/nse16เพิ่มข้อมูล database
se30Run-time analysis
RZ11ปรับ runtime sap rdisp/max_wprun_time RZ11




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



ไม่มีความคิดเห็น:

แสดงความคิดเห็น