الگوی همپوشانی صعودی و نزولی و فیلتر آن

ساخت وبلاگ

SAP Netweaver As ABAP Release 752 ، © Copyright 2017 SAP AG. کلیه حقوق محفوظ است.

این عبارت یک جدول داخلی ITAB را با توجه به اندازه اجزای آن مرتب می کند. در اینجا ، اندازه های پیش فرض با استفاده از قوانین مقایسه عمومی مقایسه می شوند ، یعنی:

 

  • اجزای عددی و بایت مانند بر اساس مقادیر آنها طبقه بندی می شوند.

     

اگر هیچ کلید مرتب سازی صریح با استفاده از افزودنی وارد نشده باشد ، جدول داخلی ITAB توسط کلید جدول اصلی طبقه بندی می شود. اولویت مرتب سازی بر اساس نظمی است که در آن زمینه های کلیدی در تعریف جدول مشخص شده اند. در کلیدهای استاندارد ، مرتب سازی بر اساس ترتیب قسمتهای کلید در نوع ردیف جدول در اولویت قرار می گیرد. اگر کلید اصلی جدول یک جدول استاندارد خالی باشد ، هیچ نوع دیگری صورت نمی گیرد. اگر این به صورت آماری شناخته شده باشد ، بررسی نحو یک هشدار ایجاد می کند.

مرتب سازی به طور پیش فرض ناپایدار است ، به این معنی که ترتیب نسبی ردیف هایی که دارای کلیدهای مختلف نیستند ، هنگام مرتب سازی آنها حفظ نمی شود. سفارش بسته به سکو یا هنگام مرتب سازی چندین بار می تواند متفاوت باشد. علاوه بر این پایدار می تواند برای مرتب سازی پایدار استفاده شود.

 

  • در جداول استاندارد ، شاخص جدول اصلی مطابق با ترتیب مرتب سازی اعمال می شود

     

در هر دو دسته جدول ، مرتب سازی ترتیب را مشخص می کند که یک حلقه بعدی بدون استفاده از کلید اضافه می شود.

جداول مرتب شده را نمی توان با استفاده از مرتب سازی طبقه بندی کرد و استفاده از مرتب سازی بر روی جداول مرتب شده توسط نحو ممنوع است. اگر سیستم فقط تشخیص دهد که یک جدول مرتب شده در زمان اجرا طبقه بندی می شود ، اگر این عمل بتواند مرتب سازی موجود را تغییر دهد ، یک استثناء غیر قابل استفاده مطرح می شود. مورد دوم در موارد زیر رخ می دهد:

 

  • در صورت استفاده از افزودنی برای مشخص کردن یک کلید مرتب سازی متفاوت به عنوان قسمت اولیه کلید جدول.

     

در غیر این صورت ، مرتب سازی بیانیه برای جداول مرتب شده نادیده گرفته می شود.

 

  • بهتر است در صورت امکان یک کلید مرتب سازی صریح را پشت سر بگذارید. یک نوع ضمنی در پشت کلید اصلی جدول (که خود می تواند در جداول استاندارد به طور ضمنی به عنوان یک کلید استاندارد تعریف شود) درک و احتمالاً غیرقابل پیش بینی برنامه را دشوار می کند.

     

  • اگر نوع ردیف ساختار یافته باشد ، جدول توسط تمام مؤلفه های شبیه به شخصیت و بایت طبقه بندی می شود.
  • کلید استاندارد یک جدول استاندارد می تواند خالی باشد.

ساده ترین شکل مرتب سازی برای جداول داخلی. حامل های جدول هش توسط کلید اصلی آن طبقه بندی می شوند (به عبارت دیگر ، طبقه بندی شده بر اساس ستون Carrid).

جدول هشدار داده های حامل داده از نوع SCARR با Carrid Key منحصر به فرد.

* را از SCARR به TableCarriers انتخاب کنید.

  • مرتب سازی جداول داخلی

پایدار برای انجام انواع پایدار استفاده می شود ، به این معنی که ترتیب نسبی ردیف ها (نظمی که در کلید مرتب سازی تغییر نمی کند) در نوع بدون تغییر باقی می ماند. اگر افزودنی پایدار مشخص نشده باشد ، سفارش پایدار نیست:

 

  • سفارش می تواند به سکو بستگی داشته باشد.

     

