Parameter: p_file LIKE rlgrap-filename.

Hi I have given this in my code  'p_file LIKE rlgrap-filename.' and it showing that put your address in this bar and it will take you to required area. Now I want using  p_file LIKE rlgrap-filename with browsing facility. How I will do that. Need info.
TYhanks...............

Hi,
   Try the following code.
tables: sdokpath.
parameters:
  p_path(250)  type c.
data:
  w_path(250)  type c,
  w_size       type i,
  w_name       type rlgrap-filename.
data:
  t_contents like
    standard table
          of sdokpath.
data:
   t_contents1 like
      standard table
            of sdokpath.
data:
  begin of fs_size,
    name like w_name,
    size type i,
  end of fs_size.
data:
  t_size like
standard table
       of fs_size.
at selection-screen on value-request for p_path.
  call function 'WS_FILENAME_GET'
EXPORTING
  DEF_FILENAME           = ' '
  DEF_PATH               = W_PATH
  MASK                   = ' '
  MODE                   = ' '
  TITLE                  = ' '
   importing
     filename               = p_path
  RC                     =
   exceptions
     inv_winsys             = 1
     no_batch               = 2
     selection_cancel       = 3
     selection_error        = 4
     others                 = 5
  if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.
at selection-screen.
if p_path is initial.
  message 'Enter the file path'(001) type 'E'.
endif.
end-of-selection.
  call function 'WS_QUERY'
    exporting
  ENVIRONMENT          =
   FILENAME             = W_PATH
      query                = 'CD'
  WINID                =
   importing
     return               = w_path
   exceptions
     inv_query            = 1
     no_batch             = 2
     frontend_error       = 3
     others               = 4
  if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.
  write:/ '-------CURRENT DIRECTORY IS -
  write:/10 w_path.
  write: /,/,/.
  call function 'TMP_GUI_DIRECTORY_LIST_FILES'
    exporting
      directory        = w_path
  FILTER           = '.'
IMPORTING
  FILE_COUNT       =
  DIR_COUNT        =
    tables
      file_table       = t_contents
      dir_table        = t_contents1
   exceptions
     cntl_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.
  loop at t_contents into sdokpath.
    w_name = sdokpath.
    call function 'GUI_GET_FILE_INFO'
      exporting
        fname                = w_name
     importing
  FILE_VERSION         =
  FILE_DBGREL          =
  FILE_LANG            =
       file_size            = fs_size-size
EXCEPTIONS
   FILEINFO_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.
    write:/ w_name,40 fs_size-size.
    fs_size-name = w_name.
    append fs_size to t_size.
  endloop.
  sort t_size by size descending.
  read table t_size index 1 into fs_size.
  skip 3.
  write: fs_size-name,30 'is the file having maximum size of',
      70 fs_size-size.
regards,
kiran kumar k

