2010 Nov 10 7:19 AM
I am trying to download data from cdhdr and cdpos using gui_download and also in the unix box.
But, i am getting memory realted dump if I try to do it for a month in windows . If the program runs at the
background to downlaod in the unix box , its telling me to look into 548845 OSS note.
Any help in this regard is highly appreiciated.
Regards,
Harsha
I am trying to download data from cdhdr and cdpos using gui_download and also in the unix box.
But, i am getting memory realted dump if I try to do it for a month in windows . If the program runs at the
background to downlaod in the unix box , its telling me to look into 548845 OSS note.
Any help in this regard is highly appreiciated.
Regards,
Harsha
2010 Nov 10 7:26 AM
Two remarks
- CDPOS/CDHDR is one of the biggest file in a SAP system, did you evaluate size of the internal table for your system when extracting those data (then ask basis team for limits in memory allocation of your system, not an Abap related problem)
- FM gui_download is not available in background (see the "gui" at the beginning) (many threads already exist on this problem)
Regards,
Raymond
2010 Nov 10 7:28 AM
Thanks for the reply.
GUI_download does not work in the backgroud. There should be some way to dump
using dynamic itab into unix box is possible?
Regards,
Harsha
2010 Nov 10 7:33 AM
2010 Nov 10 7:35 AM
Thanks a ton again.
Here is my code, could you tell me how to go about using package?
REPORT zcdhdr.
TABLES : cdhdr,cdpos.
TYPE-POOLS truxs.
SELECT-OPTIONS : s_date FOR cdhdr-udate OBLIGATORY.
PARAMETERS : p_uyes RADIOBUTTON GROUP g1 USER-COMMAND flag DEFAULT 'X' ,
p_uno RADIOBUTTON GROUP g1 .
PARAMETERS : p_path TYPE char30 DEFAULT 'c:\temp\' OBLIGATORY.
DATA : hdr_tab LIKE cdhdr OCCURS 0 WITH HEADER LINE,
pos_tab LIKE cdpos OCCURS 0 WITH HEADER LINE.
DATA : mi_bytecount TYPE i ,csv1 TYPE truxs_t_text_data,
csv2 TYPE truxs_t_text_data .
.
FIELD-SYMBOLS: <f_data_tab> TYPE ANY.
DATA : file1 TYPE string, file2 TYPE string.
AT SELECTION-SCREEN.
PERFORM check_date.
START-OF-SELECTION.
PERFORM get_data.
PERFORM download_data.
&----
*& Form check_date
&----
text
----
--> p1 text
<-- p2 text
----
FORM check_date.
DATA : diff LIKE p0347-scrmm.
ENDFORM. " check_date
&----
*& Form get_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data.
DATA : diff TYPE i, tmpdt LIKE sy-datum.
CLEAR : hdr_tab[], pos_tab[].
tmpdt = s_date-low.
CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
EXPORTING
i_datum_bis = s_date-high
i_datum_von = s_date-low
IMPORTING
e_tage = diff.
.
ADD 1 TO diff.
DO diff TIMES.
SELECT * FROM cdhdr CLIENT SPECIFIED
WHERE mandant = sy-mandt
AND udate = tmpdt.
SELECT * FROM cdpos CLIENT SPECIFIED
WHERE mandant = sy-mandt
AND objectclas = cdhdr-objectclas
AND objectid = cdhdr-objectid
AND changenr = cdhdr-changenr.
CHECK sy-subrc = 0.
MOVE-CORRESPONDING cdhdr TO hdr_tab.
MOVE-CORRESPONDING cdpos TO pos_tab.
APPEND hdr_tab.
APPEND pos_tab.
ENDSELECT.
ENDSELECT.
ADD 1 TO tmpdt.
CLEAR : hdr_tab, pos_tab.
ENDDO.
ENDFORM. " get_data
&----
*& Form download_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM download_data.
DATA : str1(12),str2(12), unix_path TYPE string.
CLEAR : str1,str2.
CONCATENATE s_date-low6(2) '-' s_date-low4(2) '-' s_date-low+2(2)
INTO str1.
CONCATENATE s_date-high6(2) '-' s_date-high4(2) '-' s_date-high+2(2)
INTO str2.
IF p_uno = 'X'.
CONCATENATE p_path 'cdhdr_' str1 '_To_' str2 '.txt' INTO file1.
CONCATENATE p_path 'cdpos_' str1 '_To_' str2 '.txt' INTO file2.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = mi_bytecount
filename = file1
filetype = 'ASC'
TABLES
data_tab = hdr_tab[].
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = mi_bytecount
filename = file2
filetype = 'ASC'
TABLES
data_tab = pos_tab[].
WRITE 😕 'Following files have been downloaded'.
WRITE 😕 file1.
WRITE 😕 file2.
ENDIF.
IF p_uyes = 'X'.
unix_path = '/home_sap/prdweb/testmail/'.
CONCATENATE unix_path 'cdhdr_' str1 '_To_' str2 '.txt' INTO file1.
CONCATENATE unix_path 'cdpos_' str1 '_To_' str2 '.txt' INTO file2.
CONDENSE file1 NO-GAPS.
CONDENSE file2 NO-GAPS.
CALL FUNCTION 'SAP_CONVERT_TO_TXT_FORMAT'
EXPORTING
i_field_seperator = '|'
i_line_header = 'X'
TABLES
i_tab_sap_data = hdr_tab
CHANGING
i_tab_converted_data = csv1.
CALL FUNCTION 'SAP_CONVERT_TO_TXT_FORMAT'
EXPORTING
i_field_seperator = '|'
i_line_header = 'X'
TABLES
i_tab_sap_data = pos_tab
CHANGING
i_tab_converted_data = csv2.
OPEN DATASET file1 FOR OUTPUT IN BINARY MODE.
LOOP AT csv1 ASSIGNING <f_data_tab>.
TRANSFER <f_data_tab> TO file1.
ENDLOOP.
CLOSE DATASET file1.
OPEN DATASET file2 FOR OUTPUT IN BINARY MODE.
LOOP AT csv2 ASSIGNING <f_data_tab>.
TRANSFER <f_data_tab> TO file2.
ENDLOOP.
CLOSE DATASET file1.
WRITE 😕 'Files ', file1 ,'and' , file2 ,'Have been downloaded'.
ENDIF.
ENDFORM. " download_data
2010 Nov 10 7:45 AM
2010 Nov 10 9:12 AM
REPORT zcdhdr.
TABLES : cdhdr,cdpos.
TYPE-POOLS truxs.
SELECT-OPTIONS : s_date FOR cdhdr-udate OBLIGATORY.
PARAMETERS : p_uyes RADIOBUTTON GROUP g1 USER-COMMAND flag DEFAULT 'X' ,
p_uno RADIOBUTTON GROUP g1 .
PARAMETERS : p_path TYPE char30 DEFAULT 'c:\temp\' OBLIGATORY.
DATA : hdr_tab LIKE cdhdr OCCURS 0 WITH HEADER LINE,
pos_tab LIKE cdpos OCCURS 0 WITH HEADER LINE.
DATA : mi_bytecount TYPE i ,csv1 TYPE truxs_t_text_data,
csv2 TYPE truxs_t_text_data .
.
FIELD-SYMBOLS: <f_data_tab> TYPE ANY.
DATA : file1 TYPE string, file2 TYPE string.
AT SELECTION-SCREEN.
PERFORM check_date.
START-OF-SELECTION.
PERFORM get_data.
PERFORM download_data.
*&---------------------------------------------------------------------*
*& Form check_date
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_date.
DATA : diff LIKE p0347-scrmm.
ENDFORM. " check_date
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data.
DATA : diff TYPE i, tmpdt LIKE sy-datum.
CLEAR : hdr_tab[], pos_tab[].
tmpdt = s_date-low.
CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
EXPORTING
i_datum_bis = s_date-high
i_datum_von = s_date-low
IMPORTING
e_tage = diff.
.
ADD 1 TO diff.
DO diff TIMES.
SELECT * FROM cdhdr CLIENT SPECIFIED
WHERE mandant = sy-mandt
AND udate = tmpdt.
SELECT * FROM cdpos CLIENT SPECIFIED
WHERE mandant = sy-mandt
AND objectclas = cdhdr-objectclas
AND objectid = cdhdr-objectid
AND changenr = cdhdr-changenr.
CHECK sy-subrc = 0.
MOVE-CORRESPONDING cdhdr TO hdr_tab.
MOVE-CORRESPONDING cdpos TO pos_tab.
APPEND hdr_tab.
APPEND pos_tab.
ENDSELECT.
ENDSELECT.
ADD 1 TO tmpdt.
CLEAR : hdr_tab, pos_tab.
ENDDO.
ENDFORM. " get_data
*&---------------------------------------------------------------------*
*& Form download_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_data.
DATA : str1(12),str2(12), unix_path TYPE string.
CLEAR : str1,str2.
CONCATENATE s_date-low+6(2) '-' s_date-low+4(2) '-' s_date-low+2(2)
INTO str1.
CONCATENATE s_date-high+6(2) '-' s_date-high+4(2) '-' s_date-high+2(2)
INTO str2.
IF p_uno = 'X'.
CONCATENATE p_path 'cdhdr_' str1 '_To_' str2 '.txt' INTO file1.
CONCATENATE p_path 'cdpos_' str1 '_To_' str2 '.txt' INTO file2.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = mi_bytecount
filename = file1
filetype = 'ASC'
TABLES
data_tab = hdr_tab[].
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = mi_bytecount
filename = file2
filetype = 'ASC'
TABLES
data_tab = pos_tab[].
WRITE :/ 'Following files have been downloaded'.
WRITE :/ file1.
WRITE :/ file2.
ENDIF.
IF p_uyes = 'X'.
unix_path = '/home_sap/prdweb/testmail/'.
CONCATENATE unix_path 'cdhdr_' str1 '_To_' str2 '.txt' INTO file1.
CONCATENATE unix_path 'cdpos_' str1 '_To_' str2 '.txt' INTO file2.
CONDENSE file1 NO-GAPS.
CONDENSE file2 NO-GAPS.
CALL FUNCTION 'SAP_CONVERT_TO_TXT_FORMAT'
EXPORTING
i_field_seperator = '|'
* i_line_header = 'X'
TABLES
i_tab_sap_data = hdr_tab
CHANGING
i_tab_converted_data = csv1.
CALL FUNCTION 'SAP_CONVERT_TO_TXT_FORMAT'
EXPORTING
i_field_seperator = '|'
* i_line_header = 'X'
TABLES
i_tab_sap_data = pos_tab
CHANGING
i_tab_converted_data = csv2.
OPEN DATASET file1 FOR OUTPUT IN BINARY MODE.
LOOP AT csv1 ASSIGNING <f_data_tab>.
TRANSFER <f_data_tab> TO file1.
ENDLOOP.
CLOSE DATASET file1.
OPEN DATASET file2 FOR OUTPUT IN BINARY MODE.
LOOP AT csv2 ASSIGNING <f_data_tab>.
TRANSFER <f_data_tab> TO file2.
ENDLOOP.
CLOSE DATASET file1.
WRITE :/ 'Files ', file1 ,'and' , file2 ,'Have been downloaded'.
ENDIF.
ENDFORM. " download_data
Edited by: Harsha S on Nov 10, 2010 10:12 AMEdited by: Harsha S on Nov 10, 2010 10:15 AM
2010 Nov 10 9:27 AM
Raymand.
sap_convert_to_txt_frmat
i_field_seperator = '|'
tables i_tab_sap_data = hdr_tab ( has 319000+ rorws)
chaning itab_converted_data = csv1.
I am gettting dump here.
REgards,
Harsha
2010 Nov 10 10:34 AM
Structure your program by package
- select data in internal table from main database table (CDHDR) with [PACKAGE SIZE n|http://help.sap.com/abapdocu_70/en/ABAPINTO_CLAUSE.htm#&ABAP_ALTERNATIVE_3@3@]
- - select other data (CDPOS) in internal table with [FOR ALL ENTRIES|http://help.sap.com/abapdocu_70/en/ABENWHERE_LOGEXP_ITAB.htm]
- - build output internal table
- - convert to text
- - open dataset (once, if not already opened)
- - transfer to dataset
- - refresh internal table
- endselect
- close dataset (if was opened)
Regards,
Raymond
2010 Nov 10 7:40 AM
2010 Nov 11 10:55 AM
Thanks Raymond.
It was very helpful and awarding the point.
Thanks.
Harsha
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |