Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Uploding file from application server

Former Member
0 Kudos

hi all,

i need to run a program in the background(sm36) where I need to upload a file from the application server.

how do i define the path of the application server and what function module shall i use to upload the *.txt file from the application server ???

thx..

paul

4 REPLIES 4

Former Member
0 Kudos

For reading the file from application use the OPEN DATASET statements

OPEN DATASET p_f2 IN TEXT MODE ENCODING DEFAULT FOR INPUT.

IF sy-subrc EQ 0.

DO.

CLEAR wa_input_rec.

READ DATASET p_f2 INTO wa_input_rec.

ENDDO.

ENDIF.

Here p_f2 is the file path for your text file.

Just click F1 on the OPEN DATASET for help to get a list of options

suresh_datti
Active Contributor
0 Kudos

you have to use the OPEN DATASET statement to read files from the App Server..

~Suresh

Former Member
0 Kudos

check this code...

**********************************************************

REPORT z_check_ach NO STANDARD PAGE HEADING

LINE-SIZE 120

MESSAGE-ID zz.

TABLES : dfkkko, "Header Data in Open Item Accounting Document

dfkkop, "Items in contract account document

dfkkcr. "Repository For Checks

*-- include containing the declarations

INCLUDE zf_inc_chk_ach.

----


  • S E L E C T I O N S C R E E N *

----


----


  • S E L E C T O P T I O N S *

----


  • Block for File Path

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS : s_opbel FOR dfkkko-opbel ,

s_cpudt FOR dfkkko-cpudt.

PARAMETERS:

  • Radio Button for Presentation Server

rb_pres RADIOBUTTON GROUP file ,

  • PC File Name

p_pfile LIKE rlgrap-filename,

p_pfile1 LIKE rlgrap-filename,

  • Radio Button for Application Server

rb_unix RADIOBUTTON GROUP file DEFAULT 'X',

*Application Server File Name

p_afile LIKE rlgrap-filename ,

  • " default '/global/data/transfer/3520/pub/OUT' .

p_afile1 LIKE rlgrap-filename .

  • " default '/global/data/transfer/3503/pub/OUT' .

SELECTION-SCREEN END OF BLOCK b1.

  • AT SELECTION SCREEN

AT SELECTION-SCREEN.

  • Validate File Name based on the Server Selected

PERFORM validate_filename.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pfile.

  • F4 help for file path of Presentation Server

PERFORM get_val_help USING p_pfile.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pfile1.

  • F4 help for file path of Presentation Server

PERFORM get_val_help USING p_pfile1.

  • INITIALIZATION .

INITIALIZATION.

PERFORM build_file_names.

START-OF-SELECTION.

  • Get required Data from Database Tables

PERFORM get_data.

**Process data

PERFORM process_data .

  • Download the data into Application server

PERFORM download_data.

&----


*& Form validate_filename

&----


  • File validation

----


FORM validate_filename .

  • Initialize Error Flag

CLEAR v_error_flag.

IF rb_pres = c_x.

  • Mandatory Entry for Filename

IF p_pfile IS INITIAL.

MESSAGE i009 .

  • Set Error Flag

v_error_flag = c_x.

  • Go to the End of Selection Event

STOP.

ENDIF.

  • Mandatory Entry for Filename

IF p_pfile1 IS INITIAL.

MESSAGE i009 .

  • Set Error Flag

v_error_flag = c_x.

  • Go to the End of Selection Event

STOP.

ENDIF.

  • Check for any Invalid Characters & Others for PC File

IF ( p_pfile CA c_invalid_pc ) OR

