实现从retek form中点击按钮跳转到BIP系统中执行报表

今天又有一个重大发现,在form中间跳来跳去的还是比较常见的,今天发现了一个功能,是从点击form中的按钮,然后传递相关参数到bip系统并且可执行,而且也用到了一个我不太熟悉的方法,故而收藏。

点击“查看调整历史”跳转到BIP系统

图1:点击“查看调整历史”跳转到BIP系统

“查看调整历史”这个按钮中when-button-pressed触发器代码如下:

DECLARE
  pl_id  paramlist;
  label1 VARCHAR2(100) := 'p_item';
  label2 VARCHAR2(100) := NULL;
  label3 VARCHAR2(100) := NULL;
  label4 VARCHAR2(100) := NULL;
  label5 VARCHAR2(100) := NULL;
  value1  VARCHAR2(100) := :b_main.item;
  value2  VARCHAR2(100) := NULL;
  value3  VARCHAR2(100) := NULL;
  value4  VARCHAR2(100) := NULL;
  value5  VARCHAR2(100) := NULL;
  l_dummy VARCHAR2(100) := NULL;
BEGIN
  --Add_parameter(PL_id,'P_rtv_no',TEXT_PARAMETER,to_char(:B_RTV_HEAD.RTV_ORDER_NO));
  p_print_report('BIP_MOM088',
                 pl_id,
                 label1,
                 value1,
                 label2,
                 value2,
                 label3,
                 value3,
                 label4,
                 value4,
                 label5,
                 value5,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy,
                 l_dummy);
EXCEPTION
  WHEN form_trigger_failure THEN
    RAISE;
  WHEN OTHERS THEN
    emessage(SQLERRM);
    RAISE form_trigger_failure;
END;

用到的核心存储过程p_print_report代码如下:

