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

SAP ABAP - Copying Internal Tables نسخ الجداول الداخلية في ساب

 SAP ABAP - Copying Internal Tables نسخ الجداول الداخلية في ساب

SAP ABAP - Copying Internal Tables نسخ الجداول الداخلية في ساب

SAP ABAP - Copying Internal Tables نسخ الجداول الداخلية في ساب 

عندما نقرأ سجلاً من جدول داخلي به سطر رأس ، يتم نقل هذا السجل من الجدول نفسه إلى سطر العنوان. ومن ثم فهو سطر العنوان الذي يعمل به برنامجنا. الأمر نفسه ينطبق أثناء إنشاء رقم قياسي جديد. إنه سطر العنوان الذي تعمل به والذي يتم إرسال السجل الجديد منه إلى نص الجدول نفسه.

لنسخ السجلات ، يمكننا استخدام عبارة SELECT لتحديد جميع السجلات من الجدول ثم استخدام عبارة MOVE التي ستنقل السجلات من الجدول الأصلي إلى الجدول الداخلي الجديد إلى الحقول التي تتطابق فيها الأسماء.

فيما يلي بناء الجملة لبيان MOVE -

MOVE <table_field> TO <internal_tab_field>.

مثال

REPORT  ZCUSLIST1. 
TABLES: ZCUSTOMERS1. 
DATA: BEGIN OF itab01 Occurs 0,
      name LIKE ZCUSTOMERS1-name,
      dob LIKE ZCUSTOMERS1-dob, 
END OF itab01. 

Select * FROM ZCUSTOMERS1. 
MOVE ZCUSTOMERS1-name TO itab01-name. 
MOVE ZCUSTOMERS1-dob TO itab01-dob. 
ENDSELECT.
 
Write: / itab01-name, itab01-dob.

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

MARGARET  		02.11.1994 

تملأ حلقة التحديد كل حقل واحدًا تلو الآخر ، باستخدام عبارة MOVE لنقل البيانات من حقل جدول إلى آخر. في المثال أعلاه ، تم استخدام عبارات MOVE لنقل محتويات جدول ZCUSTOMERS1 إلى الحقول المقابلة في الجدول الداخلي. يمكنك إنجاز هذا الإجراء بسطر واحد فقط من التعليمات البرمجية. يمكنك استخدام العبارة MOVECORRESPONDING.

فيما يلي بناء الجملة لبيان MOVE-CORRESPONDING -

MOVE-CORRESPONDING <table_name> TO <internal_tab>. 

يخبر النظام بنقل البيانات من حقول ZCUSTOMERS1 إلى الحقول المقابلة لها في itab01.

مثال

REPORT  ZCUSTOMERLIST. 
TABLES: ZCUSTOMERS1. 
DATA: Begin of itab01 occurs 0,
      customer LIKE ZCUSTOMERS1-customer,
      name LIKE ZCUSTOMERS1-name,
      title LIKE ZCUSTOMERS1-title,
      dob LIKE ZCUSTOMERS1-dob, 
END OF itab01. 

SELECT * from ZCUSTOMERS1. 
MOVE-Corresponding ZCUSTOMERS1 TO itab01. 
APPEND itab01. 
ENDSELECT. 
LOOP AT itab01. 
Write: / itab01-name, itab01-dob. 
ENDLOOP. 

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

MARK           21.05.1981 
JAMES          14.08.1977 
AURIELE        19.06.1990 
STEPHEN        22.07.1985 
MARGARET       02.11.1994 

أصبح هذا ممكنًا من خلال حقيقة أن كلاهما لهما أسماء حقول متطابقة. عند استخدام هذه العبارة ، يجب التأكد من أن كلا الحقلين لهما أنواع وأطوال بيانات متطابقة. تم القيام بذلك هنا مع بيان LIKE سابقًا.








التسميات: