У програмском језику АБАП / 4 користе се две врсте СКЛ-а.
- НАТИВЕ СКЛ
- ОПЕН СКЛ.
Изворни СКЛ вам омогућава употребу СКЛ израза специфичних за базу података у програму АБАП / 4. То значи да можете да користите табеле базе података којима не управља АБАП речник, па према томе интегришете податке који нису део Р / 3 система.
Отворени СКЛ састоји се од скупа АБАП израза који извршавају операције над централном базом података у Р / 3 систему. Резултати операција и све поруке о грешкама независни су од система база података који се користи. Опен СКЛ тако обезбеђује јединствену синтаксу и семантику за све системе база података које подржава САП. АБАП програми који користе само отворене СКЛ изразе ће радити у било ком Р / 3 систему, без обзира на систем база података који се користи. Отворени СКЛ изрази могу радити само са табелама базе података које су креиране у АБАП речнику.
Основне отворене СКЛ наредбе
- СЕЛЕЦТ
- ИНСЕРТ
- АЖУРИРАЊЕ
- МОДИФИКОВАТИ
- ИЗБРИШИ
- ОТВОРЕНИ КУРСОР,? ФЕТЦХ,? ЦЛОСЕ КУРСОР
ТАБЕЛЕ СЕ ОДНОСЕ.КУРСОР ТИПА ПОДАТАКА Ц,ВА КАО КЊИГА.ОТВОРИТЕ КУРСОР Ц ЗА ОДАБИР * ИЗ КЊИГЕ ГДЕ ЈЕ МОТОР = 'ЛХ'И ПОВЕРИ = '0400'И ФЛДАТЕ = '19950228'НАРУЧИ ПО ОСНОВНОМ КЉУЧУ.УРАДИТИ.ПРЕУЗМИТЕ СЛЕДЕЋИ КУРСОР Ц У ВА.АКО ЈЕ СИ-СУБРЦ <> 0.ЗАТВОРЕНИ КУРСОР Ц.ЕКСИТ.ЕНДИФ.ПИШИ: / ВА-БООКИД, ВА-ЦУСТОМИД, ВА-ЦУСТТИПЕ,ВА-СМОКЕР, ВА-ЛУГГВЕИГХТ, ВА-ВУНИТ,ВА-РАЧУН.ЕНДДО.
Изнесите списак путника за лет Луфтханса 0400 28. фебруара 1995:
Отворите СКЛ повратне кодове
Сви отворени СКЛ изрази испуњавају следећа два системска поља повратним кодовима.СИ-СУБРЦ
Након сваке наредбе Опен СКЛ, системско поље СИ-СУБРЦ садржи вредност 0 ако је операција била успешна, вредност различиту од 0 ако није.
СИ-ДБЦНТ
Након Опен СКЛ израза, системско поље СИ-ДБЦНТ садржи број обрађених линија базе података.
Изворни СКЛ
Као што је већ поменуто, Нативе СКЛ вам омогућава да користите СКЛ изразе специфичне за базу података у АБАП програму.Да бисте користили Нативе СКЛ израз, морате му претходити са ЕКСЕЦ СКЛ изразом и следити га ЕНДЕКСЕЦ изразом.
Синтакса
ЕКСЕЦ СКЛ [ИЗВОЂЕЊЕ <формата]].<Изворни СКЛ израз>ЕНДЕКСЕЦ.Не постоји период након Нативе СКЛ израза. Даље, употреба обрнутих зареза (") или звездице (*) на почетку реда у изворном СКЛ изразу не уводи коментар као у нормалној синтакси АБАП. Морате знати да ли су имена табела и поља велика и мала осетљив у изабраној бази података.
У изворним СКЛ изразима, подаци се преносе између табеле базе података и АБАП програма помоћу променљивих хоста. Они су декларисани у програму АБАП, а испред њих у Нативе СКЛ изразу стоји двотачка (:). Можете користити елементарне структуре као променљиве хоста. Изузетно, структуре у клаузули ИНТО третирају се као да су сва њихова поља наведена појединачно.
Као и у Опен СКЛ-у, након наредбе ЕНДЕКСЕЦ, СИ-ДБЦНТ садржи број обрађених линија. У скоро свим случајевима СИ-СУБРЦ садржи вредност 0 након израза ЕНДЕКСЕЦ.
Отворени СКЛ - Правила перформанси
Да бисте побољшали перформансе СКЛ-а и АБАП програма, треба водити рачуна о следећим правилима:Нека резултат буде мали
- Користећи клаузулу вхере
- Ако је из базе података потребан само један запис, користите СЕЛЕЦТ СИНГЛЕ кад год је то могуће.
- Ограничите број линија
- Ако су из табеле потребна само одређена поља, користите наредбу СЕЛЕЦТ <поље1> <поље2> ИНТО…
- Ограничи број колона
- Користите агрегатне функције
- Избегавајте угнежђене петље за одабир
- Алтернативна опција је употреба наредбе СЕЛЕЦТ ... ФОР АЛЛ ЕНТРИЕС. Ова изјава често може бити много ефикаснија од извођења великог броја СЕЛЕЦТ или СЕЛЕЦТ СИНГЛЕ израза током ЛООП-а интерне табеле.
- Користите приказе речника
- Користите Јоинс у клаузули ФРОМ
- Употријебите подупите у клаузули вхере
- Користите поља индекса у клаузули вхере
- Када приступате базама података, увек се уверите да се користи исправан индекс.
- Међуспремник
- Логичке базе података
- Избегавајте поновљени приступ бази података
- Да би се избегло извршавање истог СЕЛЕЦТ-а више пута (и због тога имају дупликате одабира), интерна табела типа ХАСХЕД може се користити за побољшање перформанси.