PROCEDURE p_print_report(i_reportname IN VARCHAR2,
                         i_pl_id      IN paramlist,
                         i_label1     IN VARCHAR2,
                         i_value1     IN VARCHAR2,
                         i_label2     IN VARCHAR2,
                         i_value2     IN VARCHAR2,
                         i_label3     IN VARCHAR2,
                         i_value3     IN VARCHAR2,
                         i_label4     IN VARCHAR2,
                         i_value4     IN VARCHAR2,
                         i_label5     IN VARCHAR2,
                         i_value5     IN VARCHAR2,
                         i_label6     IN VARCHAR2,
                         i_value6     IN VARCHAR2,
                         i_label7     IN VARCHAR2,
                         i_value7     IN VARCHAR2,
                         i_label8     IN VARCHAR2,
                         i_value8     IN VARCHAR2,
                         i_label9     IN VARCHAR2,
                         i_value9     IN VARCHAR2,
                         i_label10    IN VARCHAR2,
                         i_value10    IN VARCHAR2,
                         i_label11    IN VARCHAR2,
                         i_value11    IN VARCHAR2,
                         i_label12    IN VARCHAR2,
                         i_value12    IN VARCHAR2,
                         i_label13    IN VARCHAR2,
                         i_value13    IN VARCHAR2,
                         i_label14    IN VARCHAR2,
                         i_value14    IN VARCHAR2,
                         i_label15    IN VARCHAR2,
                         i_value15    IN VARCHAR2,
                         i_label16    IN VARCHAR2,
                         i_value16    IN VARCHAR2,
                         i_label17    IN VARCHAR2,
                         i_value17    IN VARCHAR2,
                         i_label18    IN VARCHAR2,
                         i_value18    IN VARCHAR2,
                         i_label19    IN VARCHAR2,
                         i_value19    IN VARCHAR2,
                         i_label20    IN VARCHAR2,
                         i_value20    IN VARCHAR2,
                         i_label21    IN VARCHAR2,
                         i_value21    IN VARCHAR2,
                         i_label22    IN VARCHAR2,
                         i_value22    IN VARCHAR2,
                         i_label23    IN VARCHAR2,
                         i_value23    IN VARCHAR2,
                         i_label24    IN VARCHAR2,
                         i_value24    IN VARCHAR2,
                         i_label25    IN VARCHAR2,
                         i_value25    IN VARCHAR2) IS
  l_web_address       VARCHAR2(2000);
  l_webreports_server VARCHAR2(200);
  l_reports_server    VARCHAR2(200);
  l_server            VARCHAR2(200);
  l_reportname        rtk_reports.report_name%TYPE;
  l_username          user_attrib.user_id%TYPE;
  l_module            rtk_reports.module%TYPE;
  l_label1            VARCHAR2(100);
  l_label2            VARCHAR2(100);
  l_label3            VARCHAR2(100);
  l_label4            VARCHAR2(100);
  l_label5            VARCHAR2(100);
  l_label6            VARCHAR2(100);
  l_label7            VARCHAR2(100);
  l_label8            VARCHAR2(100);
  l_label9            VARCHAR2(100);
  l_label10           VARCHAR2(100);
  l_label11           VARCHAR2(100);
  l_label12           VARCHAR2(100);
  l_label13           VARCHAR2(100);
  l_label14           VARCHAR2(100);
  l_label15           VARCHAR2(100);
  l_label16           VARCHAR2(100);
  l_label17           VARCHAR2(100);
  l_label18           VARCHAR2(100);
  l_label19           VARCHAR2(100);
  l_label20           VARCHAR2(100);
  l_label21           VARCHAR2(100);
  l_label22           VARCHAR2(100);
  l_label23           VARCHAR2(100);
  l_label24           VARCHAR2(100);
  l_label25           VARCHAR2(100);
  l_value1            VARCHAR2(100);
  l_value2            VARCHAR2(100);
  l_value3            VARCHAR2(100);
  l_value4            VARCHAR2(100);
  l_value5            VARCHAR2(100);
  l_value6            VARCHAR2(100);
  l_value7            VARCHAR2(100);
  l_value8            VARCHAR2(100);
  l_value9            VARCHAR2(100);
  l_value10           VARCHAR2(100);
  l_value11           VARCHAR2(100);
  l_value12           VARCHAR2(100);
  l_value13           VARCHAR2(100);
  l_value14           VARCHAR2(100);
  l_value15           VARCHAR2(100);
  l_value16           VARCHAR2(100);
  l_value17           VARCHAR2(100);
  l_value18           VARCHAR2(100);
  l_value19           VARCHAR2(100);
  l_value20           VARCHAR2(100);
  l_value21           VARCHAR2(100);
  l_value22           VARCHAR2(100);
  l_value23           VARCHAR2(100);
  l_value24           VARCHAR2(100);
  l_value25           VARCHAR2(100);
  l_value             VARCHAR2(100);
  l_label             VARCHAR2(2000);
  l_ref_key           key_map_gl.reference_trace_id%TYPE;
  CURSOR c_report_module IS
    SELECT module
      FROM rtk_reports
     WHERE report_name = i_reportname;
