‎2007 Feb 13 6:49 AM
Hello Everyone,
My program not working when sceduled to run in background, but works fine when run in foreground. Think i need to change some funcution modules as the ones i used are, think, referencing for foreground processing. Can anyone point to some function modules which does the job for me.
I am picking up the files from file server.
REPORT zco11n
NO STANDARD PAGE HEADING
LINE-SIZE 255.
INCLUDE zdeclerations. " Data Declarations part
*---------------Get actual filepath from logical filepath---------------------*
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
* CLIENT = SY-MANDT
logical_filename = 'ZBARCODE_APPLICATION' "logical path
IMPORTING
file_name = pa_file "actual path
EXCEPTIONS
file_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.
*---------------Get all the required files from the directory-------------------*
CALL FUNCTION 'TMP_GUI_DIRECTORY_LIST_FILES'
EXPORTING
directory = pa_file "Directory path
filter = '*.CSV'
TABLES
file_table = lt_file "Files in the direcory
dir_table = lt_dir
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.
*-------Get the directory and file name as single path & move to internal table----*
LOOP AT lt_file INTO lw_file.
CONCATENATE pa_file lw_file-pathname INTO lstring.
MOVE lstring TO lw_filename-pathname.
MOVE lw_file-pathname TO lw_filename-filename.
APPEND lw_filename TO lt_filename.
CLEAR lw_filename.
CLEAR lw_file.
ENDLOOP.
START-OF-SELECTION.
LOOP AT lt_filename INTO lw_filename.
file_name = lw_filename-pathname.
*-------Read the contents of the file to an internal table--------------------------*
CALL FUNCTION 'DX_FILE_READ'
EXPORTING
filename = file_name
pc = 'X'
TABLES
data_tab = lt_temp "File contents
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.
ELSE.
*-------------Split and move the contents as required for BDC---------------*
LOOP AT lt_temp INTO lw_temp.
SPLIT lw_temp AT ',' INTO lw_afrud-aufnr lw_afrud-lmnga lw_afrud-budat.
APPEND lw_afrud TO lt_afrud.
ENDLOOP.
************----------Start Of BDC-----------------------***************
LOOP AT lt_afrud INTO lw_afrud.
PERFORM bdc_dynpro USING 'SAPLCORU_S' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'AFRUD-AUFNR'
lw_afrud-aufnr.
PERFORM bdc_field USING 'AFRUD-LMNGA'
'1'.
PERFORM bdc_field USING 'AFRUD-ISDZ'
'00:00:00'.
PERFORM bdc_field USING 'AFRUD-IEDZ'
'00:00:00'.
PERFORM bdc_field USING 'AFRUD-PEDZ'
'00:00:00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'AFRUD-BUDAT'.
PERFORM bdc_field USING 'AFRUD-BUDAT'
lw_afrud-budat.
PERFORM bdc_dynpro USING 'SAPLCORU_S' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
CALL TRANSACTION 'CO11N' USING lt_bdcdata MODE 'N'
UPDATE 'S' MESSAGES INTO lt_bdcmsgcoll. "#EC CI_CALLTA
ENDLOOP.
*******-----------End of BDC-------------------------------------*******
CLEAR lw_afrud.
REFRESH lt_afrud.
************************File Manipulations*********************
lv_file_name = lw_filename-filename. "Assign the filename to a local variable
CONCATENATE '\CAUVERYSAPBARCODESUCCESS'
lv_file_name INTO lstring_success. "Place holder for BDC Success Files
CONCATENATE '\CAUVERYSAPBARCODEERROR'
lv_file_name INTO lstring_error. "Place holder for BDC Error Files
file_name_source = file_name. "Source file path
file_name_success_dest = lstring_success. "Success file path
file_name_error_dest = lstring_error. "Error file path
*For the files with no data in them, move them to desired(error) folder.
if lt_bdcmsgcoll[] is initial.
CALL METHOD cl_gui_frontend_services=>file_copy
EXPORTING
SOURCE = file_name_source
destination = file_name_error_dest.
endif.
**********************************************************************
LOOP AT lt_bdcmsgcoll INTO lw_bdcmsgcoll.
IF lw_bdcmsgcoll-msgtyp EQ 'S' AND
lw_bdcmsgcoll-msgnr EQ '110'.
*----------Move the succes files to designated folder---------------*.
CALL METHOD cl_gui_frontend_services=>file_copy
EXPORTING
SOURCE = file_name_source
DESTINATION = file_name_success_dest
overwrite = 'X'
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
disk_full = 4
access_denied = 5
file_not_found = 6
destination_exists = 7
unknown_error = 8
path_not_found = 9
disk_write_protect = 10
drive_not_ready = 11
not_supported_by_gui = 12
OTHERS = 13.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
*--------Move the error files to designated folder-----------------*.
IF lw_bdcmsgcoll-msgtyp EQ 'E' OR
lt_bdcmsgcoll[] IS INITIAL.
CALL METHOD cl_gui_frontend_services=>file_copy
EXPORTING
SOURCE = file_name_source
DESTINATION = file_name_error_dest
overwrite = 'X'
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
disk_full = 4
access_denied = 5
file_not_found = 6
destination_exists = 7
unknown_error = 8
path_not_found = 9
disk_write_protect = 10
drive_not_ready = 11
not_supported_by_gui = 12
OTHERS = 13.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
*----------------Delete file from the directory---------------------------*
CALL METHOD cl_gui_frontend_services=>file_delete
EXPORTING
filename = file_name_source
CHANGING
rc = lv_rc
EXCEPTIONS
file_delete_failed = 1
cntl_error = 2
error_no_gui = 3
file_not_found = 4
access_denied = 5
unknown_error = 6
not_supported_by_gui = 7
wrong_parameter = 8
OTHERS = 9.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
REFRESH lt_bdcmsgcoll.
REFRESH lt_bdcdata.
ENDLOOP.
**********************************************************************
**
*&--------------------------------------------------------------------*
*& Form bdc_dynpro
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*---------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro. "#EC *
CLEAR lw_bdcdata.
lw_bdcdata-program = program.
lw_bdcdata-dynpro = dynpro.
lw_bdcdata-dynbegin = 'X'.
APPEND lw_bdcdata TO lt_bdcdata.
ENDFORM. "BDC_DYNPRO
*&--------------------------------------------------------------------*
*& Form bdc_field
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*---------------------------------------------------------------------*
FORM bdc_field USING fnam fval. "#EC *
IF fval <> space.
CLEAR lw_bdcdata.
lw_bdcdata-fnam = fnam.
lw_bdcdata-fval = fval.
APPEND lw_bdcdata TO lt_bdcdata.
ENDIF.
ENDFORM. "bdc_field*&---------------------------------------------------------------------*
*& Include ZDECLERATIONS
*&---------------------------------------------------------------------*
*-----------------------------Types decleration--------------------------*
TYPES: BEGIN OF tw_afrud,
aufnr TYPE aufnr,
lmnga(13) TYPE c,
budat TYPE buchdatum,
END OF tw_afrud,
tt_afrud TYPE STANDARD TABLE OF tw_afrud.
TYPES: BEGIN OF tw_temp,
rec(7000) TYPE c,
END OF tw_temp,
tt_temp TYPE STANDARD TABLE OF tw_temp.
TYPES: BEGIN OF tw_errorlog,
aufnr TYPE aufnr,
message TYPE string,
END OF tw_errorlog,
tt_errorlog TYPE STANDARD TABLE OF tw_errorlog.
TYPES: BEGIN OF tw_file,
pathname TYPE sdok_filnm,
END OF tw_file,
tt_file TYPE STANDARD TABLE OF tw_file.
TYPES: BEGIN OF tw_dir,
pathname1 TYPE sdok_filnm,
END OF tw_dir,
tt_dir TYPE STANDARD TABLE OF tw_dir.
TYPES: BEGIN OF tw_filename,
filename TYPE rlgrap-filename,
pathname TYPE localfile,
END OF tw_filename,
tt_filename TYPE STANDARD TABLE OF tw_filename.
*-------------Variable decleration---------------------------------------*
DATA: pa_file TYPE rlgrap-filename.
DATA: lstring TYPE string,
lstring_success TYPE string,
lstring_error TYPE string,
file_name TYPE dxfile-filename,
lv_rc TYPE i,
file_name_source TYPE string,
file_name_error_dest TYPE string,
file_name_success_dest TYPE string,
lv_file_name TYPE rlgrap-filename.
*---------------Internal tables & Work area's ------------------------------*
DATA : lw_afrud TYPE tw_afrud,
lt_afrud TYPE tt_afrud,
lw_temp TYPE tw_temp,
lt_temp TYPE tt_temp,
lw_file TYPE tw_file,
lt_file TYPE tt_file,
lw_dir TYPE tw_dir, "#EC *
lt_dir TYPE tt_dir,
lw_filename TYPE tw_filename,
lt_filename TYPE tt_filename,
lw_bdcdata TYPE bdcdata,
lt_bdcdata TYPE STANDARD TABLE OF bdcdata,
lw_bdcmsgcoll TYPE bdcmsgcoll,
lt_bdcmsgcoll TYPE STANDARD TABLE OF bdcmsgcoll.Regards
‎2007 Feb 13 7:21 AM
‎2007 Feb 13 7:24 AM
The methods of the class
cl_gui_frontend_servicescannot be used in background since they refer to the presentation server. You have to upload the files to the application server to run the program in the background. You can use transaction CG3Z or the function module
ARCHIVFILE_CLIENT_TO_SERVERto upload the files.
Manoj