ABAP Code:วิธีหาจำนวนแถวของ INTERNAL TABLES (How to get rows count of internal table)

ABAP วิธีหาจำนวนแถวของ INTERNAL TABLES (How to get rows count of internal table)

ABAP วิธีหาจำนวนแถวของ INTERNAL TABLES (How to get rows count of internal table)

ในบางครั้งเราจำเป็นที่ต้องการทราบจำนวนแถวทั้งหมดใน 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 มันเป็นการเอาตัวเลขแถว ของแถวสุดท้ายของตารางเทเบิล