( p_pfile0(1) = '\' AND p_pfile1(120) = space ).

MESSAGE i010. "Invalid PC File Name

  • Set Error Flag

v_error_flag = c_x.

  • Go to the End of Selection Event

STOP.

ENDIF.

  • Check for any Invalid Characters & Others for PC File

IF ( p_pfile1 CA c_invalid_pc ) OR

( p_pfile10(1) = '\' AND p_pfile11(120) = space ).

MESSAGE i010. "Invalid PC File Name

  • Set Error Flag

v_error_flag = c_x.

  • Go to the End of Selection Event

STOP.

ENDIF.

ELSE.

IF p_afile IS INITIAL.

  • Mandatory Entry for Filename

MESSAGE i011. "Enter Unix File Name.

  • Set Error Flag

v_error_flag = c_x.

  • Go to the End of Selection Event

STOP.

ENDIF.

IF p_afile1 IS INITIAL.

  • Mandatory Entry for Filename

MESSAGE i011. "Enter Unix File Name.

  • Set Error Flag

v_error_flag = c_x.

  • Go to the End of Selection Event

STOP.

ENDIF.

  • Check for any Invalid Characters

IF ( p_afile CA '\' ).

MESSAGE i012. "Invalid Unix File Name

  • Set Error Flag

v_error_flag = c_x.

  • Go to the End of Selection Event

STOP.

ENDIF.

  • Check for any Invalid Characters

IF ( p_afile1 CA '\' ).

MESSAGE i012. "Invalid Unix File Name

  • Set Error Flag

v_error_flag = c_x.

  • Go to the End of Selection Event

STOP.

ENDIF.

ENDIF.

ENDFORM. " validate_filename

&----


*& Form get_val_help

&----


  • Selection of probable file name from presentation server

----


FORM get_val_help USING l_file LIKE p_pfile.

  • Function Module for F4 Help of File Name

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = sy-cprog

dynpro_number = sy-dynnr

IMPORTING

file_name = l_file.

ENDFORM. " get_val_help

&----


*& Form get_data

&----


  • Extract the data

----


FORM get_data.

DATA: wa_vlxx_mwtot LIKE vlxx_mwtot.

DATA: lt_dfkkop TYPE TABLE OF ty_ach WITH HEADER LINE.

*Default the date to todays date -1 because it is expected to run after

*midnight and it is suppose to pick up all the payments for the previous

  • day

IF s_cpudt[] IS INITIAL.

s_cpudt-sign = 'I'.

s_cpudt-option = 'EQ'.

s_cpudt-low = sy-datum - 1.

APPEND s_cpudt.

ENDIF.

*Select data from DFKKKO

SELECT opbel cpudt blart herkf INTO TABLE it_dfkkko FROM dfkkko

WHERE opbel IN s_opbel

AND cpudt IN s_cpudt.

SELECT opbel augbl INTO TABLE it_dfkkko_orig FROM dfkkop

FOR ALL ENTRIES IN it_dfkkko

WHERE augbl = it_dfkkko-opbel

.

IF NOT it_dfkkko_orig[] IS INITIAL.

  • Select the data from DFKKOP

SELECT opbel

zzposnrop

gpart

vtref

augbd

augbl

augbt

kontl

kontt

pymet

blart

INTO TABLE lt_dfkkop

FROM dfkkop FOR ALL ENTRIES IN it_dfkkko_orig

WHERE opbel = it_dfkkko_orig-opbel " AND

AND blart = '10'

AND augst = '9'. "only paid items

IF sy-subrc = 0.

SORT lt_dfkkop. "by opbel augdt.

ELSE.

EXIT.

ENDIF.

  • Extraction of Data Source by using the function module DECODE_KONTL.

REFRESH it_ach_nonach.

LOOP AT lt_dfkkop.

IF NOT lt_dfkkop-augbl IS INITIAL.

CLEAR wa_vlxx_mwtot.

CALL FUNCTION 'DECODE_KONTL'

EXPORTING

i_kontt = lt_dfkkop-kontt

i_kontl = lt_dfkkop-kontl

IMPORTING

e_vlxx_mwtot = wa_vlxx_mwtot.

IF ( wa_vlxx_mwtot-zdatsrc = c_3520 OR

wa_vlxx_mwtot-zdatsrc = c_3503 ).

CLEAR it_ach_nonach.

it_ach_nonach-opbel = lt_dfkkop-opbel.

it_ach_nonach-augbd = lt_dfkkop-augbd.

it_ach_nonach-augbl = lt_dfkkop-augbl.

it_ach_nonach-augbt = lt_dfkkop-augbt.

it_ach_nonach-kontl = lt_dfkkop-kontl.

it_ach_nonach-zdatsrc = wa_vlxx_mwtot-zdatsrc.

it_ach_nonach-gpart = lt_dfkkop-gpart.

it_ach_nonach-vtref = lt_dfkkop-vtref.

it_ach_nonach-zzposnrop = lt_dfkkop-zzposnrop.

it_ach_nonach-blart = lt_dfkkop-blart.

APPEND it_ach_nonach.

ENDIF.

IF lt_dfkkop-pymet = 'C'.

IF NOT lt_dfkkop-augbl IS INITIAL.

it_non_ach-doc1r = lt_dfkkop-augbl.

APPEND it_non_ach.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

SORT it_ach_nonach.

  • Get the Check payment related data.

IF NOT it_non_ach[] IS INITIAL.

SELECT ztnum

doc1r

rwbtr

budat

FROM dfkkcr

INTO TABLE it_check

FOR ALL ENTRIES IN it_non_ach

WHERE doc1r EQ it_non_ach-doc1r.

IF sy-subrc = 0.

SORT it_check .

ENDIF.

ENDIF.

  • To get the entry code, Leg check no

IF NOT lt_dfkkop[] IS INITIAL.

SELECT gpart

vtref

posnr

zzentrcod

zzsrc_pay_reqno

INTO TABLE it_vvsc

FROM zzvvscpos

FOR ALL ENTRIES IN lt_dfkkop

WHERE gpart = lt_dfkkop-gpart

AND vtref = lt_dfkkop-vtref

AND posnr = lt_dfkkop-zzposnrop .

SORT it_vvsc.

ENDIF.

ENDIF.

ENDFORM. " get_data

&----


*& Form process_data

&----


  • Process data

----


FORM process_data .

DATA l_doc1r TYPE dfkkcr-doc1r.

SELECT * FROM zfpc_code_map INTO TABLE it_code_map

WHERE app_code = 'CHECKSTOP'

OR app_code = 'CHECKVOID'.

it_ach_nonach_temp[] = it_ach_nonach[].

it_vvsc_temp[] = it_vvsc[].

PERFORM remove_oroginal_for_voids.

LOOP AT it_ach_nonach.

CLEAR it_code_map.

it_final-zdatsrc = it_ach_nonach-zdatsrc.

READ TABLE it_vvsc WITH KEY gpart = it_ach_nonach-gpart

"it_ach-opbel

vtref = it_ach_nonach-vtref

posnr = it_ach_nonach-zzposnrop.

IF sy-subrc = 0.

it_final-zzentrcod = it_vvsc-zzentrcod.

it_final-chckn = it_vvsc-zzsrc_pay_reqno.

READ TABLE it_code_map WITH KEY

entry_code_id = it_final-zzentrcod.

IF it_code_map-app_code = 'CHECKSTOP'

OR it_code_map-app_code = 'CHECKVOID'.

LOOP AT it_vvsc_temp WHERE

zzsrc_pay_reqno = it_vvsc-zzsrc_pay_reqno AND

zzentrcod <> it_final-zzentrcod.

ENDLOOP.

IF sy-subrc = 0.

READ TABLE it_ach_nonach_temp WITH KEY

zzposnrop = it_vvsc_temp-posnr.

IF sy-subrc = 0.

SELECT SINGLE * FROM dfkkrapt WHERE

opbel = it_ach_nonach_temp-opbel.

IF sy-subrc = 0.

SELECT SINGLE * FROM dfkkcr

WHERE doc1r = dfkkrapt-augbl.

IF sy-subrc = 0.

it_final-ztnum = dfkkcr-ztnum.

it_final-budat = dfkkcr-budat.

it_final-rwbtr = dfkkcr-rwbtr.

it_final-rec_type = 'C'.

APPEND it_final.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ELSE.

READ TABLE it_check WITH KEY doc1r = it_ach_nonach-augbl.

IF sy-subrc = 0.

l_doc1r = it_ach_nonach-opbel.

it_final-ztnum = it_check-ztnum.

it_final-budat = it_check-budat.

it_final-rwbtr = it_check-rwbtr.

it_final-rec_type = 'C'.

ELSE.

it_final-augbd = it_ach_nonach-augbd.

it_final-augbl = it_ach_nonach-augbl.

it_final-augbt = it_ach_nonach-augbt.

it_final-rec_type = 'A'.

ENDIF.

APPEND it_final.

ENDIF.

ENDIF.

ENDLOOP..

PERFORM process_output_file.

ENDFORM. " process_data

&----


*& Form download_data

&----


  • Download the data into pc and unix

----


FORM download_data .

DATA: w_fname TYPE string,

w_fname1 TYPE string.

w_fname = p_pfile.

w_fname1 = p_pfile1.

  • Presentation Server is Selected

IF rb_pres = c_x.

  • Download final Data to PC

PERFORM download_data_to_pc USING w_fname w_fname1.

  • App. Server is Selected

ELSEIF rb_unix = c_x.

  • Download final Data to Application Server

PERFORM build_unix_filename.

PERFORM download_data_to_app_serv.

ENDIF.

  • ENDIF.

ENDFORM. " download_data

&----


*& Form download_data_to_pc

&----


  • Download file into presentation server

----


FORM download_data_to_pc USING l_pfile TYPE string

l_pfile1 TYPE string.

*IF NOT it_file[] is initial .

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = l_pfile

filetype = 'ASC'

write_field_separator = 'X'

TABLES

data_tab = it_file[]

EXCEPTIONS

file_write_error = 1

no_batch = 2

gui_refuse_filetransfer = 3

invalid_type = 4

no_authority = 5

unknown_error = 6

header_not_allowed = 7

separator_not_allowed = 8

filesize_not_allowed = 9

header_too_long = 10

dp_error_create = 11

dp_error_send = 12

dp_error_write = 13

unknown_dp_error = 14

access_denied = 15

dp_out_of_memory = 16

disk_full = 17

dp_timeout = 18

file_not_found = 19

dataprovider_exception = 20

control_flush_error = 21

OTHERS = 22.

IF sy-subrc <> 0.

MESSAGE i014. "Unable to write file on Presentation Server

ENDIF.

*elseif NOT it_file1[] is initial.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = l_pfile1

filetype = 'ASC'

write_field_separator = 'X'

TABLES

data_tab = it_file1[]

EXCEPTIONS

file_write_error = 1

no_batch = 2

gui_refuse_filetransfer = 3

invalid_type = 4

no_authority = 5

unknown_error = 6

header_not_allowed = 7

separator_not_allowed = 8

filesize_not_allowed = 9

header_too_long = 10

dp_error_create = 11

dp_error_send = 12

dp_error_write = 13

unknown_dp_error = 14

access_denied = 15

dp_out_of_memory = 16

disk_full = 17

dp_timeout = 18

file_not_found = 19

dataprovider_exception = 20

control_flush_error = 21

OTHERS = 22.

IF sy-subrc <> 0.

MESSAGE i014. "Unable to write file on Presentation Server

ENDIF.

*endif.

ENDFORM. " download_data_to_pc

&----


*& Form download_data_to_app_serv

&----


  • Transfer data to Application server

----


FORM download_data_to_app_serv.

  • Open the unix file for writing the extracted information.

OPEN DATASET v_unix_path FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc = 0.

  • Populate Final Data to the required Path

LOOP AT it_file.

TRANSFER it_file TO v_unix_path .

ENDLOOP.

  • Close Dataset

CLOSE DATASET v_unix_path.

ELSE.

  • Message : Error in downloading the data

MESSAGE i013. "Unable to Open file on Application Server

ENDIF.

  • open the unix file for writing the extracted information.

OPEN DATASET v_unix_path1 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc = 0.

  • Populate Final Data to the required Path

LOOP AT it_file1.

TRANSFER it_file1 TO v_unix_path1 .

ENDLOOP.

  • Close Dataset

CLOSE DATASET v_unix_path1.

ELSE.

  • Message : Error in downloading the data

MESSAGE i013. "Unable to Open file on Application Server

ENDIF.

ENDFORM. " download_data_to_app_serv

&----


*& Form build_unix_filename

&----


  • Unix file name with date and time

----


FORM build_unix_filename .

DATA: l_file_3520 LIKE rlgrap-filename,

l_file_3503 LIKE rlgrap-filename.

DATA: l_path1 LIKE rlgrap-filename VALUE '/global/data/transfer/',

l_path2 LIKE rlgrap-filename VALUE '/3520/pub/out/',

l_path3 LIKE rlgrap-filename VALUE '/3503/pub/out/'.

CONCATENATE l_path1 sy-sysid l_path2 INTO l_file_3520.

CONCATENATE l_path1 sy-sysid l_path3 INTO l_file_3503.

  • File name of Source code of 3520 file name.

CLEAR v_unix_path.

CLEAR v_unix_path1.

CONCATENATE l_file_3520 "p_afile

'3329'

'-'

'BA'

'-'

'01'

'-'

sy-datum

'-'

sy-uzeit+0(4)

'.OUT'

INTO v_unix_path.

  • File name of Source code of 3503 file name.

CONCATENATE l_file_3503 "p_afile

'3329'

'-'

'BA'

'-'

'02'

'-'

sy-datum

'-'

sy-uzeit+0(4)

'.OUT'

INTO v_unix_path1.

CONDENSE v_unix_path1.

ENDFORM. " build_unix_filename

&----


*& Form process_output_file

&----


  • output file

----


FORM process_output_file .

DATA : v_amt TYPE i,

v_temp12 TYPE string.

DATA: l_amt(16) TYPE n,

l_amount(16).

v_error_msg = text-002.

  • Populating the the data for Data Source value.

LOOP AT it_final WHERE zdatsrc EQ c_3520 OR

zdatsrc EQ c_3503.

  • Original Check request from Source System

WRITE it_final-chckn RIGHT-JUSTIFIED TO v_leg_chk_no.

v_string+0(10) = v_leg_chk_no.

IF v_leg_chk_no IS INITIAL OR v_leg_chk_no = ' '.

CONTINUE.

ENDIF.

CLEAR v_checkno.

  • For Check payment date

IF it_final-rec_type = 'C'.

  • FSCD Check number

WRITE it_final-ztnum RIGHT-JUSTIFIED TO v_checkno.

UNPACK v_checkno TO v_checkno.

v_string+10(10) = v_checkno.

CONCATENATE it_final-budat+4(2)

it_final-budat+6(2)

it_final-budat+2(2)

INTO v_date_check.

v_string+20(6) = v_date_check.

l_amt = it_final-rwbtr.

PACK l_amt TO l_amount.

CONDENSE l_amount.

v_string+26(13) = l_amount.

CONDENSE v_string+26(13).

UNPACK v_string26(13) TO v_string26(13).

  • ACH payment date

ELSE. "ACH

  • ACH Check number

MOVE it_final-augbl TO v_checkno.

v_string+10(10) = v_checkno.

CONCATENATE it_final-augbd+4(2)

it_final-augbd+6(2)

it_final-augbd+2(2)

INTO v_date_check.

v_string+20(6) = v_date_check.

l_amt = it_final-augbt.

PACK l_amt TO l_amount.

CONDENSE l_amount.

v_string+26(13) = l_amount.

CONDENSE v_string+26(13).

UNPACK v_string26(13) TO v_string26(13).

ENDIF.

CONDENSE v_checkno.

IF v_checkno IS INITIAL.

v_string+39(60) = v_error_msg.

ENDIF.

READ TABLE it_code_map WITH KEY entry_code_id = it_final-zzentrcod.

IF sy-subrc = 0.

CASE it_code_map-app_code.

WHEN 'CHECKSTOP'.

v_tran_type = 3. "Paid/Stop/Void

v_string+99(1) = v_tran_type.

WHEN 'CHECKVOID'.

v_tran_type = 2. "Paid/Stop/Void

v_string+99(1) = v_tran_type.

ENDCASE.

ELSE.

v_tran_type = 1. " Paid

v_string+99(1) = v_tran_type.

ENDIF.

IF it_final-zdatsrc EQ c_3520.

it_file-vline = v_string.

APPEND it_file.

CLEAR it_file.

CLEAR: l_amt, l_amount.

ELSEIF it_final-zdatsrc EQ c_3503.

it_file1-vline = v_string.

APPEND it_file1.

CLEAR it_file1.

CLEAR: l_amt, l_amount.

ENDIF.

ENDLOOP.

ENDFORM. " process_output_file

&----


*& Form build_file_names

&----


  • Build file names

----


FORM build_file_names .

  • File convention for 3520.

CONCATENATE '3329'

'-'

'BA'

'-'

'01'

'-'

sy-datum

'-'

sy-uzeit+0(4)

'.OUT'

INTO p_afile.

  • File convention for 3503.

CONCATENATE '3329'

'-'

'BA'

'-'

'02'

'-'

sy-datum

'-'

sy-uzeit+0(4)

'.OUT'

INTO p_afile1.

ENDFORM. " build_file_names

&----


*& Form remove_oroginal_for_voids

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM remove_oroginal_for_voids .

DATA v_tabix LIKE sy-tabix.

LOOP AT it_ach_nonach.

v_tabix = sy-tabix.

CLEAR it_code_map.

it_final-zdatsrc = it_ach_nonach-zdatsrc.

READ TABLE it_vvsc WITH KEY gpart = it_ach_nonach-gpart

"it_ach-opbel

vtref = it_ach_nonach-vtref

posnr = it_ach_nonach-zzposnrop.

IF sy-subrc = 0.

it_final-zzentrcod = it_vvsc-zzentrcod.

it_final-chckn = it_vvsc-zzsrc_pay_reqno.

READ TABLE it_code_map WITH KEY

entry_code_id = it_final-zzentrcod.

IF it_code_map-app_code = 'CHECKSTOP'

OR it_code_map-app_code = 'CHECKVOID'.

LOOP AT it_vvsc_temp WHERE

zzsrc_pay_reqno = it_vvsc-zzsrc_pay_reqno AND

zzentrcod <> it_final-zzentrcod.

ENDLOOP.

IF sy-subrc = 0.

READ TABLE it_ach_nonach_temp WITH KEY

zzposnrop = it_vvsc_temp-posnr.

IF sy-subrc = 0.

DELETE it_ach_nonach where opbel = it_ach_nonach_temp-opbel.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. " remove_oroginal_for_voids

Former Member
0 Kudos

For files in presentation servers you use - WS_DOWNLOAD and WS_UPLOAD FM.

For Application servers you use - Open Datasets.