26 Eylül 2017 Salı
SAP DBTech JDBC: [258]: insufficient privilege: Not authorized
call _SYS_REPO.GRANT_SCHEMA_PRIVILEGE_ON_ACTIVATED_CONTENT('select','SCHEMA','username');
select SCHEMA Tables list
SELECT TABLE_NAME AS "Table" FROM M_CS_TABLES WHERE SCHEMA_NAME = 'SCHEMA_NAME'
21 Eylül 2017 Perşembe
SAP HANA Spatial Processing
SAP HANA
Spatial Processing, ST_POINT,
ST_GEOMETRY vb. gibi coğrafi veri tiplerini kullanır.SAP HANA üzerinde coğrafi
verileri depolar. Spatial Processing fonksiyonları kullanarak sorgulamalar
yapılır.Bu sayede mekansal bütünlük gerçekleştirerek anlamlı coğrafik
bilgilerin oluşmasını sağlar. Basit bir örnek ile SAP HANA Spatial Processing açıklayalım:
2 şehir arasında
mesafenin hesaplanması
- Şehir ve bulunduğu konum bilgilerini içeren City tablosunu
oluşturalım
CREATE COLUMN TABLE CITY(
ID BIGINT NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
CITY_NAME NVARCHAR(40) NULL,
CITY_COORDINATE ST_GEOMETRY (4326));
-Tablomuza 2 kayıt ekleyelim.İstanbul ve Ankara şehirlerinin
konum bilgilerini içermekte.
INSERT INTO CITY (CITY_NAME,
CITY_COORDINATE) VALUES ('İstanbul', new ST_POINT ('POINT (28.955437 40.999976)'));
INSERT INTO CITY (CITY_NAME,
CITY_COORDINATE) VALUES ('Ankara', new ST_POINT ('POINT (32.833611
40.073205)'));
-2 şehir arasındaki mesafeyi hesaplayan bir
procedure oluşturalım
CREATE PROCEDURE
SP_CALCULATE_DISTANCE
( In OriginCity nvarchar(50),
In DestinationCity nvarchar(50),
In UnitOfMeasure nvarchar(50))
LANGUAGE SQLSCRIPT AS
BEGIN
DECLARE STRING_STR varchar(2000);
STRING_STR := 'select A.CITY_NAME AS "Başlangıç
Yeri",
B.CITY_NAME AS "Varış
Yeri",
A.CITY_COORDINATE.ST_Distance(B.CITY_COORDINATE,' || '''' || :UnitOfMeasure ||
'''' || ') AS "Aradaki
Mesafe"
from CITY A,CITY B where
A.CITY_NAME = ' || '''' || :OriginCity || '''' || ' and B.CITY_NAME = ' || '''' || :DestinationCity || '''';
EXECUTE IMMEDIATE (:STRING_STR);
END;
-2 şehir arasındaki mesafeyi procedure çağırarak
öğrenelim:
CALL SP_CALCULATE_DISTANCE ('İstanbul', 'Ankara', 'kilometre')
Başlangıç Yeri;Varış Yeri;Aradaki Mesafe
İstanbul;Ankara;344,2694494960872
Koordinatlarını verdiğimiz 2
şehir arasındaki mesafayi ST_Distance spatial processing
fonksiyonu ile hesaplamış olduk.SAP HANA’dan elde ettiğimiz bu ve buna benzer
verileri ister SAP FIORI uygulamalarınızda işleyerek gösterebilir veya 3.parti
yazılımlarınıza servis ederek yayınlayabilirsiniz.SAP HANA spatial processing
geliştirmelerini ESRI ile yapmakta.
Kısaca,SAP HANA spatial
processing ile coğrafi bilgilerinizi hızlı güvenilir bir şekilde saklayıp
yönetibilirsiniz.
18 Eylül 2017 Pazartesi
Eclipse önceki versiyona dönme
sap hana ve sap uygulamaları için eclipse kullanıyorsanız,sık sık güncelleme yapıyor olabilirsiniz.her güncelleme de bir sorun ile karşılaşabilirsiniz.bir önceki güncellemede sorunsuz çalışıyorken,yeni güncelleme sonrası eclipse'niz çalışmıyorsa bir önceki versiyona dönüş yapabilirsiniz.
aşağıdaki şekilde versiyona dönebilirsniz:
aşağıdaki şekilde versiyona dönebilirsniz:
13 Eylül 2017 Çarşamba
SAP HANA Spatial types list
SAP HANA Spatial types nerelerde kullanılmış,hangi schema'larda,tablolar da geçmiş listelemek için:
SYS sistem schema'nın altında views alınta "SYS"."ST_GEOMETRY_COLUMNS" view'ında bulabilirsiniz.
SYS sistem schema'nın altında views alınta "SYS"."ST_GEOMETRY_COLUMNS" view'ında bulabilirsiniz.
fica document header change
data lt_kochanges type standard table of fkkchdoc_ko with header line.
refresh lt_kochanges.
lt_kochanges-chfld = 'ZZEXBEL'.
lt_kochanges-chval = 'xxxxxx'.
append lt_kochanges.
call function 'FKK_DOCUMENT_CHANGE'
exporting
i_opbel = s_opbel-low
tables
t_kochanges = lt_kochanges[]
exceptions
document_not_found = 1
new_value_rejected = 2
field_rejected = 3
field_unknown = 4
invalid_call = 5
item_already_cleared = 6
concurrent_clearing = 7
enqueue_error = 8
no_authority = 9
others = 10.
refresh lt_kochanges.
lt_kochanges-chfld = 'ZZEXBEL'.
lt_kochanges-chval = 'xxxxxx'.
append lt_kochanges.
call function 'FKK_DOCUMENT_CHANGE'
exporting
i_opbel = s_opbel-low
tables
t_kochanges = lt_kochanges[]
exceptions
document_not_found = 1
new_value_rejected = 2
field_rejected = 3
field_unknown = 4
invalid_call = 5
item_already_cleared = 6
concurrent_clearing = 7
enqueue_error = 8
no_authority = 9
others = 10.
12 Eylül 2017 Salı
Zoom of LOB columns is not enabled; check Result preferences
Zoom of LOB columns is not enabled; check Result preferences
hatasını düzeltmek için aşağıdaki şekilde ,enable zoom of LOB columns tik'lemelisiniz.
hatasını düzeltmek için aşağıdaki şekilde ,enable zoom of LOB columns tik'lemelisiniz.
17 Ağustos 2017 Perşembe
SAPUI5, ODATA and anonymous database access in the HCP: How to do it
SAP Hana sisteminde servis oluşturdunuz.Her servis çağırdığınızda kullanıcı adı ve şifresi girmek istemiyorsanız servisinizi anonymous users 'a çevirip işlem yaptırabilirsiniz.Bu güvenlik açığı oluşturur.Bu açığı kapatmak için APIKEY,KEYCODE vb. bir parametre oluşturarak servis açığını kapatabilirsiniz.
anonymous database access in the HCP için:
1-
.xsaccess
{
"exposed" : true,
"authentication" : null,
"anonymous_connection": "packet_name::anonuser"
}
2-
anonuser.xssqlcc
{
"description" : "Anon SQL connection"
}
Bu kısıma kadar yaparsanız servise erişim anonymous yapılabilir.Fakat servis data'larını göremezsiniz.
3-Oluşturulan anonymous user,Hana database deki 1 kullanıcı ile eşleşmesi için aşağıdaki güncellemeyi yapıyoruz.
UPDATE "_SYS_XS"."SQL_CONNECTIONS"
SET username = 'USERNAME'
WHERE name = 'packet_name::anonuser';
anonymous database access in the HCP için:
1-
.xsaccess
{
"exposed" : true,
"authentication" : null,
"anonymous_connection": "packet_name::anonuser"
}
2-
anonuser.xssqlcc
{
"description" : "Anon SQL connection"
}
Bu kısıma kadar yaparsanız servise erişim anonymous yapılabilir.Fakat servis data'larını göremezsiniz.
3-Oluşturulan anonymous user,Hana database deki 1 kullanıcı ile eşleşmesi için aşağıdaki güncellemeyi yapıyoruz.
UPDATE "_SYS_XS"."SQL_CONNECTIONS"
SET username = 'USERNAME'
WHERE name = 'packet_name::anonuser';
16 Ağustos 2017 Çarşamba
Error : Sorry, a technical error occurred! Please try again later.
SAP web ide'nize yeni bir servis bağladığınızda aşağıdaki hatayı alabilirsiniz.
Error : Sorry, a technical error occurred! Please try again later.
Servisi eklediniz ama uygulama çalışmamasının nedeni,destination'ızı bulamaması.
Direk çözüm servis url'sini uygulama içerisinden çalıştırmak ama aşağıdaki şekilde yapmanız daha sağlıklı çözüm olur.
1-neo-app.json :
Error : Sorry, a technical error occurred! Please try again later.
Servisi eklediniz ama uygulama çalışmamasının nedeni,destination'ızı bulamaması.
Direk çözüm servis url'sini uygulama içerisinden çalıştırmak ama aşağıdaki şekilde yapmanız daha sağlıklı çözüm olur.
1-neo-app.json :
2-manifest.json :
15 Ağustos 2017 Salı
403 - Forbidden The server refused to fulfill the request.
SAP HANA da oluşturduğunuz servise POST,PUT,DELETE işlemlerini yapmak istediğinizde aşağıdaki hatayı alabilirsiniz.
403 - Forbidden The server refused to fulfill the request.
bu hatanın çözümü
.xsaccess dosyasının içindeki prevent_xsrf değerini false yapmanız.
.xsaccess
{
"exposed" : true,
"prevent_xsrf" : false
}
403 - Forbidden The server refused to fulfill the request.
bu hatanın çözümü
.xsaccess dosyasının içindeki prevent_xsrf değerini false yapmanız.
.xsaccess
{
"exposed" : true,
"prevent_xsrf" : false
}
14 Ağustos 2017 Pazartesi
Stored Procedure - Could not create catalog object: insufficient privilege; Not authorized
SAP Hana insert-update-delete işlemlerini yapacağınız bir stored procedure oluşturduğunuz zaman aşağıdaki hatayı alabilirsiniz.
Stored Procedure - Could not create catalog object: insufficient privilege; Not authorized
çözüm yolu:
Users >_SYS_REPO and Object Privileges tab
Ve işlem yaptığınız tabloyu ekleyip transcation'larını seçmek.
9 Ağustos 2017 Çarşamba
create procedure and call on hana
create procedure on hana:
PROCEDURE "MAINTENANCE"."maintenance.procedures::get_userInfo"(
IN im_USER "MAINTENANCE"."TT_USERLOGIN",
OUT ex_userInfo "MAINTENANCE"."TT_USERINFO" )
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
--DEFAULT SCHEMA <default_schema_name>
READS SQL DATA AS
BEGIN
/*****************************
Write your procedure logic
*****************************/
declare lv_EMPLOYEEID nvarchar(10);
declare lv_password nvarchar(1000);
select EMPLOYEEID,PASSWORD
into lv_EMPLOYEEID,lv_password
from :im_USER;
ex_userInfo = select * from "MAINTENANCE"."EMPLOYEES"
where EMPLOYEEID = :lv_EMPLOYEEID and
PASSWORD = :lv_password;
END;
PROCEDURE "MAINTENANCE"."maintenance.procedures::get_userInfo"(
IN im_USER "MAINTENANCE"."TT_USERLOGIN",
OUT ex_userInfo "MAINTENANCE"."TT_USERINFO" )
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
--DEFAULT SCHEMA <default_schema_name>
READS SQL DATA AS
BEGIN
/*****************************
Write your procedure logic
*****************************/
declare lv_EMPLOYEEID nvarchar(10);
declare lv_password nvarchar(1000);
select EMPLOYEEID,PASSWORD
into lv_EMPLOYEEID,lv_password
from :im_USER;
ex_userInfo = select * from "MAINTENANCE"."EMPLOYEES"
where EMPLOYEEID = :lv_EMPLOYEEID and
PASSWORD = :lv_password;
END;
----call procedure----------
drop table #LOGINUSER;
CREATE LOCAL TEMPORARY COLUMN TABLE #LOGINUSER LIKE "MAINTENANCE"."TT_USERLOGIN";
INSERT INTO #LOGINUSER VALUES ('1001','ADMIN');
call "MAINTENANCE"."maintenance.procedures::get_userInfo"( #LOGINUSER,
?)
8 Ağustos 2017 Salı
Odata service with error: Service exception: insufficient privilege
Odata service with error: Service exception: insufficient privilege
hatasının çözümü için 2 yol önerebilirim.
1- *.hdbrole oluşturup,ilgili kullanıcıya bu yetkiyi vermek.
role pXXXtrial.mybackend::role_name{
catalog schema "WORKSHOP_01": SELECT,UPDATE,INSERT,DELETE;
}
daha sonra oluşturduğunuz role ilgili kullanıcıya vermek.
CALL "HCP"."HCP_GRANT_ROLE_TO_USER"('pXXXtrial.mybackend::role_name','pXXX');
2-Bu yöntemde ise manuel role yaratıp ilgili kullanıcılara atamak.
2 Ağustos 2017 Çarşamba
SAP Hana Attribute Views export SQL
Hana sisteminde oluşturduğunuz attribute Views'leri ,
_SYS_BIC --> Column Views ,
çift tıklayarak export SQL yapabilirsiniz.
_SYS_BIC --> Column Views ,
çift tıklayarak export SQL yapabilirsiniz.
Getting the "Cannot get the data provider outline" Error due to "insufficient privilege: Not authorized"
Eclipse de attribute view de karşınıza çıkan hatayı aşağıdaki şekilde düzeltebilirsiniz:
SQL command dan aşağıdaki gibi çalıştırın :
GRANT SELECT ON SCHEMA "<schema name>" TO _SYS_REPO WITH GRANTOPTION
Getting the "Cannot get the data provider outline" Error due to "insufficient privilege: Not authorized"
SQL command dan aşağıdaki gibi çalıştırın :
GRANT SELECT ON SCHEMA "<schema name>" TO _SYS_REPO WITH GRANTOPTION
13 Haziran 2017 Salı
FP06 account maintaince FKK_CREATE_DOC_AND_CLEAR
clear ls_sfkkko.
ls_sfkkko-fikey = lv_fikey.
ls_sfkkko-applk = 'R'.
ls_sfkkko-blart = 'HB'.
ls_sfkkko-herkf = '03'.
ls_sfkkko-waers = 'TRY'.
ls_sfkkko-bldat = sy-datum.
ls_sfkkko-budat = sy-datum.
ls_sfkkko-wwert = sy-datum.
refresh lt_fkkcl.
clear ls_fkkcl.
move-corresponding ls_interest to ls_fkkcl.
ls_fkkcl-augrd = '08'.
ls_fkkcl-xaktp = 'X'.
concatenate 'B' ls_fkkcl-opbel into ls_fkkcl-azvdg.
ls_fkkcl-augbw = ls_fkkcl-betrw.
ls_fkkcl-augbh = ls_fkkcl-betrh.
ls_fkkcl-augb2 = ls_fkkcl-betr2.
ls_fkkcl-augb3 = ls_fkkcl-betr3.
ls_fkkcl-augbo = ls_fkkcl-oribt.
ls_fkkcl-naugw = ls_fkkcl-betrw.
ls_fkkcl-naugh = ls_fkkcl-betrh.
ls_fkkcl-naug2 = ls_fkkcl-betr2.
ls_fkkcl-naug3 = ls_fkkcl-betr3.
ls_fkkcl-naugo = ls_fkkcl-oribt.
ls_fkkcl-nettw = ls_fkkcl-betrw.
ls_fkkcl-netth = ls_fkkcl-betrh.
ls_fkkcl-nett2 = ls_fkkcl-betr2.
ls_fkkcl-nett3 = ls_fkkcl-betr3.
ls_fkkcl-netto = ls_fkkcl-oribt.
ls_fkkcl-oribt = ls_fkkcl-betrw.
ls_fkkcl-orisk = ls_fkkcl-betrh.
ls_fkkcl-oriwa = 'TRY'.
append ls_fkkcl to lt_fkkcl.
clear ls_fkkcl.
move-corresponding ls_credit to ls_fkkcl.
ls_fkkcl-augrd = '08'.
ls_fkkcl-xaktp = 'X'.
concatenate 'B' ls_fkkcl-opbel into ls_fkkcl-azvdg.
ls_fkkcl-augbw = ls_fkkcl-betrw.
ls_fkkcl-augbh = ls_fkkcl-betrh.
ls_fkkcl-augb2 = ls_fkkcl-betr2.
ls_fkkcl-augb3 = ls_fkkcl-betr3.
ls_fkkcl-augbo = ls_fkkcl-oribt.
ls_fkkcl-naugw = ls_fkkcl-betrw.
ls_fkkcl-naugh = ls_fkkcl-betrh.
ls_fkkcl-naug2 = ls_fkkcl-betr2.
ls_fkkcl-naug3 = ls_fkkcl-betr3.
ls_fkkcl-naugo = ls_fkkcl-oribt.
ls_fkkcl-nettw = ls_fkkcl-betrw.
ls_fkkcl-netth = ls_fkkcl-betrh.
ls_fkkcl-nett2 = ls_fkkcl-betr2.
ls_fkkcl-nett3 = ls_fkkcl-betr3.
ls_fkkcl-netto = ls_fkkcl-oribt.
ls_fkkcl-oribt = ls_fkkcl-betrw.
ls_fkkcl-orisk = ls_fkkcl-betrh.
ls_fkkcl-oriwa = 'TRY'.
append ls_fkkcl to lt_fkkcl.
refresh lt_enqtab.
clear ls_engtab.
ls_engtab-bukrs = ls_head-bukrs.
ls_engtab-gpart = ls_head-gpart.
ls_engtab-uname = sy-uname.
append ls_engtab to lt_enqtab.
call function 'FKK_OPEN_ITEM_ENQUEUE'
exporting
i_shared = 'X'
tables
t_enqtab = lt_enqtab.
call function 'FKK_CREATE_DOC_AND_CLEAR'
exporting
i_fkkko = ls_sfkkko
i_update_task = 'X'
importing
e_opbel = e_opbel
tables
t_fkkopk = lt_fkkopk
t_fkkcl = lt_fkkcl
exceptions
error_message = 1.
if sy-subrc = 0.
commit work and wait.
endif.
call function 'FKK_OPEN_ITEM_DEQUEUE'.
8 Haziran 2017 Perşembe
Serial number table in Delivery document(VL02,VL02n)
call function 'SERNR_ADD_TO_LS'
exporting
profile = lips-serail
material = lips-matnr
m_charge = lips-charg
quantity = lf_anzsn
j_vorgang = 'PMS3'
cuobj = lips-cuobj
document = lips-vbeln
item = lips-posnr
debitor = likp-kunnr
vbtyp = likp-vbtyp
bwart = lips-bwart
importing
anzsn = lips-anzsn
zeilen_id = lf_line_id
tables
sernos = lt_sernos
exceptions
serialnumber_errors = 1
serialnumber_warnings = 2.
if sy-subrc eq 0.
* call submit program !!!if you don't call not update delivery
perform serial_liste_post_ls in program saplipw1.
commit work.
endif.
exporting
profile = lips-serail
material = lips-matnr
m_charge = lips-charg
quantity = lf_anzsn
j_vorgang = 'PMS3'
cuobj = lips-cuobj
document = lips-vbeln
item = lips-posnr
debitor = likp-kunnr
vbtyp = likp-vbtyp
bwart = lips-bwart
importing
anzsn = lips-anzsn
zeilen_id = lf_line_id
tables
sernos = lt_sernos
exceptions
serialnumber_errors = 1
serialnumber_warnings = 2.
if sy-subrc eq 0.
* call submit program !!!if you don't call not update delivery
perform serial_liste_post_ls in program saplipw1.
commit work.
endif.
7 Mart 2017 Salı
Setup automatic email trigger for ABAP Short Dumps in the system
1. Business Scenario
As a system performance improvement measure, the requirement is to send an email to the team with a list of ABAP Short Dumps that occur in the system during the day.
The email needs to be sent at 12:00 AM, and should contain a list of all the short dumps that have occurred in the system during the previous day.
2. Create a variant for the ABAP Runtime Error program RSSHOWRABAX
- Go to SE38 and enter the program name RSSHOWRABAX. Select the Variants Radio button and click display.
In the next screen, enter the Variant Name and create.
2. This takes you to the Parameters screen, where we need to add the parameters that we want our variant to contain.
3. Click on Attributes. Enter the description.
4. Since our requirement is to execute the variant for the previous day, we will select the following options for ‘Date’ in the ‘Objects for Selection Screen’ section
– Selection Variable = ‘X’ (X: Dynamic Date Calculation (System Date))
– Name of Variable: For the Variable name ‘Current date +/- ??? days’ the Indicator for I/E should be selected as ‘I’ and option as ‘EQ’
– Upon clicking ‘OK’, the next screen allows to enter the value for the Date Calculation Parameters.
Enter ‘-1’ here, since we need the previous day’s data.
– The final screen will be as follows
5. Upon saving this, you will be re-directed to the Parameters screen, where the Date field will be auto populated with the previous day value
3. Define a Job to schedule the above report output as an email
1. Go to System à Services à Jobs à Define Job
2. Enter the Job Name and Job Class
3. Go to Step. Here, enter the program name RSSHOWRABAX and the variant created above ZSHORT_DUMPS.
In the user field, you can enter the User ID with which you want the email to be triggered.
In our case, we needed it to be executed with ALEREMOTE. Click on Save.
4. This step will send a mail to the SAP Business Workspace. In order to further forward this mail to the external email addresses, we will use the program RSCONN01 (SAPconnect: Start Send Process) and the variant SAP&CONNECTINT.
5. Upon clicking Save, you can see both the steps in the overview.
6. Next, enter the recipient details using the ‘Spool List Recipient’ Button. You can select from Internal User, Distribution lists and External addresses.
7. Next, select your Start Condition to trigger this job. In our case, we have defined the same to trigger at the 1st second of the day daily.
5. Final Output
An email will be received daily at 12:00 AM, from ALEREMOTE. The Subject of the email will be as follows:
Job <Job Name>, Step 1
The attachment will display the Runtime Errors information as shown below. This is the same information that we get in ST22.
The below information is obtained in the mail triggered at 12:00 AM on 8/12/2015. Hence, it gives all the ABAP short dumps occurred on 8/11/2015.
Kaydol:
Kayıtlar (Atom)