Calling the TCode TP04 from the report

Hi folks,
          In my ALV output, i have a field Trip No, which if i double click on it, it should go to the TCode TP04, by taking the data of the corresponding trip number. i am trying this by using the statement SET PARAMETER ID. But for the field Trip No, there is no parameter ID defined. So what is the alternative or best way to accomplish my task.
        Thanks in advance,
        Ram.

Hi Ram ,
You could use BDC in error mode so that the tcode opens skipping the first screen,  if there is not PARAMETER ID .
Let me know if it helped or not .
Yugandhar

Similar Messages

  • Getting the error while calling the report from oaf page

    Dear all
    when i am calling the report from oaf page
    if (pageContext.getParameter("PrintPDF") != null)
    DataObject sessionDictionary =
    (DataObject)pageContext.getNamedDataObject("_SessionParameters");
    HttpServletResponse response =
    (HttpServletResponse)sessionDictionary.selectValue("HttpServletResponse");
    try
    ServletOutputStream os = response.getOutputStream();
    // Set the Output Report File Name and Content Type
    String contentDisposition = "attachment;filename=EmpReport.pdf";
    response.setHeader("Content-Disposition", contentDisposition);
    response.setContentType("application/pdf");
    // Get the Data XML File as the XMLNode
    XMLNode xmlNode = (XMLNode)am.invokeMethod("getEmpDataXML");
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    xmlNode.print(outputStream);
    ByteArrayInputStream inputStream =
    new ByteArrayInputStream(outputStream.toByteArray());
    ByteArrayOutputStream pdfFile = new ByteArrayOutputStream();
    //Generate the PDF Report.
    TemplateHelper.processTemplate(((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getAppsContext(),
    "XXCRM", "XXCRM_EMP",
    ((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getLanguage(),
    ((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getCountry(),
    inputStream,
    TemplateHelper.OUTPUT_TYPE_PDF, null,
    pdfFile);
    // Write the PDF Report to the HttpServletResponse object and flush.
    byte[] b = pdfFile.toByteArray();
    response.setContentLength(b.length);
    os.write(b, 0, b.length);
    os.flush();
    os.close();
    } catch (Exception e)
    response.setContentType("text/html");
    throw new OAException(e.getMessage(), OAException.ERROR);
    pageContext.setDocumentRendered(false);
    i am getting the error java.classcastexception at this line
    DataObject sessionDictionary =
    (DataObject)pageContext.getNamedDataObject("_SessionParameters");
    regards
    Sreekanth

    check if you have import oracle.cabo.ui.data.DataObject; in your import statement.
    --Prasanna                                                                                                                                                                                               

  • Can I Call a 10g Form from 10 Report???

    Can I Call a 10g Form from 10 Report??? I'm using Developer Suite 10g Rel.2.

    Hello,
    It is possible to include hyperlinks in the output generated by oracle Reports (when DESFORMAt=HTML / HTMLCSS or PDF)
    http://www.oracle.com/webapps/online-help/reports/10.1.2/topics/htmlhelp_rwbuild_hs/rwcontxt/props/pi_lay_hyperlink.htm
    When clicking on the hyperlink , a Form can be called...
    regards

  • IP - Is it possible to call exit planning function from ABAP Report..

    Hi All,
    Greetings.
    Is it possible to call exit planning function from ABAP Report (t-code SE38) ? Or I mean is not limited only to be called from ABAP Report, perhaps from BSP / Web-Dynpro / Function Module.
    If somebody here has been doing it before, I'm keen to ask to kindly share it. Particularly how to call and transfer data to that exit function.
    Or if somebody has done in BPS, appreciate if it can be shared too .
    Thanks a lot and have a good day,
    Best regards,
    Daniel N.

    Hi.
    You can achive this as suggested by Mattias in your previous post.
    Lets say you have next data structure:
    CostCenter | Amount | PercentForDistibution |
    Create input ready query in this format. Restrict cost center by variable type range.
    Create WAD with analysis item.
    When you run web page you enter range of cost centers (lets say you will enter 101004 to 101010).
    I assume you have data only for 101004 in your cube (lets say 1000).
    You will see only one record in your webpage.
    CostCenter | Amount | PercentForDistibution |
    101004       | 1000     | NOTHING
    When you create WAD in analysis item properties set "NUMBER_OF_NEW_LINES" to lets say 1 (so in WAD you will see always one blank line for entering new data).
    Just add 6 new records:
    CostCenter | Amount   | PercentForDistibution |
    101005       | NOTHING| 10
    101006       | NOTHING| 30
    101007       | NOTHING| 20
    101008       | NOTHING| 25
    101009       | NOTHING| 5
    101010       | NOTHING| 10
    Then run planning FOX function like this:
    FOREACH Z_COST_CENTER.
    IF {Amount, Z_COST_CENTER} <> 0
    Z_AMNT_TO_DISTRIBUTE = {Amount, Z_COST_CENTER}.
    ENDIF.
    ENDFOR.
    FOREACH Z_COST_CENTER.
    IF {PercentForDistibution Z_COST_CENTER} <> 0.
    {Amount, Z_COST_CENTER} = Z_AMNT_TO_DISTRIBUTE * {PercentForDistibution Z_COST_CENTER}.
    ENDIF.
    ENDFOR.
    It is not perfect FOX, but as an idead, it should work.
    Regards.

  • Problem with output from  report to excel, calling the report from form 10g

    Hi everyone, I'm having a problem generating a excel from a report, which is called from a form, I'm using Forms 10g. The problem is this: My report has a variable number of columns. These columns appear according to data obtained from the database, these columns are dates, In vesion 6 excel file generated shows the columns one after another starting in column A1 to column CP. I mean that the dates are correlative. But in version 10g the excel file generated shows the same report starting in column A to column T, only shows the 20 dates correlative corresponding to this columns, the rest of the dates are down the excel sheet in groups of 20 dates, it's something, the file in 6i grows across and in 10g grows down the excel sheet. The report (rdf file) is the same in 6i and 10g, I compiled the 6i version to obtain the 10g version. The excel sheet generated in 10g looks like the report was in pdf format, because PDF format, cuts the report in pages and the file grows down, if I generate the report in PDF format it has the same structure excel file in 10g has. I hope yo can help because I have days trying to solve this but I have no succes. If someone could help I could email the excel files generated in two versions. Here I put the code I use to generate the files in 6i and 10g. I have tried with DESFORMAT=SPREADSHEET in 10g but the result is the same. Thanks for your help. Greetings for all.
    Code for version 6i (Works Very well)
    PROCEDURE GUARDAREXCEL IS
    pl_id ParamList;
    nom_rep varchar2(20);
    cla_rep varchar2(20);
    cod_dis varchar2(4);
    nom_arch varchar2(100);
    fec date;
    BEGIN
    pl_id := Get_Parameter_List('tmpdata');
    IF NOT Id_Null(pl_id) THEN
    Destroy_Parameter_List( pl_id );
    END IF;
    pl_id := Create_Parameter_List('tmpdata');
    IF :BK_PARAMETROS.LI_COD_DIS IS NOT NULL THEN
    cod_dis := :BK_PARAMETROS.LI_COD_DIS;
    END IF;
    IF :BK_PARAMETROS.TI_COD_CLI IS NOT NULL THEN
    Add_Parameter(pl_id,'P_COD_CLI',TEXT_PARAMETER,:BK_PARAMETROS.TI_COD_CLI||'%');
    ELSE
    Add_Parameter(pl_id,'P_COD_CLI',TEXT_PARAMETER,'%');
    :BK_PARAMETROS.TI_COD_CLI:='%';
    END IF;
    IF :BK_PARAMETROS.CLAS_REP=1 THEN
    cla_rep := '001';
    ELSE
         IF :BK_PARAMETROS.CLAS_REP=2 THEN
              cla_rep := '002';
         ELSE
              IF :BK_PARAMETROS.CLAS_REP=3 THEN
              cla_rep := '003';
         ELSE
              cla_rep := '004';
         END IF;
         END IF;
    END IF;
    Add_Parameter(pl_id,'P_COD_DIS',TEXT_PARAMETER, cod_dis);
    Add_Parameter(pl_id,'P_FECHA',TEXT_PARAMETER,to_char(:BK_PARAMETROS.FECFIN, 'DD/MM/YYYY'));
    Add_Parameter(pl_id,'P_CLASE',TEXT_PARAMETER, cla_rep);
    Add_Parameter(pl_id,'PARAMFORM',TEXT_PARAMETER,'NO');
    Add_Parameter(pl_id,'DESTYPE',TEXT_PARAMETER,'File');
    Add_Parameter(pl_id,'MODE',TEXT_PARAMETER,'Character');
    Add_Parameter(pl_id,'DESFORMAT',TEXT_PARAMETER,'DELIMITED' );
    select sysdate into fec from dual;
    IF :BK_PARAMETROS.TIPO_REP=1 THEN
         BEGIN
    nom_rep := 'tdvenrli1577.rep';
    nom_arch := 'c:\windows\temp\RepCobranzaPlanos' || TO_CHAR(fec, 'ddmmyyyy') || '.xls';
    END;
    ELSIF :BK_PARAMETROS.TIPO_REP=2 THEN
              BEGIN
              nom_rep := 'tdvenrli1578.rep';
              nom_arch := 'c:\windows\temp\RepCobranzaLargos' || TO_CHAR(fec, 'ddmmyyyy') || '.xls';
              END;
    ELSIF :BK_PARAMETROS.TIPO_REP=3 THEN
         BEGIN
                        Add_Parameter(pl_id,'P_XLS',TEXT_PARAMETER, '1');           
              nom_rep := 'tdvenrli1576.rep';
              nom_arch := 'c:\windows\temp\RepCobranzaDetallados' || TO_CHAR(fec, 'ddmmyyyy') || '.xls';      
              END;
    ELSE
              BEGIN
                        nom_rep := 'TDVENRLI1545.REP';
              nom_arch := 'c:\windows\temp\RepCobranzaTodos' || TO_CHAR(fec, 'ddmmyyyy') || '.xls';
              END;
    END IF;
    --Add_Parameter(pl_id,'DESNAME',TEXT_PARAMETER,nom_arch );
    Add_Parameter(pl_id,'DESNAME',TEXT_PARAMETER, nom_arch);
    standard.commit;
    Run_Product(REPORTS, nom_rep, SYNCHRONOUS, runtime, FILESYSTEM, pl_id,'');
    EXCEPTION WHEN Run_Product_Failure THEN
    message('Error');
    END;
    Code for version 10g
    PROCEDURE GUARDAREXCEL IS
    pl_id ParamList;
    nom_rep varchar2(20);
    cla_rep varchar2(20);
    cod_dis varchar2(4);
    nom_arch varchar2(100);
    fec date;
    --byt12122007.sn
    repid REPORT_OBJECT;
         vURL VARCHAR2(500);
         rep_status VARCHAR2(20);
         vJobID VARCHAR2(100);
         v_rep VARCHAR2(100);
    VAR NUMBER;
    w_name_repserv VARCHAR2(30);
    --byt1212007.en
    BEGIN
         --w_name_repserv:=F_OBTIENE_SERVREP;
    w_name_repserv:='repserv';     
    pl_id := Get_Parameter_List('mytmp_params');
    IF NOT Id_Null(pl_id) THEN
    Destroy_Parameter_List( pl_id );
    END IF;
    pl_id := Create_Parameter_List('mytmp_params');
    IF :BK_PARAMETROS.LI_COD_DIS IS NOT NULL THEN
         cod_dis := :BK_PARAMETROS.LI_COD_DIS;
    END IF;
    IF :BK_PARAMETROS.TI_COD_CLI IS NOT NULL THEN
    Add_Parameter(pl_id,'P_COD_CLI',TEXT_PARAMETER,:BK_PARAMETROS.TI_COD_CLI||'%');
    ELSE
    Add_Parameter(pl_id,'P_COD_CLI',TEXT_PARAMETER,'%');
    :BK_PARAMETROS.TI_COD_CLI:='%';
    END IF;
    IF :BK_PARAMETROS.CLAS_REP=1 THEN
    cla_rep := '001';
    ELSE
         IF :BK_PARAMETROS.CLAS_REP=2 THEN
              cla_rep := '002';
         ELSE
              IF :BK_PARAMETROS.CLAS_REP=3 THEN
              cla_rep := '003';
         ELSE
              cla_rep := '004';
         END IF;
         END IF;
    END IF;
    Add_Parameter(pl_id,'P_COD_DIS',TEXT_PARAMETER, cod_dis);
    Add_Parameter(pl_id,'P_FECHA',TEXT_PARAMETER,to_char(:BK_PARAMETROS.FECFIN, 'DD/MM/YYYY'));
    Add_Parameter(pl_id,'P_CLASE',TEXT_PARAMETER, cla_rep);
    Add_Parameter(pl_id,'PARAMFORM',TEXT_PARAMETER,'NO');
    /*Add_Parameter(pl_id,'DESTYPE',TEXT_PARAMETER,'File');
    Add_Parameter(pl_id,'MODE',TEXT_PARAMETER,'Character');
    Add_Parameter(pl_id,'DESFORMAT',TEXT_PARAMETER,'DELIMITED' );*/
    select sysdate into fec from dual;
    IF :BK_PARAMETROS.TIPO_REP=1 THEN
    BEGIN
         repid := find_report_object('tdvenrli1577');
    --nom_rep := 'tdvenrli1577.rep';
    nom_arch := 'c:\windows\temp\RepCobranzaPlanos' || TO_CHAR(fec, 'ddmmyyyy') || '.xls';
    SET_REPORT_OBJECT_PROPERTY(repid, REPORT_FILENAME,'tdvenrli1577');
    END;
    ELSIF :BK_PARAMETROS.TIPO_REP=2 THEN
    BEGIN
         repid := find_report_object('tdvenrli1578');      
              --nom_rep := 'tdvenrli1578.rep';
              nom_arch := 'c:\windows\temp\RepCobranzaLargos' || TO_CHAR(fec, 'ddmmyyyy') || '.xls';
              SET_REPORT_OBJECT_PROPERTY(repid, REPORT_FILENAME,'tdvenrli1578');
              END;
    ELSIF :BK_PARAMETROS.TIPO_REP=3 THEN
    BEGIN
         repid := find_report_object('tdvenrli1576');
                        Add_Parameter(pl_id,'P_XLS',TEXT_PARAMETER, '1');           
              --nom_rep := 'tdvenrli1576.rep';
              nom_arch := 'c:\windows\temp\RepCobranzaDetallados' || TO_CHAR(fec, 'ddmmyyyy') || '.xls';
              SET_REPORT_OBJECT_PROPERTY(repid, REPORT_FILENAME,'tdvenrli1576');     
              END;
    ELSE
    BEGIN
         repid := find_report_object('tdvenrli1545');
                        --nom_rep := 'TDVENRLI1545.REP';
              nom_arch := 'c:\windows\temp\RepCobranzaTodos' || TO_CHAR(fec, 'ddmmyyyy') || '.xls';
              SET_REPORT_OBJECT_PROPERTY(repid, REPORT_FILENAME,'tdvenrli1545');     
              END;
    END IF;
    --Add_Parameter(pl_id,'DESNAME',TEXT_PARAMETER,nom_arch );
    --Add_Parameter(pl_id,'DESNAME',TEXT_PARAMETER, nom_arch);
    standard.commit;
    SET_REPORT_OBJECT_PROPERTY(repid, REPORT_DESNAME,nom_arch);
    SET_REPORT_OBJECT_PROPERTY(repid, REPORT_COMM_MODE, SYNCHRONOUS);
         SET_REPORT_OBJECT_PROPERTY(repid, REPORT_EXECUTION_MODE, RUNTIME);
         SET_REPORT_OBJECT_PROPERTY(repid, REPORT_DESTYPE, 'File');
         SET_REPORT_OBJECT_PROPERTY(repid, REPORT_DESFORMAT, 'DELIMITED');
         SET_REPORT_OBJECT_PROPERTY(repid, REPORT_SERVER, w_name_repserv);
         SET_REPORT_OBJECT_PROPERTY(repid, REPORT_OTHER, 'paramform=no');
         v_rep := RUN_REPORT_OBJECT(repid, pl_id);
         rep_status := REPORT_OBJECT_STATUS(v_rep);
         WHILE rep_status IN ('RUNNING','OPENING_REPORT','ENQUEUED')     LOOP
              rep_status:= report_object_status(v_rep);
         END LOOP;
         IF rep_status = 'FINISHED' THEN
              vJobID := SUBSTR(v_rep, INSTR(v_rep, '_', -1)+1);
              vURL:='/reports/rwservlet/getjobid'||vJobID||'?'||'server='||w_name_repserv;
         END IF;
         WEB.SHOW_DOCUMENT(vURL, '_blank');
         IF NOT form_success THEN
              MESSAGE('Error: PL/SQL held against Button failed to execute');
              RAISE FORM_TRIGGER_FAILURE;
         END IF;
    /*Run_Product(REPORTS, nom_rep, SYNCHRONOUS, runtime, FILESYSTEM, pl_id,'');
    EXCEPTION WHEN Run_Product_Failure THEN
    message('Error');*/
    END;

    There are two problems with your VI.  First, the basic logic of writing/appending to a file (Excel, TDMS, anything) should go something like this:  Open the file, position yourself at the end of the file, then, in the loop, acquire data and write it to the file until you are finished with data acquisition.  When you exit the acquire/write to file loop, then close the file.  In particular, the opening and the closing of the file should not be inside the loop.
    As others have pointed out, writing to Excel might not be optimal, particularly if you are acquiring data at a high rate (and would therefore be writing a lot of data). We actually use Excel in our data acquisition routine, mainly reading from a WorkSheet to get the parameters of a particular stimulus, but also writing the outcome of the response to the stimulus.  As it happens, our "acquisition rate" in this example is on the order of several samples per minute, so there's no problem using Excel (we also sample 16 channels of analog data at 1 KHz -- this gets written as a binary file).
    Second, if you really do want to use Excel, use the (existing) Excel file to which you want to append as the "template" argument of the New Report function.  Then use the Excel Get Last Row function to position yourself at "end of file", as noted above.
    Good Luck.
    Bob Schor

  • Error when calling the report on server?

    We have a .NET application on the server and we want to call a crystal report (.rpt) from one of the forms (.NET aspx page). We are getting below error. The report works fine on the desktop where it is developed. Please let us know if there is any specific process to move the reports to server. Any help is appreciated.
    The report is developed in Crystal Reports 2008 and we are using Visual Studio 2005. We are using Crystal Report Viewer control to call / associate the report developed.
    Error message,
    An error has occurred while attempting to load the Crystal Reports runtime. Either the Crystal Reports registry key permissions are insufficient, or the Crystal Reports runtime is not installed correctly. Please install the appropriate Crystal Reports redistributable (CRRedist*.msi) containing the correct version of the Crystal Reports runtime (x86, x64, or Itanium) required. Please go to http://www.businessobjects.com/support for more information.
    Thanks
    Sridhar

    Hi,
    Have you install the runtime files of CR 2008 on server, if not then install it from [here|http://resources.businessobjects.com/support/additional_downloads/runtime.asp#08].
    Download according to the service pack applied on CR 2008.
    Also ensure that you are at service pack 1 level of CR 2008 as its a latest service pack available for CR 2008.
    Hope this will help!!
    Regards,
    Amit

  • Using web link to call the report by passing the parameter but report blank

    Hi,
    I have using web link to prompt to generate the report(Quotation Format) by passing SR number in Service Request object.
    The result return is blank report, the URL link that i put in as below :-
    https://secure-ausomxega.crmondemand.com/OnDemand/user/analytics/saw.dll?Go&Options=rfd&Path=/shared/Company_AEGA-3V6GLL_Shared_Folder/SR%20Quotation&Action=Navigate&P0=1&P1=eq&P2="Service Request"."SR Num"&P3=%%%SR_Number%%%
    If preview in report folder, the report is generated with the output.
    Is my syntax having problem or the method cannot be done this way?
    Please advise

    Hi Alex,
    I manage to get the report output but the result is always same.
    i have checked the filter, the filter is calling the SR number.
    When i try to output to PDF an error prompt :-
    Sax parser returned an exception. Message: Expected entity name for reference, Entity publicId: , Entity systemId: , Line number: 335, Column number: 12
    Error Details
    Error Codes: UH6MBRBC
    Thanks
    SK

  • How to call the Report program into Function module

    Hi Experts,
    Actually I want to create the DataSource. But I have only the ALV report program. I need to create function module but I don’t know how to call the ALV report program using in function module  
    So could you please any one send the Document or step by step method?
    Advance Thanks,
    Sathis

    If the report is just based out of a table than create a Generic Extractor using View.
    If its an InfoSet query than create a Generic Extractor on that InfoSet.
    If its an ABAP report than create a Generic Extractor using FM
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a0f46157-e1c4-2910-27aa-e3f4a9c8df33

  • Place Holder values are not displaying when calling the report

    Hi,
    I have a Place holder column in my report and i am assigning the values in a formula column. When i run the report from report builder place holder column is showing the value. But when i deploy the same in application server and i try to invoke from a form it is not the value of that place holder column. Why is this happening? Please, help me in resolving the same.
    Thanks & Rgds,
    M T

    Yes Gayatri. You are right. When i run the report from report builder it is working perfectly. The same report i deployed in application server and invoking from a form report is not showing the values for place holder columns.
    Why is this happening?
    How to resolve it?

  • How to call a sub screen from abap report

    Hellow friends,
    how to call sub screen 1001 prog name SAPLMGD1
    and main program SAPLMGMM screen 4000 of tcode MM02.
    i need to call the sub screen from abap report

    Hi Rajesh,
    You can use FM MATERIAL_MAINTAIN_DIALOGUE to go to subcreen MRP1 in MM02.
    Please check this sample code from other thread and enter 'MRP 1' for p_dytxt.
    REPORT zsritest.
    TABLES mara.
    DATA: lv_bilds LIKE t133a-bilds,
    ls_t130m LIKE t130m,
    ls_rmmg1 LIKE rmmg1,
    lwa_view TYPE mbildtab,
    lwa_auswg TYPE mgauswg,
    lt_views TYPE STANDARD TABLE OF mbildtab INITIAL SIZE 0,
    lt_auswg TYPE STANDARD TABLE OF mgauswg INITIAL SIZE 0.
    PARAMETERS: p_matnr LIKE mara-matnr,
    p_werks LIKE marc-werks,
    p_dytxt LIKE mbildtab-dytxt.
    SELECT SINGLE * FROM mara WHERE matnr EQ p_matnr.
    CHECK sy-subrc EQ 0.
    CALL FUNCTION 'T130M_SINGLE_READ'
    EXPORTING
    tcode = 'MM02'
    kzrfb = 'X'
    IMPORTING
    wt130m = ls_t130m
    EXCEPTIONS
    not_found = 1
    wrong_call = 2
    OTHERS = 3.
    CALL FUNCTION 'BILDSEQUENZ_IDENTIFY'
    EXPORTING
    branche = mara-mbrsh
    materialart = mara-mtart
    tcode_ref = ls_t130m-trref
    * KZRFB = ' '
    IMPORTING
    bildsequenz = lv_bilds
    * KZ_BILDS_CHANGED =
    EXCEPTIONS
    wrong_call = 1
    not_found = 2
    OTHERS = 3.
    CALL FUNCTION 'SELECTION_VIEWS_FIND'
    EXPORTING
    bildsequenz = lv_bilds
    pflegestatus = mara-pstat
    TABLES
    bildtab = lt_views[]
    EXCEPTIONS
    call_wrong = 1
    empty_selection = 2
    OTHERS = 3.
    ls_rmmg1-matnr = mara-matnr.
    ls_rmmg1-werks = p_werks.
    READ TABLE lt_views INTO lwa_view WITH KEY dytxt = p_dytxt.
    CHECK sy-subrc EQ 0.
    lwa_auswg-auswg = lwa_view-auswg.
    APPEND lwa_auswg TO lt_auswg.
    CALL FUNCTION 'MATERIAL_MAINTAIN_DIALOGUE'
    EXPORTING
    irmmg1 = ls_rmmg1
    * IRMMG1_REF = ' '
    KZ_EIN_DARK = 'X'
    t_tcode = 'MM02'
    * FLG_MATNR_RES = ' '
    p_pstat = mara-pstat
    * FLG_STAT_ALL = ' '
    * CALL_MODE2 = ' '
    * IMPORTING
    * MATERIAL_NO =
    * UPDATE_OK =
    TABLES
    iauswg = lt_auswg[]
    EXCEPTIONS
    no_authority = 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.
    Regards,
    Ferry Lianto

  • Can we call a bdc program from a report?how

    hi
    experts can u help me for this

    Hi
    Yes, You can call a BDC program from Report.
    see the sample report in which it is used
    REPORT zm_reservation_alert
    NO STANDARD PAGE HEADING
    MESSAGE-ID zm_msg.
    D A T A B A S E T A B L E S D E C L A R A T I O N
    T Y P E S D E C L A R A T I O N S
    Reservations Main Structure
    TYPES: BEGIN OF s_res,
    rsnum TYPE rsnum, " Reservation No
    rspos TYPE rspos, " Item No
    usnam TYPE usnam, " User Name
    bwart TYPE bwart, " Movement Type
    aufnr TYPE aufnr, " Order Number
    rsart TYPE rsart, " Record Type
    bdart TYPE bdart, " Reservation Type
    matnr TYPE matnr, " Material No
    bdter TYPE bdter, " Req Date
    menge TYPE menge_d, " Quantity
    kostl TYPE kostl, " Cost Center
    usrid TYPE sysid, " User ID
    END OF s_res.
    Output Main Structure
    TYPES: BEGIN OF s_rep,
    usnam TYPE usnam, " User Name
    rsnum TYPE rsnum, " Reservation No
    rspos TYPE rspos, " Item No
    matnr TYPE matnr, " Material No
    bdter TYPE bdter, " Req Date
    menge TYPE menge_d, " Quantity
    kostl TYPE kostl, " Cost Center
    aufnr TYPE aufnr, " Order Number
    END OF s_rep.
    User Dept Details
    TYPES: BEGIN OF s_dept,
    pernr TYPE persno, " Personal No
    usrid TYPE sysid, " User ID
    orgeh TYPE orgeh, " Orgn Unit
    orgtx TYPE orgtx, " Dept Name
    END OF s_dept.
    For Send Mail Purpose
    DATA : i_doc_data LIKE sodocchgi1.
    DATA : BEGIN OF i_pack_list OCCURS 0.
    INCLUDE STRUCTURE sopcklsti1.
    DATA : END OF i_pack_list.
    DATA : BEGIN OF i_receivers OCCURS 0.
    INCLUDE STRUCTURE somlreci1.
    DATA : END OF i_receivers.
    DATA : BEGIN OF i_contents OCCURS 0.
    INCLUDE STRUCTURE solisti1.
    DATA : END OF i_contents.
    DATA : BEGIN OF i_header OCCURS 0.
    INCLUDE STRUCTURE solisti1.
    DATA : END OF i_header.
    DATA : BEGIN OF i_att OCCURS 0.
    INCLUDE STRUCTURE solisti1.
    DATA : END OF i_att.
    Internal table for bdcdata
    DATA : it_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
    Internal table to handle messages
    DATA : it_messages LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
    D A T A D E C L A R A T I O N S
    DATA: gv_lines TYPE sy-index, " Total Lines int Table
    gv_days TYPE i, " Difference Days
    gv_date TYPE sy-datum, " Date
    gv_date1 TYPE sy-datum, " Date
    gv_date2 TYPE sy-datum, " Date
    gv_text(85), " Text Field
    gv_mesg(70), " Error Messages
    gv_bdc, " BDC Flag
    gv_flag TYPE i, " Flag
    gv_ernam TYPE ernam. " User ID
    C O N S T A N T S D E C L A R A T I O N S
    CONSTANTS: c_x VALUE 'X', " Flag
    c_endda TYPE endda VALUE '99991231'. " Date
    I N T E R N A L T A B L E S D E C L A R A T I O N S
    DATA: i_res TYPE STANDARD TABLE OF s_res WITH HEADER LINE, " Reservns
    i_dept TYPE STANDARD TABLE OF s_dept WITH HEADER LINE, " Dept
    i_rep TYPE STANDARD TABLE OF s_rep WITH HEADER LINE. " Output
    S T A R T - O F - S E L E C T I O N *
    START-OF-SELECTION.
    Fetch main data
    PERFORM fetch_data.
    Process data
    PERFORM process_data.
    *& Form fetch_data
    Fetching the Reservations related data from Database Tables
    FORM fetch_data .
    CLEAR: gv_date, gv_date1, gv_date2.
    gv_date = sy-datum.
    gv_date1 = sy-datum - 10.
    gv_date2 = sy-datum + 10.
    CLEAR i_res.
    REFRESH i_res.
    SELECT a~rsnum " Reservation No.
    b~rspos " Reservation Item
    a~usnam " User Name
    a~bwart " Movement Type
    a~aufnr " Order Number
    b~rsart " Record Type
    b~bdart " Reservation Type
    b~matnr " Material No
    b~bdter " Req Date
    INTO TABLE i_res
    FROM rkpf AS a JOIN resb AS b
    ON arsnum = brsnum
    WHERE ( b~bdter BETWEEN gv_date1 AND gv_date2 ) AND
    b~xloek EQ ' '.
    SORT i_res BY rsnum rspos.
    DELETE ADJACENT DUPLICATES FROM i_res COMPARING matnr.
    Add userid into the i_usr int table
    LOOP AT i_res.
    i_res-usrid = i_res-usnam.
    MODIFY i_res INDEX sy-tabix.
    ENDLOOP.
    IF NOT i_res[] IS INITIAL.
    Get the User Dept Name
    CLEAR i_dept.
    REFRESH i_dept.
    SELECT a~pernr " Personal No
    a~usrid " User ID
    b~orgeh " Orgn Unit
    c~orgtx " Dept Name
    INTO TABLE i_dept
    FROM pa0105 AS a JOIN pa0001 AS b
    ON apernr = bpernr JOIN t527x AS c
    ON borgeh = corgeh
    FOR ALL ENTRIES IN i_res
    WHERE a~usrid = i_res-usrid AND
    a~endda EQ c_endda AND
    b~endda EQ c_endda.
    ENDIF.
    SORT i_dept BY pernr.
    DELETE ADJACENT DUPLICATES FROM i_dept COMPARING pernr.
    Move the Creator of Reservation to a diff table
    LOOP AT i_res.
    MOVE-CORRESPONDING i_res TO i_rep.
    APPEND i_rep.
    CLEAR i_rep.
    ENDLOOP.
    SORT i_rep BY usnam rsnum rspos.
    ENDFORM. " Fetch_Data
    *& Form process_data
    Process the Reservations related data for Expiry Date
    FORM process_data .
    DATA: lv_date1 LIKE sy-datum,
    lv_date2 LIKE sy-datum,
    lv_date3(10),
    lv_menge(13),
    lv_tabix LIKE sy-tabix.
    LOOP AT i_rep.
    CLEAR: gv_days, gv_text, lv_date1, lv_date2,lv_date3.
    lv_tabix = sy-tabix.
    AT NEW usnam.
    Populate the Contents Table
    CLEAR i_att.
    REFRESH i_att.
    i_att = 'Reservations Reminder'(014).
    APPEND i_att.
    i_att = '----
    APPEND i_att.
    i_att-line = ' '.
    APPEND i_att.
    READ TABLE i_dept WITH KEY usrid = i_rep-usnam.
    CONCATENATE 'Name:'(003) i_rep-usnam 'Dept:'(015) i_dept-orgtx
    INTO i_att-line SEPARATED BY space.
    APPEND i_att.
    i_att-line = ' '.
    APPEND i_att.
    i_att = 'Please find the List of expiring Reservations'(004).
    APPEND i_att.
    i_att-line = ' '.
    APPEND i_att.
    CONCATENATE '--' '' '--
    ' INTO
    i_att-line SEPARATED BY space.
    APPEND i_att.
    CONCATENATE 'Reservation #'(006) 'Material #'(007) ' Quantity'(002)
    'Due Date'(008) 'Work Center/CC'(005) INTO
    i_att-line SEPARATED BY space.
    APPEND i_att.
    CONCATENATE '--' '' '--
    ' INTO
    i_att-line SEPARATED BY space.
    APPEND i_att.
    i_att-line = ' '.
    APPEND i_att.
    ENDAT.
    gv_days = i_rep-bdter - gv_date.
    lv_date1 = i_rep-bdter + 5.
    lv_date2 = i_rep-bdter + 10.
    MOVE i_rep-menge TO lv_menge.
    WRITE i_rep-bdter TO lv_date3.
    IF gv_days = 10.
    IF i_rep-aufnr <> space.
    CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3
    i_rep-aufnr 'is due for 10 days. Please collect'(009)
    INTO gv_text SEPARATED BY space.
    ELSE.
    CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3
    i_rep-kostl 'is due for 10 days. Please collect'(009)
    INTO gv_text SEPARATED BY space.
    ENDIF.
    i_att-line = gv_text.
    APPEND i_att.
    CLEAR i_att.
    CLEAR gv_text.
    ENDIF.
    IF gv_days = 5.
    IF i_rep-aufnr <> space.
    CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3
    i_rep-aufnr 'is due for 5 days. Please collect'(010)
    INTO gv_text SEPARATED BY space.
    ELSE.
    CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3
    i_rep-kostl 'is due for 5 days. Please collect'(010)
    INTO gv_text SEPARATED BY space.
    ENDIF.
    i_att-line = gv_text.
    APPEND i_att.
    CLEAR i_att.
    CLEAR gv_text.
    ENDIF.
    IF gv_date = lv_date1.
    IF i_rep-aufnr <> space.
    CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3
    i_rep-aufnr 'is getting cancelled on'(011) lv_date2
    INTO gv_text SEPARATED BY space.
    ELSE.
    CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3
    i_rep-kostl 'is getting cancelled on'(011) lv_date2
    INTO gv_text SEPARATED BY space.
    ENDIF.
    i_att-line = gv_text.
    APPEND i_att.
    CLEAR i_att.
    CLEAR gv_text.
    ENDIF.
    IF gv_date = lv_date2.
    IF i_rep-aufnr <> space.
    CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3
    i_rep-aufnr 'is being cancelled'(012)
    INTO gv_text SEPARATED BY space.
    ELSE.
    CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3
    i_rep-kostl 'is being cancelled'(012)
    INTO gv_text SEPARATED BY space.
    ENDIF.
    i_att-line = gv_text.
    APPEND i_att.
    CLEAR i_att.
    CLEAR gv_text.
    Mark the Reservation Item 'DELETED' using BDC.
    UPDATE resb SET xloek = c_x.
    PERFORM delete_item_resb.
    ENDIF.
    AT END OF usnam.
    IF ( gv_days = 10 OR gv_days = 5 OR gv_date = lv_date1 OR
    gv_date = lv_date2 ).
    Read the User who creates the Reservn and send a mail alert to him
    CLEAR : i_receivers,gv_ernam.
    REFRESH: i_receivers.
    READ TABLE i_rep INDEX lv_tabix.
    gv_ernam = i_rep-usnam.
    IF gv_ernam <> space.
    Send mail Alert to PR Creator(SAP inbox)
    PERFORM send_alert_data.
    Send Mail to External Mail ID of the SAP USER
    PERFORM send_mail_external.
    ENDIF.
    ENDIF.
    ENDAT.
    ENDLOOP.
    ENDFORM. " Process_data
    *& Form delete_item_resb
    Set the Deletion Indicator for the Res. Item in RESB
    FORM delete_item_resb.
    gv_bdc = 'N'.
    Perform to fill it_bdcdata.
    PERFORM fill_it_bdcdata.
    Call the Transaction MB22
    CALL TRANSACTION 'MB22' USING it_bdcdata MODE 'A' UPDATE 'S'
    MESSAGES INTO it_messages.
    IF sy-subrc <> 0.
    gv_flag = 1.
    If error occurs in transaction mode run bdc session for that data
    PERFORM bdc_process.
    ENDIF.
    Handles error messages
    PERFORM error_messages.
    CLEAR : it_bdcdata, it_messages.
    REFRESH : it_bdcdata, it_messages.
    IF gv_bdc = 'O'.
    close bdc if it is open
    PERFORM close_bdc.
    ENDIF.
    ENDFORM. "delete_item_resb
    *& Form FILL_IT_BDCDATA
    Filling Bdcdata structure with data
    FORM fill_it_bdcdata.
    PERFORM bdc_dynpro USING 'SAPMM07R' '0560'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RM07M-RSPOS'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'RM07M-RSNUM'
    i_rep-rsnum.
    PERFORM bdc_field USING 'RM07M-RSPOS'
    i_rep-rspos.
    PERFORM bdc_dynpro USING 'SAPMM07R' '0510'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RESB-XLOEK'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'RESB-XLOEK'
    c_x.
    PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'COBL-KOSTL'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTE'.
    PERFORM bdc_dynpro USING 'SAPMM07R' '0510'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RESB-ERFMG'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=BU'.
    PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'COBL-KOSTL'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTE'.
    ENDFORM. " FILL_IT_BDCDATA
    *& Form BDC_DYNPRO
    Filling the it_bdcdata table with program name & screen number
    FORM bdc_dynpro USING program LIKE bdcdata-program
    dynpro LIKE bdcdata-dynpro.
    it_bdcdata-program = program.
    it_bdcdata-dynpro = dynpro.
    it_bdcdata-dynbegin = 'X'.
    APPEND it_bdcdata.
    CLEAR it_bdcdata.
    ENDFORM. " BDC_DYNPRO
    *& Form BDC_FIELD
    Filling it_bdcdata with field name and field value
    FORM bdc_field USING fnam LIKE bdcdata-fnam
    fval.
    it_bdcdata-fnam = fnam.
    it_bdcdata-fval = fval.
    APPEND it_bdcdata.
    CLEAR it_bdcdata.
    ENDFORM. " BDC_FIELD
    *& Form ERROR_MESSAGES
    Displaying error messages
    FORM error_messages.
    CALL FUNCTION 'FORMAT_MESSAGE'
    EXPORTING
    id = sy-msgid
    lang = sy-langu
    IMPORTING
    msg = gv_mesg
    EXCEPTIONS
    not_found = 1
    OTHERS = 2.
    LOOP AT it_messages WHERE msgtyp = 'E'.
    WRITE : / 'Message :'(001) ,gv_mesg.
    CLEAR it_messages.
    ENDLOOP.
    ENDFORM. " ERROR_MESSAGES
    *& Form BDC_PROCESS
    Open bdc session if call transaction fails
    FORM bdc_process.
    IF gv_bdc = 'N'.
    open bdc session
    PERFORM open_bdc.
    gv_bdc = 'O'.
    ENDIF.
    IF gv_bdc = 'O'.
    insert data into bdc session
    PERFORM insert_bdc.
    ENDIF.
    ENDFORM. " BDC_PROCESS
    *& Form OPEN_BDC
    Calling function module to open bdc session
    FORM open_bdc.
    CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
    client = sy-mandt
    group = 'ZMM'
    keep = 'X'
    user = sy-uname
    EXCEPTIONS
    client_invalid = 1
    destination_invalid = 2
    group_invalid = 3
    group_is_locked = 4
    holddate_invalid = 5
    internal_error = 6
    queue_error = 7
    running = 8
    system_lock_error = 9
    user_invalid = 10
    OTHERS = 11.
    ENDFORM. " OPEN_BDC
    *& Form INSERT_BDC
    Insert it_bdcdata into bdc by calling function module bdc_insert
    FORM insert_bdc.
    CALL FUNCTION 'BDC_INSERT'
    EXPORTING
    tcode = 'MB22'
    TABLES
    dynprotab = it_bdcdata
    EXCEPTIONS
    internal_error = 1
    not_open = 2
    queue_error = 3
    tcode_invalid = 4
    printing_invalid = 5
    posting_invalid = 6
    OTHERS = 7.
    ENDFORM. " INSERT_BDC
    *& Form CLOSE_BDC
    Closing bdc session
    FORM close_bdc.
    CALL FUNCTION 'BDC_CLOSE_GROUP'
    EXCEPTIONS
    not_open = 1
    queue_error = 2
    OTHERS = 3.
    ENDFORM. " CLOSE_BDC
    *& Form send_alert_data
    Send Alert for the Expired Contract
    FORM send_alert_data .
    CLEAR: gv_lines,i_receivers, i_header, i_contents,i_doc_data.
    REFRESH : i_receivers,i_header,i_contents.
    DESCRIBE TABLE i_att LINES gv_lines.
    i_receivers-receiver = gv_ernam.
    i_receivers-receiver = 'SSHEIK'.
    i_receivers-rec_type = 'B'.
    i_receivers-rec_date = sy-datum.
    i_receivers-express = 'X'.
    i_receivers-com_type = 'INT'.
    i_receivers-notif_del = 'X'.
    APPEND i_receivers.
    i_doc_data-obj_name = 'SAPoffice'(013).
    i_doc_data-obj_descr = 'Reservations Reminder'(014).
    i_doc_data-obj_langu = 'E'.
    i_doc_data-no_change = c_x.
    i_doc_data-obj_prio = 1.
    i_doc_data-priority = 1.
    i_doc_data-doc_size = ( gv_lines - 1 ) * 255 + 135.
    i_pack_list-transf_bin = c_x.
    i_pack_list-head_start = '1'.
    i_pack_list-head_num = '1'.
    i_pack_list-body_start = '1'.
    i_pack_list-body_num = gv_lines.
    i_pack_list-doc_type = 'DOC'.
    i_pack_list-obj_name = 'SAPoffice'(013).
    i_pack_list-obj_descr = 'Reservations Reminder'(014).
    i_pack_list-obj_langu = 'E'.
    i_pack_list-doc_size = ( gv_lines - 1 ) * 255 + 135.
    APPEND i_pack_list.
    i_header-line = 'Header'. APPEND i_header.
    Data for contents
    i_contents-line = 'Please find the Reservations Due List'(016).
    APPEND i_contents.
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
    document_data = i_doc_data
    PUT_IN_OUTBOX = 'X'
    IMPORTING
    SENT_TO_ALL =
    NEW_OBJECT_ID =
    TABLES
    packing_list = i_pack_list
    object_header = i_header
    contents_bin = i_att
    contents_txt = i_contents
    receivers = i_receivers
    EXCEPTIONS
    too_many_receivers = 1
    document_not_sent = 2
    document_type_not_exist = 3
    operation_no_authorization = 4
    parameter_error = 5
    x_error = 6
    enqueue_error = 7
    OTHERS = 8.
    IF sy-subrc = 0.
    MESSAGE i000 WITH 'Mail Sucessfully sent'(017).
    ELSE.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    ENDFORM. " send_alert_data
    *& Form send_mail_external
    Send mail to External MAIL ID of the PR Creator
    FORM send_mail_external.
    DATA : lv_str(24), lv_str1(40),
    lv_pernr LIKE adr6-persnumber,
    lv_adrnr LIKE adr6-addrnumber,
    lv_usrid LIKE pa0105-usrid,
    lv_mail LIKE adr6-smtp_addr,
    lv_sendor TYPE syuname,
    lv_receiver TYPE string,
    lv_header TYPE string,
    lv_body TYPE string.
    CLEAR: lv_pernr, lv_usrid, lv_adrnr,
    lv_mail, lv_sendor, lv_receiver,
    lv_header, lv_body .
    lv_usrid = gv_ernam.
    SELECT SINGLE persnumber addrnumber FROM usr21
    INTO (lv_pernr,lv_adrnr)
    WHERE bname = lv_usrid.
    IF sy-subrc = 0.
    SELECT SINGLE smtp_addr INTO lv_mail FROM adr6
    WHERE addrnumber = lv_adrnr AND
    persnumber = lv_pernr.
    IF sy-subrc <> 0.
    CONCATENATE lv_usrid '@anc.com' INTO lv_mail.
    lv_receiver = lv_mail.
    ELSE.
    lv_receiver = lv_mail.
    ENDIF.
    lv_receiver = '[email protected]'.
    lv_sendor = 'JALKHATAM'.
    lv_header = 'Reservations Reminder'(014).
    lv_str = 'Pls check your SAP Inbox'(019).
    lv_str1 = 'for the status of Reservations Due List'(020).
    CONCATENATE lv_str lv_str1 INTO lv_body
    SEPARATED BY space.
    Call Function Module To send mail
    CALL FUNCTION 'UWSP_SEND_MAIL_TO_WEB'
    EXPORTING
    id_header = lv_header
    id_body = lv_body
    id_receiver = lv_receiver
    id_sender = lv_sendor
    ID_HTML_MAIL =
    id_commit_work = 'X'
    EXCEPTIONS
    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.
    ENDIF.
    ENDFORM. " send_mail_external
    <b>Reward points for useful Answers</b>
    Regards
    Ashu

  • Call transaction tcode OPTIONS FROM opt ?

    hi,
    i use BDC for a enhanced t/code, so i think i should use no batch input mode to call the transaction,
    could someone give a code example about this ?
    thanks!

    see the simple example code :
    Report     : ZMPPC018
    Type       : Data upload
    Author     : Seshu Maramreddy
    Date       : 07/05/2005
    Transport  : DV3K921247
    Transaction: ??
    Description: This ABAP/4 Program to Update Rate Routing Material PRT's
                 for SMI plants using CA22 Transaction.It accepts
                 tab-delimited spreadsheet input and Run the Call
                 Transaction Method.
    report zmppc018 no standard page heading
                    line-size 120
                    line-count 55
                    message-id zz.
    Constants
    constants : c_x type c value 'X'," Dynbegin
                c_tcode type tstc-tcode value 'CA22'," Transaction Code
                c_r(1) type c value 'R'," Task List type
                c_O(1) type c value 'O',
                c_fh(2) type c value 'FH'.
    Variables
    data : v_lines_in_xcel like sy-tabix,
           v_matnr(18) type c, " Material Number
           v_PLNNR like mapl-plnnr," Group
           V_DATE(8) type c," System date
           v_date1(4) type c,
           v_date2(2) type c,
           v_date3(2) type c,
           V_COUNT TYPE I." Count
    Internal table for BDCDATA Structure
    data : begin of itab_bdc_tab occurs 0.
            include structure bdcdata.
    data : end of itab_bdc_tab.
    Internal table for File
    data : begin of t_file occurs 0,
           matnr(18) type c, " Material #
           werks(4) type c,  " Plant
           plnal(2) type n,  " Group Counter
           vornr(4) type n,  " Op #
           equnr(18) type c, " PRT Material #
           steuf(4) type c,  " Control Key
           mgvgw(6) type n,  " Qty
           mgeinh(3) type c, " Qty Unit
           end of t_file.
    Internal table for Error Log
    data : begin of i_error occurs 0,
           matnr like mara-matnr,
           werks like marc-werks,
           vornr like plpo-vornr,
           plnnr like plpo-plnnr,
           text(90) type c,
           end of i_error.
    Selection-screen
    selection-screen : begin of block blk with frame.
    selection-screen: skip 1.
    parameters : p_file like rlgrap-filename obligatory,
                 P_mode type c obligatory Default 'N'.
    selection-screen : skip 1.
    selection-screen : end of block blk.
    at selection-screen on value-request for p_file.
    F4 value for Input file
      perform filename_get.
    main processing
    start-of-selection.
    To get the data from file to Internal table
      perform getdata_fromfile.
      loop at t_file.
      fill in bdc-data for Routing maintenance screens
        perform bdc_build_script.
      insert the bdc script as a BDC transaction
        perform bdc_submit_transaction.
      endloop.
    top-of-page.
      call function 'Z_HEADER'
    EXPORTING
      FLEX_TEXT1       =
      FLEX_TEXT2       =
      FLEX_TEXT3       =
    skip 1.
    write:/2 'Material #',24 'Plant',32 'Group',44 'Op #',
              53 'Status Message'.
    skip 1.
    *&      Form  filename_get
          F4 Value for Input File parameter
    FORM filename_get.
      CALL FUNCTION 'WS_FILENAME_GET'
           EXPORTING
                DEF_PATH         = 'C:\Temp\ '
                MASK             = ',.,..'
                MODE             = 'O'
                TITLE            = 'Select File '(007)
           IMPORTING
                FILENAME         = p_file
           EXCEPTIONS
                INV_WINSYS       = 1
                NO_BATCH         = 2
                SELECTION_CANCEL = 3
                SELECTION_ERROR  = 4
                OTHERS           = 5.
    ENDFORM.                    " filename_get
    *&      Form  getdata_fromfile
          text
    FORM getdata_fromfile.
      CALL FUNCTION 'WS_UPLOAD'
           EXPORTING
                FILENAME                = p_file
                FILETYPE                = 'DAT'
           TABLES
                DATA_TAB                = t_file
           EXCEPTIONS
                CONVERSION_ERROR        = 1
                FILE_OPEN_ERROR         = 2
                FILE_READ_ERROR         = 3
                INVALID_TYPE            = 4
                NO_BATCH                = 5
                UNKNOWN_ERROR           = 6
                INVALID_TABLE_WIDTH     = 7
                GUI_REFUSE_FILETRANSFER = 8
                CUSTOMER_ERROR          = 9
                OTHERS                  = 10.
      if sy-subrc eq 0.
        sort t_file by matnr werks plnal vornr .
        clear v_lines_in_xcel.
        describe table t_file lines v_lines_in_xcel.
        if v_lines_in_xcel is initial.
          write: / 'No data in input file'.
          stop.
        endif.
      else.
        write:/ 'Error reading input file'.
        stop.
      endif.
    ENDFORM.                    " getdata_fromfile
    *&      Form  bdc_build_script
          BDC Script
    FORM bdc_build_script.
       Get the material number from tables ZMSMI_FERR_RAW,
       ZMSMI_SNAP_RAW and ZMSMI_SIMP_RAW
      perform get_matnr.
    Screen 1010.
      perform bdc_screen using  'SAPLCPDI'    '1010'.
      perform bdc_field  using  'BDC_OKCODE'  '=VOUE'.
      perform bdc_field  using  'RC27M-MATNR'  SPACE .
      perform bdc_field  using  'RC27M-WERKS'  SPACE.
      perform bdc_field  using  'RC271-VBELN'  SPACE.
      perform bdc_field  using  'RC271-POSNR'  SPACE.
      perform bdc_field  using  'RC271-PSPNR'  SPACE.
      Clear v_plnnr.
    Get the Group from MAPL Table
      select single plnnr from mapl
                          into v_plnnr
                          where matnr = t_file-matnr
                          and   werks = t_file-werks
                          and   loekz = space
                          and   plnty = c_r
                          and   plnal = t_file-plnal.
      perform bdc_field  using  'RC271-PLNNR'   v_plnnr.
    Current date
    MOVE SY-DATUM TO V_DATE.
      perform get_date.
      perform bdc_field  using  'RC271-STTAG'   V_DATE.
      perform bdc_field  using  'RC271-PLNAL'   t_file-plnal.
    Screen 5400
      perform bdc_screen using  'SAPLCPDI'    '5400'.
      perform bdc_field  using  'BDC_OKCODE'  '=OSEA'.
    Screen 1010
      perform bdc_screen using  'SAPLCP02'  '1010'.
      perform bdc_field  using  'BDC_OKCODE'  '=ENT1'.
      perform bdc_field  using  'RC27H-VORNR'  T_FILE-VORNR.
    Screen 5400
      perform bdc_screen using  'SAPLCPDI'    '5400'.
      perform bdc_field  using  'BDC_OKCODE'  '=FHUE'.
      perform bdc_field  using  'RC27X-FLG_SEL(01)'  C_X.
    Get the no of records from PLAS,PLPO and PLFH Tables
      perform get_count.
    Screen 0200
      IF V_COUNT = 0.
        perform bdc_screen using  'SAPLCFDI'    '0200'.
        perform bdc_field  using  'BDC_OKCODE'  '/EFIM'.
      ELSEif v_count > 0.
    Screen 0100
        perform bdc_screen using  'SAPLCFDI'    '0100'.
        perform bdc_field  using  'BDC_OKCODE'  '/EFIM'.
      ENDIF.
    Screen 0230
      perform bdc_screen using  'SAPLCFDI'    '0200'.
      perform bdc_field  using  'BDC_OKCODE'  '=BACK'.
      perform bdc_field  using  'PLFHD-MATNR'  T_FILE-EQUNR.
      perform bdc_field  using  'PLFHD-STEUF'  T_FILE-STEUF.
      perform bdc_field  using  'PLFHD-MGVGW'  T_FILE-mgvgw.
      perform bdc_field  using  'PLFHD-MGEINH'  T_FILE-MGEINH.
    Screen 0100
      perform bdc_screen using  'SAPLCFDI'    '0100'.
      perform bdc_field  using  'BDC_OKCODE'  '=BU'.
    ENDFORM.                    " bdc_build_script
    *&      Form  get_matnr
          Get the material number from tables ZMSMI_FERR_RAW,
          ZMSMI_SNAP_RAW and ZMSMI_SIMP_RAW
    FORM get_matnr.
      clear v_matnr.
      case t_file-werks.
        when '0101'.
          select single cmatnr from zmsmi_simp_raw
                 into v_matnr  where matnr = t_file-matnr.
          if not v_matnr is initial.
            clear t_file-matnr.
            t_file-matnr = v_matnr.
          endif.
        when '0103'.
          select single cmatnr from zmsmi_ferr_raw
                 into v_matnr  where matnr = t_file-matnr.
          if not v_matnr is initial.
            clear t_file-matnr.
            t_file-matnr = v_matnr.
          endif.
        when '0102' or '0110' or '0111' or '0112' or '0113'
             or '0114' or '0115' or '0116' or '0117'.
          select single cmatnr from zmsmi_snap_raw
                 into v_matnr  where matnr = t_file-matnr.
          if not v_matnr is initial.
            clear t_file-matnr.
            t_file-matnr = v_matnr.
          endif.
      endcase.
    ENDFORM.                    " get_matnr
    *&      Form  bdc_screen
          BDC Script for Screen fields
         -->P_PROG   Program name
         -->P_SCRN   Screen Number
    FORM bdc_screen USING    p_prog
                             p_scrn.
      clear itab_bdc_tab.
      itab_bdc_tab-program = p_prog.
      itab_bdc_tab-dynpro = p_scrn.
      itab_bdc_tab-dynbegin = c_x.
      append itab_bdc_tab.
    ENDFORM.                    " bdc_screen
    *&      Form  bdc_field
          BDC Script for Screen fileds
         -->P_NAM   Field name
         -->P_VAL   Field value
    FORM bdc_field USING    p_nam
                            p_val.
      clear itab_bdc_tab.
      itab_bdc_tab-fnam = p_nam.
      itab_bdc_tab-fval = p_val.
      append itab_bdc_tab.
    ENDFORM.                    " bdc_field
    *&      Form  bdc_submit_transaction
          BDC_INSERT Function Module
    FORM bdc_submit_transaction.
      call transaction c_tcode using itab_bdc_tab
                       mode p_mode update 'S'.
      refresh itab_bdc_tab.
      CALL FUNCTION 'FORMAT_MESSAGE'
           EXPORTING
                ID        = SY-MSGID
                LANG      = '-E'
                NO        = SY-MSGNO
                V1        = SY-MSGV1
                V2        = SY-MSGV2
                V3        = SY-MSGV3
                V4        = SY-MSGV4
           IMPORTING
                MSG       = i_error-text
           EXCEPTIONS
                NOT_FOUND = 1
                OTHERS    = 2.
      i_error-matnr = t_file-matnr.
      i_error-werks = t_file-werks.
      i_error-plnnr = v_plnnr.
      i_error-vornr = t_file-vornr.
      append i_error.
      clear i_error.
      clear t_file.
    ENDFORM.                    " bdc_submit_transaction
    *&      Form  get_date
          Converted date as per CA22 Transaction
    FORM get_date.
      clear :  v_date,
               v_date1,
               v_date2,
               v_date3.
      v_date1 = sy-datum+0(4).
      v_date2 = sy-datum+4(2).
      v_date3 = sy-datum+6(2).
      concatenate v_date2 v_date3 v_date1 into v_date.
    ENDFORM.                    " get_date
    *&      Form  get_count
          text
    FORM get_count.
      clear v_count.
      select count(*) into v_count
               from  plas as a inner join plpo as b on aplnty = bplnty
                                                  and  aplnnr = bplnnr
                                                  and  aplnkn = bplnkn
                        inner join plfh as c  on  cplnty = aplnty
                                            and   cplnnr = aplnnr
                                            and   cplnal = aplnal
                                            and   cplnfl = aplnfl
                                            and   cplnkn = bplnkn
                         where a~plnty = c_r
                         and   a~plnnr = v_plnnr
                         and   a~plnal = t_file-plnal
                         and   c~objct = c_O
                         and   a~loekz = space
                         and   b~vornr = t_file-vornr
                         and   c~objty = c_fh
                         and   c~loekz = space.
    ENDFORM.                    " get_count
    end-of-selection.
    Displaying Error Log
    loop at i_error.
    write:/2 i_error-matnr,24 i_error-werks,32 i_error-plnnr,
           44  i_error-vornr,50 '-', 53 i_error-text.
    endloop.

  • Error Calling Oracle Stored Procedure From Within Report

    Hi,
    I have a report that calls an oracle stored procedure which returns a ref cursor. The report is working ok in our development environment when called from our development website through .NET.
    When the report is moved and accessed from our UAT website we get the following error :-
    Failed to open a rowset. Details: ADO Error Code: 0x Source: Microsoft OLE DB Provider for Oracle Description: One or more errors occurred during processing of command. Failed to open a rowset. Details: ADO Error Code: 0x Source: Microsoft OLE DB Provider for Oracle Description: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'RHS_GET_CAND_SECTION_REFS' ORA-06550: line 1, column 7: PL/SQL: Statement ignored Native Error: Failed to open a rowset. Error in File C:\WINDOWS\TEMP\temp_d663a952-bef6-4bf7-bf1a-5e288afdb612 {9B6DFB38-A436-4940-9D80-B4C23DFFFF19}.rpt: Failed to open a rowset.
    If we open the report manually we are prompted to enter database connection info. If we enter the UAT connection details the report runs ok. If we save the report and try to open it from UAT website through .NET it now opens ok.
    If we then move that same report back to the development environment and open from our development website it fails with the same error above.
    Both connections are using Microsoft OLE DB drivers and the Oracle databases are the same version (10.2.0.1.0).
    Is the connection information being stored in actual report and somehow being used when the report is opened through .NET?
    Any help appreciated
    Regards
    Paul

    Hi,
    Please let me know if the issue occurs with the crystal reports designer, if you are facing issues with the .NET application then a need to create a post [here|SAP Crystal Reports, version for Visual Studio;.
    Regards,
    Hitesh

  • Hi all can we call an application form from a report.

    Hi all,
    I am working with form , my requirement is to run an application form which i should call  from a report and i have to print the document for the values on the selection screen. how to pass the selection parameters to the form  and how to call the for form the program?
    Thanks in advance.
    regards,
    sre

    Hi Jyothi,
    Thanks for your reply,
    my issue is not with the script,  I have developed an extraction code in the apllication form user exit and i want to extract a file on to application server and
    also i want to print this form online when ever user wants.
    is there any function module to call this appication form and pass the required parameters?  or else  we have to assign this application form to any transaction code?
    please suggest me in this issue.
    regards,
    sre.

  • Calling custom Infotype method from ABAP report

    Hi Experts,
    I am working on an application where i need to call a method of a custom defined infotype.
    I have done this -->
    1. Create a custom infotype 9111
    2. SAP creates a class of that infotype ZCL_HRPA_INFOTYPE_9111
    3. Inside this method there are few inherited method which provide me functionality of insert , update , delete
    i want to call methods IF_HRPA_INFTY_BL~MODIFY,
    IF_HRPA_INFTY_BL~INSERT
    However when i call these method from abap report this method does not work.
    where as when i try to insert an entry using PA30 transaction it works.
    Does anyone know why does this happen and what is the solution?
    Regards,
    Ashish Shah

    Hi,
    This is the code we are using. Just calling the read and modify methods of the check class. Very simple actually .. we just want once update/insert to work but it does not.
    <CODE>
    REPORT  ZTESTRAD_WD.
    FIELD-SYMBOLS <p9106> TYPE p9106.
    DATA : infty_container_tab TYPE hrpad_infty_container_tab ,
           message_list        TYPE REF TO cl_hrpa_message_list,
         w_ok type boole_d  ,
         ref_class TYPE REF TO ZCL_HRPA_INFOTYPE_9106,
         container        TYPE REF TO if_hrpa_infty_container,
         it9106_container TYPE REF TO cl_hrpa_infotype_container,
         p9106_ref        TYPE REF TO data,
        busilog type ref to if_hrpa_masterdata_bl.
    CREATE OBJECT  message_list.
    TRY.
            CREATE OBJECT ref_class
              EXPORTING
                tclas = 'A'
                infty = '9106'.
          CATCH cx_hrpa_violated_assertion .
            write :/ 'Error during initialization'.
      ENDTRY.
    call method cl_hrpa_masterdata_bl=>get_instance
       importing
         masterdata_bl = busilog.
    TRY.
    CALL METHOD ref_class->IF_HRPA_INFTY_BL~read
      EXPORTING
        tclas           = 'A'
        pernr           = 'XXXXXXXX'
        infty           = '9106'
        begda           = sy-datum
        endda           = sy-datum
        no_auth_check   = abap_true
        message_handler = message_list
      IMPORTING
        container_tab   = infty_container_tab
        is_ok           = w_ok.
    CATCH cx_hrpa_violated_assertion .
       WRITE :/ 'Infotype could not be read'.
    ENDTRY.
    *" Fill the local structure with container data:
      loop at infty_container_tab into container.
        it9106_container ?= container.
        TRY.
        CALL METHOD it9106_container->primary_record_ref
          IMPORTING
            pnnnn_ref =  p9106_ref.
         CATCH cx_hrpa_violated_assertion .
        ENDTRY.
        ASSIGN p9106_ref->* to <p9106>.
        write :/ <p9106> .
      endloop.
    *" Just change some field values of the record
      <p9106>-C1name2 = 'Test name'.
      <p9106>-C2name2 = 'Test name 2 3 4'.
    data : return TYPE BAPIRETURN1,
           return1 TYPE BAPIRETURN1.
    *CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
    EXPORTING
       number        = <p9106>-pernr
    IMPORTING
      RETURN        = return1
    *PERFORM do_nothing(sapfp50p).
    The container itself is modified
      container ?= it9106_container->modify_primary_record( <p9106> ).
    CREATE OBJECT message_list.
    the invocation - errors are always fatal !!!
      DATA : lx_exception  TYPE REF TO cx_root,
             update_mode type HRPAD_UPDATE_MODE,
             massn type massn,
             massg type massg.
      TRY.
          CALL METHOD ref_class->IF_HRPA_INFTY_BL~MODIFY(
            EXPORTING
               old_container =                   it9106_container
               massn                          = massn
               massg                         = massg
               update_mode =                 update_mode
               no_auth_check =                   'X'
               message_handler =                 message_list
            IMPORTING
               is_ok =                           w_ok
            CHANGING
               container =                       container
        CATCH cx_hrpa_violated_assertion INTO lx_exception.
          RAISE EXCEPTION TYPE cx_wd_no_handler
            EXPORTING previous = lx_exception.
      ENDTRY.
    </CODE>
    I have also tried by instantiating the cl_hrpa_masterdata_bl and then calling the methods on that object...... makes no difference.
    I used this link to proceed with the modifications:
    http://help.sap.com/saphelp_erp2005/helpdata/en/43/21d2254bba2bebe10000000a1553f7/frameset.htm
    The funny thing is that the WHOLE logic executes without any error messages or dumps or anything. I have now debugged almost every line of code that these methods call. PA30 works just fine. HR_INFOTYPE_OPERATION does not .. that's a whole differnt story.

Maybe you are looking for

  • Itunes only freezes? PLEASE help!!!!

    I have called a number to have them fix it i have emailed and uninstalled then reistalled many many times. What happens is, iTunes will open up, but before i have any time to do anything, it will freeze, and my only option is ctrl alt delete. i am de

  • J1iex "capture excise duty" not updating Part1

    Hi MM masters, we have configred for capturing excise duty in MIGO and it is working fine. Now case is that when we are selecting "no excise"  at MIGO in excise tab and capturing excise at J1IEX "Capture excise Duty" with ref. of Material Doc. it is

  • How to find the last login details of a Sharepoint SSRS user

    How to /where to find the last login details of SSRS sharepoint user. Is there any table where we can check the last login details of user. This is because we are facing an issue of Subscription failure due to Sharepoint token expiration. If user log

  • Hi whenever I trfr  shipment cost in VI01 to FI system is directly posting

    Hi Expertese whenever I trfr  shipment cost in VI01 to FI, system is directly creating a PO and a service entry sheet and is there any control for service entry sheet through release strategy with the relation of shipment cost please let me know Than

  • Question Re: Clear Recent History Options

    Navigating to: Clear Recent History > Details > Form & Search History Question: I deselected all other boxes under details except Form & Search History Time range was set to: Everything My original objective for doing so was achieved However, when I