مرتب سازی بر روی میزهای داخلی توسط ستون ها از CityTo ، به موجب آن ترتیب در این مرتب سازی با توجه به Carrid و Coid یکسان است.

Carrid ، Coid ، CityFrom ، Cityto را از SPFLI سفارش توسط Carrid ، به جدول Data (پرواز) انتخاب کنید.

پروازها را با ثبات توسط CityTOTO مرتب کنید.

بشرصعودی |نزولی

علاوه بر صعود یا نزولی می تواند برای مشخص کردن جهت مرتب سازی صریح به عنوان صعودی یا نزولی استفاده شود. اگر هیچ یک از اضافات مشخص نشده باشد ، جدول به ترتیب صعودی طبقه بندی می شود. این جهت مرتب سازی را می توان پس از افزودن توسط مؤلفه های مشخص شده در اینجا بازنویسی کرد.

جدول داخلی ITAB توسط کلید اصلی آن (به عبارت دیگر ، توسط ردیف های آن) طبقه بندی می شود. در مرحله بعد ، حلقه در گروه می تواند برای گروه بندی و تعیین تعداد ردیف ها در هر گروه استفاده شود.

جدول ITAB نوع جدول من با جدول کلید غیر منحصر به فرد.

DATA(d) = cl_abap_random_int=>ایجاد (بذر = + sy-uzeit min = 1 حداکثر = 10).

itab = VALUE #( FOR i = 1 UNTIL i> 100 ( d>get_next ())).

itab نزولی را مرتب کنید.

LOOP AT itab ASSIGNING FIELD-SYMBOL() GROUP BY ( key = size = GROUP SIZE ) ASSIGNING FIELD-SYMBOL(). cl_demo_output=>نوشتن (|| ). ENDLOOP. cl_demo_output=>نمایش دادن( ).

علاوه بر این به عنوان متن مشخص می کند که اجزای متنی مطابق با محل محیط متن فعلی طبقه بندی می شوند. اگر همانطور که متن مشخص نشده است ، اجزای متن مانند مطابق رمزگذاری در صفحه کد محیط متن فعلی طبقه بندی می شوند. این می تواند پس از افزودن توسط مؤلفه های مشخص شده به صورت جداگانه در اینجا رونویسی شود. محیط متن هنگام باز شدن یک جلسه داخلی یا با استفاده از محلی Set Set Locale تنظیم می شود.

 

  • نتیجه مرتب سازی بدون افزودن به عنوان متن به سیستم عامل سرور برنامه بستگی دارد. اگرچه توالی حروف فردی که متعلق به زبان فعال شده است در سیستم عامل های مختلف یکسان است ، اما از نظر شخصیت هایی که متعلق به الفبای زبان فعال نیستند ، تفاوت هایی وجود دارد. حتی اگر فقط از حروف الفبای زبان فعال استفاده شود ، هنگام مرتب کردن کلمات کامل ، تفاوتهای جزئی رخ می دهد. علاوه بر این ، ترتیب حروف بزرگ و کوچک مخصوص سیستم عامل است.

     

مرتب سازی یک جدول هکت شده text_tab با سفارش در صفحه کد و مطابق با محل محیط متن فعلی. اگر یک محیط متنی اروپای غربی پیکربندی شده باشد ، انواع سفارشات Miller ، Moller ، Muller ، Möller و Miller ، Moller ، Möller ، Muller را به ترتیب تولید می کنند (همچنین نمونه اجرایی را برای Set Locale مشاهده کنید).

تعریف نسخه ی نمایشی کلاس. بخش عمومیروشهای کلاس اصلی. بخش خصوصیجدول Data-Data Text_Tab نوع هشدهی از رشته رشته با جدول کلید منحصر به فرد. endclass

CLASS demo IMPLEMENTATION. METHOD main. text_tab = VALUE #( ( `Muller` ) ( `Möller` ) ( `Moller` ) ( `Miller` ) ). SORT text_tab. cl_demo_output=>write_data( text_tab ). SORT text_tab AS TEXT. cl_demo_output=>display_data (text_tab). EndMethodendclass

بشرتوسط compi [صعود |نزولی] [به عنوان متن]

