Problem in writiing data to UTL_File

Hello Friends,
I'm using UTL_FILE to write the data into csv file, but in the table 1 description column is there which contains 3000 characters.
My problem is i'm not able to write more than 750 characters in csv file and if i tried to do so then get the FILE_WRITE_ERROR. error msg
I tried by breaking the column into 3 different strings by giving the column as diffrent-different aliases but facing the same problem.
Please help me to write all the characters i.e 3000 charcters in a file.
Is there any character length limitation in csv file?
Regards,
Anand

As others have stated MAX_LINESIZE parameter of FOPEN is what matters.
SQL> create table t(c1 varchar2(4000), c2 varchar2(4000))
  2  /
Table created.
SQL> insert into t values(rpad('*',4000,'*'),rpad('#',4000,'#'))
  2  /
1 row created.
SQL> commit
  2  /
Commit complete.
SQL> select length(c1), length(c2) from t
  2  /
LENGTH(C1) LENGTH(C2)
      4000       4000
SQL> create or replace directory utl_dir as 'e:\oracle\log_files\utl_akivanew'
  2  /
Directory created.
SQL> declare
  2     lFile_Handle utl_file.file_type;
  3     lc1 t.c1%type;
  4     lc2 t.c2%type;
  5  begin
  6     select c1, c2 into lc1, lc2 from t;
  7
  8     lFile_Handle := utl_file.fopen('UTL_DIR','test.csv','W', 10000);
  9
10     utl_file.put_line(lFile_handle, lc1||','||lc2);
11
12     utl_file.fclose(lFile_Handle);
13  end;
14  /
PL/SQL procedure successfully completed.
SQL> declare
  2     lFile_Handle utl_file.file_type;
  3     lc1 t.c1%type;
  4     lc2 t.c2%type;
  5  begin
  6     select c1, c2 into lc1, lc2 from t;
  7
  8     lFile_Handle := utl_file.fopen('UTL_DIR','test.csv','W', 7000);
  9
10     utl_file.put_line(lFile_handle, lc1||','||lc2);
11
12     utl_file.fclose(lFile_Handle);
13  end;
14  /
declare
ERROR at line 1:
ORA-29285: file write error
ORA-06512: at "SYS.UTL_FILE", line 69
ORA-06512: at "SYS.UTL_FILE", line 604
ORA-06512: at line 12