Similar Messages

  • Regarding using PARAMETERS:p_prefil TYPE     rlgrap-filename.

    Hi when
    I use this parameter
    PARAMETERS:p_prefil TYPE     rlgrap-filename.
    in order take the input from the user for filename when downloading to the Presentation server i get the conflict type error and the program goes to dump.
    But if i use the same p_prefil as string type it works.Could anyone tell me the reason for this.

    Hi..
    To avoid this problem you have to declare a Separate variable.
    PARAMETERS:p_prefil TYPE rlgrap-filename. 
    data : v_file type string.
    START-OF-SELECTION.
    MOVE P_PREFIL TO V_FILE.
    call function 'GUI_DOWNLOAD'
    exporting
    FILENAME  = V_FILE  "This parameter accepts only STRING
    This will work..
    <b>reward if Helpful.</b>

  • I have a question about extracting pages.  When I do the function, adobe saves the individual files as " file name space page number ", so the files look like this "filename 1.pdf", "filename 2.pdf", "filename 3.pdf".  Without too many gory details, I a

    I have a question about extracting pages.  When I do the function, adobe saves the individual files as "<file name><space><page number>", so the files look like this "filename 1.pdf", "filename 2.pdf", "filename 3.pdf".  Without too many gory details, I am using excel to concatenate some data to dynamically build a hyperlink to these extraced files.  It casues me problems, however, for the space to be the the file name.  Is there any way to change the default behavoir of this function to perhaps use a dash or underscore instead of a space?

    No, you can't change the default naming scheme. You can do it yourself if you extract the pages using a script instead of using the built-in command.

  • How to get each value from a parameter passed like this '(25,23,35,1)'

    Hi
    One of the parameter passed to the function is
    FUNCTION f_main_facility(pi_flag_codes VARCHAR2) return gc_result_set AS
    pi_flag_codes will be passed a value in this way '(25,23,35,1)'
    How to get each value from the string
    like 25 first time
    23 second time
    35 third time
    1 fourth time
    I need to build a select query with each value as shown below:-
    (SELECT t2.org_id, t4.description
    from org_name t2, ref_org_name t3, code_table t4
    where t2.att_data = t4.code
    and t3.ref_code = t2.att_type
    and t2.att_type = 25 and t3.code_type = t4.code_type
    and to_date('01-JAN-10', 'DD-MON-YY') between t2.att_start_date AND t2.att_end_date) q1,
    (SELECT t2.org_id, t4.description
    from org_name t2, ref_org_name t3,code_table t4
    where t2.att_data = t4.code
    and t3.ref_code = t2.att_type
    and t2.att_type = 23 and t3.code_type = t4.code_type
    and to_date('01-JAN-10', 'DD-MON-YY') between t2.att_start_date AND t2.att_end_date) q2,
    (SELECT t2.org_id, RTRIM(xmlagg(xmlelement(e, t4.description || ';')
    ORDER BY t4.description).EXTRACT('//text()'), ';') AS DESCRIPTION
    from org_name t2, ref_org_name t3,code_table t4
    where t2.att_data = t4.code
    and t3.ref_code = t2.att_type
    and t2.att_type = 35 and t3.code_type = t4.code_type
    and to_date('01-JAN-10', 'DD-MON-YY') between t2.att_start_date AND t2.att_end_date
    group by t2.org_id) q3,
    (SELECT t2.org_id, t4.description
    from org_name t2, ref_org_name t3, code_table t4
    where t2.att_data = t4.code
    and t3.ref_code = t2.att_type
    and t2.att_type = 1 and t3.code_type = t4.code_type
    and to_date('01-JAN-10', 'DD-MON-YY') between t2.att_start_date AND t2.att_end_date) q4
    Please help me with extracting each alue from the parm '(25,23,35,1)' for the above purpose. Thank You.

    chris227 wrote:
    I would propose the usage of regexp for readibiliy purposes and only in the case if this doesnt perform well, look at solutions using substr etc.
    select
    regexp_substr( '(25,23,35,1)', '\d+', 1, 1) s1
    ,regexp_substr( '(25,23,35,1)', '\d+', 1, 2) s2
    ,regexp_substr( '(25,23,35,1)', '\d+', 1, 3) s3
    ,regexp_substr( '(25,23,35,1)', '\d+', 1, 4) s4
    from dual 
    S1     S2     S3     S4
    "25"     "23"     "35"     "1"In pl/sql you do something like l_val:= regexp_substr( '(25,23,35,1)', '\d+', 1, 1);
    If t2.att_type is type of number you will do:
    t2.att_type= to_number(regexp_substr( '(25,23,35,1)', '\d+', 1, 1))Edited by: chris227 on 01.03.2013 08:00Sir,
    I am using oracle 10g.
    In the process of getting each number from the parm '(25,23,35,1)' , I also need the position of the number
    say 25 is at 1 position.
    23 is at 2
    35 is at 3
    1 is at 4.
    the reason I need that is when I build seperate select for each value, I need to add the query number at the end of the select query.
    Please see the code I wrote for it, But the select query is having error:-
    BEGIN
    IF(pi_flag_codes IS NOT NULL) THEN
    SELECT length(V_CNT) - length(replace(V_CNT,',','')) FROM+ ----> the compiler gives an error for this select query : PLS-00428:
    *(SELECT '(25,23,35,1)' V_CNT  FROM dual);*
    DBMS_OUTPUT.PUT_LINE(V_CNT);
    -- V_CNT := 3;
    FOR L_CNT IN 0..V_CNT LOOP
    if L_CNT=0 then
    V_S_POS:=1;
    V_E_POS:=instr(pi_flag_codes, ',', 1, 1)-1;
    else
    V_S_POS:=instr(pi_flag_codes,',',1,L_CNT)+1;
    V_E_POS:=instr(pi_flag_codes, ',', 1, L_CNT+1)-V_S_POS;
    end if;
    if L_CNT=V_CNT then
    V_ID:=TO_NUMBER(substr(pi_flag_codes,V_S_POS));
    else
    V_ID:=TO_NUMBER(substr(pi_flag_codes,V_S_POS,V_E_POS));
    end if;
    VN_ATYPE := ' t2.att_type = ' || V_ID;
    rec_count := rec_count +1;
    query_no := 'Q' || rec_count;
    Pls help me with fetching each value to build the where cond of the select query along with the query number.
    Thank You.

  • Ejb/ql and named parameter in like

    Hello,
    With toplink/jpa, I have this:
    "SELECT o FROM EtdSignaletique o WHERE o.name LIKE :name"
    For the "name" parameter, I have to pass "Lennon%" (this column in our enterprise db seems to be space-padded; I don't have any control on that).
    I think it would be better to have the "%" directly in the query, how could I do this?

    This is not possible with parameter binding, which is on by default. The bound valu must have the wildcard in it.
    I had no success adding the wildcard into a JPQL statement without binding since it is considered part of the parameter name and is then reported as an illegal parameter name.
    I believe this one is up to your application code.
    Doug

  • Accepting an empty field as a parameter in LIKE

    Here is an SQL statement which accepts parameters from two
    text fields and combines them in an AND. The database fields are
    "subject" and "class". It works fine when something valid is
    supplied for each parameter. Leaving either parameter as a blank
    returns nothing. I'd like the user to optionally allow one (or
    both) of the parameters to be left empty - as a "don't care". Thus,
    if there were several parameters - the user could just supply
    content only for the fields of interest.
    SELECT *
    FROM dlib
    WHERE (Subject LIKE %MMColParam% AND class LIKE %QTest%)
    Can I do that??
    Ron

    You could try wrapping them in an ISNULL. Could be a bit
    fiddly, and it
    would depend on the optional parameters in the ISNULL, but it
    would be worth
    exploring. Perhaps someone has a better tried and tested
    solution.
    Pat.
    "tevron" <[email protected]> wrote in
    message
    news:fat3nj$7eb$[email protected]..
    > Here is an SQL statement which accepts parameters from
    two text fields and
    > combines them in an AND. The database fields are
    "subject" and "class". It
    > works fine when something valid is supplied for each
    parameter. Leaving
    > either
    > parameter as a blank returns nothing. I'd like the user
    to optionally
    > allow
    > one (or both) of the parameters to be left empty - as a
    "don't care".
    > Thus, if
    > there were several parameters - the user could just
    supply content only
    > for the
    > fields of interest.
    >
    > SELECT *
    > FROM dlib
    > WHERE (Subject LIKE %MMColParam% AND class LIKE %QTest%)
    >
    > Can I do that??
    > Ron
    >
    >

  • Using error codes.txt and error rings don't allow parameter inputs like custom error rings?

    The error ring is very useful, especially with its parameterized inputs you can specific with %s, %f and %d parameters.  I'd like to do the same thing in my fixed error codes using the error ring so that I can localize them into mulitple languages, but it seems that LabVIEW error codes from project text files never detect or support the parameter inputs, you get a error ring, but no input parameters.  If you use the same string in a customer error code, it gives you the parameter input but then its hardcoded and you can't localize it.  What gives?
    Is there some other way to configure the error rings to use a project file for the error codes but still support the parameter inputs?
    Solved!
    Go to Solution.

    Hi Mike_King
    Here is a VI snippet that I created with two different approaches, in the first one I used the format into string, the second one the function search and replace.
    Here are some links with information about the functions that I used.
    Format Into String Function - LabVIEW 2011 Help
    Search and Replace String Function - LabVIEW 2011 Help
    Regards
    Esteban R.
    Attachments:
    Generate error code.png ‏34 KB

  • MULTIPLE ITEM PROBLEM IN VL31N BDC

    hI FRIENDS ,
        I AM POSTING A BDC OF TRANSACTION VL31N ,ie FOR SCHEDULE AGREEMENT INBOUND DELIVERY.I CREATE A FUNCTIONAL MODULE OF THE SAME AND CALL IT FROM AN ASP PAGE,IN THAT THERE IS PO NUMBER 5500000986 WHICH HAS TWO ITEMES 62 AND 95 RESPECTIVLY OF SAME MATARIAL NUMBER R010230123041002 AND DIE NUMBER 2304P,NOW THE PROBLEM IS THIS BDC IS WORKING WHEN THERE IS ONLY ONE ITEM BUT GIVES AN ERROR "CANT CREAT INBOUND DELIVERY FOR PO NO ...' WNEN IT HAS MULTIPLE ITEM.WHAT SHOULD I DO ? I ALSO USED LOOP BUT IT ALSO DOSENT WORK AS IT WILL ADD ALL OPEN QTY OF PO 986 AND UPDATE AGAINST ITEM NO 95.
    CODE IS AS FOLLOWS:.........
    FUNCTION y_synie_bdcinbdly.
    ""Local interface:
    *"  IMPORTING
    *"     VALUE(CTU) LIKE  APQI-PUTACTIVE DEFAULT 'X'
    *"     VALUE(MODE) LIKE  APQI-PUTACTIVE DEFAULT 'N'
    *"     VALUE(UPDATE) LIKE  APQI-PUTACTIVE DEFAULT 'L'
    *"     VALUE(GROUP) LIKE  APQI-GROUPID OPTIONAL
    *"     VALUE(USER) LIKE  APQI-USERID OPTIONAL
    *"     VALUE(KEEP) LIKE  APQI-QERASE OPTIONAL
    *"     VALUE(HOLDDATE) LIKE  APQI-STARTDATE OPTIONAL
    *"     VALUE(NODATA) LIKE  APQI-PUTACTIVE DEFAULT '/'
    *"     VALUE(EXTNID) LIKE  MAKT-MAKTG
    *"     VALUE(VENDORNO) LIKE  LFA1-LIFNR
    *"     VALUE(PONUMBER) LIKE  EKKO-EBELN
    *"     VALUE(ITEMNUMBER) LIKE  LIPS-VGPOS
    *"     VALUE(MATERIAL) LIKE  MAKT-MAKTG
    *"     VALUE(DLYQTY) LIKE  LIPS-LFIMG
    *"     VALUE(BTCHNO) LIKE  LIPS-CHARG
    *"     VALUE(POSLR) LIKE  EKES-EBELP OPTIONAL
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"     VALUE(INDELYNO) LIKE  SY-MSGV2
    *"     VALUE(MSG1) LIKE  SY-MSGV1
    *"     VALUE(MSG2) LIKE  SY-MSGV2
    *"     VALUE(MSG3) LIKE  SY-MSGV3
    *"     VALUE(MSG4) LIKE  SY-MSGV4
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL
    *"      ERRTAB STRUCTURE  YSYNERRMSGS
    *"      INDLYTAB STRUCTURE  YSYN_QTYTAB
    Updated by ANAND SYNISE 19.1.2007
      DATA: BEGIN OF bdctab OCCURS 0.
              INCLUDE STRUCTURE bdcdata.
      DATA: END OF bdctab.
      DATA: datenow(10) TYPE c,
            fldvar(30)  TYPE c,
            fldno       TYPE i,
            flditoc(6)  TYPE c,
            qty(13)     TYPE c.
      DATA maxposnr LIKE lips-posnr.
      DATA testposnr TYPE posnr.
      DATA itemnoint TYPE i.
      CONCATENATE sy-datum6(2) '.' sy-datum4(2) '.' sy-datum+0(4) INTO datenow.
      CLEAR bdctab.
      REFRESH bdctab.
      PERFORM open_group      USING group user keep holddate ctu.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '4007'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'RV50A-VERUR_LA'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '/00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-LIFNR'.
           bdctab-fval = vendorno.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LV50C-BSTNR'.
           bdctab-fval = ponumber.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-VERUR_LA'.
           bdctab-fval = extnid.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=MKAL_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIKP-BLDAT'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=POPO_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-POSNR(01)'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '0111'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'RV50A-PO_MATNR'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = 'WEIT'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-PO_MATNR'.
           bdctab-fval = material.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=POLO_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-POSNR(01)'.
           APPEND bdctab.
    *ADDED BY ANAND ON 22-01-2007
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval =  ITEMNUMBER .     "ITEMNUMBER = LIPS-VGPOS
           APPEND bdctab.
    ************ENDED***********************
    ADDED BY MILIND 19.01.2007
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval =  poslr .
           APPEND bdctab.
    *    ENDED * *
       CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LIPS_SELKZ(01)'.
           bdctab-fval = ''.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '/00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-CHARG(01)'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
          QTY = INDLYTAB-DLYQTY.
            qty = dlyqty.
           bdctab-fnam = 'LIPSD-G_LFIMG(01)'.
           bdctab-fval = QTY.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIPS-CHARG(01)'.
    *     BDCTAB-FVAL = INDLYTAB-BTCHNO.
           bdctab-fval = btchno.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=SICH_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-MATNR(02)'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
      CALL TRANSACTION 'VL31N' USING bdctab MODE 'N'  MESSAGES INTO messtab.
      subrc = sy-subrc.
      PERFORM close_group USING     ctu.
      CLEAR bdctab.
      REFRESH bdctab.
      IF sy-subrc EQ 0.
        indelyno = sy-msgv2.
      ENDIF.
      LOOP AT messtab.
        MOVE: messtab-msgid TO errtab-msgid,
              messtab-msgnr TO errtab-msgnr,
              messtab-msgv1 TO errtab-msg1,
              messtab-msgv2 TO errtab-msg2,
              messtab-msgv3 TO errtab-msg3,
              messtab-msgv4 TO errtab-msg4.
        APPEND ERRtab.
      ENDLOOP.
      LOOP AT errtab.
        SELECT SINGLE text FROM t100
          INTO errtab-errmsg
          WHERE msgnr EQ errtab-msgnr AND arbgb EQ errtab-msgid
          AND sprsl EQ sy-langu.
        MODIFY errtab.
      ENDLOOP.
    ENDFUNCTION.

    Hi,
    Check this code:
    REPORT Z_CUSTOMER_UPLOAD .
                  D A T A         D E C L A R A T I O N S                *
    DATA:BEGIN OF IT_CUSTOMER OCCURS 0,
         KUNNR LIKE MV10A-KUNNR,
         VKORG LIKE MV10A-VKORG,
         VTWEG LIKE MV10A-VTWEG,
         MATNR LIKE MV10A-MATNR,
         KDMAT LIKE MV10A-KDMAT,
         MEGRU LIKE MV10A-MEGRU,
         SELKZ TYPE C value 'X',
         LPRIO LIKE MV10A-LPRIO,
         ANTLF LIKE MV10A-ANTLF,
         END OF IT_CUSTOMER.
    DATA:BEGIN OF IT_success OCCURS 0,
         KUNNR LIKE MV10A-KUNNR,
         VKORG LIKE MV10A-VKORG,
         VTWEG LIKE MV10A-VTWEG,
         MATNR LIKE MV10A-MATNR,
         KDMAT LIKE MV10A-KDMAT,
         MEGRU LIKE MV10A-MEGRU,
         SELKZ TYPE C value 'X',
         LPRIO LIKE MV10A-LPRIO,
         ANTLF LIKE MV10A-ANTLF,
         END OF IT_success.
    DATA:BEGIN OF IT_error OCCURS 0,
         KUNNR LIKE MV10A-KUNNR,
         VKORG LIKE MV10A-VKORG,
         VTWEG LIKE MV10A-VTWEG,
         MATNR LIKE MV10A-MATNR,
         KDMAT LIKE MV10A-KDMAT,
         MEGRU LIKE MV10A-MEGRU,
         SELKZ TYPE C value 'X',
         LPRIO LIKE MV10A-LPRIO,
         ANTLF LIKE MV10A-ANTLF,
         END OF IT_error.
    DATA: L_INDEX TYPE SY-TABIX.
    DATA:IT_BDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
    IT_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    ERROR MESSAGE TABLE
    DATA:IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA : C_S TYPE C VALUE 'S',
            C_E TYPE C VALUE 'E'.
    *DATA: IT_SUCCESS LIKE IT_CUSTOMER OCCURS 0,
         IT_ERROR LIKE IT_CUSTOMER  OCCURS 0.
    DATA : V_RECTOT TYPE I,
            V_RECERR TYPE I,
            V_RECSUC TYPE I.
                  S E L E C T I O N  -  S C R E E N                      *
    SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETER        : P_FILE LIKE RLGRAP-FILENAME .
    SELECTION-SCREEN : END OF BLOCK B1.
               A T  S E L E C T I O N  -  S C R E E N                    *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    to get F4 help for p_file
      PERFORM F4_FILENAME USING P_FILE.
                S T A R T   O F   S E L E C T I O N                      *
    START-OF-SELECTION.
    Uploading data from flat file into it_tab
      PERFORM BDC_UPLOAD USING P_FILE.
      PERFORM PROCESS_DATA.
      PERFORM POPULATE_BDC.
                E N D  O F   S E L E C T I O N                           *
    *END-OF-SELECTION.
    PERFORM DISPLAY_REPORT.
    *&      Form  F4_FILENAME
          text
         -->P_P_FILE  text
    FORM F4_FILENAME USING    P_P_FILE.
    DATA:L_FILE TYPE IBIPPARMS-PATH.
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      PROGRAM_NAME        = SYST-CPROG
      DYNPRO_NUMBER       = SYST-DYNNR
      FIELD_NAME          = ' '
    IMPORTING
       FILE_NAME           = L_FILE .
       P_P_FILE = L_FILE.
    ENDFORM.                    " F4_FILENAME
    *&      Form  BDC_UPLOAD
          text
         -->P_P_FILE  text
    FORM BDC_UPLOAD USING    P_P_FILE.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        FILENAME                      = P_P_FILE
        I_BEGIN_COL                   = 1
        I_BEGIN_ROW                   = 1
        I_END_COL                     = 8
        I_END_ROW                     = 1000
      TABLES
        INTERN                        = IT_DATA
    EXCEPTIONS
       INCONSISTENT_PARAMETERS       = 1
       UPLOAD_OLE                    = 2
       OTHERS                        = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " BDC_UPLOAD
    *&      Form  PROCESS_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM PROCESS_DATA.
    SORT IT_DATA BY ROW COL.
      LOOP AT IT_DATA.
    CASE IT_DATA-COL.
    WHEN 1.
    IT_CUSTOMER-KUNNR   = IT_DATA-VALUE.
    WHEN 2.
    IT_CUSTOMER-VKORG   = IT_DATA-VALUE.
    WHEN 3.
    IT_CUSTOMER-VTWEG   = IT_DATA-VALUE.
    WHEN 4.
    IT_CUSTOMER-MATNR   = IT_DATA-VALUE.
    WHEN 5.
    IT_CUSTOMER-KDMAT   = IT_DATA-VALUE.
    WHEN 6.
    IT_CUSTOMER-MEGRU   = IT_DATA-VALUE.
    WHEN 7.
    IT_CUSTOMER-LPRIO   = IT_DATA-VALUE.
    WHEN 8.
    IT_CUSTOMER-ANTLF   = IT_DATA-VALUE.
    APPEND IT_CUSTOMER.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    " PROCESS_DATA
    *&      Form  POPULATE_BDC
          text
    -->  p1        text
    <--  p2        text
    FORM POPULATE_BDC.
    DATA:L_COUNTER TYPE N,
             L_STRING TYPE STRING.
    LOOP AT IT_CUSTOMER.
    AT NEW KUNNR.
    CLEAR L_COUNTER.
          L_INDEX = SY-TABIX.
          READ TABLE IT_CUSTOMER INDEX L_INDEX.
    perform bdc_dynpro      using 'SAPMV10A' '0100'.
    perform bdc_field       using 'MV10A-KUNNR'
                                  IT_CUSTOMER-KUNNR.
    perform bdc_field       using 'MV10A-VKORG'
                                  IT_CUSTOMER-VKORG.
    perform bdc_field       using 'MV10A-VTWEG'
                                  IT_CUSTOMER-VTWEG.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    ENDAT.
    L_COUNTER = L_COUNTER + 1.
        CLEAR L_STRING.
    perform bdc_dynpro      using 'SAPMV10A' '0200'.
    CONCATENATE 'MV10A-MATNR(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using L_STRING
                            IT_CUSTOMER-MATNR.
    CONCATENATE 'MV10A-KDMAT(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using     L_STRING
                                     IT_CUSTOMER-KDMAT.
    CONCATENATE 'MV10A-MEGRU(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using   L_STRING
                                    IT_CUSTOMER-MEGRU.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    *-- For Page down in Call Transaction Mode
        IF L_COUNTER = 14.
          CLEAR L_COUNTER.
          PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                                '=P+'.
        ENDIF.
    perform bdc_dynpro      using 'SAPMV10A' '0200'.
    CONCATENATE 'MV10A-SELKZ(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using L_STRING
                              IT_CUSTOMER-SELKZ.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SELE'.
    perform bdc_dynpro      using 'SAPMV10A' '0300'.
    perform bdc_field       using 'MV10A-KDMAT'
                                  IT_CUSTOMER-KDMAT.
    perform bdc_field       using 'MV10A-LPRIO'
                                  IT_CUSTOMER-LPRIO.
    perform bdc_field       using 'MV10A-ANTLF'
                                  IT_CUSTOMER-ANTLF.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                        '/EBACK'.
    at end of kunnr.
    READ TABLE IT_CUSTOMER INDEX L_INDEX.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SICH'.
    CALL TRANSACTION 'VD51' USING IT_BDC MODE 'A' UPDATE 'S'
          MESSAGES INTO IT_MESSAGES.
          CLEAR IT_BDC.
          REFRESH IT_BDC.
    ENDAT.
      IF NOT IT_MESSAGES[] IS INITIAL.
        PERFORM FORMAT_MESSAGE.
      ENDIF.
    ENDLOOP.
    ENDFORM.                    " POPULATE_BDC
    *&      Form  bdc_dynpro
          text
         -->P_0273   text
         -->P_0274   text
    FORM bdc_dynpro USING    VALUE(P_0273)
                             VALUE(P_0274).
    IT_BDC-PROGRAM = P_0273.
    IT_BDC-DYNPRO = P_0274.
    IT_BDC-DYNBEGIN = 'X'.
      APPEND IT_BDC.
      CLEAR IT_BDC.
    ENDFORM.                    " bdc_dynpro
    *&      Form  bdc_field
          text
         -->P_0278   text
         -->P_RECORD_KUNNR_001  text
    FORM bdc_field USING    VALUE(P_0278)
                           VALUE(P_0279).
    IT_BDC-FNAM = P_0278.
      IT_BDC-FVAL = P_0279.
      APPEND IT_BDC.
      CLEAR IT_BDC.
    ENDFORM.                    " bdc_field
    *&      Form  FORMAT_MESSAGE
          text
    -->  p1        text
    <--  p2        text
    FORM FORMAT_MESSAGE.
    DATA: L_MSG(100).
      LOOP AT IT_MESSAGES.
      READ TABLE IT_CUSTOMER INDEX L_INDEX.
        CALL FUNCTION 'FORMAT_MESSAGE'
             EXPORTING
                  ID        = IT_MESSAGES-MSGID
                  LANG      = SY-LANGU
                  NO        = IT_MESSAGES-MSGNR
                  V1        = IT_MESSAGES-MSGV1
                  V2        = IT_MESSAGES-MSGV2
                  V3        = IT_MESSAGES-MSGV3
                  V4        = IT_MESSAGES-MSGV4
             IMPORTING
                  MSG       = L_MSG
             EXCEPTIONS
                  NOT_FOUND = 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.
        write:/ l_msg.
      ENDLOOP.
    ENDFORM.                    " FORMAT_MESSAGE
    reward if helpful,
    keerthi

  • Upload tab-delimited file from the application server to an internal table

    Hello SAPients.
    I'm using OPEN DATASET..., READ DATASET..., CLOSE DATASET to upload a file from the application server (SunOS). I'm working with SAP 4.6C. I'm trying to upload a tab-delimited file to an internal table but when I try load it the fields are not correctly separated, in fact, they are all misplaced and the table shows '#' where supposedly there was a tab.
    I tried to SPLIT the line using as separator a variable with reference to CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB but for some reason that class doesn't exist in my system.
    Do you know what I'm doing wrong? or Do you know a better method to upload a tab-delimited file into an internal table?
    Thank you in advance for your help.

    Try:
    REPORT ztest MESSAGE-ID 00.
    PARAMETER: p_file LIKE rlgrap-filename   OBLIGATORY.
    DATA: BEGIN OF data_tab OCCURS 0,
          data(4096),
          END   OF data_tab.
    DATA: BEGIN OF vendor_file_x OCCURS 0.
    * LFA1 Data
    DATA: mandt  LIKE bgr00-mandt,
          lifnr  LIKE blf00-lifnr,
          anred  LIKE blfa1-anred,
          bahns  LIKE blfa1-bahns,
          bbbnr  LIKE blfa1-bbbnr,
          bbsnr  LIKE blfa1-bbsnr,
          begru  LIKE blfa1-begru,
          brsch  LIKE blfa1-brsch,
          bubkz  LIKE blfa1-bubkz,
          datlt  LIKE blfa1-datlt,
          dtams  LIKE blfa1-dtams,
          dtaws  LIKE blfa1-dtaws,
          erdat  LIKE  lfa1-erdat,
          ernam  LIKE  lfa1-ernam,
          esrnr  LIKE blfa1-esrnr,
          konzs  LIKE blfa1-konzs,
          ktokk  LIKE  lfa1-ktokk,
          kunnr  LIKE blfa1-kunnr,
          land1  LIKE blfa1-land1,
          lnrza  LIKE blfa1-lnrza,
          loevm  LIKE blfa1-loevm,
          name1  LIKE blfa1-name1,
          name2  LIKE blfa1-name2,
          name3  LIKE blfa1-name3,
          name4  LIKE blfa1-name4,
          ort01  LIKE blfa1-ort01,
          ort02  LIKE blfa1-ort02,
          pfach  LIKE blfa1-pfach,
          pstl2  LIKE blfa1-pstl2,
          pstlz  LIKE blfa1-pstlz,
          regio  LIKE blfa1-regio,
          sortl  LIKE blfa1-sortl,
          sperr  LIKE blfa1-sperr,
          sperm  LIKE blfa1-sperm,
          spras  LIKE blfa1-spras,
          stcd1  LIKE blfa1-stcd1,
          stcd2  LIKE blfa1-stcd2,
          stkza  LIKE blfa1-stkza,
          stkzu  LIKE blfa1-stkzu,
          stras  LIKE blfa1-stras,
          telbx  LIKE blfa1-telbx,
          telf1  LIKE blfa1-telf1,
          telf2  LIKE blfa1-telf2,
          telfx  LIKE blfa1-telfx,
          teltx  LIKE blfa1-teltx,
          telx1  LIKE blfa1-telx1,
          xcpdk  LIKE  lfa1-xcpdk,
          xzemp  LIKE blfa1-xzemp,
          vbund  LIKE blfa1-vbund,
          fiskn  LIKE blfa1-fiskn,
          stceg  LIKE blfa1-stceg,
          stkzn  LIKE blfa1-stkzn,
          sperq  LIKE blfa1-sperq,
          adrnr  LIKE  lfa1-adrnr,
          mcod1  LIKE  lfa1-mcod1,
          mcod2  LIKE  lfa1-mcod2,
          mcod3  LIKE  lfa1-mcod3,
          gbort  LIKE blfa1-gbort,
          gbdat  LIKE blfa1-gbdat,
          sexkz  LIKE blfa1-sexkz,
          kraus  LIKE blfa1-kraus,
          revdb  LIKE blfa1-revdb,
          qssys  LIKE blfa1-qssys,
          ktock  LIKE blfa1-ktock,
          pfort  LIKE blfa1-pfort,
          werks  LIKE blfa1-werks,
          ltsna  LIKE blfa1-ltsna,
          werkr  LIKE blfa1-werkr,
          plkal  LIKE  lfa1-plkal,
          duefl  LIKE  lfa1-duefl,
          txjcd  LIKE blfa1-txjcd,
          sperz  LIKE  lfa1-sperz,
          scacd  LIKE blfa1-scacd,
          sfrgr  LIKE blfa1-sfrgr,
          lzone  LIKE blfa1-lzone,
          xlfza  LIKE  lfa1-xlfza,
          dlgrp  LIKE blfa1-dlgrp,
          fityp  LIKE blfa1-fityp,
          stcdt  LIKE blfa1-stcdt,
          regss  LIKE blfa1-regss,
          actss  LIKE blfa1-actss,
          stcd3  LIKE blfa1-stcd3,
          stcd4  LIKE blfa1-stcd4,
          ipisp  LIKE blfa1-ipisp,
          taxbs  LIKE blfa1-taxbs,
          profs  LIKE blfa1-profs,
          stgdl  LIKE blfa1-stgdl,
          emnfr  LIKE blfa1-emnfr,
          lfurl  LIKE blfa1-lfurl,
          j_1kfrepre  LIKE blfa1-j_1kfrepre,
          j_1kftbus   LIKE blfa1-j_1kftbus,
          j_1kftind   LIKE blfa1-j_1kftind,
          confs  LIKE  lfa1-confs,
          updat  LIKE  lfa1-updat,
          uptim  LIKE  lfa1-uptim,
          nodel  LIKE blfa1-nodel.
    DATA: END   OF vendor_file_x.
    FIELD-SYMBOLS:  <field>,
                    <field_1>.
    DATA: delim          TYPE x        VALUE '09'.
    DATA: fld_chk(4096),
          last_char,
          quote_1     TYPE i,
          quote_2     TYPE i,
          fld_lth     TYPE i,
          columns     TYPE i,
          field_end   TYPE i,
          outp_rec    TYPE i,
          extras(3)   TYPE c        VALUE '.,"',
          mixed_no(14) TYPE c        VALUE '1234567890-.,"'.
    OPEN DATASET p_file FOR INPUT.
    DO.
      READ DATASET p_file INTO data_tab-data.
      IF sy-subrc = 0.
        APPEND data_tab.
      ELSE.
        EXIT.
      ENDIF.
    ENDDO.
    * count columns in output structure
    DO.
      ASSIGN COMPONENT sy-index OF STRUCTURE vendor_file_x TO <field>.
      IF sy-subrc <> 0.
        EXIT.
      ENDIF.
      columns = sy-index.
    ENDDO.
    * Assign elements of input file to internal table
    CLEAR vendor_file_x.
    IF columns > 0.
      LOOP AT data_tab.
        DO columns TIMES.
          ASSIGN space TO <field>.
          ASSIGN space TO <field_1>.
          ASSIGN COMPONENT sy-index OF STRUCTURE vendor_file_x TO <field>.
          SEARCH data_tab-data FOR delim.
          IF sy-fdpos > 0.
            field_end = sy-fdpos + 1.
            ASSIGN data_tab-data(sy-fdpos) TO <field_1>.
    * Check that numeric fields don't contain any embedded " or ,
            IF <field_1> CO mixed_no AND
               <field_1> CA extras.
              TRANSLATE <field_1> USING '" , '.
              CONDENSE <field_1> NO-GAPS.
            ENDIF.
    * If first and last characters are '"', remove both.
            fld_chk = <field_1>.
            IF NOT fld_chk IS INITIAL.
              fld_lth = strlen( fld_chk ) - 1.
              MOVE fld_chk+fld_lth(1) TO last_char.
              IF fld_chk(1) = '"' AND
                 last_char = '"'.
                MOVE space TO fld_chk+fld_lth(1).
                SHIFT fld_chk.
                MOVE fld_chk TO <field_1>.
              ENDIF.       " for if fld_chk(1)=" & last_char="
            ENDIF.         " for if not fld_chk is initial
    * Replace "" with "
            DO.
              IF fld_chk CS '""'.
                quote_1 = sy-fdpos.
                quote_2 = sy-fdpos + 1.
                MOVE fld_chk+quote_2 TO fld_chk+quote_1.
              ELSE.
                MOVE fld_chk TO <field_1>.
                EXIT.
              ENDIF.
            ENDDO.
            <field> = <field_1>.
          ELSE.
            field_end = 1.
          ENDIF.
          SHIFT data_tab-data LEFT BY field_end PLACES.
        ENDDO.
        APPEND vendor_file_x.
        CLEAR vendor_file_x.
      ENDLOOP.
    ENDIF.
    CLEAR   data_tab.
    REFRESH data_tab.
    FREE    data_tab.
    Rob

  • What are the parameters have to pass to bapi material creation?

    can any one help me in creating material by using bapi.....
    which is 'BAPI_MATERIAL_SAVEDATA'.....by using the above bapi wen i am creating material....how to pass data to that bapi....what are the thing s i ahve to pass.........

    hi
    please chk this code
    TYPES : BEGIN OF S_BAPI,
            MATNR LIKE MARA-MATNR,
            MBRSH LIKE MARA-MBRSH,
            MTART LIKE MARA-MTART,
            MAKTX LIKE MAKT-MAKTX,
            MEINS LIKE MARA-MEINS,
            MATKL LIKE MARA-MATKL,
            END OF S_BAPI.
    DATA : I_BAPI TYPE STANDARD TABLE OF S_BAPI WITH HEADER LINE.
    PARAMETER : P_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\Documents and Settings\mansi_makhijani\Desktop\upload.txt'.
    CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
      CODEPAGE                      = ' '
       FILENAME                      = P_FILE
       FILETYPE                      = 'DAT'
      HEADLEN                       = ' '
      LINE_EXIT                     = ' '
      TRUNCLEN                      = ' '
      USER_FORM                     = ' '
      USER_PROG                     = ' '
      DAT_D_FORMAT                  = ' '
    IMPORTING
      FILELENGTH                    =
      TABLES
        DATA_TAB                      = I_BAPI
    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
      NO_AUTHORITY                  = 10
      OTHERS                        = 11
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    DATA : S_HEADDATA TYPE BAPIMATHEAD,
           S_CLIENTDATA TYPE BAPI_MARA,
           S_CLIENTDATAX TYPE BAPI_MARAX,
           I_MAKT TYPE STANDARD TABLE OF BAPI_MAKT WITH HEADER LINE.
    LOOP AT I_BAPI.
      S_HEADDATA-MATERIAL = I_BAPI-MATNR.
      S_HEADDATA-IND_SECTOR = I_BAPI-MBRSH.
      S_HEADDATA-MATL_TYPE = I_BAPI-MTART.
      S_CLIENTDATA-MATL_GROUP = I_BAPI-MATKL.
      S_CLIENTDATA-BASE_UOM = I_BAPI-MEINS.
      S_CLIENTDATAX-MATL_GROUP ='X'.
      S_CLIENTDATAX-BASE_UOM ='X'.
      I_MAKT-MATL_DESC = I_BAPI-MAKTX.
      I_MAKT-LANGU_ISO ='EN'.
      I_MAKT-LANGU ='EN'.
      I_MAKT-DEL_FLAG =' '.
      CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
          HEADDATA                  = S_HEADDATA
       CLIENTDATA                  = S_CLIENTDATA
       CLIENTDATAX                 = S_CLIENTDATAX
      PLANTDATA                   =
      PLANTDATAX                  =
      FORECASTPARAMETERS          =
      FORECASTPARAMETERSX         =
      PLANNINGDATA                =
      PLANNINGDATAX               =
      STORAGELOCATIONDATA         =
      STORAGELOCATIONDATAX        =
      VALUATIONDATA               =
      VALUATIONDATAX              =
      WAREHOUSENUMBERDATA         =
      WAREHOUSENUMBERDATAX        =
      SALESDATA                   =
      SALESDATAX                  =
      STORAGETYPEDATA             =
      STORAGETYPEDATAX            =
      FLAG_ONLINE                 = ' '
      FLAG_CAD_CALL               = ' '
      NO_DEQUEUE                  = ' '
    IMPORTING
      RETURN                      =
    TABLES
       MATERIALDESCRIPTION         = I_MAKT
      UNITSOFMEASURE              =
      UNITSOFMEASUREX             =
      INTERNATIONALARTNOS         =
      MATERIALLONGTEXT            =
      TAXCLASSIFICATIONS          =
      RETURNMESSAGES              =
      PRTDATA                     =
      PRTDATAX                    =
      EXTENSIONIN                 =
      EXTENSIONINX                =
      NFMCHARGEWEIGHTS            =
      NFMCHARGEWEIGHTSX           =
      NFMSTRUCTURALWEIGHTS        =
    NFMSTRUCTURALWEIGHTSX       =
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
    WAIT          =
    IMPORTING
    RETURN        =
    ENDLOOP.
    ~hitesh
    If your queries are solved try to close the thread

  • Double quotes problem while uploading tablimeited text file to internal tab

    H all,
    I am uploading excel data using GUI_UPLOAD function module by converting excel to tab delimited text format.
    Problem is Material AB" is converted to "AB"  "           " material in tabdelimited text format.
    Can anybody give solution to problem?
    Is it possible to upload excel file directly using GUI_UPLOAD function module?
    I can not use 'ALSM_EXCEL_TO_INTERNAL_TABLE'  and  'TEXT_CONVERT_XLS_TO_SAP'
    as i want to upload upload fields of length 3000 cahrs and these function module uploads fields of only 256 chars.
    Thanks.

    Get a excel - 97-2003.Fil the data which you want to upload .(3 columns )
    A      I      B     I     C     I.
    save it
    Code :
    TABLES : thead.
    Structure to store the file name, as selected from the open dialog
    TYPES: BEGIN OF file ,
            filename TYPE file_table-filename,
           END OF  file.
    Output for excel
    TYPES : BEGIN OF test,
                   a(5),
                   b(5),
                   c(5),
            END OF test.
    Internal table of excel
    DATA : it_test TYPE TABLE OF test.
    DATA : it_filename TYPE TABLE OF  file,.  "to store file names.
                 ws_filename TYPE       file.
    SELECTION-SCREEN
    PARAMETER: p_file LIKE rlgrap-filename  LOWER CASE.
    At Selection Screen
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    Parameter to store the sy-subrc value from FM file_open_dialog
      DATA: rc TYPE i.
      CLEAR: it_filename,
             ws_filename,
             p_file .
    Get the file name and path from the presenatation server
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
          window_title            = 'Select Input File'
          default_filename        = '*.xls'
        CHANGING
          file_table              = it_filename
          rc                      = rc
        EXCEPTIONS
          file_open_dialog_failed = 1
          cntl_error              = 2
          error_no_gui            = 3
          not_supported_by_gui    = 4
          OTHERS                  = 5.
      IF sy-subrc = 0.
        LOOP AT it_filename INTO ws_filename.
          p_file = ws_filename.
          EXIT.
        ENDLOOP.
      ENDIF.
    DATA: l_file TYPE string.
      CLEAR it_test .
      l_file = p_file.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                = l_file
          filetype                = 'ASC'
          has_field_separator     = 'X'
        TABLES
          data_tab                = it_test
        EXCEPTIONS
          file_open_error         = 1
          file_read_error         = 2
          no_batch                = 3
          gui_refuse_filetransfer = 4
          invalid_type            = 5
          no_authority            = 6
          unknown_error           = 7
          bad_data_format         = 8
          header_not_allowed      = 9
          separator_not_allowed   = 10
          header_too_long         = 11
          unknown_dp_error        = 12
          access_denied           = 13
          dp_out_of_memory        = 14
          disk_full               = 15
          dp_timeout              = 16
          OTHERS                  = 17.
      IF sy-subrc NE 0.
        WRITE: "Upload error".
        STOP.
      ENDIF.

  • How to get header when we use CL_GUI_FRONTEND_SERVICES= GUI_DOWNLOAD

    Hi SDN's,
    Can u tell me how to get headers when we download data to excel with using (we are using DBF as file type in the following method )
    CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
    (We can't use GUI_DOWNLOAD)
    Thanks in advance..
    BR

    Hi,
    I m giving u a bdc code i hope ur prob ll be solved.
    *& Report  ZDTK_BDC_LT01
    *& PROGRAME TITLE : LT01
    *& AUTHOR         : D TARUN KUMAR
    *& MM CONSULTANT  : Mr. MRINMOYE CHAKRABORTY
    *& REQUEST NO.    : RD1K901995
    *& TRANSACTION ID : ZLT01
    *& PACKAGE        : ZTARUN
    *& DESCRIPTION : BDC REPORT TO UPLOAD INITIAL STOCK POSTING AND
    *&               STORAGE BINS THROUGH LT01.
    REPORT  ZDTK_BDC_LT01
           no standard page heading line-size 255.
    TYPE-POOLS: TRUXS.
    STRUCTURE DECLARATION
    TYPES : BEGIN OF TY_UPLOAD,
                     LGNUM(3),
                     BETYP(1),
                     BENUM(10),
                    BWLVS(3),
                     MATNR(18),
                    BISMT(18),
                     ANFME(16),
                    WERKS(4),
                    LGORT(4),
                     CHARG(10),
                    LETYP(10),
                    VLTYP(3),
                    VLBER(3),
                    VLPLA(10),
                    VLQNR(10),
                     NLTYP(3),
                    NLBER(3),
                     NLPLA(10),
                    NLQNR(10),
              END OF TY_UPLOAD.
    INTERNALTABLE & WORKAREA DECLARATION
    DATA : T_UPLOAD TYPE STANDARD TABLE OF TY_UPLOAD,
           T_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
           T_BDCMSGCOLL TYPE STANDARD TABLE OF BDCMSGCOLL,
           W_UPLOAD TYPE TY_UPLOAD,
           W_BDCDATA TYPE BDCDATA,
           W_BDCMSGCOLL TYPE BDCMSGCOLL,
    GLOBLE DECLARATION
           G_FLNAME TYPE STRING,
           G_MESSAGE(70) TYPE C,
           IT_RAW TYPE TRUXS_T_TEXT_DATA,
    GLOBLE DECLARATION
           WA_OPT TYPE CTU_PARAMS.
           WA_OPT-UPDMODE = 'A'.
           WA_OPT-DEFSIZE = 'X'.
           WA_OPT-DISMODE = 'A'.
    SLECTION SCREEN DECLARATION
    SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECTION-SCREEN SKIP 2.
    PARAMETER : P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
    SELECTION-SCREEN SKIP 2.
    SELECTION-SCREEN : END OF BLOCK B1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    PERFORM GET_FILENAME.
    START-OF-SELECTION.
    PERFORM UPLOAD_DATA.
    *PERFORM GET_FINAL.
    *PERFORM GET_MIGO.
    PERFORM SESSION.
    *PERFORM TEST.
           Start new screen                                              *
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
      CLEAR W_BDCDATA.
      W_BDCDATA-PROGRAM  = PROGRAM.
      W_BDCDATA-DYNPRO   = DYNPRO.
      W_BDCDATA-DYNBEGIN = 'X'.
      APPEND W_BDCDATA TO T_BDCDATA.
    ENDFORM.
           Insert field                                                  *
    FORM BDC_FIELD USING FNAM FVAL.
    IF FVAL <> NODATA.
        CLEAR W_BDCDATA.
        W_BDCDATA-FNAM = FNAM.
        W_BDCDATA-FVAL = FVAL.
        APPEND W_BDCDATA TO T_BDCDATA.
    ENDIF.
    ENDFORM.
    *&      Form  GET_FILENAME
          TEXT
    FORM GET_FILENAME .
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
       PROGRAM_NAME        = SYST-CPROG
       DYNPRO_NUMBER       = SYST-DYNNR
       FIELD_NAME          = 'P_FILE'
    IMPORTING
       FILE_NAME           = P_FILE
    ENDFORM.                    " GET_FILENAME
    *&      Form  UPLOAD_DATA
          text
    form UPLOAD_DATA .
    CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
      EXPORTING
      I_FIELD_SEPERATOR          =
        I_LINE_HEADER              = 'X'
        I_TAB_RAW_DATA             = IT_RAW
        I_FILENAME                 = P_FILE      "WORK TABLE
      TABLES
        I_TAB_CONVERTED_DATA       = T_UPLOAD[]    "ACTUAL DATA
    EXCEPTIONS
       CONVERSION_FAILED          = 1
       OTHERS                     = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    endform.                    " UPLOAD_DATA
    *&      Form  SESSION
          text
    FORM SESSION .
    *sort t_upload by bismt.
    LOOP AT T_UPLOAD INTO W_UPLOAD.
    REFRESH T_BDCDATA.
    *CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
       input         = W_UPLOAD-CHARG
    IMPORTING
      OUTPUT        = W_UPLOAD-CHARG .
    *CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
       input         = W_UPLOAD-VLBER
    IMPORTING
      OUTPUT        = W_UPLOAD-VLBER .
    *CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
       input         = W_UPLOAD-NLTYP
    IMPORTING
      OUTPUT        = W_UPLOAD-NLTYP .
    *CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
       input         = W_UPLOAD-NLBER
    IMPORTING
      OUTPUT        = W_UPLOAD-NLBER .
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input         = W_UPLOAD-CHARG
    IMPORTING
       OUTPUT        = W_UPLOAD-CHARG .
    DATA : BWLVS(3),
           LGORT(4),
           WERKS(4),
           CHARG(10),
           LETYP(10),
           VLTYP(3),
           VLBER(3),
           VLPLA(10),
           VLQNR(10),
           NLTYP(3),
           NLBER(3),
           NLQNR(10).
    DATA : W_MATNR(18).
    *SELECT SINGLE MATNR FROM MARA INTO W_MATNR
                      WHERE BISMT = W_UPLOAD-BISMT.
    BWLVS = '999'.
    LGORT = '3500'.
    WERKS = '1030'.
    LETYP = 'E1'.
    VLTYP = '998'.
    VLBER = '001'.
    VLPLA = 'AUFNAHME'.
    NLTYP = '354'. "(packaging material)
    *NLTYP = '353'. "(spareparts material)
    NLBER = '001'.
    *include bdcrecx1.
    *start-of-selection.
    *perform open_group.
    perform bdc_dynpro      using 'SAPML03T' '0101'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LTAP-CHARG'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'LTAK-LGNUM'
                                  W_UPLOAD-LGNUM.  "'350'.
    perform bdc_field       using 'LTAK-BENUM'
                                  W_UPLOAD-BENUM.  "'1000000000'.
    perform bdc_field       using 'LTAK-BETYP'
                                  W_UPLOAD-BETYP.  "'P'.
    perform bdc_field       using 'LTAK-BWLVS'  BWLVS.    "'999'.
    perform bdc_field       using 'LTAP-MATNR'
                                  W_upload-MATNR.    "'40000009'.
    perform bdc_field       using 'RL03T-ANFME'
                                  W_UPLOAD-ANFME.    "'1,000'.
    perform bdc_field       using 'LTAP-WERKS' WERKS.    "'1030'.
    perform bdc_field       using 'LTAP-CHARG'
                                  w_upload-charg.
    perform bdc_dynpro      using 'SAPML03T' '0102'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LTAP-NLPLA'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'RL03T-ANFME'
                                  W_UPLOAD-ANFME.    "'1,000'.
    *perform bdc_field       using 'LTAP-ALTME'
                                 'KG'.
    perform bdc_field       using 'LTAP-LETYP' LETYP.    "'E1'.
    *perform bdc_field       using 'LTAP-CHARG' W_UPLOAD-CHARG.    "'0000000101'.
    perform bdc_field       using 'LTAP-VLTYP' VLTYP.    "'998'.
    perform bdc_field       using 'LTAP-VLBER' VLBER.    "'001'.
    perform bdc_field       using 'LTAP-VLPLA' VLPLA.    "'AUFNAHME'.
    perform bdc_field       using 'LTAP-NLTYP'
                                   W_UPLOAD-NLTYP.       "'351'.
    perform bdc_field       using 'LTAP-NLBER' NLBER.    "'001'.
    perform bdc_field       using 'LTAP-NLPLA'
                                  W_UPLOAD-NLPLA.    "'01 00 01'.
    *perform bdc_transaction using 'LT01'.
    *perform close_group.
    CALL TRANSACTION 'LT01' USING T_BDCDATA
                            MODE 'A'
                          UPDATE 'A'
                            OPTIONS FROM WA_OPT
         MESSAGES INTO T_BDCMSGCOLL.
    IF SY-SUBRC <> 0.
    READ TABLE T_BDCMSGCOLL INTO W_BDCMSGCOLL INDEX 1.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            ID        = SY-MSGID
            LANG      = 'EN'
            NO        = SY-MSGNO
            V1        = SY-MSGV1
            V2        = SY-MSGV2
            V3        = SY-MSGV3
            V4        = SY-MSGV4
          IMPORTING
            MSG       = G_MESSAGE
          EXCEPTIONS
            NOT_FOUND = 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.
          WRITE : / W_upload-matnr ,'-----' , G_MESSAGE.
          REFRESH T_BDCMSGCOLL.
        ENDIF.
        ENDIF.
    *clear : w_matnr, w_upload.
    ENDLOOP.
    ENDFORM.                    " SESSION

  • How to read a CSV file into the portal

    hi all,
    I want to read the content of CSV file that is avaliable in my desktop.
    plz help me with suitable code
    Regards
    Savitha
    Edited by: Savitha S R on Jun 1, 2009 8:25 AM

    Please use this code for that
    REPORT  znkp_upload_csv line-size 400.
    DATA : v_filename TYPE string.
    PARAMETER : p_file LIKE rlgrap-filename DEFAULT 'C:\Documents and Settings\Administrator\Desktop\JV.csv' .
    *Types for Reading CSV file
    TYPES : BEGIN OF x_csv,
              text(400) TYPE c,
            END OF x_csv.
    *Global internal table for reading CSV file
    DATA : lt_csv TYPE TABLE OF x_csv.
    *Global work area for reading CSV file
    DATA : wa_csv LIKE LINE OF lt_csv.
    v_filename = p_file.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                      = v_filename
      FILETYPE                      = 'ASC'
      HAS_FIELD_SEPARATOR           = ' '
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
      CODEPAGE                      = ' '
      IGNORE_CERR                   = ABAP_TRUE
      REPLACEMENT                   = '#'
      CHECK_BOM                     = ' '
      VIRUS_SCAN_PROFILE            =
      NO_AUTH_CHECK                 = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
      TABLES
        data_tab                      = lt_csv
    EXCEPTIONS
       file_open_error               = 1
       file_read_error               = 2
       no_batch                      = 3
       gui_refuse_filetransfer       = 4
       invalid_type                  = 5
       no_authority                  = 6
       unknown_error                 = 7
       bad_data_format               = 8
       header_not_allowed            = 9
       separator_not_allowed         = 10
       header_too_long               = 11
       unknown_dp_error              = 12
       access_denied                 = 13
       dp_out_of_memory              = 14
       disk_full                     = 15
       dp_timeout                    = 16
       OTHERS                        = 17
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    DATA : BEGIN OF item OCCURS 0 ,
            t1(20) TYPE c,
            t2(20) TYPE c,
            t3(20) TYPE c,
            t4(20) TYPE c,
            t5(20) TYPE c,
            t6(20) TYPE c,
            t7(20) TYPE c,
            t8(20) TYPE c,
           END OF item.
    DATA : txt(1) TYPE c. " 1-Header 2-Item
    LOOP AT lt_csv into wa_csv.
    split wa_csv-text at ',' into item-t1
                                  item-t2
                                  item-t3
                                  item-t4
                                  item-t5
                                  item-t6
                                  item-t7
                                  item-t8.
    append item.
    clear item.
    ENDLOOP.
    Check ITEM TABLE
    Regards
    Naresh

  • Update: Purchase order text

    Hi
    We would like to use the current long text of a material and update the purchase order text programatically with the same data.
    How can i create the P.O. text without using BDC updates?

    What text do you want to load ( I mean header text or item text )
    see the example to save text
    report ZMPPC016
           no standard page heading
           line-size 120.
    Constants
    constants : c_r type c value 'R', " PLNTY Value
                C_X TYPE C VALUE 'X', " Value for dynbegin.
                c_tcode like tstc-tcode value 'CA22', " Transaction code
                c_mode(1) type c value 'A', " BDC Mode
                c_tdformat type tline-tdformat value '*',"Tag column
                c_tdid type thead-tdid value 'PLPO', " Text ID
                c_tdform type thead-tdform value 'SYSTEM'." Form name
    Variables
    data : v_date like sy-datum, " date
           v_date1(4) type c,
           v_date2(2) type c,
           v_date3(2) type c,
           TNAME LIKE THEAD-TDNAME,
           v_mandt(3) type c,
           v_matnr(18) type c,
           flag type c.
    Internal table for file
    data : begin of t_file occurs 0,
           matnr(18) type c, " Material Number
           werks(4) type c,  " Plant
           vornr(4) type c,  " Operation Number
           tseq(3) type n,   " Line number in the long text
           text1(70) type c, " Long text
           plnal(2) type n,  " Group counter
           end of t_file.
    data : begin of t_text occurs 0,
           matnr(18) type c, " Material Number
           werks(4) type c,  " Plant
           plnal(2) type n,  " Group counter
           vornr(4) type c,  " Operation Number
           tseq(3) type n,   " Line number in the long text
           text1(70) type c, " Long text
           end of t_text.
    Internal table for MAPl
    data : begin of t_mapl occurs 0,
           plnnr like mapl-plnnr,
           end of t_mapl.
      Internal Table for PLAS and PLPO Table
    data : begin of t_plpo occurs 0,
           mandt like plpo-mandt,
           plnty like plpo-plnty,
           plnnr like plpo-plnnr,
           plnkn like plpo-plnkn,
           zaehl like plpo-zaehl,
           end of t_plpo.
    data t_long like tline occurs 0 with header line.
    Work area for t_text Internal table
    data : wa_text like t_text.
    data:  t_header like thead.         " long text
    Internal table for BDCDATA Structure
    data : begin of itab_bdc_tab occurs 0.
            include structure bdcdata.
    data : end of itab_bdc_tab.
    Selection-screen
    selection-screen : begin of block blk with frame .
    parameter : P_file like rlgrap-filename obligatory.
    selection-screen : end of block blk.
    initialization.
      p_file = 'C:\My Documents\InputFile.txt'.
    at selection-screen on value-request for p_file.
    F4 value for file
      perform file_get.
    start-of-selection.
    Get file data into Internal Table.
      perform get_data.
      sort t_text by matnr werks  vornr  plnal tseq.
    Save the long text into CA22 Transaction
      perform load_data.
    top-of-page.
      CALL FUNCTION 'Z_HEADER'
    EXPORTING
       FLEX_TEXT1       =
       FLEX_TEXT2       =
       FLEX_TEXT3       =
      skip 1.
    *&      Form  file_get
          F4 Value for file
    FORM file_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.                    " file_get
    *&      Form  get_data
          Get file data into Internal Table.
    FORM get_data.
      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 tseq.
        delete t_file where matnr = ''.
        loop at t_file.
       Get the material number from tables ZMSMI_FERR_RAW,
       ZMSMI_SNAP_RAW and ZMSMI_SIMP_RAW
          perform get_matnr.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
               EXPORTING
                    INPUT  = t_file-vornr
               IMPORTING
                    OUTPUT = t_file-vornr.
          move : t_file-matnr to t_text-matnr,
                 t_file-werks to t_text-werks,
                 t_file-vornr to t_text-vornr,
                 t_file-tseq  to t_text-tseq,
                 t_file-text1 to t_text-text1,
                 t_file-plnal to t_text-plnal.
          append t_text.
          clear t_text.
        endloop.
      else.
        WRITE: / 'Error reading input file'.
        stop.
      endif.
    ENDFORM.                    " get_data
    *&      Form  call_bdc
          BDC Script for CA22 Transaction
    FORM call_bdc.
    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-PLNNR'   T_PLPO-PLNNR.
      perform bdc_field  using  'RC271-AENNR'   SPACE.
      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.
      perform bdc_field  using  'RC271-STTAG'  v_date .
      perform bdc_field  using  'RC271-REVLV'   SPACE.
      perform bdc_field  using  'RC271-WERKS'   SPACE.
      perform bdc_field  using  'RC271-PLNAL'   WA_TEXT-PLNAL.
      perform bdc_field  using  'RC271-STATU'   SPACE.
      perform bdc_field  using  'RC271-VAGRP'   SPACE.
      perform bdc_field  using  'RC271-PROFIDNETZ'   SPACE.
    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'  WA_TEXT-VORNR.
    Screen 5400
      perform bdc_screen using  'SAPLCPDI'     '5400'.
      perform bdc_field  using  'BDC_OKCODE'   '=LTXT'.
      perform bdc_field  using  'RC27X-FLG_SEL(01)'  C_X.
    Screen 1100
      perform bdc_screen using  'SAPLSTXX'     '1100'.
      perform bdc_field  using  'BDC_OKCODE'   '=XEIN'.
    Screen 0999
      perform bdc_screen using  'SAPLWB_CUSTOMIZING'     '0999'.
      perform bdc_field  using  'BDC_OKCODE'   '=CONT'.
      PERFORM BDC_FIELD  USING  'RSEUMOD-GRA_EDITOR' SPACE.
    Screen 1100
      perform bdc_screen using  'SAPLSTXX'     '1100'.
      perform bdc_field  using  'BDC_CURSOR'   'RSTXT-TXPARGRAPH'.
      perform bdc_field  using  'BDC_OKCODE'   '=TXBA'.
      perform bdc_field  using  'RSTXT-TXPARGRAPH(03)'   '*'.
      perform bdc_field  using  'RSTXT-TXLINE(03)'
    Screen 5400
      perform bdc_screen using  'SAPLCPDI'     '5400'.
      perform bdc_field  using  'BDC_OKCODE'   '=BU'.
      call transaction c_tcode
           using itab_bdc_tab mode 'N'
           update 'S'.
      refresh itab_bdc_tab.
      if sy-subrc eq 0 and sy-msgty ne 'E'.
        v_mandt = t_plpo-mandt.
        CONCATENATE v_mandt
                    t_plpo-plnty
                    t_plpo-plnnr
                    t_plpo-plnkn
                    t_plpo-zaehl into tname.
        commit work.
        CALL FUNCTION 'DELETE_TEXT'
          EXPORTING
          CLIENT                  = SY-MANDT
            ID                    = c_tdid
            LANGUAGE              = 'E'
            NAME                  =  TNAME
            OBJECT                = 'ROUTING'
            SAVEMODE_DIRECT       = 'X'
         TEXTMEMORY_ONLY       = ' '
         LOCAL_CAT             = ' '
         EXCEPTIONS
           NOT_FOUND             = 1
           OTHERS                = 2
        if sy-subrc ne 0.
          write:/3  wa_text-matnr,24 wa_text-werks,
                    30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,
                    60 ' -',
                    67 'Error Deleting Existing Long Text'.
        endif.
      else.
        write:/3  wa_text-matnr,24 wa_text-werks,
                       30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,
                       60 ' -',
                       67 'Error Executing BDC'.
      endif.
    ENDFORM.                    " call_bdc
    *&      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_screen
    *&      Form  load_data
          Save the long text into CA22 Transaction
    FORM load_data.
      loop at t_text.
        move t_text to wa_text.
        at new vornr.
    Read the data in MAPL Table
          select single plnnr from mapl into t_mapl-plnnr
                                 where matnr  = wa_text-matnr
                                 and   werks  = wa_text-werks
                                 and   plnty  = c_r
                                 and   loekz  = space.
          if sy-subrc eq 0.
    Read the data from PLAS and PLPO Table
            select SINGLE  a~mandt
                    a~plnty
                    a~plnnr
                    a~plnkn
                    a~zaehl into  t_plpo
                   from plpo as a inner join plas as b on aplnty = bplnty
                                                      and aplnnr = bplnnr
                                                      and aplnkn = bplnkn
                    where b~plnty = c_r
                    and   b~plnnr = t_mapl-plnnr
                    and   b~plnal = wa_text-plnal
                    and   b~loekz = space
                    and   a~vornr = wa_text-vornr
                    and   a~loekz = space.
            if sy-subrc eq 0.
              perform call_bdc.
            else.
            flag = 'X'.
              write:/3  wa_text-matnr,24 wa_text-werks,
                     30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,
                     60 ' -',
                     67 'Matching routing group\Operation not found'.
              continue.
            endif.
          else.
            flag = 'X'.
            write:/3 wa_text-matnr,24 wa_text-werks,
                     40 ' -',
                     45 'Material Does not Exists or Material',
                     82 'not Available in MAPL Table'.
            continue.
          endif.
        endat.
        if flag ne 'X'.
          t_long-tdline = wa_text-text1.
          t_long-tdformat = c_tdformat.
          append t_long.
        endif.
        at end of vornr.
          if flag ne 'X'.
            v_mandt = t_plpo-mandt.
            CONCATENATE v_mandt
                      t_plpo-plnty
                      t_plpo-plnnr
                      t_plpo-plnkn
                      t_plpo-zaehl into tname.
            T_HEADer-TDOBJECT = 'ROUTING'.
            t_HEADer-TDNAME   = tname.
            T_HEADer-TDID     = c_tdid.
            t_header-tdform   = c_tdform.
            T_HEADer-TDSPRAS  = 'E'.
    Save the text
            CALL FUNCTION 'SAVE_TEXT'
              EXPORTING
                CLIENT                = SY-MANDT
                HEADER                = t_header
                SAVEMODE_DIRECT       = 'X'
         OWNER_SPECIFIED       = ' '
         LOCAL_CAT             = ' '
       IMPORTING
         FUNCTION              =
         NEWHEADER             =
              TABLES
                LINES                 = t_long
             EXCEPTIONS
               ID                    = 1
               LANGUAGE              = 2
               NAME                  = 3
               OBJECT                = 4
               OTHERS                = 5
            if sy-subrc eq 0.
              CALL FUNCTION 'COMMIT_TEXT'
                   EXPORTING
                        OBJECT   = t_header-TDOBJECT
                        NAME     = t_header-TDNAME
                        ID       = t_header-TDID
                        LANGUAGE = t_header-TDSPRAS.
              write:/3   wa_text-matnr,24 wa_text-werks,
                         30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,
                         60 ' -',
                         67 'Long Text Loaded Successfully'.
            else.
              write:/3   wa_text-matnr,24 wa_text-werks,
                         30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,
                         60 ' -',
                         67 'Error Uploading Long Text'.
            endif.
            refresh t_long.
            else.
            write:/3 wa_text-matnr, 24 wa_text-werks,
                   45 'Long text not uploaded'.
            clear flag.
           endif.
          endat.
        endloop.
      ENDFORM.                    " load_data
    *&      Form  get_matnr
          Get the material number from tables ZMSMI_FERR_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 sy-subrc eq 0.
          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 sy-subrc eq 0.
          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 sy-subrc eq 0.
          if not v_matnr is initial.
            clear t_file-matnr.
            t_file-matnr = v_matnr.
          endif.
      endcase.
    ENDFORM.                    " get_matnr
    Reward Points if it is helpful
    Thanks
    Seshu

  • How to read a txt file and update DB table

    I have to read a table which has some entries in it as plain text file, then I should update my table if the table entries and the data in text file are NOT MATCHING o.w. keep the table entry as it is

    It will helps to u
    data : begin of t_temp occurs 0,
             text(256),
           end of t_temp.
    data : s_file type string.
    SELECTION-SCREEN BEGIN OF BLOCK B1  WITH FRAME  TITLE TEXT-S01.
    PARAMETER: P_FILE LIKE RLGRAP-FILENAME.
    SELECTION-SCREEN : END OF BLOCK B1.
    clear s_file.
    move p_file to s_file.
    uploade SOURCE file to t_tab1
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        FILENAME                      = s_file
        FILETYPE                      = 'ASC'
       HAS_FIELD_SEPARATOR           = 'X'
             HEADER_LENGTH                 = 0
             READ_BY_LINE                  = 'X'
             DAT_MODE                      = ' '
             CODEPAGE                      = ' '
             IGNORE_CERR                   = ABAP_TRUE
             REPLACEMENT                   = '#'
             CHECK_BOM                     = ' '
           IMPORTING
             FILELENGTH                    =
             HEADER                        =
      TABLES
        DATA_TAB                      = t_temp
    EXCEPTIONS
       FILE_OPEN_ERROR               = 1
       FILE_READ_ERROR               = 2
       NO_BATCH                      = 3
       GUI_REFUSE_FILETRANSFER       = 4
       INVALID_TYPE                  = 5
       NO_AUTHORITY                  = 6
       UNKNOWN_ERROR                 = 7
       BAD_DATA_FORMAT               = 8
       HEADER_NOT_ALLOWED            = 9
       SEPARATOR_NOT_ALLOWED         = 10
       HEADER_TOO_LONG               = 11
       UNKNOWN_DP_ERROR              = 12
       ACCESS_DENIED                 = 13
       DP_OUT_OF_MEMORY              = 14
       DISK_FULL                     = 15
       DP_TIMEOUT                    = 16
       OTHERS                        = 17
    IF SY-SUBRC <> 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Text deleted by Moderator.  Do NOT request points
    Regards
    Saimedha

Maybe you are looking for