ABAP Open SQL & Internal Table
Upcoming SlideShare
Loading in...5
×
 

ABAP Open SQL & Internal Table

on

  • 59,915 views

You can find more SAP ABAP documents at http://sapdocs.info/category/sap/abap/

You can find more SAP ABAP documents at http://sapdocs.info/category/sap/abap/

Statistics

Views

Total Views
59,915
Views on SlideShare
56,681
Embed Views
3,234

Actions

Likes
17
Downloads
2,280
Comments
10

18 Embeds 3,234

http://www.erpgenie.com 2441
http://jokerjh.blogspot.com 269
http://www.slideshare.net 209
http://erpgenie.com 177
http://erpgenie.com.php5-5.dfw1-2.websitetestlink.com 53
http://www.erpgenie.com.php5-5.dfw1-2.websitetestlink.com 36
http://sapabapmaterials4u.blogspot.in 14
http://translate.googleusercontent.com 11
http://jokerjh.blogspot.co.uk 6
http://jokerjh.blogspot.ca 4
https://www.blogger.com 3
http://jokerjh.blogspot.ae 2
http://jokerjh.blogspot.nl 2
http://jokerjh.blogspot.de 2
http://131.253.14.98 2
http://jokerjh.blogspot.se 1
http://cms.yasharora.webnode.com 1
http://jokerjh.blogspot.in 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • thanks for your document explanation with examples its nice....
    Are you sure you want to
    Your message goes here
    Processing…
  • thanks for your explained document with examples its nice...
    Are you sure you want to
    Your message goes here
    Processing…
  • good
    Are you sure you want to
    Your message goes here
    Processing…
  • thanks for good teach.
    Are you sure you want to
    Your message goes here
    Processing…
  • good
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