BEGIN
  OPEN c_report_module;
  FETCH c_report_module
    INTO l_module;
  CLOSE c_report_module;
  l_reportname := lower(i_reportname);
  l_username   := get_application_property(username);
  -- Return report paths from server env file
  tool_env.getvar('ORACLE_RMS_REPORTS_HOST',
                  l_server);
  tool_env.getvar('ORACLE_RMS_REPORTS_SERVER',
                  l_reports_server);
  tool_env.getvar('ORACLE_RMS_RWSERVER',
                  l_webreports_server);
  l_label := '?PM_user_id=' || l_username;
  l_label1  := i_label1;
  l_label2  := i_label2;
  l_label3  := i_label3;
  l_label4  := i_label4;
  l_label5  := i_label5;
  l_label6  := i_label6;
  l_label7  := i_label7;
  l_label8  := i_label8;
  l_label9  := i_label9;
  l_label10 := i_label10;
  l_label11 := i_label11;
  l_label12 := i_label12;
  l_label13 := i_label13;
  l_label14 := i_label14;
  l_label15 := i_label15;
  l_label16 := i_label16;
  l_label17 := i_label17;
  l_label18 := i_label18;
  l_label19 := i_label19;
  l_label20 := i_label20;
  l_label21 := i_label21;
  l_label22 := i_label22;
  l_label23 := i_label23;
  l_label24 := i_label24;
  l_label25 := i_label25;
  IF i_label1 IS NOT NULL THEN
    l_label := l_label || '&' || l_label1 || '=' || i_value1;
  END IF;
  ---
  IF i_label2 IS NOT NULL THEN
    l_label := l_label || '&' || l_label2 || '=' || i_value2;
  END IF;
  ---
  IF i_label3 IS NOT NULL THEN
    l_label := l_label || '&' || l_label3 || '=' || i_value3;
  END IF;
  ---
  IF i_label4 IS NOT NULL THEN
    l_label := l_label || '&' || l_label4 || '=' || i_value4;
  END IF;
  ---
  IF i_label5 IS NOT NULL THEN
    l_label := l_label || '&' || l_label5 || '=' || i_value5;
  END IF;
  ---
  IF i_label6 IS NOT NULL THEN
    l_label := l_label || '&' || l_label6 || '=' || i_value6;
  END IF;
  ---
  IF i_label7 IS NOT NULL THEN
    l_label := l_label || '&' || l_label7 || '=' || i_value7;
  END IF;
  ---
  IF i_label8 IS NOT NULL THEN
    l_label := l_label || '&' || l_label8 || '=' || i_value8;
  END IF;
  ---
  IF i_label9 IS NOT NULL THEN
    l_label := l_label || '&' || l_label9 || '=' || i_value9;
  END IF;
  ---
  IF i_label10 IS NOT NULL THEN
    l_label := l_label || '&' || l_label10 || '=' || i_value10;
  END IF;
  ---
  IF i_label11 IS NOT NULL THEN
    l_label := l_label || '&' || l_label11 || '=' || i_value11;
  END IF;
  ---
  IF i_label12 IS NOT NULL THEN
    l_label := l_label || '&' || l_label12 || '=' || i_value12;
  END IF;
  ---
  IF i_label13 IS NOT NULL THEN
    l_label := l_label || '&' || l_label13 || '=' || i_value13;
  END IF;
  ---
  IF i_label14 IS NOT NULL THEN
    l_label := l_label || '&' || l_label14 || '=' || i_value14;
  END IF;
  ---
  IF i_label15 IS NOT NULL THEN
    l_label := l_label || '&' || l_label15 || '=' || i_value15;
  END IF;
  ---
  IF i_label16 IS NOT NULL THEN
    l_label := l_label || '&' || l_label16 || '=' || i_value16;
  END IF;
  ---
  IF i_label17 IS NOT NULL THEN
    l_label := l_label || '&' || l_label17 || '=' || i_value17;
  END IF;
  ---
  IF i_label18 IS NOT NULL THEN
    l_label := l_label || '&' || l_label18 || '=' || i_value18;
  END IF;
  ---
  IF i_label19 IS NOT NULL THEN
    l_label := l_label || '&' || l_label19 || '=' || i_value19;
  END IF;
  ---
  IF i_label20 IS NOT NULL THEN
    l_label := l_label || '&' || l_label20 || '=' || i_value20;
  END IF;
  ---
  IF i_label21 IS NOT NULL THEN
    l_label := l_label || '&' || l_label21 || '=' || i_value21;
  END IF;
  ---
  IF i_label22 IS NOT NULL THEN
    l_label := l_label || '&' || l_label22 || '=' || i_value22;
  END IF;
  ---
  IF i_label23 IS NOT NULL THEN
    l_label := l_label || '&' || l_label23 || '=' || i_value23;
  END IF;
  ---
  IF i_label24 IS NOT NULL THEN
    l_label := l_label || '&' || l_label24 || '=' || i_value24;
  END IF;
  ---
  IF i_label25 IS NOT NULL THEN
    l_label := l_label || '&' || l_label25 || '=' || i_value25;
  END IF;
  ---
  IF l_reportname IN ('fintrandb',
                      'finresadb',
                      'findealdb') THEN
    l_ref_key     := i_value1;
    l_web_address := (l_webreports_server || l_module || '/' || l_reportname || '/' || l_reportname || '.xdo' || '?PM_ref_key=' || l_ref_key);
  ELSE
    l_web_address := (l_webreports_server || l_module || '/' || l_reportname || '/' || l_reportname || '.xdo' || l_label);
  END IF;
  web.show_document(l_server || l_web_address,
                    '_blank');
END;

上面的代码来自oracle retail(retek) rms系统,ebs请勿完全参考。

本文标题:实现从retek form中点击按钮跳转到BIP系统中执行报表

本文链接:http://yedward.net/?id=138

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章