How to execute report into Bex

Hi,
I have made universe and Web I report on the top of query. Then i am asked to export the report into Bex.
Can anyone please guide me how to do it.
Roma

Hi Roma,
Goto start menu->SAP Front End>SAP Business Explorer-->Query designer. Open the BEX report used in universe and execute it.
If you have access to SAP systems then you can use RSRT transaction to run BEX report.
But if you are talking about running WEB I query in BEX then it is not possible. You will have to test original BEX query only.
Regards,
Durgesh.

Similar Messages

  • Kindly send anybody a ppt on how to execute reports through Browser and Ana

    Hi all,
    I need a PPT on how to execute reports through Browser and Analyzer in version 3.5 or older to 3.5 immediatley from end user point of view. I donot have time to prepare it and has to be sumbmitted before end of the day.
    Kindly help me out by sending it [email protected] .
    Thanks in Advance.
    Anil Kumar Sharma .P

    Thank you Mr. Voodi,
    I will wait for your reply.
    Meanwhile could anybody else ,send me PPT on it.
    Thanks in Advance,
    Anil Kumar
    Message was edited by:
            Anil Kumar Sharma

  • How to convert report into alvgrid please hepl

    how to convert report into alvgrid please hepl

    BALVSD01 check this program u will know r see below code
    sample prog
    REPORT  ZMAT11                                  .
    TYPE-POOLS : slis.
    TABLES : mkpf,
             mseg,
             t001w,
             t001l.
    TYPES : BEGIN OF ty_t001w,
              werks TYPE t001w-werks,
              name1 TYPE t001w-name1,
            END OF ty_t001w,
            BEGIN OF ty_makt,
              matnr TYPE makt-matnr,
              maktx TYPE makt-maktx,
            END OF ty_makt,
            BEGIN OF ty_t001l,
              lgort TYPE t001l-lgort,
              lgobe TYPE t001l-lgobe,
            END OF ty_t001l.
    DATA :  BEGIN OF it_mat OCCURS 0,
            mblnr LIKE mseg-mblnr,
            zeile LIKE mseg-zeile,
            mjahr LIKE mseg-mjahr,
            bldat LIKE mkpf-bldat,
            budat LIKE mkpf-budat,
            bwart LIKE mseg-bwart,
            matnr LIKE mseg-matnr,
            maktx LIKE makt-maktx,
            erfmg LIKE mseg-erfmg,
            erfme LIKE mseg-erfme,
            werks LIKE mseg-werks,
            name1 LIKE t001w-name1,
            lgort LIKE mseg-lgort,
            lgobe LIKE t001l-lgobe,
            umwrk LIKE mseg-umwrk,
            name2 LIKE t001w-name1,
            umlgo LIKE mseg-umlgo,
            lgobe1 LIKE t001l-lgobe,
            END OF it_mat.
    DATA : it_t001w TYPE TABLE OF ty_t001w
                     WITH HEADER LINE,
           it_makt TYPE TABLE OF ty_makt
                   WITH HEADER LINE,
           it_t001l TYPE TABLE OF ty_t001l
                    WITH HEADER LINE.
    DATA : ls_layout TYPE slis_layout_alv,
           it_fcat TYPE slis_t_fieldcat_alv ,
           wa_fcat TYPE slis_fieldcat_alv,
           lh TYPE slis_t_listheader,
           ls TYPE slis_listheader,
           it_events TYPE slis_t_event  ,
           ls_event TYPE slis_alv_event ,
           w_var TYPE i.
    DATA : l_date(10).
    DATA : l_date1(20),
           ztabix LIKE sy-tabix.
    DATA : l_repid LIKE trdir-name.
    l_repid = 'ZMAT11'.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : s_werks FOR mseg-werks,
                     s_lgort FOR mseg-lgort,
                     s_umwrk FOR mseg-umwrk,
                     s_umlgo FOR mseg-umlgo,
                     s_bwart FOR mseg-bwart,
                     s_budat FOR mkpf-budat,
                     s_mjahr FOR mkpf-mjahr.
    SELECTION-SCREEN END OF BLOCK b1.
    AT SELECTION-SCREEN.
      SELECT SINGLE * FROM t001w INTO t001w
                              WHERE werks IN s_werks.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Supplying Plant'.
      ENDIF.
      SELECT SINGLE * FROM t001w INTO t001w
                              WHERE werks IN s_umwrk.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Receiving Plant'.
      ENDIF.
      SELECT SINGLE * FROM t001l INTO t001l
                              WHERE lgort IN s_lgort.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Supplying St.Loc'.
      ENDIF.
      SELECT SINGLE * FROM t001l INTO t001l
                              WHERE lgort IN s_umlgo.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Receiving St.Loc'.
      ENDIF.
    START-OF-SELECTION.
      ls-typ = 'H'.
      ls-info = 'Material Document List'.
      APPEND ls TO lh.
      ls-typ = 'S'.
      WRITE: sy-datum TO l_date USING EDIT MASK '__/__/____'.
      CONCATENATE 'DATE :' l_date INTO l_date1 SEPARATED BY space.
      ls-info = l_date1.
      APPEND ls TO lh.
      PERFORM field_cat.
      PERFORM f001_get_data.
    END-OF-SELECTION.
      IF it_mat[] IS INITIAL.
        MESSAGE i000(8i) WITH 'No data Found'(m01).
        EXIT.
      ENDIF.
      PERFORM process_data.
      PERFORM display_data.
    *&      Form  f001_get_data
          text
    -->  p1        text
    <--  p2        text
    FORM f001_get_data .
      SELECT amblnr azeile amjahr abwart a~matnr
               aerfmg aerfme awerks algort aumwrk aumlgo
               b~budat
               b~bldat INTO CORRESPONDING FIELDS OF TABLE it_mat
                       FROM mseg AS a
                 INNER JOIN mkpf AS b
                    ON amblnr = bmblnr
                   AND amjahr = bmjahr
                 CLIENT SPECIFIED
              WHERE a~mandt EQ sy-mandt
                AND a~werks IN s_werks
                AND a~lgort IN s_lgort
                AND a~umwrk IN s_umwrk
                AND a~umlgo IN s_umlgo
                AND a~bwart IN s_bwart
                AND b~budat IN s_budat
                AND b~mjahr IN s_mjahr.
      IF sy-subrc = 0.
        SELECT matnr maktx INTO TABLE it_makt FROM makt
        CLIENT SPECIFIED
        FOR ALL ENTRIES IN it_mat
        WHERE mandt EQ sy-mandt
          AND matnr = it_mat-matnr.
      ENDIF.
      SELECT werks name1 INTO TABLE it_t001w FROM t001w
      CLIENT SPECIFIED
      WHERE mandt EQ sy-mandt.
      IF sy-subrc <> 0.
        MESSAGE i000(8i) WITH 'No Plant Found'(m02).
      ENDIF.
      SELECT lgort lgobe INTO TABLE it_t001l FROM t001l
      CLIENT SPECIFIED
      WHERE mandt EQ sy-mandt.
      IF sy-subrc <> 0.
        MESSAGE i000(8i) WITH 'No Storage Location Found'(m03).
      ENDIF.
    ENDFORM.                    " f001_get_data
    *&      Form  field_cat
          text
    -->  p1        text
    <--  p2        text
    FORM field_cat .
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'MBLNR'.
      wa_fcat-key = 'X'.
      wa_fcat-hotspot = 'X'.
      wa_fcat-ref_fieldname = 'MBLNR'.
      wa_fcat-ref_tabname = 'MSEG'.
      wa_fcat-seltext_m = 'Material Doc'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'ZEILE'.
      wa_fcat-ref_fieldname = 'ZEILE'.
      wa_fcat-ref_tabname = 'MSEG'.
      wa_fcat-seltext_m = 'Item No'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'MJAHR'.
      wa_fcat-ref_fieldname = 'MJAHR'.
      wa_fcat-ref_tabname = 'MSEG'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'BWART'.
      wa_fcat-ref_fieldname = 'BWART'.
      wa_fcat-ref_tabname = 'MSEG'.
      wa_fcat-seltext_m = 'Mvmt Type'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'BLDAT'.
      wa_fcat-ref_fieldname = 'BLDAT'.
      wa_fcat-ref_tabname = 'MKPF'.
      wa_fcat-seltext_m = 'Document Date'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'BUDAT'.
      wa_fcat-ref_fieldname = 'BUDAT'.
      wa_fcat-ref_tabname = 'MKPF'.
      wa_fcat-seltext_m = 'Posting Date'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'MATNR'.
      wa_fcat-ref_fieldname = 'MATNR'.
      wa_fcat-ref_tabname = 'MSEG'.
      wa_fcat-seltext_m = 'Material No'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'MAKTX'.
      wa_fcat-ref_fieldname = 'MAKTX'.
      wa_fcat-ref_tabname = 'MAKT'.
      wa_fcat-seltext_m = 'Material Description'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'ERFMG'.
      wa_fcat-ref_fieldname = 'ERFMG'.
      wa_fcat-ref_tabname = 'MSEG'.
      wa_fcat-seltext_m = 'Quantity'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'ERFME'.
      wa_fcat-ref_fieldname = 'ERFME'.
      wa_fcat-ref_tabname = 'MSEG'.
      wa_fcat-seltext_m = 'Uom'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'WERKS'.
      wa_fcat-seltext_m = 'Supplying Plant'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'NAME1'.
      wa_fcat-seltext_m = 'S.Plnt Desc.'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'LGORT'.
      wa_fcat-seltext_m = 'Supplying St.Loc'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'LGOBE'.
      wa_fcat-seltext_m = 'Su.St.Loc Desc.'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'UMWRK'.
      wa_fcat-seltext_m = 'Receiving Plant'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'NAME2'.
      wa_fcat-seltext_m = 'R.Plnt Desc.'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'UMLGO'.
      wa_fcat-seltext_m = 'Receiving St.Loc'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_MAT'.
      wa_fcat-fieldname = 'LGOBE1'.
      wa_fcat-seltext_m = 'Re.St.Loc Desc.'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
    ENDFORM.                    " field_cat
    *&      Form  process_data
          text
    -->  p1        text
    <--  p2        text
    FORM process_data .
      LOOP AT it_mat.
        ztabix = sy-tabix.
        READ TABLE it_makt WITH KEY matnr = it_mat-matnr.
        IF sy-subrc = 0.
          it_mat-maktx = it_makt-maktx.
        ENDIF.
        IF it_mat-bwart+2(1) = '2'.
          it_mat-erfmg = - ( it_mat-erfmg ).
        ENDIF.
        READ TABLE it_t001w WITH KEY werks = it_mat-werks.
        IF sy-subrc = 0.
          it_mat-name1 = it_t001w-name1.
        ENDIF.
        READ TABLE it_t001w WITH KEY werks = it_mat-umwrk.
        IF sy-subrc = 0.
          it_mat-name2 = it_t001w-name1.
        ENDIF.
        READ TABLE it_t001l WITH KEY lgort = it_mat-lgort.
        IF sy-subrc = 0.
          it_mat-lgobe = it_t001l-lgobe.
        ENDIF.
        READ TABLE it_t001l WITH KEY lgort = it_mat-umlgo.
        IF sy-subrc = 0.
          it_mat-lgobe1 = it_t001l-lgobe.
        ENDIF.
        MODIFY it_mat INDEX ztabix .
      ENDLOOP.
    ENDFORM.                    " process_data
    *&      Form  display_data
          text
    -->  p1        text
    <--  p2        text
    FORM display_data .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
              I_INTERFACE_CHECK                 = ' '
              I_BYPASSING_BUFFER                = ' '
              I_BUFFER_ACTIVE                   = ' '
               i_callback_program                = l_repid
              I_CALLBACK_PF_STATUS_SET          = ' '
               i_callback_user_command           = 'LINE'
               i_callback_top_of_page            = 'TOP'
              I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
              I_CALLBACK_HTML_END_OF_LIST       = ' '
              I_STRUCTURE_NAME                  =
              I_BACKGROUND_ID                   = ' '
              I_GRID_TITLE                      =
              I_GRID_SETTINGS                   =
              IS_LAYOUT                         =
               it_fieldcat                       = it_fcat
              IT_EXCLUDING                      =
              IT_SPECIAL_GROUPS                 =
              IT_SORT                           =
              IT_FILTER                         =
              IS_SEL_HIDE                       =
              I_DEFAULT                         = 'X'
              I_SAVE                            = ' '
              IS_VARIANT                        =
              it_events                         =
              IT_EVENT_EXIT                     =
              IS_PRINT                          =
              IS_REPREP_ID                      =
              I_SCREEN_START_COLUMN             = 0
              I_SCREEN_START_LINE               = 0
              I_SCREEN_END_COLUMN               = 0
              I_SCREEN_END_LINE                 = 0
              IT_ALV_GRAPHICS                   =
              IT_HYPERLINK                      =
              IT_ADD_FIELDCAT                   =
              IT_EXCEPT_QINFO                   =
              I_HTML_HEIGHT_TOP                 =
              I_HTML_HEIGHT_END                 =
            IMPORTING
              E_EXIT_CAUSED_BY_CALLER           =
              ES_EXIT_CAUSED_BY_USER            =
              TABLES
                t_outtab                          = it_mat
            EXCEPTIONS
              PROGRAM_ERROR                     = 1
              OTHERS                            = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " display_data
    *&      Form  TOP
          text
    FORM top.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = lh
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP

  • How to execute report in Background from Dialog process?

    How, or what is the best way, to lauch an executable program (report) into the background from a dialog program (dynpro)?
    <b>Example:</b>  The SUBMIT...AND RETURN still executes the called program before it returns control to the calling program.  I just want the report to be kicked off and the dialog to continue as normal.  I do not want the report execution time to affect the dialog process.
    Thanks in advance for your time.

    Hi Nablan, I'm also trying to do parallel processing and created a function module that kicks of another report program.
    However, the process doesn't seem to work. The Main program runs from start to finish but the called program in the function module doesn't seem to run. When I used the option STARTING NEW TASK task name the code ran but in the foreground. I don't want to use this option as it runs in the foreground and SAP limits one to six sessions. Is there something I'm missing in the attributes of the function module I created. Currently the attributes are: Processing type Remote enable module and it's set to start immediately. I had used Normal function module initially but this did not work with the STARTING NEW TASK task name option.
    Below are the codes segements I used.
    In my main program I have the following code segement
    CALL FUNCTION 'Z_CA_PROG_CALL'
      IN BACKGROUND TASK
      EXPORTING
        zprogram            = 'ZCA_TEST1'
      EXCEPTIONS
        program_call_failed = 1
        invalid             = 2
        OTHERS              = 3.
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    COMMIT WORK.
    In the function module I have the following code.
    FUNCTION z_ca_prog_call.
    ""Local interface:
    *"  IMPORTING
    *"     VALUE(ZPROGRAM) LIKE  ZCA_INTERFPROG-ZPROGRAM
    *"  EXCEPTIONS
    *"      PROGRAM_CALL_FAILED
    *"      INVALID
      SUBMIT (zprogram).
      IF sy-subrc <> 0.
        CASE sy-subrc.
          WHEN 1.
            RAISE program_call_failed.
          WHEN OTHERS.
            RAISE invalid.
        ENDCASE.
      ENDIF.
    ENDFUNCTION.

  • How to upload reports into OBIEE

    I have a zipped file containing many reports for OBIEE (ver 11.1.1.6.2).
    My OBIEE is running on Linux.
    They are specifically for Oracle Utilities.
    How do I load them into OBIEE?
    thanks

    Those have not helped. But I thank you
    for suggesting something.
    So more information for everyone...
    I have an rtf file, which is the report definition and its associated xdm file
    if I log into obiee and proceed to create new report. I then select use an existing
    data model. When the next popup shows, i select cancel.
    at this point i am at the untitled data model screen. I select the upload rtf
    on bottom left corner.
    i then can browse to my folder with all report definitions, and data models
    and select one.
    I then select rtf in the first drop down, english in the next dropdown
    and put a name in the layout name. I can then save the report into my shared
    folder and save it.
    Now, if i try to create new data model i dont have the option of uploading
    so i have navigated to catalog then pick the folder i want my data model to go into.
    I then can upload here, browse to the directory and pick the xdm file.
    it does in fact upload, however it is not associated with a data model(doenst know it is)
    and show up as an external binary file(hover over it once uploaded).
    Does anyone know how to change the association to a data model?
    or just upload a data model??
    thanks in advance

  • How to embed reports into proposals.. ?

    Hi All,
    I followed the steps as per the bookshelf "http://supportweb.siebel.com/support/private/content/Bookshelf/78Siebel/books/CorProPre/CorProPre_Proposals10.html" and embedded the report section in to my proposal template section. but the report is not displaying in the generated proposal document and "Error in Report Generation" error is populated in relavant report sections..
    Report executable exists in Siebel Reports\ENU folder.
    Please guide me how to fix this.
    Thanks,
    Sriram

    Does the report have any records to display ?
    When you compiled the report did you test it against a siebel record to make sure it displays OK ?
    Does your proposal have conditions against it ? it make be that its got nothing to display (for instance a condition to only pick up the Active Quote , but there are no Active Quotes ).
    Is the report on All the Siebel Servers ?
    Check those things .....

  • How to Convert Report into Excel Sheet when Sending Mail.

    Dear Friends,
    i want to send mail to HOD of Product with an Excel Sheet .
    i want to send Pending Issue details to HOD in Excel Sheet attachment .
    here i have pending issue report now i need to send it in Excel Sheet attachment .
    i have table where i have manage Product ID and HOD OF PRODUCT.
    CREATE TABLE  "MAP_USER_PRODUCT_DTL"
       (     "ID" NUMBER NOT NULL ENABLE,
         "PRODUCT_ID"NUMBER,
         "USER_ID" VARCHAR2(5) NOT NULL ENABLE,
         "HOD_PROD" VARCHAR2(100)========================================Value is Y OR N IF HOD then Y else N
         CONSTRAINT "MAP_USER_PRODUCT_DTL_PK" PRIMARY KEY ("ID") ENABLE
    /i have one more table where all complete issue detail insert.
    CREATE TABLE  "CRM_ISSUE_PROBLEM"
       (     "ID" NUMBER,
         "SUBJECT" VARCHAR2(255) NOT NULL ENABLE,
         "CLIENT_ID" NUMBER,
         "ASSIGNED_TO_ID" VARCHAR2(100),
         "ASSIGNED_ON" DATE,
         "DESCRIPTION" VARCHAR2(4000),
         "PRODUCT_ID" NUMBER NOT NULL ENABLE,
         "STATUS_ID" NUMBER NOT NULL ENABLE,
          CONSTRAINT "CRM_ISSUE_PROBLEM_PK" PRIMARY KEY ("ID") ENABLE
    Here STATUS_ID is Like Pending ISsue,Open Issue and Close Issue .i want to send mail to HOD with Pending Issue Report convert into Excel Sheet and send to HOD?
    How can i do this.
    Thanks
    Edited by: Vedant on Oct 12, 2011 12:36 AM
    Edited by: Vedant on Oct 12, 2011 2:22 AM

    Hello Vedant,
    Would it suffice if you send a CSV file?
    If yes, then see following code.. run the code under APEX > Home > SQL Workshop > SQL Commands
    DECLARE
            ln_id NUMBER;
            lc_clob CLOB;
         lb_blob BLOB;
         li_in PLS_INTEGER := 1;
         li_out PLS_INTEGER := 1;
         li_lang PLS_INTEGER := 0;
         li_warning PLS_INTEGER := 0;
         lv_mail_rcpts VARCHAR2(2000) := '[email protected]';
         lv_mail_from VARCHAR2(100) := '[email protected]';     
           lv_clmn_separator VARCHAR2(1) := ',';
    BEGIN
         -- Build file content as CLOB
      -- Replace with your query
         FOR i IN (select object_id A, object_name B, object_type C, status D, temporary E, generated F, secondary G,namespace H from user_objects where rownum < 10)               
         LOOP
        IF lc_clob IS NULL THEN
          lc_clob := i.A||lv_clmn_separator||i.B||lv_clmn_separator||i.C||lv_clmn_separator||i.D||lv_clmn_separator||i.E||lv_clmn_separator||i.F||lv_clmn_separator||i.G||lv_clmn_separator||i.H;
        ELSE
          lc_clob := lc_clob||CHR(10)||i.A||lv_clmn_separator||i.B||lv_clmn_separator||i.C||lv_clmn_separator||i.D||lv_clmn_separator||i.E||lv_clmn_separator||i.F||lv_clmn_separator||i.G||lv_clmn_separator||i.H;
        END IF;
         END LOOP; 
         -- Convert CLOB to BLOB
         DBMS_LOB.CREATETEMPORARY(lb_blob,TRUE);
         DBMS_LOB.convertToBlob(lb_blob,lc_clob,DBMS_LOB.LOBMAXSIZE,li_in,li_out,DBMS_LOB.DEFAULT_CSID,li_lang,li_warning);
         -- Send mail
         ln_id:= APEX_MAIL.SEND(
           p_to        => lv_mail_rcpts,
                 p_from      => lv_mail_from,
                 p_subj      => 'Subject Goes here',
                 p_body      => 'Body goes here'
           -- add CSV file as attachment
         APEX_MAIL.ADD_ATTACHMENT
           p_mail_id   => ln_id,
           p_attachment => lb_blob,
           p_filename   => 'filename.csv',
           p_mime_type  => 'application/csv'
      -- push mail queue
      APEX_MAIL.PUSH_QUEUE;
         -- empty temporary space
         DBMS_LOB.FREETEMPORARY ( lob_loc =>  lb_blob);       
         COMMIT;
    END;Regards,
    Hari

  • How to bring InfoAreas into BEx Analyzer

    Hi Experts,
    Q1: I have a total of 24 InfoAreas in InfoProvider(Admn Workbench), but I do see only 7 of them in Open Query dialog box of BEx Analyzer. How do I bring in a particular InfoArea(and all related objects) into Open Query Dialog box.
    Q2: I want to see all the queries in Transport Connection's Query Elements(for selection to transport). I have 7 queries in BEx, but I could see only 2 in Transport Connection.
    Please help.

    Hi,
    You can only see those for which you have queries created...to see all, click on the new query icon (blank page).
    You can click on Select Objects and look for the other queries. The list is just like some 'history' viewing.
    Hope this helps...

  • How to download report into excel using button?

    Hello Friends,
    I am creating one simple classical report.
    Now, I put one "Download" button on the report output screen.
    I want to do is....
    When I press this download button, One pop-up should be called and should ask for where to download on local PC.and downloaded file should be in excel.
    How to do this?
    Regards,
    RH

    hi..
    First explain that, we hav a standard functionality in ALV to download into EXCEL to your FUNCTIONAL CONSULTANT or to your CTM. It is our duty to explain the technical functionality and make use of it wisely. There's nothing wrong in expressing your thoughts regarding requirement. And dont blindly accept requirements and try to interact with FC about it. To me, using a button to download to excel in ALV report is not wise.
    regards,
    Padma

  • Dynamic CRM 2013 Online how to execute Report, generate PDF and email

    Dear All,
    I am using Dynamic CRM 2013 online. For quote, I have workflow and Dialogue processes for review process. On approval, I want the system to generate a PDF of quote report, attach the PDF and email it to the Customer.
    Better I would like, When approver, clicks on the approve button, the system should auto generate a PDF of quote report, attach the PDF and email it to the Customer, without any further input from the user. If its not possible, I may have to put button on
    quote form.
    I am using the attached code, but facing various issues.
    1. Under prepare the SOAP Message coding part, I am not sure what should be the below URL for CRM 2013 Online?
    xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    2. What should be the emailid here? Is it Recepient Contact id(Guid) ?
    var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
    alert("emailid" + emailid.toString());
    3. Using this code, not able to create Entity for "ActivityMimeAttachment", I am getting newEntity as undefined.
    Below is the code I am using. Please check and help me out, where I am going wrong. Let me know if any better way to implement it. At present, I have put one button on quote form, on click event, below code will get executed.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script type="text/javascript">
    var Xrm;
    if (window.opener) { Xrm = window.opener.Xrm; }
    else if (window.parent) { Xrm = window.parent.Xrm; }
    function getReportingSession() {
    var reportName = "Quotation_Report"; //set this to the report you are trying to download
    var reportId = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
    var recordid = Xrm.Page.data.entity.getId();
    // recordid = recordid.substring(1, 37); //getting rid of curly brackets
    alert(recordid);
    var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
    var retrieveEntityReq = new XMLHttpRequest();
    retrieveEntityReq.open("POST", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    retrieveEntityReq.send("id=%7B" + reportId + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false");
    var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
    var ret = new Array();
    ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
    x = retrieveEntityReq.responseText.indexOf("ControlID=");
    ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
    return ret;
    function createEntity(ent, entName, upd) {
    var jsonEntity = JSON.stringify(ent);
    var createEntityReq = new XMLHttpRequest();
    var ODataPath = Xrm.Page.context.getServerUrl() + "XRMServices/2011/OrganizationData.svc";
    createEntityReq.open("POST", ODataPath + "/" + entName + "Set" + upd, false);
    createEntityReq.setRequestHeader("Accept", "application/json");
    createEntityReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    createEntityReq.send(jsonEntity);
    var newEntity = JSON.parse(createEntityReq.responseText).d;
    alert("new entity" + newEntity);
    return newEntity;
    function createAttachment() {
    var params = getReportingSession();
    var recordid = Xrm.Page.data.entity.getId();
    alert("recordid " + recordid);
    var orgName = Xrm.Page.context.getOrgUniqueName();
    var userID = Xrm.Page.context.getUserId();
    //create email record
    // Prepare the SOAP message.
    var xml = "<?xml version='1.0' encoding='utf-8'?>" +"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +
    " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +
    " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
    "<soap:Header>" +
    "</soap:Header>" +
    "<soap:Body>" +
    "<Create xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
    "<entity xsi:type='email'>" +
    "<regardingobjectid type='quote'>" + recordid + "</regardingobjectid>" +
    "<subject>" + "Email with Attachment4" + "</subject>" +
    "</entity>" +
    "</Create>" +
    "</soap:Body>" +
    "</soap:Envelope>";
    // Prepare the xmlHttpObject and send the request.
    var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
    xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Create");
    xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xHReq.setRequestHeader("Content-Length", xml.length);
    xHReq.send(xml);
    // Capture the result
    var resultXml = xHReq.responseXML;
    // alert("resultXml " + resultXml);
    // Check for errors.
    var errorCount = resultXml.selectNodes('//error').length;
    if (errorCount != 0) {
    alert("ERROR");
    var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
    alert(msg);
    var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
    alert("emailid" + emailid.toString());
    //var emailid = userID;
    var post = Object();
    post.Body = encodePdf(params);
    var email = new Array();
    email[0] =new Object();
    email[0].id = emailid;
    email[0].entityType ='email';
    post.Subject ="File Attachment";
    post.AttachmentNumber = 1;
    post.FileName ="Report.pdf";
    post.MimeType ="application/pdf";
    post.ObjectId = Object();
    post.ObjectId.LogicalName ="email";
    post.ObjectId.Id = email[0].id;
    post.ObjectTypeCode ="email";
    alert(post.ObjectId.Id);
    createEntity(post,"ActivityMimeAttachment", "");
    alert("created successfully");
    email.Subject = "Your Order";
    //Set The current order as the Regarding object
    email.RegardingObjectId = {
    Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
    //Create Email Activity
    SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
    // Email Call Back function
    function EmailCallBack(result) {
    email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
    var activityPartyFrom = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyFrom.PartyId = {
    Id: customerId, // id of entity you want to associate this activity with.
    LogicalName: "contact"
    // Set the "activity" of the ActivityParty
    activityPartyFrom.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
    // Create the from ActivityParty for the email
    SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
    var activityPartyTo = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyTo.PartyId = {
    Id: ownerId, // id of entity you want to associate this activity with.
    LogicalName: "systemuser"
    // Set the "activity" of the ActivityParty
    activityPartyTo.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity). activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
    // Create the from ActivityParty
    SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
    //ActivityParty From Callback
    function ActivityPartyFromCallBack(result) {
    //ActivityParty To Callback
    function ActivityPartyToCallBack(result) {
    var StringMaker = function () {
    this.parts = [];
    this.length = 0;
    this.append = function (s) {
    this.parts.push(s);
    this.length += s.length;
    this.prepend = function (s) {
    this.parts.unshift(s);
    this.length += s.length;
    this.toString = function () {
    return this.parts.join('');
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function encode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    while (i < input.length) {
    chr1 = input[i++];
    chr2 = input[i++];
    chr3 = input[i++];
    enc1 = chr1 >> 2;
    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
    enc4 = chr3 & 63;
    if (isNaN(chr2)) {
    enc3 = enc4 = 64;
    else if (isNaN(chr3)) {
    enc4 = 64;
    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
    return output.toString();
    var bdy = new Array();
    var bdyLen = 0;
    function concat2Bdy(x) {
    bdy[bdyLen] = x;
    bdyLen++;
    function encodePdf(params) {
    bdy = new Array();
    bdyLen = 0;
    var retrieveEntityReq = new XMLHttpRequest();
    var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] + "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] + "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
    retrieveEntityReq.open("GET", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.send();
    BinaryToArray(retrieveEntityReq.responseBody);
    return encode64(bdy);
    </SCRIPT>
    <SCRIPT type=text/vbscript>
    Function BinaryToArray(Binary)
    Dim i
    ReDim byteArray(LenB(Binary))
    For i = 1 To LenB(Binary)
    byteArray(i-1) = AscB(MidB(Binary, i, 1))
    concat2Bdy(AscB(MidB(Binary, i, 1)))
    Next
    BinaryToArray = byteArray
    End Function
    </SCRIPT>
    </head>
    <body>
    <input type="button" onclick="createAttachment();" value="Attach Report" />
    </body>
    </html>
    Thanks. and waiting for your valuable comments.
    - Mittal

    Hello,
    Yes, I was able to make my code working as below. Tested on CRM online 2013.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    <script type="text/javascript">
    if (typeof (SDK) == "undefined")
    { SDK = { __namespace: true }; }
    SDK.JScriptRESTDataOperations = {
    _context: function () {
    if (typeof GetGlobalContext != "undefined")
    { return GetGlobalContext(); }
    else {
    if (typeof Xrm != "undefined") {
    return Xrm.Page.context;
    else { return new Error("Context is not available."); }
    _getServerUrl: function () {
    var serverUrl = this._context().getServerUrl()
    if (serverUrl.match(/\/$/)) {
    serverUrl = serverUrl.substring(0, serverUrl.length - 1);
    return serverUrl;
    _ODataPath: function () {
    return this._getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
    _errorHandler: function (req) {
    return new Error("Error : " +
    req.status + ": " +
    req.statusText + ": " +
    JSON.parse(req.responseText).error.message.value);
    _dateReviver: function (key, value) {
    var a;
    if (typeof value === 'string') {
    a = /Date\(([-+]?\d+)\)/.exec(value);
    if (a) {
    return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
    return value;
    Create: function (object, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 201) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send(JSON.stringify(object));
    Retrieve: function (id, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("GET", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 200) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    Update: function (id, object, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("X-HTTP-Method", "MERGE");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 204 || this.status == 1223) {
    successCallback();
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send(JSON.stringify(object));
    Delete: function (id, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("X-HTTP-Method", "DELETE");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 204 || this.status == 1223) {
    successCallback();
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    RetrieveMultiple: function (type, filter, successCallback, errorCallback) {
    if (filter != null) {
    filter = "?" + filter;
    else { filter = ""; }
    var req = new XMLHttpRequest();
    req.open("GET", this._ODataPath() + type + "Set" + filter, true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 200) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d.results);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    __namespace: true
    </script>
    <script type="text/javascript">
    //Create Email and link it with Order as Regarding field
    var Xrm;
    var email = new Object();
    var ownerID = "";
    var CustomerId = "";
    if (window.opener) { Xrm = window.opener.Xrm; }
    else if (window.parent) { Xrm = window.parent.Xrm; }
    //Get ownerid who send email of quotation to customer
    function GetOwnerID() {
    var owner = Xrm.Page.getAttribute("ownerid").getValue();
    ownerID = owner[0].id;
    var ownerName = owner[0].name;
    var entityType = owner[0].entityType;
    GetToEmailGUID();
    //Get customerid who receive email of quotation from owner
    function GetToEmailGUID() {
    var Customer = Xrm.Page.getAttribute('customerid').getValue();
    CustomerId = Customer[0].id;
    var CustomerName = Customer[0].name;
    var entityType = Customer[0].entityType;
    //if CustomerId is type of "Account" then get Primary Contact id of that account
    if (entityType == "account") {
    var contact = Xrm.Page.getAttribute("customerid").getValue();
    if (contact === null) return;
    var serverUrl = Xrm.Page.context.getClientUrl();
    var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" + contact[0].id + "')?$select=PrimaryContactId";
    var req = new XMLHttpRequest();
    req.open("GET", oDataSelect, false);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json;charset=utf-8");
    req.onreadystatechange = function () {
    if (req.readyState === 4) {
    if (req.status === 200) {
    var retrieved = JSON.parse(req.responseText).d;
    CustomerId = retrieved.PrimaryContactId.Id;
    else {
    alert(this.statusText);
    req.send();
    function CreateEmail() {
    GetOwnerID();
    email.Subject = "Email with Report Attachment";
    //Set The current order as the Regarding object
    email.RegardingObjectId = {
    Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
    //Create Email Activity
    SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
    // Email Call Back function
    function EmailCallBack(result) {
    email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
    var activityPartyFrom = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyFrom.PartyId = {
    Id: CustomerId, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
    LogicalName: "contact"
    // Set the "activity" of the ActivityParty
    activityPartyFrom.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
    // Create the from ActivityParty for the email
    SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
    var activityPartyTo = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyTo.PartyId = {
    Id: ownerID, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
    LogicalName: "systemuser"
    // Set the "activity" of the ActivityParty
    activityPartyTo.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
    // Create the from ActivityParty
    SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
    //ActivityParty From Callback
    function ActivityPartyFromCallBack(result) {
    //ActivityParty To Callback
    function ActivityPartyToCallBack(result) {
    GetReportId('Quotation');
    //Create attachment for the created email
    function CreateEmailAttachment() {
    //get reporting session and use the params to convert a report in PDF
    var params = getReportingSession();
    //Email attachment parameters
    var activitymimeattachment = Object();
    activitymimeattachment.ObjectId = Object();
    activitymimeattachment.ObjectId.LogicalName = "email";
    activitymimeattachment.ObjectId.Id = email.ActivityId;
    activitymimeattachment.ObjectTypeCode = "email",
    activitymimeattachment.Subject = "File Attachment";
    activitymimeattachment.Body = encodePdf(params);
    activitymimeattachment.FileName = "Report.pdf";
    activitymimeattachment.MimeType = "application/pdf";
    //Attachment call
    SDK.JScriptRESTDataOperations.Create(activitymimeattachment, "ActivityMimeAttachment", ActivityMimeAttachmentCallBack, function (error) { alert(error.message); });
    //ActivityMimeAttachment CallBack function
    function ActivityMimeAttachmentCallBack(result) {
    var features = "location=no,menubar=no,status=no,toolbar=no,resizable=yes";
    var width = "800px";
    var height = "600px";
    window.open(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", features);
    // To open window which works in outlook and IE both
    //openStdWin(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", width, height, features);
    //This method will get the reportId based on a report name that will be used in getReportingSession() function
    function GetReportId(reportName) {
    var oDataSetName = "ReportSet";
    var columns = "ReportId";
    var filter = "Name eq '" + reportName + "'";
    retrieveMultiple(oDataSetName, columns, filter, onSuccess);
    function retrieveMultiple(odataSetName, select, filter, successCallback) {
    var serverUrl = Xrm.Page.context.getServerUrl();
    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
    var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";
    if (select) {
    odataUri += "$select=" + select + "&";
    if (filter) {
    odataUri += "$filter=" + filter;
    $.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    url: odataUri,
    beforeSend: function (XMLHttpRequest) {
    XMLHttpRequest.setRequestHeader("Accept", "application/json");
    success: function (data) {
    if (successCallback) {
    if (data && data.d && data.d.results) {
    successCallback(data.d.results);
    else if (data && data.d) {
    successCallback(data.d);
    else {
    successCallback(data);
    error: function (XmlHttpRequest, errorThrown) {
    if (XmlHttpRequest && XmlHttpRequest.responseText) {
    alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
    function onSuccess(data) {
    reportId = data[0].ReportId.replace('{', ").replace('}', ");
    CreateEmailAttachment(); // Create Email Attachment
    //Gets the report contents
    function getReportingSession() {
    var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
    var retrieveEntityReq = new XMLHttpRequest();
    var Id = Xrm.Page.data.entity.getId();
    var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
    quotationGUID = quotationGUID.replace('}', "");
    var reportName = "Quotation"; //set this to the report you are trying to download
    var reportID = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
    var rptPathString = ""; //set this to the CRMF_Filtered parameter
    var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
    retrieveEntityReq.open("POST", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" +
    reportName + "&isScheduledReport=false&p:CRMAF_Filteredquote=" + strParameterXML;
    //remove the part starting from &p:salesorderid if your report has no parameters
    retrieveEntityReq.send(rptPathString);
    var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
    var ret = new Array();
    ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
    x = retrieveEntityReq.responseText.indexOf("ControlID=");
    ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
    return ret;
    var bdy = new Array();
    var bdyLen = 0;
    function concat2Bdy(x) {
    bdy[bdyLen] = x;
    bdyLen++;
    function encodePdf(params) {
    bdy = new Array();
    bdyLen = 0;
    var retrieveEntityReq = new XMLHttpRequest();
    var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] +
    "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] +
    "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
    retrieveEntityReq.open("GET", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.send();
    BinaryToArray(retrieveEntityReq.responseBody);
    return encode64(bdy);
    var StringMaker = function () {
    this.parts = [];
    this.length = 0;
    this.append = function (s) {
    this.parts.push(s);
    this.length += s.length;
    this.prepend = function (s) {
    this.parts.unshift(s);
    this.length += s.length;
    this.toString = function () {
    return this.parts.join('');
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function encode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    while (i < input.length) {
    chr1 = input[i++];
    chr2 = input[i++];
    chr3 = input[i++];
    enc1 = chr1 >> 2;
    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
    enc4 = chr3 & 63;
    if (isNaN(chr2)) {
    enc3 = enc4 = 64;
    } else if (isNaN(chr3)) {
    enc4 = 64;
    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
    return output.toString();
    </script>
    <script type="text/vbscript">
    Function BinaryToArray(Binary)
    Dim i
    ReDim byteArray(LenB(Binary))
    For i = 1 To LenB(Binary)
    byteArray(i-1) = AscB(MidB(Binary, i, 1))
    concat2Bdy(AscB(MidB(Binary, i, 1)))
    Next
    BinaryToArray = byteArray
    End Function
    </script>
    </head>
    <body>
    <input type="button" onclick="CreateEmail();" value="Attach Report" />
    </body>
    </html>
    Thank you,
    Mittal.

  • How to execute report RLBEST00

    Hi All,
    Can anyone please help me to execute the standard report RLBEST00. It is very urgent....
    Thanks in advance.
    Regards,
    Akanksha

    Dear Akansha,
    Go to T-Code SE38. In the program type in RLBEST00. Press F8. This will ask for certain detials.Fill in the details and again press F8.
    Hope this helps you.
    Do award points if you found them useful.
    Regards,
    Rakesh

  • How to report in bex

    Hi all,
    How to prepare reports using bex.
    please send to:
    [email protected]

    Hi,
    Please try this link
    http://help.sap.com/saphelp_sem40bw/helpdata/EN/ba/45583ca544eb51e10000000a114084/frameset.htm
    Hope it will be helpful to you

  • Execute report RMMVRZ00 with variants

    Hi Experts,
    Could someone explain how to execute report RMMVRZ00 with variants.
    Report RMMVRZ00 is similar to transaction MM60.
    I am checking how to execute this report with variants.
    Thank you

    The following link would help in creating variants
    [Creating Report Variants|http://help.sap.com/saphelp_45b/helpdata/en/73/69ee7d55bb11d189680000e829fbbd/content.htm]
    If you have any specific requirement with variant, please post again

  • How to save BI report into normal excel sheet in Bex Analyzer

    Hi Experts,
    version of  Bex Analyzer:
    Bi addon 7.x
    support package 7,patch 1
    version 7004.4.0.5
    excel-2003
    when i am trying to save the report into excel in Bex Analyzer as below:
    file-save as->Microsoft excel work.
    when I open excel I am getting pop up windowu201Dthis file contains macros  with an expired or revoked signature.Since your running under  high security level,these macros will be disabled.u201D
    when I click ok I am getting one more pop upwindow as u201Cmacros  are diabled because the security level is set to high and a digitally signed trusted certificate is not attached to macros.to run the macros,change the security level to a lower setting(not recommended),or request the macros signed by the author  using a certificate  issued by a certificate authority.
    what are these macros? why i am getting this pop up windows
    When i opened  the excel report is not looks like general excel report.how can I generate general excel report .I should not want to get excel report as in bex analyzer.I donu2019t want to have author ,status of data,chart,filter,information in excel report.
    what settings I have to made to save the report in general excel format.
    As i am new to Bi please correct me if i am wrong.
    Anything is appreciable.
    regards,
    naresh.

    Macros in general are nothing but piece of code in excel.
    To allow unsigned macros to run, the Trust all installed add-ins and templates check box must be selected on the Trusted Publishers tab of the Security dialog box. This option is selected by default. If it is not selected (recommended), Excel allows you to run only macros that have trusted digital signatures.
    1. On the Tools menu, point to Macro, and then click Security.
    2. On the Trusted Publishers tab, select the Trust all installed add-ins and templates check box.

  • HOW TO ACHIEVE THIS IN BEX REPORT ?

    Hi
    I have a query like below:
    Indicator---Month---Volume--
    Revenue
    A--201101-10Tonnes----710USD
    A--201102-20Tonnes----2000USD
    Because of some selections in our query,It always displays data from beginning of year to present month(August).
    Now requirement is to add new column named 'Average'.....It should be weigted average and will be calculated as below:
    If we take records for 201101 month in cube....The calculations should be equivalent to  Volume of each record *  Revenue of each record / Total Volume for that month
    so if we take cube and display all records for 201101 month for example:
    Indicator--MonthVolume--Revenue
    A--2011011--
    100
    A--2011012--
    110
    A--2011013--
    200
    A--201101-4--
    300
    Then 'Average' that needs to be displayed in report for 201101 month will be calculated as follows:
    Volume for each record * Revenue for each record / Total Volume for that month
    (1100+21103*2004*300)/(123+4)=212
    So,the report will show 201101 as below:
    Indicator----Month--Volume-Revenue--Average
    A--201101-10710--
    212
    Similarly,if a report is executed for August month:
    Indicator----Month--Volume-Revenue--Average
    A--201101--10710--
    212
    A--201102--202000USD--300
    A--201103--303000usd---400
    A--201108--606000usd---700
    How can I achieve this in query designer?
    Regards.......

    Hi,
    Just tried looking into your query. Few questions that I have:
    1. When you say
    "if we take cube and display all records for 201101 month for example:
    Indicator--MonthVolume--Revenue
    A--2011011--
    100
    A--2011012--
    110
    A--2011013--
    200
    A--201101-4--
    300
    If these records are there in cube , then when you query on them the report will get aggregated based on you Indicator & Month. So no individual records to do the calculation.
    So I guess you should look for some routines while you are loading this records in the cube to do this calculation rather than Bex ...but I will feel good if someone can tell us to how to acheive it in Bex.
    Ankit

Maybe you are looking for

  • Error :Receiver File Channel not Initialized

    Hi all, I am using a file adapter at the receiver side with file content conversion option. When i post a message it shows an error in the message monitoring as "Reciever File Channel not initialized : Unable to proceed : null" Please Help.....

  • Notification settings "Do not notify me" not worki...

    I want to hide a group chat, but i don't want to remove it. I clicked "Hide conversation" on group chat and also in Notification Settings selected "Do not notify me", but it doesn't block notifications - I'm still getting notifications, whenever some

  • JSP Print view

    I have a link that opens a print view of a particular JSP page, basically plain formatted HTML with some data coming from the database and without any buttons/textboxes/etc. My problem is that when I print this page, I get the URL of the page along w

  • Employee Report

    I am developing a employee report -my sql statement is like below select * from emp where empno: eno During run time user getting prompt to enter employee number. It is working fine for single employee. But now our HR dept want to print this report f

  • Formatting problem when transform to PDF

    Hi all, I've found a problem with program RSTXPDFT4 and functions CONVERT_ABAPSPOOL ... and CONVERT_OTFSPOOL... I want to convert to PDF the spool generated by a report using "classic" list programming (write and so on). Output format is x_65_132, wh