ABAP Open SQL & Internal Table ABAP Open SQL & Internal Table Presentation Transcript

  • ABAP Chapter 3  Open SQL  Internal Table
  • SAP System : 3 Tier Client/Server SAP GUI SAP GUI SAP GUI Presentation Server SAP Application Server DB Server
  • SAP SYSTEM (3 Tier Architecture) SAP GUI SAP GUI Presentation Layer (Windows based) SAP Instance Application Layer Dispatcher M (Windows Server/UNIX) Request SAP Buffer Queue (Shared Mem) D D B V S E G Oracle Database Layer Informix (Windows Server/UNIX) DB2 Database Server MS SQL Server SAP DB/MaxDB
  • SAP System : Dialog Processing SAP GUI Report zpsm1. Request Tables customers. List Select single * from Generate 1 10 customers where id = 1. Screen(List) Application Server Send Request Write: / customers-name. Store request to queue3 Dispatcher Send 2 Search for SAP Buffer List 9 free WP Request Check Program in 7 Program Queue Send request Program Buffer 5 Execute to WP 4 ABAP Table D D D … D stateme nt … 8 6 SQL Load&Gen Database Server Request Program
  • Dialog Work Process Architecture Dialog Work Process Local Memory Memory Space TaskHandler ABAP Processor List buffer DYNPRO Processor DB Interface Result Set Memory Database Server
  • Open SQL  SELECT ...  INSERT ...  UPDATE ...  DELETE ...
  • DB Interface SAP Application Server Dialog WP Local Memory TaskHandler Memory Space ABAP Processor DYNPRO List Buffer DB Interface Result Set ~ 32 KB in length Database Server Data Data Data Data Data
  • Example Tables in DB customers spfli id name city carrid connid cityfrom cityto distance 1 John New York LH 0400 LA NY 100 2 Peter Singapore LH 0402 BK NY 540 3 David London SQ 0110 SQ BK 250
  • Example Tables in DB sflight carrid connid fldate price LH 0400 20010101 150 LH 0400 20010110 145 LH 0400 20010228 130 SQ 0110 20010226 75
  • Select Overview Select <result> Which Columns? From <table> Which Table? Into <destination> Where to place? Where <condition> Which Lines?
  • Select Statement  Select multiple records from database SELECT * FROM customers. … ENDSELECT.  Select single record from database SELECT SINGLE * FROM customers WHERE id = 1. …
  • Select Multiple Records Tables spfli. Seclect * from spfli. write: / spfli-carrid, spfli-connid, spfli-cityto. endselect. if sy-subrc <> 0. write: / ‘No Data’. endif.
  • Dialog WP Dialog WP Local Memory Memory Space TaskHandler ABAP Processor List buffer DYNPRO Processor DB Interface Result Set Database
  • SELECT Statement Working Steps 1. Transform open SQL to DB SQL and return result set into result set work area SELECT * FROM spfli. SELECT * FROM spfli; … ENDSELECT. 2. Loop with data in result set and transfer each record to work area in memory space Table Structure in Memory SELECT * FROM spfli. Space … ENDSELECT.
  • Select … Into Table Structure Tables spfli. Seclect * from spfli into spfli. write: / spfli-carrid, spfli-connid, spfli-cityfrom, spfli-cityto. endselect. if sy-subrc <> 0. write: / ‘No Data’. endif.
  • Select … Into Work Area Data wa like spfli. Seclect * from spfli into wa. write: / wa-carrid, wa-connid, wa-cityfrom, wa-cityto. endselect. if sy-subrc <> 0. write: / ‘No Data’. endif.
  • Exercise I customers-name customers-city customers-id
  • SELECT with WHERE Clause
  • Loop Processing with Restriction Tables spfli. Select * from spfli where cityfrom = ‘FRANKFURT’. write: / spfli-carrid, spfli-cityto. endselect. If sy-subrc <> 0. write / ‘no data’. endif.
  • Select With Range Tables sflight. Select * From sflight Where price between 100 and 1000. Write: / sflight-carrid, sflight-connid, sflight-price. Endselect.
  • SELECT … With IN List Tables sflight. Select * From sflight Where price in ( 100, 1000 ). Write: / sflight-carrid, sflight-connid, sflight-price. Endselect.
  • Select Single Record
  • Select Single Record Tables spfli. Select single * from spfli where carrid = ‘LH’ and connid = ‘0400’. if sy-subrc = 0. write: / spfli-carrid, spfli-connid, spfli-cityfrom, spfli-cityto. else. write: / ‘Data not found’. endif.
  • Select Column List
  • Select * : Example SELECT *
  • Reading Selected Column Data: id like customers-id, name like customers-name, city like customers-city. Select id name city into (id, name, city) from customers. write: / id, name, city. endselect. if sy-subrc <> 0. write / ‘No Data found’. endif.
  • Reading Selected Column Data: begin of wa, id like customers-id, name like customers-name, city like customers-city, end of wa. Select id name city into wa from customers. write: / wa-id, wa-name , wa-city. endselect. if sy-subrc <> 0. write / ‘No Data found’. endif.
  • Select Column : Example I
  • Reading Selected Column Tables customers. Select id name city into (customers-id, customers-name, customers-city) from customers. write: / customers-id, customers-name, customers-city. endselect. if sy-subrc <> 0. write / ‘No Data found’. endif.
  • Select Column : Example II
  • Corresponding Fields of... Tables: customers. Select id name city into corresponding fields of customers from customers. Write: / customers-id, customers-name, customers-city. Endselect.
  • Select Statement : Special Topics
  • DB Count : SY-DBCNT Tables customers. Select * from customers. write: / sy-dbcnt, customers-id, customers-name. endselect. if sy-subrc <> 0. write: / ‘No Data found’. else. write: / sy-dbcnt, ‘Record found’. endif.
  • SELECT … ORDER BY ... Tables: spfli. Select * from spfli Order by cityfrom. Write: / spfli-carrid, spfli-connid, spfli-cityfrom. Endselect.
  • SELECT … With Template Tables customers. Select * From customers Where name Like ‘_r%’. Write: / customers-id,customers-name. Endselect.
  • Aggregate Functions Data: maxdat like sflight-distance, mindat like sflight-distance, counter type I. Select COUNT( * ) MIN( distance ) MAX( distance ) into (counter ,mindat, maxdat) from spfli. Write: / ‘Count :’ , counter, / ‘Min :’ , mindat, / ‘Max :’ , maxdat. Aggregate Functions : COUNT,MIN,MAX,AVG and SUM
  • SELECT … GROUP BY ... Data: carrid like sflight-carrid, sflight mindat Type P Decimals 2, maxdat Type P Decimals 2. carrid connid fldate Price Select carrid Min( price )LHMax( price ) 0400 20010101 150 Into (carrid, mindat, maxdat) LH 0400 20010110 145 From sflight Group by carrid. LH 0400 20010228 130 Write: / carrid, mindat,SQ 0110 20010226 maxdat. 75 Endselect. ยากทราบว่า ในแต่ละสายการบิน มีราคาตั๋วตำำาสุดและสูงสุดเท่าไร
  • Sub Query tables customers. ลูกค้าคนใดทีอยู่เมือง ่ เดียวกับลูกค้ารหัส ID 1 select * from customers where id <> 1 and city = ( select city from customers where id = 1 ). write: / customers-id, customers-name. endselect.
  • Exercise I ห้ามใช้ SELECT * customers-name customers-city customers-id
  • Exercise II ห้ามใช้ SELECT * usr02-bname usr02-trdat usr02-ltime
  • ABAP : Inner Join
  • Tables Join sflight spfli carrid connid fldate price carrid connid cityfrom cityto distance LH 0400 20010101 150 LH 0400 NY BK 100 LH 0400 20010110 145 LH 0402 BK NY 540 LH 0400 20010228 130 SQ 0110 SQ BK 250 SQ 0110 20010226 75
  • Tables Join Question: Select carrid, connid and cityto from spfli and fldate,price from sflight where carrid = ‘LH’ spfli-carrid spfli-connid sflight-fldate spfli-cityto sflight-price เงืำอนไข : ให้แสดงข้อมูลเฉพาะสายการบิน ‘LH’ เท่านัน ้
  • Standard SQL Select spfli.carrid, spfli.connid, sflight.fldate, sflight.price From spfli, sflight Where spfli.carrid = sflight.carrid and spfli.connid = sflight.connid and spfli.carrid = ‘LH’;
  • Tables Join Methods  Nested select statement  Internal table  View  Inner join of Select statement
  • Nested Select Statement Tables: spfli,sflight. Select * from spfli where carrid = ‘LH’. Select * from sflight where carrid = spfli-carrid and connid = spfli-connid. Write: / spfli-carrid, spfli-connid, sflight-fldate, sflight-price. Endselect. Endselect.
  • Open SQL – Inner Join Tables: spfli,sflight. Select spfli~carrid spfli~connid sflight~fldate spfli~cityto sflight~price into (spfli-carrid, spfli-connid, sflight-fldate, spfli-cityto, sflight-price) from spfli inner join sflight on spfli~carrid = sflight~carrid and spfli~connid = sflight~connid where spfli~carrid = ‘LH’. Write: / spfli-carrid, spfli-connid, sflight-fldate, spfli-cityto, sflight-price. Endselect.
  • Open SQL – Inner Join Tables: A,B. A-a B-b B-c Select A~a B~b B~c into (A-a,B-b,B-c) from A inner join B on A~b = B~b. Table : B Write: / A-a,B-b,B-c. b c Endselect. Table : A b1 c1 a b b2 c2 a1 b1 b3 c3 a2 b2
  • Open SQL – Inner Join Table : A Table : B Database a b b c Server a1 b1 b1 c1 a2 b2 b2 c2 b3 c3 Application Server Single Result Table(Result set) 1 2 Select … A~a B~b B~c inner join.. a1 b1 c1 Endselect. a2 b2 c2
  • Open SQL – Alias Table Name Tables: spfli,sflight. Select a~carrid a~connid b~fldate a~cityto b~price into (spfli-carrid, spfli-connid, sflight-fldate, spfli-cityto, sflight-price) from spfli as a inner join sflight as b on a~carrid = b~carrid and a~connid = b~connid where a~carrid = ‘LH’. Write: / spfli-carrid, spfli-connid, sflight-fldate, spfli-cityto, sflight-price Endselect.
  • Inner Join/Outer Join Example ZCUSTOMERS ZSALEREPS id name city tel sale_id name 1 John New York 111111 01 Somchai 2 Peter London 222222 02 Pipop 3 David Singapore 432555 4 Micheal Bangkok 234111 ZSALES cust_id prod_id sale_date qty sale_id ZPRODUCTS 1 A1 20020318 10 01 p_id prod_name on_hand 1 A2 20020318 50 01 A1 Pen 100 3 X1 20020321 90 02 A2 Pencil 125 B1 Ruler 80 X1 Tape 120 Y1 CD 99
  • Open SQL – Inner Join REPORT ZINNERJOIN01 . TABLES: ZCUSTOMERS,ZSALES. SELECT A~NAME B~PROD_ID INTO (ZCUSTOMERS-NAME,ZSALES-PROD_ID) FROM ZSALES AS B INNER JOIN ZCUSTOMERS AS A ON B~CUST_ID = A~ID. WRITE: / ZCUSTOMERS-NAME,ZSALES-PROD_ID. ENDSELECT.
  • Open SQL – Inner Join > 2 Tables Table : C Tables: A,B,C. A-a B-c C-y Select A~a B~c C~y x y into (A-a,B-c,C-y) … ... from A inner join B on A~b = B~b Table : B inner join C b c on C~x = B~c. Write: / A-a,B-c,C-y. … ... Endselect. … ... Table : A … … a b … …
  • Open SQL – Inner Join > 2 Tables REPORT ZINNERJOIN02 . TABLES: ZCUSTOMERS,ZPRODUCTS,ZSALES. SELECT A~NAME C~PROD_NAME B~QTY INTO (ZCUSTOMERS-NAME, ZPRODUCTS-PROD_NAME, ZSALES-QT FROM ZSALES AS B INNER JOIN ZCUSTOMERS AS A ON B~CUST_ID = A~ID INNER JOIN ZPRODUCTS AS C ON C~P_ID = B~PROD_ID. WRITE: / ZCUSTOMERS-NAME,ZPRODUCTS-PROD_NAME,ZSALES- QTY. ENDSELECT.
  • Exercise  List customers who buy product from company as following fields:  zcustomers-id  zcustomers-name  zsales-sale_date  zproducts-prod_name  zsales-qty  zsalereps-name
  • Exercise : User Master USR02-BNAME USR02-TRDAT ADCP-TEL_NUMBER Tables Relationship USR02 BNAME USR21 PERSNUMBER ADDRNUMBER ADCP
  • ABAP : Outer Join
  • Open SQL – Outer Join REPORT ZOUTERJOIN . TABLES: ZCUSTOMERS,ZSALES. SELECT A~NAME B~PROD_ID INTO (ZCUSTOMERS-NAME,ZSALES-PROD_ID) FROM ZCUSTOMERS AS A LEFT OUTER JOIN ZSALES AS B ON A~ID = B~CUST_ID. WRITE: / ZCUSTOMERS-NAME,ZSALES-PROD_ID. ENDSELECT. Single Result Table A~NAME B~PROD_ID John A1 John A2 Peter David X1 Micheal
  • Exercise  List customers name who do not buy any product from company
  • Sub Query REPORT ZSUBQUERY . tables: zcustomers. ลูกค้าชื่ออะไรที่ไม่ได้ซื้อ สินค้าจากเรา มีใครบ้าง select * from zcustomers as a where not exists ( select * from zsales as b where b~cust_id = a~id ). write: / zcustomers-name. endselect.
  • Internal Table
  • Data Objects in ABAP Memory Space Variable Structure Table Structure Internal Table Constants <Field-symbols>
  • INTERNAL TABLE Flight (Structure) Carrid Connid Date Price Internal Table Flight (Internal Table) Header Line Carrid Connid Date Price
  • Structure Data: Begin of flight, carrid like sflight-carrid, connid like sflight-connid, date like sflight-fldate, price like sflight-price. Data: End of flight. flight-carrid = ‘LH’. Write: / flight-carrid.
  • INTERNAL TABLE Data: begin of tab occurs 10, carrid like sflight-carrid, connid like sflight-connid, fldate like sflight-fldate, price like sflight-price. Data end of tab.
  • USING ABAP DICTIONARY STRUCTURE Data: begin of tab occurs 0. Include structure sflight. Data end of tab.
  • INTERNAL TABLE USING LIKE Data tab LIKE sflight OCCURS 0 WITH HEADER LINE.
  • FILLING INTERNAL TABLE (APPEND) Tables sflight. Data flight like sflight occurs 0 with header line. Select * from sflight. Move sflight to flight. Append flight. Endselect.
  • Standard Key of Internal Table tab Data: begin of tab occurs 0, f1 f2 f3 f4 f1 type C, f2 type I, f3 type N, f4 type P, end of tab.
  • Reading Data From Internal Table Data tab like sflight occurs 0 with header line. Select * from sflight into table tab. If sy-subrc = 0. Loop at tab. Write: / tab-carrid, tab-price. Endloop. Else. Write: / ‘No Data’. Endif.
  • Access Database Without Internal Table
  • Access Database Using Internal Table
  • Reading Data From Internal Table Data: begin of tab occurs 0, id like customers-id, name like customers-name, end of tab. Select id name from customers into table tab. If sy-subrc = 0. Loop at tab. Write: / tab-id, tab-name. Endloop. else. Write: / ‘No Data’. Endif.
  • Exercise I : Change Using Internal Table
  • SORTING INTERNAL TABLE (SORT) Sort flight. Sort flight by price fldate. Sort flight by price ascending fldate descending.
  • SORTING INTERNAL TABLE Data tab like spfli occurs 0 with header line. Select * from spfli into table tab. Sort tab by cityfrom. … Loop at tab. write: / tab-carrid, tab-connid,tab-cityfrom. Endloop.
  • PROCESSING INTERNAL TABLE ... Loop at flight. Write: / flight-carrid, flight-connid. Endloop. Loop at flight where carrid = ‘LH’. Write: / flight-carrid, flight-connid. Endloop. Loop at flight from 1 to 10. Write: / sy-tabix ,flight-carrid, flight-connid. Endloop.
  • Internal Table Template Condition ... loop at tab where name cp ‘+r*’. ...
  • Reading Single Record ... Sort flight by carrid connid fldate. Read table flight with key carrid = ‘LH’ connid = ‘0400’ fldate = ‘19990201’ Binary Search. if sy-subrc = 0. write : / flight-carrid,flight-connid, flight-fldate, flight-price. endif.
  • Reading Single Record using Index ... Read table flight index 3. If sy-subrc = 0. write: / flight-carrid, flight-connid. Endif.
  • CHANGING INTERNAL TABLE ... Delete flight index 5. Delete flight where carrid = ‘LH’. flight-carrid = ‘XX’. flight-price = 100. … Insert flight index 1.
  • DELETING INTERNAL TABLE DATA flight LIKE sflight occurs 0 with header line. Clear flight. Refresh flight. Free flight.
  • Total Record of Internal Table Data: line_count type i. Data tab like sflight occurs 0 with header line. Select * from sflight into table tab. Describe table tab lines line_count. Write: / line_count.
  • Exercise I
  • Internal Table Processing Data tab like spfli occurs 0 with Header line. … Select * from spfli appending table tab where carrid = ‘LH’.
  • SELECT … INNER JOIN REPORT ZINNERJOIN01 . TABLES: ZCUSTOMERS,ZSALES. SELECT A~NAME B~PROD_ID INTO (ZCUSTOMERS-NAME,ZSALES-PROD_ID) FROM ZSALES AS B INNER JOIN ZCUSTOMERS AS A ON B~CUST_ID = A~ID. WRITE: / ZCUSTOMERS-NAME,ZSALES-PROD_ID. ENDSELECT.
  • Inner Join into Internal Table REPORT ZJOIN01 . DATA: begin of tab occurs 0, name like zcustomers-name, prod_id like zsales-prod_id, end of tab. SELECT A~NAME B~PROD_ID INTO TABLE tab FROM ZSALES AS B INNER JOIN ZCUSTOMERS AS A ON B~CUST_ID = A~ID. … LOOP AT tab. WRITE: / TAB-NAME,TAB-PROD_ID. ENDLOOP.
  • Internal Table Without Header Line DATA tab LIKE customers OCCURS 0. DATA wa LIKE customers. … LOOP AT tab INTO wa. WRITE: / wa-id, wa-name. ENDLOOP.
  • Internal Table Declaration DATA tab TYPE TABLE OF customers. DATA wa LIKE LINE OF customers. …
  • ABAP Practice
  • Database Table Processing  INSERT  UPDATE Database  MODIFY  DELETE
  • Insert (Table) Tables customers. customers-id = ‘999’. customers-name = ‘Test’. Insert customers. if sy-subrc <> 0. write: / ‘Data Already Exists’. endif.
  • Update Statement Tables customers. Select single * from customers where id = 1. If sy-subrc = 0. customers-name = ‘John’. update customers. Endif. Update customers set name = ‘John’ where id = 1.
  • Update Statement Data wa like customers. wa-id = ‘1’. wa-name = ‘Test No 1’. wa-city = ‘Bangkok’. update customers from wa. If sy-subrc <> 0. write: / ‘Data not found’. Endif.
  • Modify Statement Tables customers. customers-id = ‘1’. customers-name = ‘Test No 1’. Modify customers.
  • Deleting Database Table Entries Tables customers. customers-id = ‘1’. Delete customers. Delete customers From Table delcustomers. Delete From customers Where city =
  • Exercise II
  • Exercise II 1. ห้ามใช้ SELECT * 2. ใช้ Internal Table usr02-bname usr02-trdat usr02-ltime
  • Exercise III
  • Tables Relationship for User Master USR02-BNAME USR02-TRDAT ADCP-TEL_NUMBER Tables Relationship USR02 BNAME USR21 PERSNUMBER ADDRNUMBER ADCP
  • Exercise III : User Master usr02-trdat usr02-bname adcp-tel_number ใช้ Internal Table