ABAP Code: แก้ปัญหาการแสดงผลค่า SPACE หน้าข้อความ ในรายงาน ALV Grid

ปัญหานี้ ดูเหมือนมันไม่สำคัญ มันก็แค่ การแสดงข้อความใน ALV Grid มันจะไม่โชว์ Space หรือช่องว่าง มันก็ไม่น่ามีปัญหาอะไร ใช่ครับ เราไม่มีปัญหา แต่ User ของคุณ ไม่คิดเช่นนั้น ถ้าเขาอยากได้ คุณก็ต้องทำให้ได้ อย่างน้อย คุณต้องมีเหตุผล หรือแสดงความพยายาม ว่าคุณได้ทำแล้ว

ถ้าคุณเจอปัญหานี้ แล้วคุณมีความพยายามที่จะแก้ปัญหา คุณจะค้นหามัน แล้วถ้าคุณได้อ่าน บทความนี้ แสดงว่าความพยายามของคุณไม่สูญหาย แล้วมันเกี่ยวอะไร กับการแก้ปัญหานี้ ไม่เกี่ยวเลยครับ ฮ่าๆ

โอเคครับ ก่อนเราจะแก้ปัญหานี้ เรามาทำความรู้จักกับปัญหานี้ก่อน เพื่อเอาไปโม้ กับ User

ปัญหาการแสดงผลค่า SPACE หน้าข้อความ ในรายงาน ALV Grid นั้น เป็นปัญหาที่เกิดจาก ALV Grid ของระบบ SAP คือ ระบบมัน ฉลาดเกินไป ระบบมันจะทำการตัดค่า SPACE ที่อยู่ข้างหน้า Text เสมอ ในตอนแสดงผลออกมา มันเลย ส่งผลให้ Text ของเรา ไม่มีค่า SPACE ดังรูป ถึงแม้ว่า ค่าที่แท้จริงของมันจะมี SPACE ก็ตาม

เวลาเราสั่งแสดง มัน ผ่านโปรแกรม มันจะได้รูปตามข้างล่าง แต่ เอ๊ะ ทำไมมันไม่เหมือนกับตอนที่เราดู ข้อมูลผ่าน SE11

ซึ่งเวลาเรา Debug ดู ค่าของมันก็มี Space ตามข้อมูลที่เราเห็นใน SE11 เลย

แต่ทำไมมันไม่ยอมแสดง โอ๊ย! อย่าพึ่งบ้าตายครับ ผมมีทางแก้ คุณคงคิดเหมือนผม ถ้ามันไม่มี Space เราก็ใส่ Space ให้มันซิ ไม่เห็นยาก

  CONSTANTS: gc_space TYPE c LENGTH 1 VALUE ' '.

  CONCATENATE gc_space lv_row_des
         INTO lv_row_des SEPARATED BY space.

ใส่แบบนี้ไปเลย ดูเหมือนจะหล่อ แค่เกือบหล่อครับ พอรันแล้วมันก็ยังได้ ผลเหมือนเดิม โอ้ย! อยากบ้าตาย ครั้งที่สอง

ที่จริงเรามาถูกทางแล้วครับ แค่เราลืมเทคนิคลับ เทคนิคนี้ครับ คุณสังเกตุ ค่า ใน gc_space ไหมครับ ค่านั้นเป็นค่าว่างจากการที่เรากด Space บนคีย์บอร์ด ใช่ไหมครับ ซึ่ง เราจะใช้ค่านั้นไม่ได้ เราจะต้องใช้ค่า Space with ASCII โดยการกด (ALT+0160)

เราลองมารันกันดูอีกทีครับ สวยงามมากใช่ไหมครับ ไชโยมี Space หน้า Text แล้ว

ปล. บางท่านอาจจะทำไม่ได้ เพราะ ไม่สามารถ พิมพ์ Space with ASCII ได้ ไม่ต้องตกใจครับ ผมมีวิธีทำให้ท่านพิมพ์ได้ครับ ถ้าชอบ กดไลค์ ถ้าใช่กดแชร์ ฮ่าๆ

วิธีที่จะได้ค่านี้มา ให้เปิดโปรแกรม notepad เลือก mode การพิมพ์เป็น Num lock หลังจากนั้น กด alt ค้าง พิมพ์ +0160 แล้วปล่อย ในโปรแกรม notepad จะเกิด Space มา ให้ copy มาใส่ใน code เป็นอันจบเลยครับ

ส่วนใครใช้ Notebook มักจะไม่มีปุ่ม Num lock บนคีย์บอร์ดของเรา ให้เราใช้ Software คีย์บอร์ดของ Window แทนครับ ให้ทำการกด รูปไอคอน window + Ctrl + o

ให้เลือก option เลือก Turn on numeric key pad