علاوه بر این توسط Compi جدول را با کلید اصلی جدول مرتب نمی کند ، بلکه توسط مؤلفه های COMP1 COMP2. به جای آن مشخص شده است. مؤلفه ها همانطور که در زیر مؤلفه های مشخص شده شرح داده شده است مشخص شده است. اگر تمام مؤلفه ها با استفاده از متغیرهای نام مشخص شوند و این متغیرها فقط دارای شکاف هستند ، هیچ نوع دیگری صورت نمی گیرد. اولویت مرتب سازی به ترتیب بستگی به مؤلفه های Comp1 comp2 دارد. از چپ به راست مشخص شده است. اجزای مشخص شده نیز می توانند تکثیر شوند یا همپوشانی دارند. اجزای مشخص شده می توانند نوع داده ای داشته باشند. قوانین مقایسه مربوطه برای ارزیابی اعمال می شود.

اگر هیچ یک از اضافات صعودی یا نزولی پس از COMPI مشخص نشده باشد ، از جهت مرتب سازی شده توسط علاوه بر 2 استفاده می شود. اگر یکی از موارد اضافی صعودی یا نزولی مشخص شود ، پیش فرض این مؤلفه را بازنویسی می کند.

اگر افزودنی به عنوان متن پس از یک مؤلفه متنی شبیه به متن مشخص نشده باشد ، از دستورالعمل های تعریف شده توسط علاوه بر 3 استفاده می شود. اگر افزودنی به عنوان متن پس از یک مؤلفه شبیه به متن مشخص شود ، پیش فرض این مؤلفه را بازنویسی می کند. در مؤلفه های غیر متن مانند ، همانطور که متن نمی تواند مشخص شود ، مگر اینکه یک مؤلفه ساخت یافته مشخص شود. در مؤلفه های ساختاری ، زیرا متن فقط بر اجزای متن مانند تأثیر می گذارد.

 

  • اگر نوع ردیف جدول داخلی از نظر آماری مشخص نباشد ، اجزای فقط می توانند به صورت پویا مشخص شوند و مستقیماً.

     

مرتب سازی به ترتیب صعودی جدول داخلی ITAB توسط ستون Col1 و مرتب سازی به ترتیب نزولی توسط ستون Col2.

انواع: شروع خط ، col1 نوع c طول 1 ، col2 نوع I ، پایان خط.

جدول استاندارد ITAB نوع خط با کلید خالی.

itab = مقدار #((col1 = 'a' col2 = 6) (col1 = 'b' col2 = 4) (col1 = 'b' col2 = 7) (col1 = 'c' col2 = 1) (col1 = 'c'col2 = 3) (col1 =' b 'col2 = 9) (col1 =' a 'col2 = 2) (col1 =' a 'col2 = 5) (col1 =' c 'col2 = 8)).

itab را توسط col1 صعودی col2 نزولی مرتب کنید.

علاوه بر این توسط (OTAB) جدول را با کلید اصلی جدول مرتب نمی کند ، بلکه توسط مؤلفه مشخص شده به طور پویا در جدول داخلی OTAB مشخص می شود. هر ردیف جدول OTAB مؤلفه ای از کلید مرتب سازی را تعریف می کند. اولویت مرتب سازی بر اساس ترتیب ردیف ها در OTAB است. اگر جدول OTAB اولیه باشد ، جدول مرتب نشده است.

برای OTAB ، یک جدول استاندارد از نوع جدول ABAP_SORTORDER_TAB از فرهنگ لغت ABAP مشخص شده است. نوع ردیف این جدول ساختار فرهنگ لغت ABAP_SORTORDER با اجزای زیر است:

برای مشخص کردن یک مؤلفه از کلید مرتب سازی. مؤلفه در فرم "comp_name [+خاموش (len)]" مشخص شده است ، جایی که "comp_name" باید نام یک جزء در ITAB (کاراکترهای بزرگ) باشد. نام مؤلفه ممکن است دارای جبران و طول ، انتخاب کننده های سازه و انتخاب کننده های مؤلفه برای اختصاص اشیاء داده های ساختاری و ویژگی ها در کلاس ها یا اشیاء باشد.

برای مشخص کردن جهت مرتب سازی برای مؤلفه فعلی. اگر نزولی اولیه باشد ، مرتب سازی به ترتیب صعودی انجام می شود. اگر نزولی از مقدار "x" برخوردار باشد ، جدول به ترتیب نزولی طبقه بندی می شود.

اگر ستونی از OTAB دارای محتوای نامعتبر باشد (یعنی اگر نام حاوی نام یک مؤلفه باشد که وجود ندارد یا یک جبران/طول/طول نادرست یا در صورت نزولی و آستوکس حاوی "x" یا مقدار اولیه نیست) ، این یک افزایش می یابد. استثناء قابل استفاده از کلاس CX_SY_DYN_TABLE_ILL_COMP_VAL.

 

  • علاوه بر این توسط (OTAB) نمی تواند با Compi ترکیب شود.

     

واردات پویا یک جدول پایگاه داده به یک جدول داخلی پویا و مرتب سازی پویا از محتوای آن. نام جدول پایگاه داده و نام ستون ها (که جدول با آن طبقه بندی می شود) می تواند وارد شود.

DATA dbtab TYPE c LENGTH 30 VALUE 'spfli'. cl_demo_input=>add_field( CHANGING field = dbtab ). DATA columns TYPE string VALUE `cityfrom, cityto`. cl_demo_input=>درخواست (تغییر قسمت = ستون). dbtab = چگال (to_upper (dbtab)).

DATA DREF TYPE Ref به داده ها. جدول استاندارد نوع استاندارد.

TRY. CREATE DATA dref TYPE STANDARD TABLE OF (dbtab). ASSIGN dref>* TO . CATCH cx_sy_create_data_error. cl_demo_output=>نمایش ("نوع داده اشتباه!"). برنامه را ترک کنید. خائنانی

TRY. SELECT * FROM (dbtab) INTO TABLE @. CATCH cx_sy_dynamic_osql_semantics. cl_demo_output=>نمایش ("جدول بانک اطلاعاتی اشتباه!"). برنامه را ترک کنید. خائنانی

ستون ها را در `،` به داده های جدول (column_tab) تقسیم کنید. داده ها (سفارش) = مقدار ABAP_SORTORDER_TAB (برای WA در ستون_TAB (نام = چگال (to_upper (WA)))).

TRY. SORT BY (order). CATCH cx_sy_dyn_table_ill_comp_val. cl_demo_output=>نمایش ("نام ستون اشتباه!"). برنامه را ترک کنید. خائنانی

علاوه بر این توسط EXPR می تواند برای مشخص کردن یک عبارت یا یک روش کاربردی فراخوانی استفاده شود که نتیجه آن یک جدول داخلی با همان نوع و محتوای مشابه در افزودنی قبلی توسط (OTAB) است. EXPR یک موقعیت بیان کلی است. این رفتار همانند هنگام مشخص کردن یک جدول داخلی پرانتز به طور مستقیم است.

پرانتز را نمی توان در اطراف expr قرار داد.

مثال فوق برای مشخص کردن توسط (OTAB) می تواند به صورت کوتاه تر همانطور که در شکل زیر نشان داده شده است. به جای مشخص کردن ترتیب جدول داخلی غیر ضروری ، می توانید مقدار جدولی (ساخته شده با استفاده از مقدار اپراتور ارزش) محتوای مورد نیاز را مشخص کنید.

SPLIT columns AT `,` INTO TABLE DATA(column_tab). TRY. SORT BY VALUE #( FOR wa IN column_tab ( name = condense( to_upper( wa ) ) ) ). CATCH cx_sy_dyn_table_ill_comp_val. cl_demo_output=>نمایش ("نام ستون اشتباه!"). برنامه را ترک کنید. خائنانی

  • علت: جدول OTAB دارای نوع خط ممنوعه است. خطای زمان اجرا: dyn_table_ill_line_type
  • علت: ستونی از جدول OTAB حاوی یک مقدار ممنوع است. خطای زمان اجرا: dyn_table_ill_comp_val

 

  • علت: یک معیار مرتب سازی به صورت پویا در فرم (نام) با افزودن صریح به عنوان متن مانند متن مشخص نشده است. خطای زمان اجرا: sort_as_text_bad_dyn_type

     

استراتژی‌های اسکالپ...
ما را در سایت استراتژی‌های اسکالپ دنبال می کنید

برچسب : نویسنده : جعفر بدیعی بازدید : <-PostHit-> تاريخ : سه شنبه 3 مرداد 1402 ساعت: 0:00