الثلاثاء، 20 أكتوبر 2020

SAP ABAP - Reading Internal Tables قراءة الجداول الداخلية في ساب

 

SAP ABAP - Reading Internal Tables قراءة الجداول الداخلية في ساب

SAP ABAP - Reading Internal Tables قراءة الجداول الداخلية في ساب

SAP ABAP - Reading Internal Tables قراءة الجداول الداخلية في ساب 

يمكننا قراءة أسطر الجدول باستخدام الصيغة التالية من عبارة READ TABLE -

READ TABLE <internal_table> FROM <work_area_itab>.

في بناء الجملة هذا ، يمثل تعبير <work_area_itab> منطقة عمل متوافقة مع نوع خط الجدول <internal_table>. يمكننا تحديد مفتاح بحث ، ولكن ليس مفتاح جدول ، في جملة القراءة باستخدام جملة WITH KEY ، كما هو موضح في بناء الجملة التالي -

READ TABLE <internal_table> WITH KEY = <internal_tab_field>.

هنا يتم استخدام سطر الجدول الداخلي بأكمله كمفتاح بحث . تتم مقارنة محتوى سطر الجدول بالكامل مع محتوى الحقل <internal_tab_field>. إذا كانت قيم الحقل <internal_tab_field> غير متوافقة مع نوع سطر الجدول ، يتم تحويل هذه القيم وفقًا لنوع سطر الجدول. يتيح لك مفتاح البحث العثور على إدخالات في الجداول الداخلية التي لا تحتوي على نوع سطر منظم ، أي حيث يكون السطر عبارة عن حقل فردي أو نوع جدول داخلي.

يتم استخدام بناء الجملة التالي من جملة القراءة لتحديد منطقة عمل أو رمز حقل باستخدام عبارة COMPARING -

READ TABLE <internal_table> <key> INTO <work_area_itab>
   [COMPARING <F1> <F2>...<Fn>].

عند استخدام عبارة COMPARING ، تتم مقارنة حقول الجدول المحددة <F1> ، <F2> .... <Fn> لنوع السطر المنظم مع الحقول المقابلة لمنطقة العمل قبل نقلها. إذا تم تحديد جملة ALL FIELDS ، فإن نظام SAP يقارن جميع المكونات. عندما يعثر نظام SAP على إدخال على أساس مفتاح ، يتم تعيين قيمة متغير SY-SUBRC إلى 0. بالإضافة إلى ذلك ، يتم تعيين قيمة متغير SY-SUBRC على 2 أو 4 إذا كان محتوى المقارنة الحقول ليست هي نفسها أو إذا لم يتمكن نظام SAP من العثور على إدخال. ومع ذلك ، يقوم نظام SAP بنسخ الإدخال إلى منطقة العمل المستهدفة كلما عثر على إدخال ، بغض النظر عن نتيجة المقارنة.

مثال

REPORT  ZREAD_DEMO. 
*/Creating an internal table 
DATA: BEGIN OF Record1, 
ColP TYPE I, 
ColQ TYPE I, 
END OF Record1. 

DATA mytable LIKE HASHED TABLE OF Record1 WITH UNIQUE KEY ColP. 
DO 6 Times.
Record1-ColP = SY-INDEX. 
Record1-ColQ = SY-INDEX + 5. 
INSERT Record1 INTO TABLE mytable. 
ENDDO. 

Record1-ColP = 4. 
Record1-ColQ = 12. 
READ TABLE mytable FROM Record1 INTO Record1 COMPARING ColQ. 

WRITE: 'SY-SUBRC =', SY-SUBRC. 
SKIP. 
WRITE: / Record1-ColP, Record1-ColQ.

ينتج الكود أعلاه الناتج التالي -

SY-SUBRC =    2 

4         9

في المثال أعلاه ، يعد mytable جدولًا داخليًا لنوع الجدول المجزأ ، مع Record1 كمنطقة العمل و ColP كمفتاح فريد. في البداية ، يتم ملء mytable بستة أسطر ، حيث يحتوي حقل ColP على قيم متغير SY-INDEX ويحتوي الحقل ColQ على قيم (SY-INDEX + 5).

يتم ملء منطقة عمل Record1 بـ 4 و 12 كقيم لحقول ColP و ColQ على التوالي. تقرأ عبارة READ سطر الجدول بعد مقارنة قيمة حقل مفتاح ColP بالقيمة الموجودة في منطقة عمل Record1 باستخدام جملة COMPARING ، ثم نسخ محتوى سطر القراءة في منطقة العمل. يتم عرض قيمة المتغير SY-SUBRC كـ 2 لأنه عندما تكون القيمة في حقل ColP هي 4 ، فإن القيمة في ColQ ليست 12 ، ولكن 9.










التسميات: