1. При изменении файла xml с SQL скриптами - BI не нужно перегружать для Windows системы. Достаточно перезагрузить метаданные
2. Обязательно должны быть заполнены блоки insert и update. Почему оно иногда берет одно - иногда другое, непонятно
3. Если в SQL указаны номера колонок, а не их имена, то имена должны соответствовать номерам в представлении таблица, а не закладке - критерии.
4. Если нужно указывать названия колонок, то их надо указать в xml отчета в параметре ID и использовать в скриптах: @{имя}. Если по номеру колонки: то @1.
5. В скриптах можно запускать блоки процедур!
6. Права на WriteBack можно давать и на уровне привелегий web-каталога. По умолчанию - они заблокированы
Пример XML:
<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
<WebMessage name="WriteBackCoef">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<update>UPDATE BUDGET.D_KOEF_VALUE SET KOEF_VALUE = @3 WHERE KOEF_SAP_CODE = @1 </update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="WriteBackFact">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<insert>UPDATE BUDGET.F_FACT_VALUE_MANUAL SET
MONTH_01 = @{c2},
MONTH_02 = @{c3},
MONTH_03 = @{c4},
MONTH_04 = @{c5},
MONTH_05 = @{c6},
MONTH_06 = @{c7},
MONTH_07 = @{c8},
MONTH_08 = @{c9},
MONTH_09 = @{c10},
MONTH_10 = @{c11},
MONTH_11 = @{c12},
MONTH_12 = @{c13}
WHERE ID='@{c1}'</insert>
<update>UPDATE BUDGET.F_FACT_VALUE_MANUAL SET
MONTH_01 = @{c2},
MONTH_02 = @{c3},
MONTH_03 = @{c4},
MONTH_04 = @{c5},
MONTH_05 = @{c6},
MONTH_06 = @{c7},
MONTH_07 = @{c8},
MONTH_08 = @{c9},
MONTH_09 = @{c10},
MONTH_10 = @{c11},
MONTH_11 = @{c12},
MONTH_12 = @{c13}
WHERE ID='@{c1}'</update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="AddBudgetPeriod">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<insert>declare
v_result varchar2(500);
begin
azeri_utils.create_new_budget_period(@2, 'AUTO', 'Добавить', v_result);
commit;
end;</insert>
<update>declare
v_result varchar2(500);
begin
azeri_utils.create_new_budget_period(@2, 'AUTO', 'Добавить', v_result);
commit;
end;</update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="DeleteBudgetPeriod">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<insert>declare
v_result varchar2(500);
begin
azeri_utils.create_new_budget_period(@2, 'AUTO', 'Удалить', v_result);
commit;
end;</insert>
<update>declare
v_result varchar2(500);
begin
azeri_utils.create_new_budget_period(@2, 'AUTO', 'Удалить', v_result);
commit;
end;</update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="ChangeStatus">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<insert>declare
v_result varchar2(500);
begin
azeri_utils.update_status(@1, '@2', '@4', 'AUTO', v_result);
end;</insert>
<update>declare
v_result varchar2(500);
begin
azeri_utils.update_status(@1, '@2', '@4', 'AUTO', v_result);
end;</update>
</writeBack>
</XML>
</WebMessage>
</WebMessageTable>
</WebMessageTables>
2. Обязательно должны быть заполнены блоки insert и update. Почему оно иногда берет одно - иногда другое, непонятно
3. Если в SQL указаны номера колонок, а не их имена, то имена должны соответствовать номерам в представлении таблица, а не закладке - критерии.
4. Если нужно указывать названия колонок, то их надо указать в xml отчета в параметре ID и использовать в скриптах: @{имя}. Если по номеру колонки: то @1.
5. В скриптах можно запускать блоки процедур!
6. Права на WriteBack можно давать и на уровне привелегий web-каталога. По умолчанию - они заблокированы
Пример XML:
<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
<WebMessage name="WriteBackCoef">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<update>UPDATE BUDGET.D_KOEF_VALUE SET KOEF_VALUE = @3 WHERE KOEF_SAP_CODE = @1 </update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="WriteBackFact">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<insert>UPDATE BUDGET.F_FACT_VALUE_MANUAL SET
MONTH_01 = @{c2},
MONTH_02 = @{c3},
MONTH_03 = @{c4},
MONTH_04 = @{c5},
MONTH_05 = @{c6},
MONTH_06 = @{c7},
MONTH_07 = @{c8},
MONTH_08 = @{c9},
MONTH_09 = @{c10},
MONTH_10 = @{c11},
MONTH_11 = @{c12},
MONTH_12 = @{c13}
WHERE ID='@{c1}'</insert>
<update>UPDATE BUDGET.F_FACT_VALUE_MANUAL SET
MONTH_01 = @{c2},
MONTH_02 = @{c3},
MONTH_03 = @{c4},
MONTH_04 = @{c5},
MONTH_05 = @{c6},
MONTH_06 = @{c7},
MONTH_07 = @{c8},
MONTH_08 = @{c9},
MONTH_09 = @{c10},
MONTH_10 = @{c11},
MONTH_11 = @{c12},
MONTH_12 = @{c13}
WHERE ID='@{c1}'</update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="AddBudgetPeriod">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<insert>declare
v_result varchar2(500);
begin
azeri_utils.create_new_budget_period(@2, 'AUTO', 'Добавить', v_result);
commit;
end;</insert>
<update>declare
v_result varchar2(500);
begin
azeri_utils.create_new_budget_period(@2, 'AUTO', 'Добавить', v_result);
commit;
end;</update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="DeleteBudgetPeriod">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<insert>declare
v_result varchar2(500);
begin
azeri_utils.create_new_budget_period(@2, 'AUTO', 'Удалить', v_result);
commit;
end;</insert>
<update>declare
v_result varchar2(500);
begin
azeri_utils.create_new_budget_period(@2, 'AUTO', 'Удалить', v_result);
commit;
end;</update>
</writeBack>
</XML>
</WebMessage>
<WebMessage name="ChangeStatus">
<XML>
<writeBack connectionPool="Budget Planning WriteBack">
<insert>declare
v_result varchar2(500);
begin
azeri_utils.update_status(@1, '@2', '@4', 'AUTO', v_result);
end;</insert>
<update>declare
v_result varchar2(500);
begin
azeri_utils.update_status(@1, '@2', '@4', 'AUTO', v_result);
end;</update>
</writeBack>
</XML>
</WebMessage>
</WebMessageTable>
</WebMessageTables>
Комментариев нет:
Отправить комментарий