How to prepare excels based on records of internal table.
Hi abapers,
I have a scenario as follows:
In my internal table the records are as follows.
col1 col2 col3
1 a1 b1
2 a2 b1
3 a3 b2
4 a4 b3.
Now want i need is i have to break the records on the basis of col3 . All b1 rows are to be taken and dumped in a excel. b2 rows are to be taken and dumped in an excel and similarly for b3. And the name of excel will should be b1, b2 , b3 respectively.
How do i go for the case?
Help would be appreciated..
Regards,
Navin C
Edited by: navin.c on Jun 12, 2009 7:41 AM
put col3 as the first field in your itab.
TYPES:BEGIN OF ty3,
col3(3) TYPE c,
col2(3) TYPE c,
col1(3) TYPE c,
END OF ty3.
DATA:itab3 TYPE TABLE OF ty3.
DATA:it_xl TYPE TABLE OF ty3.
DATA:wa3 TYPE ty3.
DATA:file_name TYPE string.
SORT itab3 BY col3.
LOOP AT itab3 INTO wa3.
APPEND wa3 TO it_xl.
AT END OF col3.
READ TABLE itab3 INTO wa3 INDEX sy-tabix.
CHECK sy-subrc = 0.
file_name = wa3-col3.
PERFORM download_xl USING file_name.
REFRESH it_xl.
ENDAT.
ENDLOOP.
*& Form download_xl
* text
* -->P_FILE text
FORM download_xl USING p_file type any.
DATA:lv_path TYPE string VALUE 'c:\'.
CONCATENATE lv_path p_file '.xls' INTO p_file.
CONDENSE p_file NO-GAPS.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = p_file
filetype = 'DAT'
write_field_separator = '#'
TABLES
data_tab = it_xl.
ENDFORM. "download_xl
Similar Messages
-
How to Upload Excel sheet in DB or internal table using SAP NetWeaver ABAP
Dear All experts,
Pls provide guidance to Upload Excel sheet in DB or internal table using ABAP in ( SAP NetWeaver stack )
Regards
Machindra
Edited by: Machindra Patade on Apr 8, 2010 3:07 PMPlease search before posting.
Thread locked.
Thomas -
How to upload the flat file records into internal table by position?
Hi
I have a flat file which has 7 records in each row and they are NOT provided with CSV or Tab demilited...
They are continous text without spaces....
but i know the fixed length of each field Eg : 1st field 7 char and seconc field 3 char and so on...
How can i upload this file into internal table by reading positions of each field...I know we can use GUI_UPLOAD and Read dataset and Open dataset...
But please let me know to read the file with the fixed postions and load into internal table...
Thanks in advance
MMHi
As per my knowledge i dont think thr is some function module or so to read with a fixed positions.
You can use the below method if you think this is the best way.
Suppose your file has
types : begin of ty_itab,
field1 type char7,
field2 type char3,
field3 type chat3,
field4 type char3,
end of ty_itab.
types : begin of ty_upload,
str type string,
end of ty_upload.
data : it_itab type standatd table of ty_itab,
it_upload type standard table ot ty_upload,
wa_itab type ty_itab,
wa_upload type ty_upload.
use gui_upload.get the data in it_upload.
here you know that u have first 16 charcters makes a first row n then next 16 charcters next row
Loop at it_upload into wa_upload.
v_len = strlen ( wa_upload ).
v_len = v_len / 16.
You get number of rows per record ,if it is decimal value make it final value if 3.9 make to 4.
do v_len times.
wa_itab = wa_upload.
By this only first 16 characters are moved and respective fields will get a value.or else u can use offset
wa_upload+0(16).
append wa_itab to it_itab.
Now shift 16 characters using shift command in wa_upload.
enddo.
endloop.
Hope this syntax help you to resolve your issue.May be something i have missed .Right now i don't have sap system to send you the full correct syntax code.
Cheers
Joginder -
How can i get all the records from three tables(not common records)
Hi
I have four base tables at R/3-Side. And i need to extract them from R/3-Side.
And i dont have any standard extractor for these tables .
If i create a 'View' on top of these tables. Then it will give only commom records among the three tables.
But i want all the records from three base tables (not only common).
So how can i get the all records from three tables. please let me know
kumarYou can create separate 3 datasources for three tables and extract data to BW. There you can implement business login to build relation between this data.
-
How to upload an excel to a dynamically generated internal table?
Hi,
I have an excel sheet. I have to create an internal table dynamically according to the fields of the excel sheet. The internal table i have created successfully, the fields are exactly coming as the excel sheet. I need to upload the excel sheet directly to my Internal table.
Similar to the FM GUI_UPLOAD, which directly uploads the text document into the internal table
I am not able to pass my dynamic internal table to the GUI_UPLOAD, The tables parameter in the GUI_UPLOAD is accepting only the standard tables.
How to do?
-SudheerHi,
Use TEXT_CONVERT_XLS_TO_SAP Function Module.
AWARD POINTS IF USEFUL -
How to update Records from Internal table to u2018Zu2019 table?
Hi Friends,
How to update Records from Internal table to u2018Zu2019 table.
I have records in Internal table , that records want to update on u2018Zmarau2019 Table.
( my internal table & u2018 Zu2019 table structures are same.)
Thanking you.
Regards,
SubashHi,
loop at internal table.
modify <Z- table > from values < internal table Workarea>.
if sy-subrc = 0.
COMMIT work.
else.
ROLLBACK waork.
endif.
endloop.
or
UPDATE <Z- table > from table < internal table Workarea>.
if sy-subrc = 0.
COMMIT work.
else.
ROLLBACK waork.
endif.
Prabhudas -
How to generate .txt file from data in internal table
Hi I am using the program below to load .txt file into SAP table.
I am moving the records from a .txt file into internal table final and then into ZOUT_CCFOBS table.
How do I load records from internal table final back to another .txt file with the same layout? Pls advice.
REPORT ZOUP_LOAD_CCF_OBS.
TABLES: ZOUT_CCFOBS.
TYPES: BEGIN OF tline, "structure to store a line of each row
line(1000) TYPE c,
END OF tline.
TYPES: BEGIN OF i_split, "structure to store split record of each row
t_ZOTFACIL(100) TYPE c,
t_ZOTCCF(8) TYPE c,
t_ZOTOBSCAT(100) TYPE c,
END OF i_split.
DATA: itab TYPE TABLE OF tline WITH HEADER LINE.
DATA: idat TYPE TABLE OF i_split WITH HEADER LINE.
DATA: final TYPE STANDARD TABLE OF ZOUT_CCFOBS WITH HEADER LINE.
DATA: file_str TYPE string.
DATA: c_fnh_mask TYPE dxfields-filemask VALUE '.',
c_search_dir TYPE dxfields-longpath.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
PARAMETERS p_file LIKE rlgrap-filename. "file location
SELECTION-SCREEN END OF BLOCK a1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM f4_dxfilename USING p_file.
START-OF-SELECTION.
Download data from application server
PERFORM download_data.
file_str = p_file.
LOOP AT itab.
CLEAR idat.
this will split the line at every delimeter into single field
SPLIT itab-line AT ',' INTO idat-t_ZOTFACIL
idat-t_ZOTCCF
idat-t_ZOTOBSCAT.
APPEND idat.
ENDLOOP.
copying the internal table into final table which compatible with table tcurr
LOOP AT idat.
final-ZOTFACIL = idat-t_ZOTFACIL.
final-ZOTCCF = idat-t_ZOTCCF.
final-ZOTOBSCAT = idat-t_ZOTOBSCAT.
APPEND final.
ENDLOOP.
LOOP AT final.
MODIFY ZOUT_CCFOBS FROM final.
IF sy-subrc EQ 0.
MESSAGE S001(ZCURR).
ELSE.
MESSAGE A000(ZCURR).
ENDIF.
ENDLOOP.
FORM f4_dxfilename USING p_file.
addition TAICK 15/07/2008.
*maintain application server default search path.
IF sy-sysid = 'BWP'.
c_search_dir = '//rdmsbw/prd/data/output/all'.
ELSEIF sy-sysid = 'BWQ'.
c_search_dir = '//rdmsbw/uat/data/output/all'.
ELSEIF sy-sysid = 'BWD'.
IF sy-mandt = '900'.
c_search_dir = '//rdmsbw/sit/data/output/all'.
ELSE.
c_search_dir = '//rdmsbw/dev/data/output/all'.
ENDIF.
ENDIF.
DATA: wa_file LIKE dxfields-longpath.
CLEAR: wa_file.
CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
EXPORTING
i_location_flag = 'A'
i_server = ' '
i_path = c_search_dir
filemask = c_fnh_mask
fileoperation = 'R'
IMPORTING
o_path = wa_file
EXCEPTIONS
rfc_error = 1
error_with_gui = 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.
ELSE.
p_file = wa_file.
ENDIF.
addition end TAICK 15/07/2008.
ENDFORM. " f4_dxfilename
FORM download_data .
OPEN DATASET p_file FOR INPUT IN TEXT MODE ENCODING DEFAULT.
DO.
IF sy-subrc <> 0.
exit.
ENDIF.
READ DATASET p_file INTO itab.
if sy-subrc = 0.
APPEND itab.
clear itab.
endif.
ENDDO.
CLOSE DATASET p_file.
delete itab index 1. "remove column header
ENDFORM. " download_data
Edited by: RebekahMBB on Feb 20, 2012 12:56 PMHi I am using this piece of code to download my internal table into an .xls file on my pc.
FORM Z_CONVERT_EXCEL .
"This part of code to add column name in the downloaded file.
data : begin of int_head occurs 0,
Filed1(20) type c, " Header Data
end of int_head.
int_head-Filed1 = 'ZOTOUS'.
APPEND int_head.
CLEAR int_head.
int_head-Filed1 = 'ZOTOUS'.
APPEND int_head.
CLEAR int_head.
int_head-Filed1 = 'ZOTOGCUR'.
APPEND int_head.
CLEAR int_head.
Select ZOTOUS ZOTSYORGU ZOTOGCUR from ZOUT_ORG_CURR into CORRESPONDING FIELDS OF TABLE itab.
v_filetype = '.xls'. "I just manipulate the file name using XLS file type.
v_filename = 'C:\Documents and Settings\00088592\Desktop\OUs automation\development'.
CONCATENATE v_filename v_filetype INTO lv_filename.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_filename
filetype = 'ASC'
APPEND = 'X'
write_field_separator = 'X'
CONFIRM_OVERWRITE = 'X'
TABLES
data_tab = itab
FIELDNAMES = int_head
EXCEPTIONS
file_open_error = 1
file_write_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. "Z_CONVERT_EXCEL
As you can see the code specifies the header row separately and appends it in int_head.
What if I have 76 fields or more? I cant be specifying each like that.
Is there any other way to do this? To move the 76 field headers into int_head?
Pls help.
Thanks! -
Maximum records an internal table can hold?
Hi All,
Van you tell me maximum capacity of a standard internal table and that of an extract? How do we increase the capacity of the internal table if it is flooded?
Thanks a lot - Chandanhi Chandan,
Storage in internal Table does not depend on the number of records but depend on the memory they will be using.
An internal table allows maximum of 2GB of storage, this can be increased by applying some patch up to 4 GB but that will degrade the programs performance.
To resolve this limit the number of records while selecting and rerun the program as per required number of times.
<b>
Reward if usefull</b> -
To delete duplicate records from internal table
hi friends,
i have to delete records from internal table based on following criterion.
total fields are 7.
out of which if 4 fields are same and 5th field is different,then both records must be deleted.
in case all five fields are same,the program should do nothing.
for example.
if there are 3 records as follows
a1 b1 c1 d1 e1 f g
a1 b1 c1 d1 e2 w r
a1 b1 c1 d1 e1 j l
then first two records should be deleted as four fields are same but fifth(e) field differs.
but third record should remain as it is evenif first five fields are same for first and third record.
values of last two fields need not to be consider for deleting the records.LOOP AT ITAB.
V_FILED5 = ITAB-F5. "to compare later
V_TABIX = SY-TABIX. "used to delete if condition not matches
READ TABLE ITAB WITH KEY F1 = ITAB-F1
F2 = ITAB-F2
F3 = ITAB-F3
F4 = ITAB-F4.
IF SY-SUBRC = 0.
IF ITAB-F5 <> V_FIELD5.
*--both the records to be deleted,as Field5 is different.
DELETE ITAB INDEX SY-TABIX. "deletes that record
DELETE ITAB INDEX V_TABIX. "deletes the current record
ENDIF.
ENDIF.
ENDLOOP.
Message was edited by: Srikanth Kidambi
added comments
Message was edited by: Srikanth Kidambi -
HOW CAN I PASS A DEFAULT VALUE IN INTERNAL TABLE
HOW CAN I PASS A DEFAULT VALUE IN INTERNAL TABLE.
DATA : BEGIN OF ITAB OCCURS 0,
FIELD1(2) TYPC C DEFAULT '12',
FIELD2 TYPE C ,
END OF ITAB1.
IT'S GIVING ERROR MESSAGE.
PLZ LOOK INTO THIS AND GIVE ME CORRECT SOLUTION.
THANKS
SURIDATA : BEGIN OF ITAB OCCURS 0,
FIELD1(2) TYPC C,
FIELD2 TYPE C ,
END OF ITAB1.
itab-field1 = '12'.
itab-field2 = 'A'.
append itab.
clear itab-field2.
itab-field1 = '12'.
itab-field2 = 'B'.
append itab.
clear itab-field2.
Now everytime u'll have the value for field1 = '12'.
Regards
Vasu -
How to get the field name of an internal table during runtime?
How to get the field name of an internal table during runtime?
Hi Sudhir,
Declare and Use Get Cursor Field in Your Prm to get the field Name of the Intenal Table
Example Code:
<b> DATA: v_field(60). " Insert this code.
GET CURSOR FIELD v_field. " Insert this code.</b>
<b>CHECK v_field = 'ITAB-KUNNR'. " Insert this code. (or)
Write: v_field.</b>
Regards,
Ramganesan K. -
How to Organize the columns in the dynamic internal table?
Hello Folks!
How to Organize the columns in the dynamic internal table? i tried passing the parameter COL_POS to the fieldcatalog, Which is not working.Organize in What order ? What is your way to output ?
If you use ALV, you need to create fresh FIELD CATALOG for your dynamic table and then assign the column position.
Regards,
Diwakar -
Inserting records from internal table to database table
Hi all,
i want to insert records from internal table to zDatabase table, can u plz guide me which statement is better in performance to insert the records.
1) insert one by one record from internal table
loop at itab.
insert ztable from wa.
endloop.
2) insert total records at a time
INSERT <dbtabname> CLIENT SPECIFIED FROM TABLE itab.
or let me know if any other statement is there with high performance.
i internal table contains nearly 40000 records.
thanks.Hi,
Insert the entire table at atime rather than a record so as to increase the performance.
you can use INSERT <dbtabname> CLIENT SPECIFIED FROM TABLE itab.
or
MODIFY ZPRODUCT FROM TABLE GI_AFPO.
Regards,
Raj. -
Hi Experts,
Pls. let me know that,
How to fetch the SAP Standard Prog. built internal table into my_z_prog.?
For more explannation, pls. see my other thread with name of yestrday,
SUBMIT RFGLBALANCE WITH selection criteria, then How to get resulted itab?
thanqHi
Suppose RFGLBALANCE is your standard program and you have an internal table named I_RFGLBALANCE.
And lets say your Z program name is Z_SRINIVAS.
First find out the type of the internal table you want in your Z-program in the standard program. And declare an internal table of similar type in your Z-program.
I hope you can do this much.
Later wherever you are putting the below mentioned code.
SUBMIT RFGLBALANCE WITH selection criteria
Write the code which i have written.Obviously modify it to suit your requirement.
Please show what is not working fine so that even anyone else can help you with the problem you are facing.
Regards,
Mayank -
How can I get Number of Lines from internal table?
Hello at all,
i have in my Report a internal Table, which have many KUNNR.
For example the internal Table:
MANDT.......KUNNR......NAME.........FIRSTNAME........CITY
...040..........12345.........Owen............Michael........Liverpool
...040..........12345.........Owen............Michael........Liverpool
...040..........99999.......Johnson.......... Jeffrey........London
...040..........12345.........Owen............Michael........Liverpool
...040..........55555.......Hardley.......... Kingston.......Birmingham
I want to know, how many same KUNNR are existing in the internal Table?
In my example i need the result 3, because their is existing 3 times the Kunnr 12345 in the internal Table.
Have anyone an idea, how can I resolve this problem?
Edited by: Thomas Zloch on Jun 21, 2010 2:55 PM - one question mark at a time is sufficientHi,
1.Create two internal tables of same type and sort according to Kunnr then Delete the
adjusent duplicates by comparing KUNNR
2.Sort the table by KUNNR and use ON change of Concept in that Just increment the counter.
I am writing the sample logic here.
tables kna1.
data: t_kna1 type table of kna1,
w_kunnr type kna1-kunnr,
counter type i," Holds No.of KUNNRs in the T_kna1
t_kna2 type table of kna1.
select * from kna1 into table kna1 up to 100 rows.
t_kna2[] = t_kna1[].
delete t_kna2 by kunnr.
delete adjusent duplicates from t_kna2 by comparing kunnr."1st Method
read table t_kna2 transporting no-fields.
counter = sy-tfill."1st Method
loop at t_kna1 into kna1."2nd Method
at first.
w_kunnr = kna1-kunnr .
counter = 1.
endat.
if w_kunnr ne kna1-kunnr.
counter = counter + 1.
endif.
endloop.
Note : Here I used a sample table KNA1 in this there are no Duplicates of KUNNR .
Maybe you are looking for
-
How can I install something on the D:\ drive?
Hi! Very very simple question. I would like to create installer within LabVIEW 8.5 and add some file which should be installed on the D:\ drive on the target machine. I see a lot of predefined folders, but how can I add D:\ as destination??? many tha
-
ADF Faces: RichTable - How to create a RichTable object
Hi. How to create a RichTable object to put in a JSF page ? I need to make a method that receive a list of name of columns and a list of list of data. This code that I have writing don't work. What's my error? public RichTable getADFTable(
-
Rich List Pagination in SharePoint 2010
I have SharePoint list with data that I need to display page by page. The must requirement is ability to jump through pages and show total page count (i.e. 1,2,3 ... 15). Does SharePoint allow to do that? By far I tried: CAML : seems not to be possib
-
Disable XML Validation (with default table defined in schema)
Hi, Is there a way to disable validations when an XML is put into a XMLType table? I have registered my XML as, vsql := 'BEGIN DBMS_XMLSCHEMA.registerSchema( SCHEMAURL => ''ETV_EPG.xsd'', SCHEMADOC => bfilename(''MYDIR'',''MY_XSD.xsd''), OWNER => ''E
-
DSL Connection Very slow ONLY when using wireless router
My DSL connection was running super slow (approx 136 Kbs) - I disconnected the Linksys wireless router and plugged by DSL modem directly into the computer. Then my internet speed increased to 1.4 Mbs (a 10 fold increase). Any suggestions on how / wh