Similar Messages

  • Problem getting correct data from MS Access after doing an Update

    Hi all,
    I have a problem getting correct data after doing an update. This is the scenario
    I am selecting some(Eg: All records where Column X = �7� ) records and update a column with a particular value (SET Column X = �c� ) in all these records by going through a while loop. In the while loop I add these records to a vector too, and pass it as the return value.
    After getting this return value I go through a for loop and get each record one by one from the DB and check if my previous update has actually happened. Since No errors were caught while updating DB, I assume all records are updated properly but my record set shows one after another as if it has not been updated. But if I open the DB it is actually updated.
    This does not happen to all records, always it shows like this
    1st record     Mode = �c�
    2nd record     Mode = �7�
    3st record     Mode = �c�
    4nd record     Mode = �7�
    9th record     Mode = �c�
    10th record     Mode = �7�
    I am relatively new to java and this is someone elses code that I have to modify,So I am not sure if there some thing wrong in the code too
    //Here is the method that gets records and call to update and add to vector
    public static Vector getCanceledWorkOrders() throws CSDDBException{
    //Variable declaration
      try {
        objDBConn = DBHandler.getCSDBCon();
        strSQL  = "SELECT bal bla WHERE [Detailed Mode])=?)";
        objStmt = objDBConn.prepareStatement(strSQL);   
        objStmt.setString(1, '7');
        objWOPRs = objStmt.executeQuery();
        while (objWOPRs.next()) {
         //Add elements to a vector by getting from result set
          //updating each record as PROCESSING_CANCELLED_WO(c)
          iRetVal = WorkOrderDetailingPolicy.updateRecordStatus(objPWODP.iWorkOrderNumber, objPWODP.strPersonInformed, EMSConstants.PROCESSING_CANCELLED_WO);
          if (iRetVal == -1) {
            throw new NewException("Updating failed");
      catch (Exception e) {
        vecWONumbers = null;
        throw new CSDDBException(e.getMessage());
      }finally{
        try {
          objWOPRs.close();
          objStmt.close();
          DBHandler.releaseCSDBCon(objDBConn);
        catch (Exception ex) {}
      //return vector
    //here is the code that actually updates the records
    public static int updateRecordStatus(int iWONumber, String strPerInformed , String strStatus) throws CSDDBException{
       PreparedStatement objStmt = null;
       Connection objDBConn  = null;
       String strSQL = null;
       int iRetVal = -1;
       try{
         objDBConn  = DBHandler.getCSDBCon();
         objDBConn.setAutoCommit(false);
         strSQL = "UPDATE Table SET [Detailed Mode] = ? WHERE bla bla";
         objStmt = objDBConn.prepareStatement(strSQL);
         objStmt.setString(1, strStatus);    
         objStmt.execute();
         objDBConn.commit();
         iRetVal = 1;
       }catch(Exception e){
         iRetVal = -1;
       }finally{
         try{
           objStmt.close();
           DBHandler.releaseCSDBCon(objDBConn);
         }catch(Exception ex){}
       return iRetVal;
    //Here is the code that call the records again
      public static WorkOrderDetailingPolicy getWorkOrders(int iWorkOrderNo) throws CSDDBException{
        Connection objDBConn = null;
        PreparedStatement objStmt = null;
        ResultSet objWOPRs = null;
        WorkOrderDetailingPolicy objPWODP = null;
        String strSQL = null;
        try {
          objDBConn = DBHandler.getCSDBCon();    
          strSQL = "SELECT * FROM [Work Order Detailing] WHERE [Work Order No] = ?";
          objStmt = objDBConn.prepareStatement(strSQL);
          objStmt.setInt(1, iWorkOrderNo);
           objWOPRs = objStmt.executeQuery();
          if (objWOPRs.next()) {
            objPWODP = new WorkOrderDetailingPolicy();
            objPWODP.iWorkOrderNumber = objWOPRs.getInt("Work Order No");
            //......Get Record values
        catch (Exception e) {
          objPWODP = null;
          throw new CSDDBException(e.getMessage());
        }finally{
          try {
            objWOPRs.close();
            objStmt.close();
            DBHandler.releaseCSDBCon(objDBConn);
          catch (Exception ex) {}
        return objPWODP;
      }

    Hello,
    Can you put an example of your problem online?
    Are you sure you're not having problems with case sensitive data?
    Thanks,
    Dimitri

  • Problem with Java Dates and UPDATE for SQL2000

    I am having problems with the date formats for Java. I am trying to put the current date time into a SQL table, here it the code I am using:
    var Today = new Date()
    var conn = Server.CreateObject( "ADODB.Connection" )
    conn.Open( "Provider=SQLOLEDB;Server=(local);Database=BillTracking;UID=sa;PWD=;")
    var sql = "UPDATE BillAssignments SET DatePosted = " + Today + " WHERE AssignmentID = '" + Request.QueryString("AssignmentID") + "'"
    var rs = conn.execute(sql)
    I keep getting different errors and I have been unable to find a solution yet. I know that I need to change the date format from the Java standard to the one that SQL likes.
    Help....
    Norm...

    Please tell us where the Java part of this comes in. I see that you are using JavaScript to load up data via an ADO connection (presumably on an IIS platform) - but I do not see where you are using Java
    Lee

  • Problem with passing date parameters in cursor

    Is there any problem in passing date parameters and like clause as below
    CURSOR eftcursor(start_date DATE, end_date DATE, where_clause varchar2) IS
    select * from r_records
    where created_date between start_date and end_date and description like where_clause;
    and in the open statement
    select to_date('01/06/2010 00:00:00', 'dd/mm/yyyy hh24:mi:ss') into startDate from dual;
    select to_date('01/07/2010 00:00:00', 'dd/mm/yyyy hh24:mi:ss') into endDate from dual;
    str := '%something%aaaaa%';
    open eftcursor(startDate ,endDate , str);
    Do i need to do any kind of conversion in the cursor where clause or when i am passing the parameter in open statement.

    Almora wrote:
    Do i need to do any kind of conversion in the cursor where clause or when i am passing the parameter in open statement.No, your code looks correct -- ou're passing a date to the cursor.
    You might consider whether you really need an explicit cursor though. An implicit cursor is easier to code and performs better.

  • I'm waiting for my new iPhone 5s to be delivered. I lost my iPhone 5 but did have it backed up on my MacBook Pro. I was using iOS6 at the time. Will I have a problem restoring the data to my new iPhone 5s assuming it will come with iOS7?

    I'm waiting for my new iPhone 5s to be delivered. I lost my iPhone 5 but did have it backed up on my MacBook Pro. I was using iOS6 at the time. Will I have a problem restoring the data to my new iPhone 5s assuming it will come with iOS7?

    No, you should not.  There are problems trying to go the other way, but updating a newer iOS release from a backup of an older iOS release has always been supported and is the basic means of setting up a new device from a previous one.

  • HT1296 I have a problem synching calendar data between my iPhone 3GS iOS 5.1 & Outlook 2007 on MS7.  The basic calendar is OK but the birthdays (little box icon) are a day early & cannot be changed to the correct date. How can I fix this?

    I have a problem synching calendar data between my iPhone 3GS iOS 5.1 & Outlook 2007 on MS7.  The basic calendar data transfer is OK but the birthdays (little box icon) are a day early & cannot be changed to the correct date. The birthday entries in my Outlook contacts have correct dates.How can I fix this?

    The following peocess corrects the calendar entry:
    edit the contact & change the birthday, save the change; edit the contact & change the birthday to the correct value, save the change again. The calendar entry then displays on the correct date.  Alternatively as a temp solution I can just de-select the "birthdays" calendar which stops the icon being displayed.
    Thanks for your advice, I think that it's n going to be a slow process to fix all the entries for not much return.

  • Problem while retrving data from a view

    Hi Friends
      i have a problem while retriving data from a view <b>v_t685a</b>.
    the error message is :""" "V_T685A" is not defined in the ABAP Dictionary as a table, projection view or database view."""
    i wrote : select single VTEXT1 from V_T685A into w_cst_jin1 where
                        KSCHL = 'JIN1' and
                        KAPPL = 'V'.
    how to retrive the data.
    waiting for quick response
    Regards
    Mukesh

    Hi
    This is a Maintenance View, not a Database View
    SO can't fetch data using select statement.
    You can use the Table <b>T685</b> directly to fetch the condition Types data straight away instead of the view. write the same select for this table and use.
    Regards
    Anji
    Message was edited by:
            Anji Reddy Vangala

  • Urgent: Problem opening a data form that uses a smart list

    Hi, we've got a problem with a data form that is quite unusual.
    The data form was working perfectly until yesterday when we put a smart list in it. The smart list is composed of 8 possible choices activated by the following member formula:
    IF (SML==1)
    ((BDG->BegBalance->&CurrYear)/12);
    ELSEIF (SML==2)
    ((INC_BDG->BegBalance)*("01A2"->ACT_FINAL));
    ELSEIF (SML==3)
    ACT_FINAL->&PreYear;
    ELSEIF (SML==4)
    (INC_ACT->&PreYear)*("01A2"->ACT_FINAL);
    ELSEIF (SML==5)
    ACT_FINAL;
    ELSEIF (SML==7)
    (INP_PER)*("01A2"->ACT_FINAL);
    ELSEIF (SML==8)
    INP_ASS;
    endif;
    Initially we tested the functioning of every different choice in the smart list and it was working properly. After a while we tried again to change the choices combination and we couldn't open the data form due to an error.
    It is quite strange because sometimes it work and sometimes it doesn't. In the data form (that is very large) there are many accounts and scenarios that are dynamic calc, in addition to the smart list formula; we tried to open the form two minutes ago converting the data storage type of a scenario from "Dynamic calc" into "Dynamic calc and Store", and it seems to work at the moment... does planning have a memory limit? Can someone suggest a solution (or help us find out the reason)?
    Bye

    Anton,
    new thread is one possibility, but the messsage box is not win message box, but SAP form, so I think you can clcik there without new thread too.
    Check this thread, hope it helps
    Re: Confirmation Dialog in my way

  • Problem with billing date at closed period

    Hi
    We have a problem with billing date in transaction . Previously we could set up different (earlier) billing date than the actual posting period and now it is not working. We receive an error message that the posting period is closed ) .
    I attached an example invoice which we managed to post and where you can see what Iu2019m thinking about, parking number: 1024337, BILLING DOCUMENT: 841835. In this case the billing date was at 30.11.2007, but the posting in 15.07.2008 and we managed to post.
    Pls help that issue
    yps

    hi,
    it is due to posting period closed for the month of 07/2008.
    u need to open posting during that period.
    Regards,
    Greeshma

  • Problem in passing data from 1 screen to another using BBP_DOC_CHANGE_BADI.

    Hi Experts,
    i am new to the SRM, i am facing problem in passing data from one screen to another.
    my requirement is that when we select one shopping cart and press the PROPOSE SOURCES OF SUPPLY button, we will fetch all the contracts that are attached to the shopping cart.
    we have implemented a BADI implementation of BBP_SOS_BADI (method BBP_SOS_CHECK) for passing some changed values to the contracts of the shopping cart into the popup screen that is displayed when we press PROPOSE SOURCES OF SUPPLY button and when we select any contract and press ASSIGN ONLY button in the popup screen the badi BBP_DOC_CHANGE_BADI is triggered.
    i have implemented another BADI implementation of BBP_DOC_CHANGE_BADI for fetching the selected contract and pass the values to another screen, but the problem is that when we select one contract and press the assign only button we are fetching the wrong contract number ( that is in the BADI method BB_SC_CHANGE parameter IT_ITEM we are fetching the wrong contract), if we again do the same procedure for the second time we are getting the correct contract.
    i am unable to understand why we are getting the wrong contract in the first time( that is we are getting contract other than the selected one).
    as per my understanding i think when we are passing data to the popup screen using BBP_DOC_CHANGE_BADI we are not updating the shopping cart with the changed data.
    can anyone tell me how we can update the SHOPPING CART with the changed contracts data, i have used BBP_PD_SC_UPDATE, BBP_PD_SC_SAVE and other shopping cart FM but nothing is happening.
    Thanks
    Tanveer

    Hello,
    What version of SRM are you on?  Have you check for OSS Notes?  I have had trouble with BBP_DOC_CHANGE_BADI but it was because of other issues.  The BADI works pretty well and it is called almost every time something happens to the shopping cart.
    I have noticed that sometimes that values are not changed til the second calling of the BADI.  I have yet understand why but I think it has to do with prompt processing. Usually, we train our requisitioners to click the 'Check'  button to flush things out.
    I don't know if I was helpful.... another thought.... could there be an error caught by BBP_DOC_CHECK_BADI that is preventing change in BBP_DOC_CHANGE_BADI?
    Regards, Dean.

  • Problem in assigning date valje to field

    Hi,
    I have  a problem in assignning date value to field.
    i am retriving date from a table and assigning it to a field which is date type in the form.. but it is not reflecting..
    Error: form Bad Value..
    how to assign the date values in the form..
    Mahi

    Hi mahendra,
    I think the Bad Value Error Occurs only if the databound datasource in the form must have different data type...
    oForm.DataSources.UserDataSources.Add("eDate", SAPbouiCOM.BoDataType.dt_DATE, 10);
      SAPbouiCOM.EditText oEdit;
      oEdit = oForm.Items.Item("1").Specific;
      oEdit.DataBind.SetBound(true, "", eDate);
    with Regards,
    MadhuSudhana Rao.G

  • XML..: Problem getting the data in the XML-file..

    I'm developing a flash-file for my customer to use when
    displaying list of products he's selling.
    His list of products is inside a XML-file and he want me to
    display an overview of the products inside a datagrid, so when you
    click on the product you're interested in the productinfo will be
    displayed.
    But.. I'm having problems grabbing the data I want as it
    seems to me that I have to use the unik ID's for each products to
    get the data I want. I've tried adding the unik ID-code to my
    action script but it still won't work.
    Here's a part of the XML-code:
    <Tooldata>
    <Store name="N/A" zipcode="0033450" city="N/A" url="N/A"
    phone="N/A" fax="N/A" email="N/A">
    <Tool unikID="5_0022" control="14" cmnd="update">
    <Toolgroupe>Hammer</Toolgroupe>
    <Brand>Knipps</Brand>
    <Model>K55_Knipps</Model>
    <Price>35€</Price>
    <Weight>N/A</Weight>
    <Soldout>0</Soldout>
    <Color>Red/Black</Color>
    <Images>
    <Images image="5_0022.jpg" prioritet="1" gen_id="16"
    desc="MainImage"/>
    <Images image="5_0022_1.jpg" prioritet="2" gen_id="16"
    desc="Image 1"/>
    <Images image="5_0022_2.jpg" prioritet="3" gen_id="16"
    desc="Image 2"/>
    <Images image="5_0022_3.jpg" prioritet="4" gen_id="16"
    desc="Image 3"/>
    </Images>
    Now, the code above is only one item/product. But there are
    several proucts listed in the XML-file and I find it hard to get
    the product and the product info that I want to be displayed.
    Here's my action script:
    var xmlLoader:URLLoader = new URLLoader();
    var xmlData:XML = new XML();
    xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
    xmlLoader.load(new URLRequest("ToolData.xml"));
    function LoadXML(e:Event):void {
    xmlData = new XML(e.target.data);
    ParseBildata(xmlData);
    function ParseTooldata(TooldataInput:XML):void {
    trace("XML Output");
    trace("------------------------");
    trace(TooldataInput.Store);
    If I want to trace the images I just write
    "trace(TooldataInput.Store.Images);
    But if I want to trace one unik tool it's impossible. Well,
    maybe not impossible.. I just don't know how to do just that.
    When you trace (TooldataInput.Store); you get all the tools
    at that store. But how do I trace only one tool using the unikID??
    Thanks a lot in advance!

    Ace,
    When using E4X if you have multiple nodes at the same level
    you should be able to access them as an XMLList. Looking at your
    XML you should be able to access each <Tool> node as:
    TooldataInput.Store.Tool[0];
    TooldataInput.Store.Tool[1];
    or as an entire list
    TooldataInput.Store.children()
    WL

  • Problem: new entered data is saved but I am facing one error message --- no

    This is a module program for gate entry of materials(miro). This is a simple entry form which updates z tables with data entered. I have to send the new record details automatically through mail to the particular vendor email  id from where the material has been purchased.
    Problem: new entered data is saved but I am facing one error message --- no authorization to unpack list with rfc when the program is sending list through mail.
    PROGRAM  ZMMI001_GRN_ENTRY_BARCODE  MESSAGE-ID ZMM .
    *Table Declaration
    TABLES : EKKO , EKPO , LFA1 , MARC ,
             MARD , J_1IMTCHID , EKET , MSEG,
             MKPF , ZMMT001_GRN_GATE,
             ZMMT002_GRN_ITEM.
    TABLES: ADR6.
    *Table Control Declaration
    CONTROLS : TC1 TYPE TABLEVIEW USING SCREEN 1000.
    DATA: COLS LIKE LINE OF TC1-COLS.
    *Internal Table Declaration
    DATA : BEGIN OF IT_TC1 OCCURS 0,
            SEL,
            SNO(2) TYPE C,
            ITEMCODE(18) TYPE C,
            ITEMNAME(40) TYPE C,
            QUANTITY TYPE P DECIMALS 2,
            EXCISE(13) TYPE P DECIMALS 2,
           END OF IT_TC1.
    DATA : IT_TEMP_TC1 LIKE IT_TC1 OCCURS 0  WITH HEADER LINE.
    DATA:   BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
    DATA : IT_EKPO LIKE EKPO OCCURS 0 WITH HEADER LINE.
    DATA : IT_EKKO LIKE EKKO OCCURS 0 WITH HEADER LINE.
    DATA : IT_EKET LIKE EKET OCCURS 0 WITH HEADER LINE.
    DATA : WK_ZMMT01 LIKE ZMMT001_GRN_GATE.
    DATA : IT_ZMMT01 LIKE ZMMT001_GRN_GATE OCCURS 0 WITH HEADER LINE.
    DATA : IT_ZMMT02 LIKE ZMMT002_GRN_ITEM OCCURS 0 WITH HEADER LINE.
    DATA : BEGIN OF IT_TEMP_EKPO OCCURS 0,
            EBELN LIKE EKPO-EBELN,
            EBELP LIKE EKPO-EBELP,
            MATNR LIKE EKPO-MATNR,
           END OF IT_TEMP_EKPO.
    DATA : BEGIN OF IT_MSEG OCCURS 0,
             MBLNR LIKE MSEG-MBLNR,
             MJAHR LIKE MSEG-MJAHR,
             ZEILE LIKE MSEG-ZEILE,
             BWART LIKE MSEG-BWART,
             MATNR LIKE MSEG-MATNR,
             EBELN LIKE MSEG-EBELN,
             EBELP LIKE MSEG-EBELP,
             BUDAT LIKE MKPF-BUDAT,
             MENGE LIKE MSEG-MENGE,
            END OF IT_MSEG.
    DATA : BEGIN OF IT_TEMP_MSEG OCCURS 0,
            MBLNR LIKE MSEG-MBLNR,
            MJAHR LIKE MSEG-MJAHR,
            ZEILE LIKE MSEG-ZEILE,
            BWART LIKE MSEG-BWART,
            EBELN LIKE MSEG-EBELN,
           END OF IT_TEMP_MSEG.
    DATA : BEGIN OF IT_TEMP_MKPF OCCURS 0,
            MBLNR LIKE MKPF-MBLNR,
            MJAHR LIKE MKPF-MJAHR,
            BUDAT LIKE MKPF-BUDAT,
            BKTXT LIKE MKPF-BKTXT,
           END OF IT_TEMP_MKPF.
    *Data Declaration
    DATA : WK_SNO TYPE I,
           WK_LIFNR LIKE LFA1-LIFNR,
           WK_EBELN(10) TYPE C,
           WK_VBELN(10) TYPE C,
           WK_FKDAT TYPE D,
           WK_NAME LIKE LFA1-NAME1,
           WK_SCHNO(10) TYPE C,
           WK_CHALNO(10) TYPE C,
           WK_CHALDATE(10) TYPE C,
           WK_GRNO(10) TYPE C,
           WK_GRDATE(10) TYPE C,
           WK_VEHICLE(10) TYPE C,
           WK_CARRIER(10) TYPE C,
           WK_FREIGHT(13) TYPE P DECIMALS 2,
           WK_MDOC(3) TYPE C,
           WK_DEPT(7) TYPE C,
           WK_MODE(7) TYPE C,
           WK_BASIC(13) TYPE P DECIMALS 2,
           WK_EXCISE(13) TYPE P DECIMALS 2,
           WK_TAX(13) TYPE P DECIMALS 2,
           WK_APPVAL(13) TYPE P DECIMALS 2,
           WK_CHAL(2) TYPE C,
           WK_FORM38(9) TYPE C,
           WK_COMMENT(30) TYPE C,
           WK_MAKTX(40) TYPE C,
           WK_LINES TYPE I,
           WK_TOTAL LIKE MARD-LABST,
           WK_LGORT LIKE MARD-LGORT,
           WK_EXCISE_IND,
           WK_TOT_EXCISE LIKE EKPO-NETWR,
           WK_DIFF LIKE EKPO-NETWR,
           WK_BSTYP LIKE EKKO-BSTYP,
           WK_BSART LIKE EKKO-BSART,
           WK_DIFF_QTY LIKE EKET-MENGE,
           WK_101_QTY LIKE EKET-MENGE,
           WK_102_QTY LIKE EKET-MENGE,
           WK_122_QTY LIKE EKET-MENGE,
           WK_WERKS LIKE EKPO-WERKS,
           WK_CHAR_SNO TYPE STRING,
           WK_DATE LIKE SY-DATUM,
           WK_TIME LIKE SY-UZEIT.
    DATA : WK_DATE1 LIKE SY-DATUM,
           WK_DATE2 LIKE SY-DATUM,
           WK_FISYEAR TYPE I,
           WK_CHAR_YEAR(20) TYPE C.
    DATA : V_UCOMM TYPE SY-UCOMM,
           V_INDEX(10) TYPE   C,
           V_QUANTITY(8) TYPE C.
    **DECLARATION FOR INPUT HELP*
    TYPES : BEGIN OF VALUES,
             TXZ01 LIKE EKPO-TXZ01,
             MENGE LIKE EKPO-MENGE,
             MATNR LIKE EKPO-MATNR,
            END OF VALUES.
    TYPES : BEGIN OF VALUES1,
             EBELN LIKE EKKO-EBELN,
            END OF VALUES1.
    TYPES : BEGIN OF VALUES2,
             NAME1 LIKE LFA1-NAME1,
             LIFNR LIKE LFA1-LIFNR,
            END OF VALUES2.
    DATA: PROGNAME LIKE SY-REPID,
          DYNNUM   LIKE SY-DYNNR,
          DYNPRO_VALUES TYPE TABLE OF DYNPREAD,
          FIELD_VALUE LIKE LINE OF DYNPRO_VALUES,
          VALUES_TAB TYPE TABLE OF VALUES WITH HEADER LINE,
          VALUES_TAB1 TYPE TABLE OF VALUES1,
          VALUE_EBELN TYPE TABLE OF VALUES1.
         VALUES_TAB2 TYPE TABLE OF VALUES2.
    DATA : VALUES_TAB2 TYPE VALUES2 OCCURS 0 WITH HEADER LINE.
    DATA : RETURN_TAB  LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.
    *nidhi
    DATA: BEGIN OF IT_LFA1 OCCURS 0,
    LIFNR LIKE LFA1-LIFNR,
    ADRNR LIKE LFA1-ADRNR,
    END OF IT_LFA1.
    DATA: BEGIN OF IT_ADR6 OCCURS 0,
          ADDRNUMBER TYPE ADR6-ADDRNUMBER,
          SMTP_ADDR  TYPE ADR6-SMTP_ADDR,
                   END OF IT_ADR6.
    *nidhi
    *&      Module  FILL_TABLE_CONTROL  OUTPUT
          text
    MODULE FILL_TABLE_CONTROL OUTPUT.
      READ TABLE IT_TEMP_TC1 INTO IT_TC1 INDEX TC1-CURRENT_LINE.
    ENDMODULE.                 " FILL_TABLE_CONTROL  OUTPUT
    *&      Module  READ_TABLE_CONTROL  INPUT
          text
    MODULE READ_TABLE_CONTROL INPUT.
    *Validation for Item code
      CLEAR : EKPO-MATNR,
              EKPO-WERKS.
    IF sy-uname = 'GATE1020'.
      IF ( SY-UNAME = 'GATE1010' OR  SY-UNAME = 'GATE1020' OR
           SY-UNAME = 'GATE1030' OR  SY-UNAME = 'GATE1040' OR
           SY-UNAME = 'GATE1050' OR  SY-UNAME = 'GATE1060' OR
           SY-UNAME = 'GATE1070' OR  SY-UNAME = 'GATE1080' OR
           SY-UNAME = 'ABAP'  ).
    **SELECT SINGLE bstyp  FROM EKKO INTO WK_BSTYP  WHERE ebeln = wk_ebeln.
    **SELECT SINGLE bsart FROM EKKO INTO WK_BSART WHERE ebeln = wk_ebeln.
        READ TABLE VALUES_TAB WITH KEY MATNR = IT_TC1-ITEMCODE.
    **ELSE.
        SELECT SINGLE MATNR WERKS
                  FROM EKPO CLIENT SPECIFIED
                  INTO (EKPO-MATNR , EKPO-WERKS )
                  WHERE MANDT = SY-MANDT AND
                  EBELN = WK_EBELN AND
                  MATNR EQ IT_TC1-ITEMCODE.
    ENDIF.
        IF SY-SUBRC NE 0 AND NOT IT_TC1-ITEMCODE IS INITIAL.
      CLEAR it_tc1.
          MESSAGE E003 WITH TEXT-002.
        ELSE.
          SELECT SINGLE MAKTX FROM MAKT
                       CLIENT SPECIFIED
                       INTO WK_MAKTX WHERE
                       MANDT = SY-MANDT AND
                       MATNR = IT_TC1-ITEMCODE AND SPRAS = SY-LANGU.
        ENDIF.
      ENDIF.
    **SELECT SINGLE bstyp  FROM EKKO INTO WK_BSTYP  WHERE ebeln = wk_ebeln.
    **SELECT SINGLE bsart FROM EKKO INTO WK_BSART WHERE ebeln = wk_ebeln.
      IF ( SY-UNAME = 'GATE1010' OR  SY-UNAME = 'GATE1020' OR
           SY-UNAME = 'GATE1030' OR  SY-UNAME = 'GATE1040' OR
           SY-UNAME = 'GATE1050' OR  SY-UNAME = 'GATE1060' OR
           SY-UNAME = 'GATE1070' OR  SY-UNAME = 'GATE1080' OR  SY-UNAME =
           'ABAP'  ).
        IF WK_BSART = 'ZLR' .
    Validation for Quantity.
          IF NOT IT_TC1-QUANTITY IS INITIAL.
            READ TABLE VALUES_TAB WITH KEY MATNR = IT_TC1-ITEMCODE.
            IF SY-SUBRC EQ 0 AND IT_TC1-QUANTITY GT VALUES_TAB-MENGE.
              MESSAGE E003 WITH TEXT-013.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    *Validation for Max.Stock Level
      CLEAR : MARC-MABST.
      SELECT SINGLE MABST FROM MARC
              CLIENT SPECIFIED
              INTO MARC-MABST
              WHERE MANDT = SY-MANDT AND
              MATNR = IT_TC1-ITEMCODE AND
              WERKS = EKPO-WERKS.
      CLEAR : MARD-LABST ,
              MARD-INSME .
    SELECT SINGLE labst insme FROM mard
              CLIENT SPECIFIED
              INTO (mard-labst , mard-insme )
              WHERE MANDT = SY-MANDT AND
              matnr = it_tc1-itemcode
              AND werks = ekpo-werks.
      SELECT  SUM( LABST ) SUM( INSME ) FROM MARD
               CLIENT SPECIFIED
               INTO (MARD-LABST , MARD-INSME )
               WHERE MANDT = SY-MANDT AND
               MATNR = IT_TC1-ITEMCODE
               AND WERKS = EKPO-WERKS.
      CLEAR : WK_TOTAL.
      WK_TOTAL = MARD-LABST + MARD-INSME + IT_TC1-QUANTITY.
      IF WK_BSART = 'ZLR'.
        IF WK_TOTAL GT MARC-MABST.
          MESSAGE E001 WITH IT_TC1-ITEMCODE.
        ENDIF.
      ENDIF.
    Appending the table control data to Internal table
      READ TABLE IT_TEMP_TC1 INDEX TC1-CURRENT_LINE.
      IT_TC1-SNO = TC1-CURRENT_LINE.
      IF SY-SUBRC EQ 0.
        MODIFY IT_TEMP_TC1 FROM IT_TC1 INDEX TC1-CURRENT_LINE.
      ELSE.
        READ TABLE IT_TEMP_TC1 WITH KEY ITEMCODE = IT_TC1-ITEMCODE.
        IF SY-SUBRC NE 0.
          IT_TC1-ITEMNAME = WK_MAKTX.
          IF IT_TC1-ITEMCODE IS INITIAL.
            CLEAR IT_TC1.
          ELSE.
            APPEND IT_TC1 TO IT_TEMP_TC1.
          ENDIF.
        ELSE.
          MESSAGE E003 WITH TEXT-004.
        ENDIF.
      ENDIF.
      CLEAR : J_1IMTCHID-J_1ICAPIND.
      SELECT SINGLE J_1ICAPIND FROM J_1IMTCHID
                    CLIENT SPECIFIED
                    INTO  J_1IMTCHID-J_1ICAPIND
                    WHERE MANDT = SY-MANDT AND
                    MATNR = IT_TC1-ITEMCODE AND
                    WERKS = EKPO-WERKS.
      IF SY-SUBRC EQ 0.
        IF J_1IMTCHID-J_1ICAPIND = 'N'.
          WK_EXCISE_IND = 'N'.
        ELSE.
          WK_EXCISE_IND = 'E'.
        ENDIF.
      ENDIF.
    ENDMODULE.                 " READ_TABLE_CONTROL  INPUT
    *&      Module  USER_COMMAND_1000  INPUT
          text
    MODULE USER_COMMAND_1000 INPUT.
      V_UCOMM = SY-UCOMM.
      CASE V_UCOMM.
        WHEN 'WK_SAVE'.
          IF WK_APPVAL > 0.
            IF ( SY-UNAME = 'STORE1010'  OR SY-UNAME = 'STORE1020' OR
                 SY-UNAME = 'STORE1030'  OR SY-UNAME = 'STORE1040' OR
                 SY-UNAME = 'STORE1050'  OR SY-UNAME = 'STORE1060' OR
                 SY-UNAME = 'STORE1070'  OR SY-UNAME = 'STORE1080'  ).
              CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
                EXPORTING
                  INPUT  = WK_VBELN
                IMPORTING
                  OUTPUT = WK_VBELN.
              SELECT * FROM EKKO INTO TABLE IT_EKKO WHERE EBELN = WK_EBELN
              AND
                                                          LOEKZ NE 'X'.
              IF SY-SUBRC EQ 0.
                READ TABLE IT_EKKO INDEX 1.
                WK_BSTYP = IT_EKKO-BSTYP.
              ENDIF.
              SELECT * FROM EKPO CLIENT SPECIFIED
              INTO TABLE IT_EKPO WHERE
              MANDT = SY-MANDT AND
              EBELN = WK_EBELN AND LOEKZ NE 'X'.
              SORT IT_EKPO BY EBELN EBELP.
              IF WK_BSTYP = 'L'.
                SELECT * FROM EKET CLIENT SPECIFIED
                INTO TABLE IT_EKET WHERE
                MANDT = SY-MANDT AND
                EBELN = WK_EBELN.
                IF SY-SUBRC EQ 0.
                  SORT IT_EKET BY EBELN EBELP ETENR.
                  LOOP AT IT_EKPO.
                    CLEAR WK_DIFF_QTY.
                    LOOP AT IT_EKET WHERE EBELN = IT_EKPO-EBELN
                                      AND EBELP = IT_EKPO-EBELP
                                      AND EINDT LE SY-DATUM.
                      WK_DIFF_QTY = WK_DIFF_QTY + IT_EKET-MENGE -
                      IT_EKET-WEMNG.
                    ENDLOOP.
                    IF WK_DIFF_QTY GT 0.
                      IT_TEMP_EKPO-EBELN = IT_EKET-EBELN.
                      IT_TEMP_EKPO-EBELP = IT_EKET-EBELP.
                      IT_TEMP_EKPO-MATNR = IT_EKPO-MATNR.
                      APPEND IT_TEMP_EKPO.
                    ENDIF.
                  ENDLOOP.
                ENDIF.
              ELSEIF WK_BSTYP = 'F'.
                SELECT * FROM EKET
                CLIENT SPECIFIED
                INTO TABLE IT_EKET
                WHERE MANDT = SY-MANDT AND
                EBELN = IT_EKPO-EBELN.
                LOOP AT IT_EKPO.
                  CLEAR : WK_DIFF_QTY.
                  READ TABLE IT_EKET WITH KEY EBELN = IT_EKPO-EBELN
                                              EBELP = IT_EKPO-EBELP.
                  IF SY-SUBRC EQ 0.
                    WK_DIFF_QTY = IT_EKPO-MENGE - IT_EKET-WEMNG.
                  ENDIF.
                  IF WK_DIFF_QTY GT 0.
                    IT_TEMP_EKPO-EBELN = IT_EKET-EBELN.
                    IT_TEMP_EKPO-EBELP = IT_EKET-EBELP.
                    IT_TEMP_EKPO-MATNR = IT_EKPO-MATNR.
                    APPEND IT_TEMP_EKPO.
                  ENDIF.
                ENDLOOP.
              ENDIF.
              SORT IT_TEMP_EKPO BY EBELN EBELP.
              PERFORM BDC_DYNPRO      USING 'SAPLMIGO' '0001'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                       '=OK_GO'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                       'GODYNPRO-PO_NUMBER'.
              PERFORM BDC_FIELD       USING 'GODYNPRO-PO_NUMBER'
                                       WK_EBELN.
              PERFORM BDC_DYNPRO      USING 'SAPLMIGO' '0001'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                       '=OK_GO'.
              IF WK_EXCISE_IND = 'E'.
                PERFORM BDC_FIELD       USING 'J_1IEXHEAD-EXNUM'
                                         WK_VBELN.
                PERFORM BDC_FIELD       USING 'J_1IEXHEAD-EXDAT'
                                        WK_FKDAT.
                PERFORM BDC_FIELD       USING 'GOHEAD-LFSNR'
                                         WK_VBELN.
              ELSE.
                PERFORM BDC_FIELD       USING 'GOHEAD-LFSNR'
                                         WK_VBELN.
              ENDIF.
              CLEAR : WK_CHAR_SNO.
              WK_CHAR_SNO = WK_SNO.
              CONDENSE WK_CHAR_SNO NO-GAPS.
              PERFORM BDC_FIELD       USING 'GOHEAD-BKTXT'
                                       WK_CHAR_SNO.
              LOOP AT IT_TEMP_TC1.
                READ TABLE IT_TEMP_EKPO WITH KEY MATNR =
                IT_TEMP_TC1-ITEMCODE.
                IF SY-SUBRC EQ 0.
                  CLEAR V_INDEX.
                  V_INDEX = SY-TABIX.
                  CONDENSE V_INDEX NO-GAPS.
                  PERFORM BDC_DYNPRO      USING 'SAPLMIGO' '0001'.
                  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                           '=OK_GO'.
                  PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                           'GODYNPRO-DETAIL_ZEILE'.
                  PERFORM BDC_FIELD       USING 'GODYNPRO-DETAIL_ZEILE'
                  PERFORM BDC_FIELD       USING 'GODYNPRO-DETAIL_ZEILE'
                                           V_INDEX.
                  PERFORM BDC_DYNPRO      USING 'SAPLMIGO' '0001'.
                  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                           '=OK_GO'.
                  PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                           'GOITEM-ERFMG'.
                  PERFORM BDC_FIELD       USING 'GOITEM-ERFMG'
                  CLEAR V_QUANTITY.
                  V_QUANTITY = IT_TEMP_TC1-QUANTITY.
                  CONDENSE V_QUANTITY NO-GAPS.
                  PERFORM BDC_FIELD       USING 'GOITEM-ERFMG'
                                           V_QUANTITY.
                  PERFORM BDC_FIELD       USING 'GOITEM-LSMNG'
                                          V_QUANTITY.
                perform bdc_field       using 'GOITEM-LGOBE'
                                        WK_LGORT.
                ENDIF.
              ENDLOOP.
              CALL TRANSACTION 'MIGO' USING BDCDATA
                              MODE   'E'
                              UPDATE 'L'.
              IF SY-SUBRC NE 0.
                MESSAGE E003 WITH TEXT-003.
                LOOP AT SCREEN.
                  SCREEN-INPUT = 1.
                  MODIFY SCREEN.
                ENDLOOP.
              ENDIF.
              LEAVE PROGRAM.
            ELSE.
              CLEAR : WK_TOT_EXCISE.
              IF NOT WK_EXCISE IS INITIAL.
                LOOP AT IT_TEMP_TC1.
                  READ TABLE IT_EKPO WITH KEY MATNR = IT_TEMP_TC1-ITEMCODE.
                  IF SY-SUBRC EQ 0.
                    WK_TOT_EXCISE = WK_TOT_EXCISE +
               ( ( ( IT_EKPO-NETWR / IT_EKPO-MENGE ) * 16  / 100 )
    IT_TEMP_TC1-QUANTITY ).
                  ENDIF.
                ENDLOOP.
                WK_DIFF = WK_EXCISE - WK_TOT_EXCISE.
                IF WK_DIFF LE 0.
                  WK_DIFF = -1 * WK_DIFF.
                ENDIF.
                IF WK_DIFF GE 1.
                  WK_COMMENT = 'Difference in Excise. Please Check!'.
                ENDIF.
              ENDIF.
              SELECT * FROM EKPO CLIENT SPECIFIED
              INTO TABLE IT_EKPO WHERE
              MANDT = SY-MANDT AND
              EBELN = WK_EBELN.
              IF SY-SUBRC EQ 0.
                READ TABLE IT_EKPO INDEX 1.
                WK_WERKS = IT_EKPO-WERKS.
              ENDIF.
              SELECT * FROM ZMMT001_GRN_GATE
              CLIENT SPECIFIED
              INTO TABLE IT_ZMMT01
              WHERE MANDT = SY-MANDT AND
              WERKS = WK_WERKS.
              IF SY-SUBRC EQ 0.
                SORT IT_ZMMT01 BY SERIAL DESCENDING.
                READ TABLE IT_ZMMT01 INDEX 1.
                WK_SNO = IT_ZMMT01-SERIAL + 1.
              ELSE.
                WK_SNO = 1.
              ENDIF.
              CLEAR WK_ZMMT01.
              WK_ZMMT01-MANDT = SY-MANDT.
              WK_ZMMT01-SERIAL = WK_SNO.
              WK_ZMMT01-WERKS = WK_WERKS.
              WK_ZMMT01-EBELN = WK_EBELN.
              WK_ZMMT01-LIFNR = WK_LIFNR.
              WK_ZMMT01-CHALNO = WK_CHALNO.
              WK_ZMMT01-CHALDATE = WK_CHALDATE.
              WK_ZMMT01-BILLNO = WK_VBELN.
              WK_ZMMT01-BILLDATE = WK_FKDAT.
              WK_ZMMT01-GRNUMBER = WK_GRNO.
              WK_ZMMT01-GRDATE = WK_GRDATE.
              WK_ZMMT01-VEHICLE = WK_VEHICLE.
              WK_ZMMT01-CARRIER = WK_CARRIER.
              WK_ZMMT01-FREIGHT = WK_FREIGHT.
              WK_ZMMT01-MDOC = WK_MDOC.
              WK_ZMMT01-DEPT = WK_DEPT.
              WK_ZMMT01-PAYMODE = WK_MODE.
              WK_ZMMT01-BASIC = WK_BASIC.
              WK_ZMMT01-EXCISE = WK_EXCISE.
              WK_ZMMT01-TAXAMT = WK_TAX.
              WK_ZMMT01-APPVAL = WK_APPVAL.
              WK_ZMMT01-CHALINV = WK_CHAL.
              WK_ZMMT01-FORM38 = WK_FORM38.
              WK_ZMMT01-COMMENTS = WK_COMMENT.
              WK_ZMMT01-CDATE    = SY-DATUM.
              WK_ZMMT01-CTIME    = SY-UZEIT.
              WK_ZMMT01-PERSON   = SY-UNAME.
              IF WK_FKDAT+4(2) = '04' OR
                 WK_FKDAT+4(2) = '05' OR
                 WK_FKDAT+4(2) = '06' OR
                 WK_FKDAT+4(2) = '07' OR
                 WK_FKDAT+4(2) = '08' OR
                 WK_FKDAT+4(2) = '09' OR
                 WK_FKDAT+4(2) = '10' OR
                 WK_FKDAT+4(2) = '11' OR
                 WK_FKDAT+4(2) = '12'.
                WK_DATE10(4) = WK_FKDAT0(4).
                WK_DATE1+4(2) = '04'.
                WK_DATE1+6(2) = '01'.
              ELSEIF
                 WK_FKDAT+4(2) = '01' OR
                 WK_FKDAT+4(2) = '02' OR
                 WK_FKDAT+4(2) = '03'.
                WK_FISYEAR = WK_FKDAT+0(4).
                WK_FISYEAR = WK_FISYEAR - 1.
                WK_CHAR_YEAR = WK_FISYEAR.
                CONDENSE WK_CHAR_YEAR NO-GAPS.
                WK_DATE1+0(4) = WK_CHAR_YEAR.
                WK_DATE1+4(2) = '04'.
                WK_DATE1+6(2) = '01'.
              ELSE.
              ENDIF.
    nidhi
              SELECT LIFNR ADRNR FROM LFA1 INTO TABLE IT_LFA1 WHERE LIFNR =
              WK_ZMMT01-LIFNR.
              SELECT ADDRNUMBER SMTP_ADDR FROM ADR6 INTO TABLE IT_ADR6 FOR
    ALL ENTRIES IN IT_LFA1 WHERE ADDRNUMBER = IT_LFA1-ADRNR.
              SELECT SINGLE * FROM ZMMT001_GRN_GATE
              CLIENT SPECIFIED
              WHERE MANDT = SY-MANDT AND
              WERKS = WK_WERKS AND
              LIFNR = WK_LIFNR AND
              BILLNO = WK_VBELN AND
              BILLDATE GE WK_DATE1.
              IF SY-SUBRC EQ 0.
                MESSAGE E003 WITH TEXT-006.
              ENDIF.
              CLEAR IT_ZMMT02.
              REFRESH IT_ZMMT02.
              LOOP AT IT_TEMP_TC1.
                IT_ZMMT02-MANDT = SY-MANDT.
                IT_ZMMT02-SERIAL = WK_SNO.
                IT_ZMMT02-WERKS = WK_WERKS.
                IT_ZMMT02-EBELN = WK_EBELN.
                IT_ZMMT02-ITEMCODE = IT_TEMP_TC1-ITEMCODE.
                IT_ZMMT02-DESCRIPTION = IT_TEMP_TC1-ITEMNAME.
                IT_ZMMT02-QUANTITY = IT_TEMP_TC1-QUANTITY.
                IT_ZMMT02-EXCISE = IT_TEMP_TC1-EXCISE.
                APPEND IT_ZMMT02.
                CLEAR IT_ZMMT02.
              ENDLOOP.
              IF IT_ZMMT02[] IS INITIAL.
                MESSAGE E003 WITH TEXT-007.
              ENDIF.
              IF SY-UNAME = 'GATE1010' AND WK_WERKS NE '1010'.
                MESSAGE E003 WITH TEXT-008.
              ELSEIF SY-UNAME = 'GATE1020' AND WK_WERKS NE '1020'.
                MESSAGE E003 WITH TEXT-008.
              ELSEIF SY-UNAME = 'GATE1030' AND WK_WERKS NE '1030'.
                MESSAGE E003 WITH TEXT-008.
              ELSEIF SY-UNAME = 'GATE1040' AND WK_WERKS NE '1040'.
                MESSAGE E003 WITH TEXT-008.
              ELSEIF SY-UNAME = 'GATE1050' AND WK_WERKS NE '1050'.
                MESSAGE E003 WITH TEXT-008.
              ELSEIF SY-UNAME = 'GATE1060' AND WK_WERKS NE '1060'.
                MESSAGE E003 WITH TEXT-008.
              ELSEIF SY-UNAME = 'ABAP' AND WK_WERKS NE 'ABAP'.
                MESSAGE E003 WITH TEXT-008.
              ELSEIF SY-UNAME = 'GATE1070' AND WK_WERKS NE '1070'.
                MESSAGE E003 WITH TEXT-008.
              ELSEIF SY-UNAME = 'GATE1080' AND WK_WERKS NE '1080'.
                MESSAGE E003 WITH TEXT-008.
              ENDIF.
              INSERT ZMMT001_GRN_GATE FROM WK_ZMMT01.
              INSERT ZMMT002_GRN_ITEM FROM TABLE IT_ZMMT02.
              IF SY-SUBRC EQ 0.
                COMMIT WORK.
                MESSAGE I002 WITH WK_SNO.
    ********nidhi*******************************************************
                CALL SCREEN 1001.
                CLEAR WK_LIFNR.
                CLEAR WK_EBELN.
                CLEAR WK_NAME.
                CLEAR WK_SCHNO.
                CLEAR WK_CHALNO.
                CLEAR WK_CHALDATE.
                CLEAR WK_VBELN.
                CLEAR WK_FKDAT.
                CLEAR WK_GRNO.
                CLEAR WK_GRDATE.
                CLEAR WK_VEHICLE.
                CLEAR WK_CARRIER.
                CLEAR WK_FREIGHT.
                CLEAR WK_MDOC.
                CLEAR WK_DEPT.
                CLEAR WK_MODE.
                CLEAR WK_BASIC.
                CLEAR WK_EXCISE.
                CLEAR WK_TAX.
                CLEAR WK_APPVAL.
                CLEAR WK_CHAL.
                CLEAR WK_FORM38.
                REFRESH IT_TEMP_TC1.
                CLEAR WK_FISYEAR.
                CLEAR WK_DATE1.
                CLEAR WK_CHAR_YEAR.
             CALL TRANSACTION 'ZMMI001'.
              ELSE.
                ROLLBACK WORK.
                MESSAGE E003 WITH TEXT-006.
              ENDIF.
            ENDIF.
          ELSE.
            MESSAGE E009 WITH TEXT-014.
          ENDIF.
        WHEN 'WK_EXIT'.
        WHEN 'WK_CLEAR'.
          CLEAR WK_LIFNR.
          CLEAR WK_EBELN.
          CLEAR WK_NAME.
          CLEAR WK_SCHNO.
          CLEAR WK_CHALNO.
          CLEAR WK_CHALDATE.
          CLEAR WK_VBELN.
          CLEAR WK_FKDAT.
          CLEAR WK_GRNO.
          CLEAR WK_GRDATE.
          CLEAR WK_VEHICLE.
          CLEAR WK_CARRIER.
          CLEAR WK_FREIGHT.
          CLEAR WK_MDOC.
          CLEAR WK_DEPT.
          CLEAR WK_MODE.
          CLEAR WK_BASIC.
          CLEAR WK_EXCISE.
          CLEAR WK_TAX.
          CLEAR WK_APPVAL.
          CLEAR WK_CHAL.
          CLEAR WK_FORM38.
          REFRESH IT_TEMP_TC1 .
          CLEAR WK_FISYEAR.
          CLEAR WK_DATE1.
          CLEAR WK_CHAR_YEAR.
        WHEN 'DELETE'.
          DELETE IT_TEMP_TC1 WHERE SEL = 'X'.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_1000  INPUT
           Start new screen                                              *
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
      CLEAR BDCDATA.
      BDCDATA-PROGRAM  = PROGRAM.
      BDCDATA-DYNPRO   = DYNPRO.
      BDCDATA-DYNBEGIN = 'X'.
      APPEND BDCDATA.
    ENDFORM.                    "BDC_DYNPRO
           Insert field                                                  *
    FORM BDC_FIELD USING FNAM FVAL.
    IF FVAL <> NODATA.
      CLEAR BDCDATA.
      BDCDATA-FNAM = FNAM.
      BDCDATA-FVAL = FVAL.
      APPEND BDCDATA.
    ENDIF.
    ENDFORM.                    "BDC_FIELD
    *&      Module  STATUS_1000  OUTPUT
          text
    MODULE STATUS_1000 OUTPUT.
      SET PF-STATUS 'GRN'.
      SET TITLEBAR 'GRN'.
      PROGNAME = SY-REPID.
      DYNNUM   = SY-DYNNR.
      CLEAR: FIELD_VALUE, DYNPRO_VALUES.
      FIELD_VALUE-FIELDNAME = 'IT_TC1-ITEMCODE'.
      APPEND FIELD_VALUE TO DYNPRO_VALUES.
      FIELD_VALUE-FIELDNAME = 'WK_EBELN'.
      APPEND FIELD_VALUE TO DYNPRO_VALUES.
      FIELD_VALUE-FIELDNAME = 'WK_LIFNR'.
      APPEND FIELD_VALUE TO DYNPRO_VALUES.
      LOOP AT SCREEN.
        IF SCREEN-NAME NE 'WK_COMMENT'.
          SCREEN-INPUT = 1.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
      IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR
           SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR
           SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR
           SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR  SY-UNAME =
           'ABAP' ).
        LOOP AT SCREEN.
          IF SCREEN-NAME = 'WK_SNO' OR
             SCREEN-NAME = 'SNO' OR
             SCREEN-NAME = 'WK_COMMENT' .
            SCREEN-INVISIBLE = 1.
            SCREEN-ACTIVE = 0.
            SCREEN-INPUT = 0.
            SCREEN-OUTPUT = 0.
          ENDIF.
          MODIFY SCREEN.
        ENDLOOP.
        IF WK_LIFNR IS INITIAL.
          SET CURSOR FIELD 'WK_LIFNR'.
        ELSEIF WK_EBELN IS INITIAL.
          SET CURSOR FIELD 'WK_EBELN'.
        ELSEIF WK_VBELN IS INITIAL.
          SET CURSOR FIELD 'WK_VBELN'.
        ELSEIF WK_FKDAT IS INITIAL.
          SET CURSOR FIELD 'WK_FKDAT'.
        ENDIF.
      ELSE.
        IF NOT WK_SNO IS INITIAL.
          IF SY-UNAME = 'STORE1010'.
            WK_WERKS = '1010'.
          ELSEIF SY-UNAME = 'STORE1020'.
            WK_WERKS = '1020'.
          ELSEIF SY-UNAME = 'STORE1030'.
            WK_WERKS = '1030'.
          ELSEIF SY-UNAME = 'STORE1040'.
            WK_WERKS = '1040'.
          ELSEIF SY-UNAME = 'STORE1050'.
            WK_WERKS = '1050'.
          ELSEIF SY-UNAME = 'STORE1060'.
            WK_WERKS = '1060'.
          ELSEIF SY-UNAME = 'STORE1070'.
            WK_WERKS = '1070'.
          ELSEIF SY-UNAME = 'STORE1080'.
            WK_WERKS = '1080'.
          ENDIF.
          SELECT SINGLE * FROM ZMMT001_GRN_GATE INTO WK_ZMMT01
                       WHERE SERIAL = WK_SNO AND
                       WERKS = WK_WERKS.
          IF SY-SUBRC EQ 0.
            WK_WERKS = WK_ZMMT01-WERKS.
            WK_EBELN = WK_ZMMT01-EBELN.
            WK_LIFNR = WK_ZMMT01-LIFNR.
            WK_CHALNO = WK_ZMMT01-CHALNO.
            WK_CHALDATE = WK_ZMMT01-CHALDATE.
            WK_VBELN = WK_ZMMT01-BILLNO.
            WK_FKDAT = WK_ZMMT01-BILLDATE.
            WK_GRNO = WK_ZMMT01-GRNUMBER.
            WK_GRDATE = WK_ZMMT01-GRDATE.
            WK_VEHICLE = WK_ZMMT01-VEHICLE.
            WK_CARRIER = WK_ZMMT01-CARRIER.
            WK_FREIGHT = WK_ZMMT01-FREIGHT.
            WK_MDOC = WK_ZMMT01-MDOC.
            WK_DEPT = WK_ZMMT01-DEPT.
            WK_MODE = WK_ZMMT01-PAYMODE.
            WK_BASIC = WK_ZMMT01-BASIC.
            WK_EXCISE = WK_ZMMT01-EXCISE.
            WK_TAX = WK_ZMMT01-TAXAMT.
            WK_APPVAL = WK_ZMMT01-APPVAL.
            WK_CHAL = WK_ZMMT01-CHALINV.
            WK_FORM38 = WK_ZMMT01-FORM38.
            WK_COMMENT = WK_ZMMT01-COMMENTS.
            SELECT * FROM ZMMT002_GRN_ITEM INTO TABLE IT_ZMMT02
                            WHERE SERIAL = WK_SNO AND
                            WERKS = WK_WERKS.
            IF SY-SUBRC EQ 0.
              CLEAR IT_TEMP_TC1.
              REFRESH IT_TEMP_TC1.
              LOOP AT IT_ZMMT02.
                IT_TEMP_TC1-SNO = SY-TABIX.
                IT_TEMP_TC1-ITEMCODE = IT_ZMMT02-ITEMCODE.
                IT_TEMP_TC1-ITEMNAME = IT_ZMMT02-DESCRIPTION.
                IT_TEMP_TC1-QUANTITY = IT_ZMMT02-QUANTITY.
                APPEND IT_TEMP_TC1.
                CLEAR IT_TEMP_TC1.
              ENDLOOP.
            ENDIF.
          ENDIF.
          LOOP AT SCREEN.
            IF ( SCREEN-NAME NE 'WK_SNO' ) AND
               ( SCREEN-NAME NE 'WK_SAVE' ) AND
               ( SCREEN-NAME NE 'WK_CLEAR' ) AND
               ( SCREEN-NAME NE 'WK_EXIT' ).
              SCREEN-INPUT = 0.
            ENDIF.
            MODIFY SCREEN.
          ENDLOOP.
          LOOP AT TC1-COLS INTO COLS WHERE INDEX GT 0.
            COLS-SCREEN-INPUT = '0'.
            MODIFY TC1-COLS FROM COLS INDEX SY-TABIX.
          ENDLOOP.
        ENDIF.
      ENDIF.
      WK_DATE = SY-DATUM.
      WK_TIME = SY-UZEIT.
      TC1-LINES = 20.
    ENDMODULE.                 " STATUS_1000  OUTPUT
    *&      Module  EXIT_1000  INPUT
          text
    MODULE EXIT_1000 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK' OR 'CANCEL' OR 'EXIT' OR 'WK_EXIT'.
          LEAVE PROGRAM.
      ENDCASE.
    ENDMODULE.                 " EXIT_1000  INPUT
    *&      Module  ITEM_CODE  INPUT
          text
    MODULE ITEM_CODE INPUT.
      REFRESH : VALUES_TAB.
      CLEAR : VALUES_TAB.
      IF ( SY-UNAME = 'GATE1020' OR
    SY-UNAME = 'GATE1010' OR
    SY-UNAME = 'GATE1030' OR
    SY-UNAME = 'GATE1040' OR
    SY-UNAME = 'GATE1050' OR
    SY-UNAME = 'GATE1060' OR
    SY-UNAME = 'GATE1070' OR
    SY-UNAME = 'STORE1020' OR
    SY-UNAME = 'STORE1030' OR
    SY-UNAME = 'STORE1040' OR
    SY-UNAME = 'STORE1050' OR
    SY-UNAME = 'STORE1060' OR
    SY-UNAME = 'STORE1070' OR
    SY-UNAME = 'STORE1010' OR
           SY-UNAME = 'ABAP'  ).
        SELECT * FROM EKKO CLIENT SPECIFIED
        INTO TABLE IT_EKKO WHERE
        MANDT = SY-MANDT AND
        EBELN = WK_EBELN AND
        LOEKZ NE 'X'.
        IF SY-SUBRC EQ 0.
          READ TABLE IT_EKKO INDEX 1.
          WK_BSTYP = IT_EKKO-BSTYP.
          WK_BSART = IT_EKKO-BSART.
        ENDIF.
          if wk_bsart = 'ZLR'.
        SELECT * FROM EKPO CLIENT SPECIFIED
        INTO TABLE IT_EKPO WHERE
        MANDT = SY-MANDT AND
        EBELN = WK_EBELN AND
        LOEKZ NE 'X'.
        SORT IT_EKPO BY EBELN EBELP.
        IF WK_BSTYP = 'L' AND WK_BSART = 'ZLR'.
          SELECT * FROM EKET CLIENT SPECIFIED
          INTO TABLE IT_EKET WHERE
          MANDT = SY-MANDT AND
          EBELN = WK_EBELN.
          IF SY-SUBRC EQ 0.
            SORT IT_EKET BY EBELN EBELP ETENR.
            LOOP AT IT_EKPO.
              CLEAR WK_DIFF_QTY.
              LOOP AT IT_EKET WHERE EBELN = IT_EKPO-EBELN
                                AND EBELP = IT_EKPO-EBELP
                                AND EINDT LE SY-DATUM.
                WK_DIFF_QTY = WK_DIFF_QTY + IT_EKET-MENGE - IT_EKET-WEMNG.
              ENDLOOP.
              IF WK_DIFF_QTY GT 0.
                VALUES_TAB-TXZ01 = IT_EKPO-TXZ01.
                VALUES_TAB-MENGE = WK_DIFF_QTY.
                VALUES_TAB-MATNR = IT_EKPO-MATNR.
                APPEND VALUES_TAB.
              ENDIF.
            ENDLOOP.
          ENDIF.
        ELSEIF WK_BSTYP = 'F'.
         SELECT mseg~mblnr
                mseg~mjahr
                mseg~zeile
                mseg~bwart
                mseg~matnr
                mseg~ebeln
                mseg~ebelp
                mkpf~budat
                mseg~menge INTO TABLE it_mseg
                FROM mkpf INNER JOIN mseg
                ON mkpfmblnr EQ msegmblnr
                AND mkpfmjahr EQ msegmjahr
    FOR ALL entries IN it_ekpo
    WHERE bwart IN ('101','122','102')
    AND werks = it_ekpo-werks
    AND ebeln = it_ekpo-ebeln
    AND ebelp = it_ekpo-ebelp.
          SELECT * FROM EKET CLIENT SPECIFIED
          INTO TABLE IT_EKET
          WHERE MANDT = SY-MANDT AND
          EBELN = IT_EKPO-EBELN.
          LOOP AT IT_EKPO.
            CLEAR : WK_DIFF_QTY.
                   wk_101_qty,
                   wk_102_qty,
                   wk_122_qty.
           LOOP AT it_mseg WHERE ebeln = it_ekpo-ebeln AND
                                 ebelp = it_ekpo-ebelp.
             IF it_mseg-bwart = '101'.
               wk_101_qty = wk_101_qty + it_mseg-menge.
             ENDIF.
             IF it_mseg-bwart = '102'.
               wk_102_qty = wk_102_qty + it_mseg-menge.
             ENDIF.
             IF it_mseg-bwart = '122'.
               wk_122_qty = wk_122_qty + it_mseg-menge.
             ENDIF.
           ENDLOOP.
           if not it_mseg[] is initial.
           wk_diff_qty = it_ekpo-menge - wk_101_qty
                                 - wk_102_qty - wk_122_qty.
           else.
            wk_diff_qty = it_ekpo-menge.
           endif.
            READ TABLE IT_EKET WITH KEY EBELN = IT_EKPO-EBELN
                                        EBELP = IT_EKPO-EBELP.
            IF SY-SUBRC EQ 0.
              WK_DIFF_QTY = IT_EKPO-MENGE - IT_EKET-WEMNG.
            ENDIF.
           IF wk_diff_qty LE it_ekpo-menge.
            IF WK_DIFF_QTY GT 0.
              VALUES_TAB-TXZ01 = IT_EKPO-TXZ01.
              VALUES_TAB-MENGE = WK_DIFF_QTY.
              VALUES_TAB-MATNR = IT_EKPO-MATNR.
              APPEND VALUES_TAB.
            ENDIF.
          ENDLOOP.
           ENDIF.
        ELSE.
          SELECT TXZ01
          MATNR FROM EKPO CLIENT SPECIFIED
          INTO CORRESPONDING FIELDS OF TABLE VALUES_TAB
          WHERE MANDT = SY-MANDT AND
          EBELN = WK_EBELN AND
          LOEKZ NE 'X'.
        ENDIF.
      ELSE.
        SELECT TXZ01
              MATNR FROM EKPO CLIENT SPECIFIED
              INTO CORRESPONDING FIELDS OF TABLE VALUES_TAB
               WHERE MANDT = SY-MANDT AND
               EBELN = WK_EBELN AND
               LOEKZ NE 'X'.
      ENDIF.
      SORT VALUES_TAB BY TXZ01.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD        = 'IT_TC1-ITEMCODE'
          DYNPPROG        = PROGNAME
          DYNPNR          = DYNNUM
          DYNPROFIELD     = 'IT_TC1-ITEMCODE'
          VALUE_ORG       = 'S'
        TABLES
          VALUE_TAB       = VALUES_TAB
          RETURN_TAB      = RETURN_TAB
        EXCEPTIONS
          PARAMETER_ERROR = 1
          NO_VALUES_FOUND = 2
          OTHERS          = 3.
    *BREAK-POINT.
      IF SY-SUBRC = 0.
        READ TABLE RETURN_TAB INDEX 1.
        SELECT SINGLE MAKTX FROM MAKT CLIENT SPECIFIED
        INTO WK_MAKTX WHERE
        MANDT = SY-MANDT AND
        MATNR = RETURN_TAB-FIELDVAL AND SPRAS = SY-LANGU.
      ENDIF.
    ENDMODULE.                 " ITEM_CODE  INPUT
    *&      Module  CHECK_INPUT  INPUT
          text
    MODULE CHECK_INPUT INPUT.
      CLEAR : EKKO-EBELN , EKKO-LIFNR.
      SELECT SINGLE EBELN LIFNR FROM EKKO CLIENT SPECIFIED
      INTO (EKKO-EBELN , EKKO-LIFNR )  WHERE
      MANDT = SY-MANDT AND
      EBELN = WK_EBELN.
      IF SY-SUBRC NE 0 AND ( SY-UNAME = 'GATE1010' OR
                             SY-UNAME = 'GATE1020' OR
                             SY-UNAME = 'GATE1030' OR
                             SY-UNAME = 'GATE1040' OR
                             SY-UNAME = 'GATE1050' OR
                             SY-UNAME = 'GATE1060' OR
                             SY-UNAME = 'GATE1070' OR
                             SY-UNAME = 'GATE1080' OR  SY-UNAME = 'ABAP' ).
        IF WK_EBELN NE SPACE.
          MESSAGE E003 WITH TEXT-001.
        ENDIF.
      ELSE.
        WK_LIFNR = EKKO-LIFNR.
        CLEAR : LFA1-NAME1.
        SELECT SINGLE NAME1 FROM LFA1 CLIENT SPECIFIED
        INTO LFA1-NAME1 WHERE
        MANDT = SY-MANDT AND
        LIFNR = WK_LIFNR.
        IF SY-SUBRC EQ 0.
          WK_NAME = LFA1-NAME1.
        ENDIF.
      ENDIF.
      IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR
           SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR
           SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR
           SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR  SY-UNAME =
           'ABAP' ).
       IF wk_vbeln IS INITIAL.
         set cursor field wk_vbeln.
         MESSAGE E003 WITH text-009.
       ENDIF.
       IF wk_fkdat IS INITIAL.
         MESSAGE E003 WITH text-010.
       ENDIF.
      ENDIF.
      IF ( SY-UNAME = 'STORE1010' OR SY-UNAME = 'STORE1020' OR
           SY-UNAME = 'STORE1030' OR SY-UNAME = 'STORE1040' OR
           SY-UNAME = 'STORE1050' OR SY-UNAME = 'STORE1060' OR
           SY-UNAME = 'STORE1070' OR SY-UNAME = 'STORE1080' ).
        CLEAR : ZMMT001_GRN_GATE.
        SELECT SINGLE EBELN CDATE FROM ZMMT001_GRN_GATE
        CLIENT SPECIFIED
        INTO (ZMMT001_GRN_GATE-EBELN ,
        ZMMT001_GRN_GATE-CDATE )
        WHERE MANDT = SY-MANDT AND
        SERIAL = WK_SNO AND WERKS = WK_WERKS.
        IF SY-SUBRC EQ 0.
          SELECT MBLNR
                 MJAHR
                 BUDAT
                 BKTXT FROM MKPF CLIENT SPECIFIED
                 INTO TABLE IT_TEMP_MKPF
                 WHERE MANDT = SY-MANDT AND
                 BUDAT = ZMMT001_GRN_GATE-CDATE
                 AND BKTXT = WK_SNO.
          IF

    Hi,
    after calling you programm and get the message call transaction su53. That willl display the authorization that you need.
    Hope this helps.
    Regards
    Bernd

  • Facing problem with a date column in select query

    Hi,
    I am facing problem with a date column. Below is my query and its fainling with " invalid number format model" .
    Query: SELECT *
    FROM EMP
    WHERE trunc(LAST_UPDATED) >= to_date(to_char(22-05-2009,'dd-mm-yyyy'),'dd-mm-yyyy')
    LAST_UPDATED column is "DATE" data type.
    Please help me Thanks

    Radhakrishna Sarma wrote:
    SeánMacGC wrote:
    WHERE LAST_UPDATED >= to_date('22-05-2009','dd-mm-yyyy');
    You do not need the TRUNC here in any case.
    I don't think so. What if the user wants only data for 22nd May and the table has records with date later than 22nd also? In that case your query willl not work. In order for the Index to work, I think the query can be written like this I think Sean is right though. Use of TRUNC Function is quiet useless based on the condition given here, since the to_date Function used by OP will always point to midnight of the specified date, in this case 22-05-2009 00:00:00.
    Regards,
    Jo
    Edit: I think Sean proved his point... ;)

  • Problem of uploading data in Data Warehouse

    I am using Oracle9i Warehouse Builder on Windows 2000 and i just started working in it. I am facing problem in uploading data from source schema to Target schema
         I) Created Source Moulde -- Link to One schema from where i have get data
         2) Created Warehouse Target Module -- I have created dimesnions , facts , Mapping and i deployed dimensions , fact and mapping. As a result of it i got dimension table , dimension , fact table , facts ,mapping package and TCL script for mapping. I deployed all of them and register TCL script with OEM .
         But my job created in OEM is not running. If run then does not upload any data and If I try to run job from the backend manually then it gives me message that No active job exist..
    Thanks in advance
    Surinder

    I was getting the same error. I don't know if a step failed somewhere in the install or if I missed performing a manual step but I just fired up TOAD and manually inserted a record into the WB_RT_JOB table. I set the RTJ_JOBNAME = DEFAULT_JOB and RTJ_STATUS = BEGIN. The rest of the columns I just entered best guesses. I commited and then my job would run. I guess it just needs a seed record.
    Lewis

Maybe you are looking for

  • How can I get an album with multiple artists to display in my Nano as one album insteadof multiple albums?

    How can I get an album with multiple artists to display in my Nano as one album insteadof multiple albums?

  • PDF question

    Always been a Mac user but was on older machines and OS9.... I just bought my new iMac and have spent oodles of time trying just to see the PDF rebate sheet so I can download it or print it and send it in.... In safari (which is new to me) I cannot o

  • JSObject problem in Opera 8.5

    Hello, I am working on an applet that needs to reah a form outside the applet. I use the JSObject class to acces it. Everything works fine in IE, Mozilla and Netscape, but on Opera, i get a NullPointerException when he tries to execute JSObject brows

  • T codes for user roles

    hi can any body help with  T code to create user roles in solution Manager and IMP T codes relating to this thanks padma

  • Transport request outof SAP

    Hi there, Can anyone tell me is it possible to transport request objects out of sap system. for example, i have done the configurations in our server, and i want to transport all of the request to our clients' server. we are not able to use TMS to tr