Application Development and Automation 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: 
Read only

Open Dataset & Close dataset

Former Member
0 Likes
1,190

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
896

Check the transactions

<b>CG3Z</b>,<b>CG3Y</b>

File Upload and Download transactions.

kishan negi

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

5 REPLIES 5
Read only

Former Member
0 Likes
897

Check the transactions

<b>CG3Z</b>,<b>CG3Y</b>

File Upload and Download transactions.

kishan negi

Read only

michael-john_turner
Active Participant
0 Likes
896

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

Read only

0 Likes
896

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

Read only

0 Likes
896

Hi Ravi,

Yes, there's no problem doing that.

MJ

Read only

Former Member
0 Likes
896

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              "”Ì”„“`•[ƒ^ƒCƒv
        ,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–Ú‚ƒ`ƒFƒbƒN—p
           WK_INPUTCHECK(1)   TYPE C,       " “ü—̓`ƒFƒbƒN—p
           WK_BUFFER(8192)    TYPE C,       " Read/Write Buffer
           R_PC(1)            TYPE C,
           WK_MENGE           TYPE  P       "¬”“_ƒJƒbƒg
                              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’è”»’fƒtƒ‰ƒO

* ƒpƒ‰ƒ[ƒ^“ü—͉æ–Ê
SELECTION-SCREEN BEGIN OF BLOCK FILESELECT WITH FRAME TITLE TEXT-001.

*”Ì”„“`•[ƒ^ƒCƒv
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ƒ‰ƒ[ƒ^ƒ`ƒFƒbƒN
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.

* ƒƒbƒZ[ƒ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'.
*‚o‚bƒtƒ@ƒ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.
* UNIXƒtƒ@ƒ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'.               "‚o‚bH
    IF CNT_OUT1 > 0.           "outƒf[ƒ^Œ”
***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ƒ@ƒCƒ‹o—̓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[ƒ^ƒZƒbƒg
*“ú•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