خوش آمديد!
مهدی طالبیان
سلام! من یک برنامه نویس هستم و در اینجا از تجربیاتم خواهم نوشت

چند نکته در مورد بانک اطلاعاتی SAP برای برنامه نویسان

مهدی طالبیان ، ۹۶/۰۴/۲۲

SAP تمامی اطلاعات و تنظیمات خود را در جداول بانک اطلاعاتی ذخیره می کند و این شامل اسکیمای جداول SAP، فیلد ها و روابط بین جداول نیز می گردد. به عنوان یک کارشناس SAP Technical اگر می خواهید در ABAP از طریق select، مستقیما به جداول SAP دسترسی داشته باشید، باید به نکات ذیل توجه داشته باشید:

CASE SENSITIVE

بانک اطلاعاتی SAP به حروف بزرگ و کوچک حساس می باشد. در نسخه های تحت SQL که تا کنون به آنها دسترسی داشته ایم نام جداول، فیلدها و بانک اطلاعاتی با حرف بزرگ و نام اسکیما با حروف کوچک بوده اند. مقادیر نیز به حروف بزرگ و کوچک حساس می باشند. به عنوان مثال دو کد trim1 و Trim1 باهم متفاوت می باشند. به همیت دلیل برای جلوگیری از پیچیدگی در جستجوی مقادیر، برخی از فیلد ها بصورت UPPERCASE نگهداری می گردند. اما برخی فیلدها مانند شرح ها، شماره بارنامه و ... می توانند بصورت ترکیب حروف بزرگ و کوچک استفاده شوند.

البته SAP برای ممکن سازی جستجو در فیلدهایی که از ترکیب حروف بزرگ و کوچک استفاده می کنند، در برخی موارد مقدار uppercase شده آن فیلد را در فیلد دیگر نگهداری می کند. به عنوان مثال در mm01 و mm02 هنگام ذخیره شرح قطعه، SAP در جدول MAKT شرح آن قطعه را در فیلد MKTX بصورت ترکیب حروق بزرگ و کوچک (همانگونه که کاربر وارد نموده است) ذخیره کرده و در فیلد MAKTG همان شرح قطعه با حروف بزرگ نگهداری می کند.

البته ABAP هنگام اجرای دستورات SELECT نام جداول و فیلدها را بصورت خودکار upper case می کند. اما شما باید به عنوان یک برنامه نویس تبدیلات لازم در "مقادیر" فیلدها را اعمال کرده و از "فیلد مناسب" جهت جستحو استفاده نمایید.

مقادیر NULL

در بانک های اطلاعاتی مقدار خالی و NULL با هم متفاوت می باشند. مقادیر NULL سبب false شدن کلیه عبارات شرطی می گردند. به عنوان مثال اگر در جدول ZTABLE مقدار فیلد ZFIELD برابر با null باشد نتیجه اجرای هر دو عبارت شرطی ZTABLE~ZFIELD = '' و ZTABLE~ZFIELD <> '' برابر با false خواهد بود. کلمه کلیدی INITIAL برای کنترل NULL بودن مقادیر استفاده می گردد. بنابراین برای کنترل NULL یا خالی بودن فیلد مذکور عبارت ZTABLE~ZFIELD is INITIAL مقدار true  و not ZTABLE~ZFIELD is INITIAL مقدار false را تولید می کند

VALUE CONVERSION

دقت نمایید که مقادیر برخی از فیلد ها آنچه که در جداول SAP ذخیره می شوند با آنچه که در تیکدهای SAP (مانند SE11 و SE16) نمایش داده می شوند متفاوت است. به عنوان مثال کد قطعه 1234567890 در جدول MARA بصورت 000000001234567890 ذخیره می گردد. این بدلیل تعریف conversion برروی domain مرتبط با فیلدها می باشد. 

برای مشاهده conversion فیلد MATNR (جدول MARA)، تیکد se11 را برای جدول MARA اجرا کنید. مشاهده می کنید که نام Data Element آن نیز MATNR می باشد. برروی آن دوبار کلیک کنید  تا وارد مشخصات Data Element مذکور شوید. در آنجا مشاهده می کنید که نام Domain مربوطه نیز MATNR می باشد برروی آن دوبار کلیک کنید  تا وارد مشخصات domain مذکور شوید. فیلد Convers. routine نشان می دهد که فیلد مذکور دارای value conversion موسوم به MATN2 می باشد. برروی آن دوبار کلیک کنید تا نام فانکشن ماژول های لازم جهت تغییر مقدار فیلد databae به مقدار قابل نمایش و برعکس را مشاهده نمایید

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
تجدید کد امنیتی