ในบางครั้งเราจำเป็นที่ต้องการทราบจำนวนแถวทั้งหมดใน Internal tables ว่ามีจำนวนกี่แถว ซึ่งหลักการมันคล้ายกับ SELECT COUNT(*)
แต่เราจะมาใช้คำสั่ง Count ใน internal table มันก็ใช้ไม่ได้ เพราะมันผิด Syntax ดังนั้นเราจะทำไงดีล่ะ ปิ้ง! คิดออกแล้ว
วิธีที่ 1 เอาแบบชาวบ้าน วนลูปหาค่ามัน อิอิ
DATA: w_tabix TYPE i. LOOP AT t_itab. w_tabix = sy-tabix. ENDLOOP.
วิธีที่ 2 ใช้ built-in function LINES() อันนี้ สั้นๆ
DATA: w_lines TYPE i. w_lines = LINES( t_itab ).
วิธีที่ 3 ใช้คำสั่ง DESCRIBE TABLE LINES นี้ยาวมานิด
DATA: w_lines TYPE i. DESCRIBE TABLE t_itab LINES w_lines.
อ้าวแล้วทั้ง 3 วิธี ถ้าพูดถึง Performance ล่ะ วิธีไหนจะดีที่สุด
วิธีที่ 1 ช้าสุดครับ
วิธีที่ 2 เร็วสุด
และวิธีที่ 3 ได้อันดับ 2 ทำไหมล่ะ
ก็…ประมาณว่า วิธีที่ 1 นั้น มันต้องวนลูปให้หมดก่อน ถ้ามีแถวเยอะก็วนลูปเยอะ
วิธีที่ 2 มันใช้ ฟังก์ชั่น ประมาณว่า กระโดดไปเอาค่าแถวสุดท้ายมาเลย
วิธีที่ 3 มันเป็นการเอาตัวเลขแถว ของแถวสุดท้ายของตารางเทเบิล






