2006 Nov 20 8:13 AM
Hi,
My requirement is to read the data from the presentation server say .txt or .xls file(and the file comes from diffrent server and will place in c drive...) into internal table and then i wnat to transfer the internal table contents to the application server here I will specify the default file...and then the same program or different prog should call the file which is there in the application to process trhe screen data...
for all the above requirement i want to use open & close datasets as i want to to schedule the prog in background and there should be no user intervention..
and plz guuide me how to schedule the prog in background..say daily in the evening i want these programs to execute at 7 o clock..
points will be rewarded ...
awaiting for all your replies as this is an urgent requirement ...
Regards,
Ravi
2006 Nov 20 8:17 AM
Hi,
My requirement is to read the data from the presentation server say .txt or .xls file(and the file comes from diffrent server and will place in c drive...) into internal table and then i wnat to transfer the internal table contents to the application server here I will specify the default file...and then the same program or different prog should call the file which is there in the application to process trhe screen data...
for all the above requirement i want to use open & close datasets as i want to to schedule the prog in background and there should be no user intervention..
and plz guuide me how to schedule the prog in background..say daily in the evening i want these programs to execute at 7 o clock..
points will be rewarded ...
awaiting for all your replies as this is an urgent requirement ...
Regards,
Ravi
2006 Nov 20 8:17 AM
2006 Nov 20 8:25 AM
For job scheduling, you can use the function modules in function group BTCH. Do something like:
- Use JOB_OPEN to create the job
- Use JOB_SUBMIT to add the necessary steps in the job
- Use JOB_CLOSE to close the job and submit it to the background processing subsystem.
For less find grained control, you can also use the VIA JOB options to the submit statement.
Remember that you can't read from the presentation server in a background task.
MJ
2006 Nov 20 8:29 AM
Hi Michael,
I will get the data from other system and places a file in the sap directory but I dont have the idea on this (path) but i think we can schedule a job in back grnd so that it picks the file and places in the al11 (/dir/folder/fie)...and plz let me know..
Regards,
Ravi
2006 Nov 20 8:44 AM
2006 Nov 20 8:27 AM
hi,
Check out this code
REPORT ZLPF058
NO STANDARD PAGE HEADING
MESSAGE-ID ZL.
* e[uè`
TABLES: VBAK. "Sales Document: Header Data
* àe[u¢è`
DATA: BEGIN OF ITAB_VBAK OCCURS 0 "vbakîñ
,VBELN LIKE VBAK-VBELN "Ì`[
,ERDAT(10) TYPE C "o^ú
,AUART LIKE VBAK-AUART "Ì`[^Cv
,KVGR3 LIKE VBAK-KVGR3 "¾ÓæO[v 3
,END OF ITAB_VBAK.
*f[^é¾
DATA: RC TYPE I, " ßèl
CNT_OUT1 TYPE I, " f[^Ì
WK_MATNR(18) TYPE C, " iÚ`FbNp
WK_INPUTCHECK(1) TYPE C, " üÍ`FbNp
WK_BUFFER(8192) TYPE C, " Read/Write Buffer
R_PC(1) TYPE C,
WK_MENGE TYPE P "¬_Jbg
DECIMALS 3,
WK_ZERO1(13) TYPE C "Oßp
VALUE '0000000000000',
WK_ZERO2(13) TYPE C, "Oßp[N
FLG_BUDAT(1) TYPE C. "wèúwè»ftO
* p[^üÍæÊ
SELECTION-SCREEN BEGIN OF BLOCK FILESELECT WITH FRAME TITLE TEXT-001.
*Ì`[^Cv
SELECT-OPTIONS: S_AUART FOR VBAK-AUART.
SELECTION-SCREEN SKIP.
*t@C¼
PARAMETERS: P_OUT1(128) TYPE C LOWER CASE
DEFAULT '/home/r3ftp/ftpout/'.
SELECTION-SCREEN END OF BLOCK FILESELECT.
* ú»
INITIALIZATION.
CLEAR: CNT_OUT1.
CLEAR: ITAB_VBAK.
REFRESH: ITAB_VBAK.
* üÍp[^`FbN
AT SELECTION-SCREEN.
CLEAR WK_INPUTCHECK.
CLEAR: FLG_BUDAT.
*t@C¼
***REPLACED BY H-MKARTHIKEY(ITIG) 2005/12/26 ZLPF058-000 UPGRADE START-*
* IF ( P_OUT1 = '/home/r3ftp/ftpout/' OR P_OUT1 = '').
IF ( P_OUT1 = '/home/r3ftp/ftpout/' OR P_OUT1 = '' ).
***REPLACED BY H-MKARTHIKEY(ITIG) 2005/12/26 ZLPF058-000 UPGRADE END---*
WK_INPUTCHECK = 'X'.
MESSAGE E059 WITH
'oÍt@C¼ðwèµÄº³¢'.
ENDIF.
CHECK WK_INPUTCHECK IS INITIAL.
*C[`
START-OF-SELECTION.
* oÍt@Cí
PERFORM DELETE_FILE.
* ÎÛf[^o
PERFORM EXTRACT_DATA.
* t@CÖoÍ
PERFORM WRITE_OUTFILE.
* bZ[WÌoÍ
PERFORM WRITE_MESSAGE.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form DELETE_FILE
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DELETE_FILE.
* t@Cðí·éB
IF R_PC = 'X'.
*obt@C
***REPLACED BY H-MKARTHIKEY(ITIG) 2005/12/26 ZLPF058-000 UPGRADE START-*
* CALL FUNCTION 'WS_FILE_DELETE'
* EXPORTING
* FILE = P_OUT1
* IMPORTING
* RETURN = RC
* EXCEPTIONS
* OTHERS = 1.
DATA: W_WFD_FILE01 TYPE STRING,
W_WFD_RC01 TYPE I.
W_WFD_FILE01 = P_OUT1.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_DELETE
EXPORTING
FILENAME = W_WFD_FILE01
CHANGING
RC = W_WFD_RC01
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.
RC = W_WFD_RC01 .
***REPLACED BY H-MKARTHIKEY(ITIG) 2005/12/26 ZLPF058-000 UPGRADE END---*
ELSE.
* UNIXt@C
OPEN DATASET P_OUT1 FOR INPUT IN TEXT MODE.
IF SY-SUBRC = 0.
CLOSE DATASET P_OUT1.
DELETE DATASET P_OUT1.
ENDIF.
ENDIF.
ENDFORM. " DELETE_FILE
*&---------------------------------------------------------------------*
*& Form WRITE_OUTFILE
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_OUTFILE.
IF R_PC = 'X'. "obH
IF CNT_OUT1 > 0. "outf[^
***REPLACED BY H-MKARTHIKEY(ITIG) 2005/12/26 ZLPF058-000 UPGRADE START-*
* CALL FUNCTION 'WS_DOWNLOAD'
* EXPORTING
* FILENAME = P_OUT1
* FILETYPE = 'DAT'
* TABLES
* DATA_TAB = ITAB_VBAK
* EXCEPTIONS
* FILE_OPEN_ERROR = 1
* FILE_WRITE_ERROR = 2
* INVALID_FILESIZE = 3
* INVALID_TABLE_WIDTH = 4
* INVALID_TYPE = 5
* NO_BATCH = 6
* UNKNOWN_ERROR = 7
* OTHERS = 8.
DATA: W_WSD_FILENAME01 TYPE STRING,
W_WSD_FILETYPE01 TYPE CHAR10.
W_WSD_FILENAME01 = P_OUT1.
W_WSD_FILETYPE01 = 'DAT'.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
FILENAME = W_WSD_FILENAME01
FILETYPE = W_WSD_FILETYPE01
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = ITAB_VBAK
* FIELDNAMES =
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 ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
***REPLACED BY H-MKARTHIKEY(ITIG) 2005/12/26 ZLPF058-000 UPGRADE END---*
ENDIF.
ELSE.
IF CNT_OUT1 > 0. "
OPEN DATASET P_OUT1 FOR OUTPUT IN TEXT MODE.
LOOP AT ITAB_VBAK.
PERFORM CSV_CONVERT USING ITAB_VBAK WK_BUFFER.
TRANSFER WK_BUFFER TO P_OUT1.
ENDLOOP.
ENDIF.
CLOSE DATASET P_OUT1.
ENDIF.
IF SY-SUBRC <> 0.
MESSAGE E038(ZK) WITH 't@CoÍG['.
ENDIF.
ENDFORM. " WRITE_OUTFILE
*&---------------------------------------------------------------------*
*& Form WRITE_MESSAGE
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_MESSAGE.
MESSAGE S039(ZK) WITH 'oÍ=' CNT_OUT1.
ENDFORM. " WRITE_MESSAGE
*&---------------------------------------------------------------------*
*& Form CSV_CONVERT
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CSV_CONVERT USING _STRUCTURE _OUTBUFF.
DATA:BEGIN OF HT,
X(1) TYPE X VALUE '09',
END OF HT.
FIELD-SYMBOLS: <#CSV_F>
, <#CSV_P>
, <#CSV_S>
, <#CSV_T>.
DATA:BEGIN OF #CSV
,BUFFOFF TYPE I
,FLDLENG TYPE I
,FLDPOSN TYPE I
,OUTLENG TYPE I
,FLDDECS TYPE I
,FLDTYPE TYPE C
,TABCHAR TYPE C
,WORKFYMD(010) TYPE C
,WORKF008(008) TYPE C
,WORKF048(048) TYPE C
,WORKF256(256) TYPE C
, END OF #CSV.
*
CLEAR _OUTBUFF.
CLEAR #CSV-BUFFOFF.
#CSV-TABCHAR = HT.
*
DO.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE _STRUCTURE TO <#CSV_F>.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
DESCRIBE FIELD <#CSV_F> TYPE #CSV-FLDTYPE
LENGTH #CSV-FLDLENG
OUTPUT-LENGTH #CSV-OUTLENG
DECIMALS #CSV-FLDDECS.
*
IF #CSV-FLDTYPE = 'I' OR
#CSV-FLDTYPE = 'N' OR
#CSV-FLDTYPE = 's' OR " 2 Byte int
#CSV-FLDTYPE = 'b'. " 1 Byte int
#CSV-FLDTYPE = 'P'.
ENDIF.
*
CASE #CSV-FLDTYPE.
*
WHEN 'C'.
#CSV-FLDPOSN = STRLEN( <#CSV_F> ).
IF #CSV-FLDPOSN <> 0.
ASSIGN _OUTBUFF+#CSV-BUFFOFF(#CSV-FLDPOSN) TO <#CSV_P>.
<#CSV_P> = <#CSV_F>.
ADD #CSV-FLDPOSN TO #CSV-BUFFOFF.
ENDIF.
WRITE #CSV-TABCHAR TO _OUTBUFF+#CSV-BUFFOFF(1).
ADD 1 TO #CSV-BUFFOFF.
*
WHEN 'P'. " type 'I' and 'N'
IF <#CSV_F> < 0.
WRITE '-' TO _OUTBUFF+#CSV-BUFFOFF(1).
ADD 1 TO #CSV-BUFFOFF.
ENDIF.
MOVE <#CSV_F> TO #CSV-WORKF048.
TRANSLATE #CSV-WORKF048 USING '- '.
CONDENSE #CSV-WORKF048 NO-GAPS.
#CSV-FLDPOSN = STRLEN( #CSV-WORKF048 ).
WRITE #CSV-WORKF048 TO _OUTBUFF+#CSV-BUFFOFF(#CSV-FLDPOSN).
ADD #CSV-FLDPOSN TO #CSV-BUFFOFF.
WRITE #CSV-TABCHAR TO _OUTBUFF+#CSV-BUFFOFF(1).
ADD 1 TO #CSV-BUFFOFF.
*
WHEN 'F'.
CLEAR #CSV-WORKF048.
IF <#CSV_F> EQ 0.
#CSV-WORKF048 = '0'.
ELSE.
WRITE <#CSV_F> TO #CSV-WORKF048 EXPONENT 0.
ENDIF.
CONDENSE #CSV-WORKF048 NO-GAPS.
#CSV-FLDPOSN = STRLEN( #CSV-WORKF048 ).
WRITE #CSV-WORKF048 TO _OUTBUFF+#CSV-BUFFOFF(#CSV-FLDPOSN).
ADD #CSV-FLDPOSN TO #CSV-BUFFOFF.
WRITE #CSV-TABCHAR TO _OUTBUFF+#CSV-BUFFOFF(1).
ADD 1 TO #CSV-BUFFOFF.
*
WHEN 'D'.
IF <#CSV_F> <> '00000000'.
#CSV-WORKF008 = <#CSV_F>.
#CSV-WORKFYMD = ' . . '.
#CSV-WORKFYMD+06(4) = #CSV-WORKF008+00.
#CSV-WORKFYMD+03(2) = #CSV-WORKF008+04.
#CSV-WORKFYMD+00(2) = #CSV-WORKF008+06.
WRITE #CSV-WORKFYMD TO _OUTBUFF+#CSV-BUFFOFF(10).
ADD 10 TO #CSV-BUFFOFF.
ENDIF.
WRITE #CSV-TABCHAR TO _OUTBUFF+#CSV-BUFFOFF(1).
ADD 1 TO #CSV-BUFFOFF.
*
WHEN 'T'.
IF <#CSV_F> <> '000000'.
WRITE <#CSV_F> USING EDIT MASK '__:__:__'
TO _OUTBUFF+#CSV-BUFFOFF(8).
ADD 8 TO #CSV-BUFFOFF.
ENDIF.
WRITE #CSV-TABCHAR TO _OUTBUFF+#CSV-BUFFOFF(1).
ADD 1 TO #CSV-BUFFOFF.
*
WHEN 'X'.
#CSV-WORKF256 = 'x'.
WRITE <#CSV_F> TO #CSV-WORKF256+1.
CONDENSE #CSV-WORKF256 NO-GAPS.
#CSV-FLDPOSN = STRLEN( #CSV-WORKF256 ).
WRITE #CSV-WORKF256 TO _OUTBUFF+#CSV-BUFFOFF(#CSV-FLDPOSN).
ADD #CSV-FLDPOSN TO #CSV-BUFFOFF.
WRITE #CSV-TABCHAR TO _OUTBUFF+#CSV-BUFFOFF(1).
ADD 1 TO #CSV-BUFFOFF.
ENDCASE.
*
ENDDO.
#CSV-BUFFOFF = #CSV-BUFFOFF - 1.
WRITE ' ' TO _OUTBUFF+#CSV-BUFFOFF(1).
*
ENDFORM. " CSV_CONVERT
*&---------------------------------------------------------------------*
*& Form EXTRACT_DATA
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
FORM EXTRACT_DATA.
*ÇÝÝ
SELECT * FROM VBAK
WHERE ( AUART IN S_AUART ).
IF SY-SUBRC = 0.
ITAB_VBAK-VBELN = VBAK-VBELN.
* itab_vbak-erdat = vbak-erdat.
ITAB_VBAK-AUART = VBAK-AUART.
ITAB_VBAK-KVGR3 = VBAK-KVGR3.
* perform conversion_matnr.
PERFORM SET_DATA.
APPEND ITAB_VBAK.
CNT_OUT1 = CNT_OUT1 + 1.
* endloop.
ENDIF.
ENDSELECT.
ENDFORM. "EXTRACT_DATA
*&---------------------------------------------------------------------*
*& Form CONVERSION_MATNR
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
FORM CONVERSION_MATNR.
*iÚR[hÒW
* call function 'CONVERSION_EXIT_MATN1_OUTPUT'
* exporting
* input = vbak-matnr
* importing
* output = wk_matnr
* exceptions
* others = 1.
* if sy-subrc <> 0.
* message a081(zy) with 'CONVERSION_EXIT_MATN1_OUTPUT'.
* else.
* itab_vbak-matnr = wk_matnr.
* endif.
ENDFORM. "CONVERSION_MATNR
*&---------------------------------------------------------------------*
*& Form SET_DATA
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
FORM SET_DATA.
*f[^Zbg
*út®Ï·
WRITE VBAK-ERDAT USING EDIT MASK '____/__/__'
TO ITAB_VBAK-ERDAT.
* write plaf-pedtr using edit mask '____/__/__'
* to itab_vbak-pedtr.
* write plaf-paltr using edit mask '____/__/__'
* to itab_vbak-paltr.
*Oß
* move wk_menge to wk_zero2.
* shift wk_zero2 circular right.
* overlay wk_zero2 with wk_zero1.
* move wk_zero2 to itab_vbak-menge.
ENDFORM. "SET_DATA
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |