‎2008 Aug 19 5:45 PM
Hi !
I am using the
OPEN DATASET lv_filename FOR INPUT IN BINARY MODEstatement and it reads the contents of a .xml file correctly. However, if I later try and view the contents of the file using AL11, it is in binary mode. Any ideas of how to read the same file in AL11 in text format ?
Cheers,
Ashok.
‎2008 Aug 19 5:50 PM
try this
OPEN DATASET 'FILENAME' FOR INPUT IN LEGACY TEXT MODE CODE PAGE.
‎2008 Aug 19 6:02 PM
Kishore,
It works similar to the vanilla
in text mode, but it is not reading the root element due to the indented space before the xml tag.
Cheers,
Ashok.
‎2008 Aug 20 5:17 AM
SAMPLE REPORT
when u use open data set if ur runing ur report in background it will create proble.so use this FM
TABLES: zdms_textno.
DATA: BEGIN OF it_upload1 OCCURS 0,
kunnr LIKE vbak-kunnr,
pno LIKE vbrk-bstnk_vf,
idate(10), " like vbrk-fkdat,
pernr LIKE p0000-pernr,
END OF it_upload1.
DATA: BEGIN OF it_upload2 OCCURS 0,
pno LIKE vbrk-bstnk_vf,
matnr LIKE vbrp-matnr,
kwmeng LIKE rv45a-kwmeng,
END OF it_upload2.
DATA: BEGIN OF it_up1 OCCURS 0,
string1(66),
END OF it_up1.
DATA: BEGIN OF it_up2 OCCURS 0,
string2(70),
END OF it_up2.
DATA: it_zdms_textno LIKE zdms_textno OCCURS 0 WITH HEADER LINE.
DATA: it_order LIKE STANDARD TABLE OF zdms_log WITH HEADER LINE.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: gt_bdcmsg LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
file1 TYPE rlgrap-filename .
DATA: it_textno LIKE zdms_textno OCCURS 0,
wa_textno LIKE LINE OF it_textno .
DATA : gv_filenum LIKE zdms_textno-filenumber ,
gv_filenumc(10) TYPE c .
*DATA : gv_path TYPE rlgrap-filename.
DATA : gv_path(100) TYPE c.
DATA: gv_file1 TYPE string.
DATA: gv_char1(15) ,
gv_char2(16),
gv_char3(15),
gv_qty(15),
n TYPE i,
m(2),
gv_msg(50),
gv_kwmeng(15),
gv_kwmeng1(15),
gv_string1(66),
gv_string2(70),
numc1(10),
rec(70) ,
ln TYPE i,
gv_pernr(8),
gv_pernr1(8),
p TYPE i .
DATA : lw_string TYPE string.
DATA : wa_order LIKE LINE OF it_order.
DATA : mess TYPE string.
DATA : d_server TYPE string VALUE 'r3prod_EEP_05'.
START-OF-SELECTION.
ln = 2 .
WHILE ln GT 1 .
Start of Added by Durai.V 30-May-2008******
CLEAR it_upload1.
CLEAR it_upload1[].
CLEAR it_upload2.
CLEAR it_upload2[].
End of Added by Durai.V 30-May-2008********
PERFORM upload.
IF sy-subrc NE 0 .
EXIT.
ENDIF.
PERFORM bdc_execute.
ENDWHILE.
*****************
Form Upload
**************
FORM upload.
CLEAR: gv_filenum ,
gv_filenumc,
gv_file1 ,
gv_path,
wa_textno .
SELECT SINGLE filenumber path
FROM zdms_textno
INTO (gv_filenum,gv_path)
WHERE filename EQ 'INCOMING' .
MOVE gv_filenum TO gv_filenumc .
SHIFT gv_filenumc LEFT DELETING LEADING '0'.
*concatenate 'F:\usr\sap\EED\DVEBMGS00\work\EFC_Indent_Hdr_'
CONCATENATE gv_path 'EFC_Indent_Hdr_'
gv_filenumc
'.txt'
INTO gv_file1 .
Start of Added by Durai.V 30-May-2008******
CLEAR it_up1.
CLEAR it_up1[].
End of Added by Durai.V 30-May-2008********
CALL FUNCTION 'DX_FILE_READ' DESTINATION d_server
EXPORTING
filename = gv_file1
TABLES
data_tab = it_up1
EXCEPTIONS
no_file_on_server = 1
no_data_on_server = 2
gui_upload_failed = 3
no_authority = 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.
WRITE : gv_file1 , 'File not found'.
EXIT.
ENDIF.
Start of Added by Durai.V 30-May-2008******
WRITE : / 'Application Server File Path for Header: ',gv_file1.
End of Added by Durai.V 30-May-2008********
*************************************Commented By Anbu****************************************************
OPEN DATASET gv_file1 FOR INPUT IN TEXT MODE ENCODING DEFAULT MESSAGE mess .
*
IF sy-subrc = 0.
DO.
READ DATASET gv_file1 INTO rec .
IF sy-subrc = 0.
MOVE rec TO it_up1-string1.
APPEND it_up1 .
ELSE.
EXIT.
ENDIF.
ENDDO .
ELSE .
WRITE : gv_file1 , mess, 'File not found'.
EXIT. "MESSAGE ID 'SDV' TYPE 'E' NUMBER '000' WITH 'Header File Not Available' .
ENDIF.
CLOSE DATASET gv_file1 .
*************************************Ended By Anbu****************************************************
IF sy-subrc = 0.
wa_textno-filename = 'INCOMING' .
wa_textno-filenumber = gv_filenum + 1 .
wa_textno-path = gv_path.
shift zdms_textno left deleting leading ' ' .
MODIFY zdms_textno FROM wa_textno .
ENDIF.
LOOP AT it_up1.
gv_string1 = it_up1-string1.
IF gv_string1 EQ 'EOF' .
EXIT.
ELSE.
SPLIT gv_string1 AT '~' INTO: it_upload1-kunnr it_upload1-pno it_upload1-idate it_upload1-pernr .
CLEAR : gv_pernr ,gv_pernr1, p .
p = 0 .
MOVE it_upload1-pernr TO gv_pernr1 .
DO 8 TIMES.
IF ( gv_pernr1(1) EQ '0' OR gv_pernr1p(1) EQ '1' OR gv_pernr1p(1) EQ '2' OR gv_pernr1p(1) EQ '3' OR gv_pernr1p(1) EQ '4'
OR gv_pernr1p(1) EQ '5' OR gv_pernr1p(1) EQ '6' OR gv_pernr1p(1) EQ '7' OR gv_pernr1p(1) EQ '8'
OR gv_pernr1+p(1) EQ '9' ).
CONCATENATE gv_pernr1
gv_pernr1+p(1)
INTO gv_pernr1.
p = p + 1.
ELSE.
EXIT.
ENDIF.
ENDDO.
MOVE gv_pernr TO it_upload1-pernr .
APPEND it_upload1.
CLEAR gv_string1 .
ENDIF.
ENDLOOP.
CLEAR: gv_filenumc,
gv_file1 ,
wa_textno .
gv_filenum = gv_filenum + 1 .
MOVE gv_filenum TO gv_filenumc .
SHIFT gv_filenumc LEFT DELETING LEADING '0'.
if gv_filenum < 10 .
concatenate '0' gv_filenumc into gv_filenumc .
endif.
*concatenate 'F:\usr\sap\EED\DVEBMGS00\work\EFC_Indent_Trn_'
CONCATENATE gv_path 'EFC_Indent_Trn_'
gv_filenumc
'.txt'
INTO gv_file1 .
Start of Added by Durai.V 30-May-2008******
CLEAR it_up2.
CLEAR it_up2[].
End of Added by Durai.V 30-May-2008********
CALL FUNCTION 'DX_FILE_READ' DESTINATION d_server
EXPORTING
filename = gv_file1
SERVER =
pc =
TABLES
data_tab = it_up2
EXCEPTIONS
no_file_on_server = 1
no_data_on_server = 2
gui_upload_failed = 3
NO_AUTHORITY = 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.
WRITE : gv_file1 , 'File not found'.
EXIT.
ENDIF.
Start of Added by Durai.V 30-May-2008******
WRITE : / 'Application Server File Path for Item : ',gv_file1.
End of Added by Durai.V 30-May-2008********
*************************************Commented By Anbu****************************************************
OPEN DATASET gv_file1 FOR INPUT IN TEXT MODE ENCODING DEFAULT MESSAGE mess .
IF sy-subrc = 0 .
DO.
READ DATASET gv_file1 INTO rec .
IF sy-subrc = 0.
MOVE rec TO it_up2-string2.
APPEND it_up2 .
ELSE.
EXIT.
ENDIF.
ENDDO.
ELSE.
WRITE : gv_file1 , mess , 'File not found'.
EXIT. "MESSAGE ID 'SDV' TYPE 'E' NUMBER '000' WITH 'Transaction File Not Available' .
ENDIF.
CLOSE DATASET gv_file1.
*************************************Ended By Anbu****************************************************
IF sy-subrc = 0.
wa_textno-filename = 'INCOMING' .
wa_textno-filenumber = gv_filenum + 1 .
wa_textno-path = gv_path.
MODIFY zdms_textno FROM wa_textno .
ENDIF.
LOOP AT it_up2.
gv_string2 = it_up2-string2.
IF gv_string2 EQ 'EOF' .
EXIT.
ELSE.
SPLIT gv_string2 AT '~' INTO: it_upload2-pno it_upload2-matnr gv_kwmeng1 .
shift gv_kwmeng1 right deleting trailing '#' .
shift gv_kwmeng1 left deleting leading '' .
CLEAR : gv_kwmeng ,p .
p = 0 .
DO 15 TIMES.
IF ( gv_kwmeng1+p(1) EQ '0' OR gv_kwmeng1+p(1) EQ '1' OR gv_kwmeng1+p(1) EQ '2' OR gv_kwmeng1+p(1) EQ '3' OR gv_kwmeng1+p(1) EQ '4'
OR gv_kwmeng1+p(1) EQ '5' OR gv_kwmeng1+p(1) EQ '6' OR gv_kwmeng1+p(1) EQ '7' OR gv_kwmeng1+p(1) EQ '8'
OR gv_kwmeng1+p(1) EQ '9' ).
CONCATENATE gv_kwmeng
gv_kwmeng1+p(1)
INTO gv_kwmeng.
p = p + 1.
ELSE.
EXIT.
ENDIF.
ENDDO.
MOVE gv_kwmeng TO it_upload2-kwmeng.
if gv_kwmeng1 CA
'#~`!@$%^&*()-_+={}[].<>/?;"\|ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
*
if sy-fdpos => 0.
*
else.
*
move gv_kwmeng1 to it_upload2-kwmeng.
*
endif.
*
endif.
enddo.
move gv_kwmeng to it_upload2-kwmeng.
APPEND it_upload2.
CLEAR gv_kwmeng .
CLEAR gv_string2.
ENDIF.
ENDLOOP.
ENDFORM. " f001-gui_upload
&----
*& Form f002_bdc_execute
&----
text
----
--> p1 text
<-- p2 text
----
FORM bdc_execute .
LOOP AT it_upload1.
CLEAR: n, m.
REFRESH: bdcdata,
gt_bdcmsg.
wa_order-kunnr = it_upload1-kunnr .
PERFORM bdc_dynpro USING 'SAPMV45A' '0101' .
PERFORM bdc_field USING 'BDC_CURSOR' 'VBAK-SPART' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'VBAK-AUART' 'ZLOR' .
PERFORM bdc_field USING 'VBAK-VKORG' '1000' .
PERFORM bdc_field USING 'VBAK-VTWEG' '25' .
PERFORM bdc_field USING 'VBAK-SPART' '14' .
***
PERFORM bdc_dynpro USING 'SAPMV45A' '4001' .
PERFORM bdc_field USING 'BDC_CURSOR' 'KUAGV-KUNNR' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'KUAGV-KUNNR' it_upload1-kunnr .
PERFORM bdc_field USING 'VBKD-BSTKD' it_upload1-pno .
PERFORM bdc_field USING 'VBKD-BSTDK' it_upload1-idate .
perform bdc_field using 'RV45A-KETDAT' sy-datum .
perform bdc_field using 'RV45A-KPRGBZ' 'D' .
perform bdc_field using 'VBKD-PRSDT' sy-datum .
***
PERFORM bdc_dynpro USING 'SAPMV45A' '4001' .
LOOP AT it_upload2 WHERE pno = it_upload1-pno .
n = n + 1 .
IF sy-batch = ' '.
IF n > 5.
n = 5.
ENDIF.
ELSE.
IF n > 2.
n = 2.
ENDIF.
ENDIF.
MOVE n TO m .
IF n < 10.
CONCATENATE '0' m INTO m.
ENDIF.
CONCATENATE 'RV45A-MABNR('
m
')'
INTO gv_char3 .
PERFORM bdc_field USING 'BDC_CURSOR' gv_char3 . "'RV45A-MABNR(01)' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'KUAGV-KUNNR' it_upload1-kunnr .
PERFORM bdc_field USING 'KUWEV-KUNNR' it_upload1-kunnr .
PERFORM bdc_field USING 'VBKD-BSTKD' it_upload1-pno .
PERFORM bdc_field USING 'VBKD-BSTDK' it_upload1-idate .
perform bdc_field using 'RV45A-KETDAT' sy-datum .
perform bdc_field using 'RV45A-KPRGBZ' 'D' .
perform bdc_field using 'VBKD-PRSDT' sy-datum .
CONCATENATE 'RV45A-MABNR('
m
')'
INTO gv_char1 .
CONCATENATE 'RV45A-KWMENG('
m
')'
INTO gv_char2 .
MOVE it_upload2-kwmeng TO gv_qty.
PERFORM bdc_field USING gv_char1 it_upload2-matnr .
PERFORM bdc_field USING gv_char2 gv_qty .
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
Start of Added by Durai.V 30-May-2008******
WRITE : / gv_char2, ':',gv_qty.
CLEAR : gv_char1,gv_char2,gv_char3.
End of Added by Durai.V 30-May-2008********
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001' .
PERFORM bdc_field USING 'BDC_CURSOR' 'VBAK-LIFSK' .
PERFORM bdc_field USING 'VBAK-LIFSK' 'Z3' .
*******************************************************************
PERFORM bdc_field USING 'BDC_OKCODE'
'=KBES'.
PERFORM bdc_dynpro USING 'SAPMV45A' '4002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBKD-BSARK'.
PERFORM bdc_field USING 'VBKD-BSARK'
'ZDMS'.
*******************************************************************
PERFORM bdc_field USING 'BDC_OKCODE' '=SICH' .
PERFORM bdc_dynpro USING 'SAPLSPO2' '0101' .
PERFORM bdc_field USING 'BDC_OKCODE' '=OPT1' .
DATA : lv_mode TYPE char1.
lv_mode = 'N'.
CALL TRANSACTION 'VA01' USING bdcdata MODE lv_mode
MESSAGES INTO gt_bdcmsg.
if sy-subrc = 0.
LOOP AT gt_bdcmsg.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = gt_bdcmsg-msgid
lang = gt_bdcmsg-msgspra
no = gt_bdcmsg-msgnr
v1 = gt_bdcmsg-msgv1
v2 = gt_bdcmsg-msgv2
IMPORTING
msg = gv_msg
EXCEPTIONS
OTHERS = 0.
IF ( gt_bdcmsg-msgtyp = 'E' ).
wa_order-text = gv_msg .
wa_order-tran_date = sy-datum .
wa_order-flag = '' .
wa_order-runtime = sy-uzeit .
MODIFY zdms_log FROM wa_order .
ENDIF.
IF ( gt_bdcmsg-msgtyp = 'S' ) .
wa_order-text = gv_msg .
wa_order-tran_date = sy-datum .
wa_order-flag = 'Y' .
wa_order-runtime = sy-uzeit .
MODIFY zdms_log FROM wa_order .
ENDIF.
ENDLOOP.
endif.
*********************
ENDLOOP.
ENDFORM. " f002_bdc_execute
----
Start new screen *
----
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD
Regards
Anbu
‎2008 Aug 20 11:00 AM
Sorry Anbu,
DX_FILE_READdoesn't work.
DX_FILE_READinherently used
OPEN DATASET filename FOR INPUT IN TEXT MODE ENCODING DEFAULT.
Cheers,
Ashok.
‎2008 Aug 19 5:51 PM
Hi ,
Try this..
{OPEN DATASET lv_filename FOR INPUT
IN TEXT MODE
ENCODING DEFAULT.}
Regards
Kiran Sure
‎2008 Aug 19 6:00 PM