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

Code Repository

Former Member
0 Likes
410

I was wondering how you guys save your code from previous projects. I would like to be able to save all my work for upcoming projects and currently do it by copying the code onto wordpad and saving it in folders. However is there a better way to build a toolkit. Thanks

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
354

Hi,

You can use the sample program to download the programs..


REPORT YXCA_DOWNLOAD_SOURCE.

TABLES: TADIR, D010SINF.

TYPES:  LINE(112) TYPE C.

DATA:   TOTAL(5) TYPE N VALUE 0, FAILED(5) TYPE N VALUE 0.

DATA:   IADIR LIKE TADIR OCCURS 100 WITH HEADER LINE,
        I010SINF LIKE D010SINF OCCURS 100 WITH HEADER LINE,
        BEGIN OF SRC_CDE OCCURS 100,
          LINE TYPE LINE,
        END OF SRC_CDE,
        SRC_CDE2 LIKE SRC_CDE OCCURS 100 WITH HEADER LINE,
        BEGIN OF TOT_SRC_CDE OCCURS 1000,
          LINE TYPE LINE,
        END OF TOT_SRC_CDE,
        MESSAGE TYPE LINE.

SELECT-OPTIONS: DEVCLASS FOR TADIR-DEVCLASS,
                OBJ_NAME FOR TADIR-OBJ_NAME.
PARAMETERS:     LCL_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:TEMP'.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.
  IF SCREEN-GROUP1 = 'M1'.
    SCREEN-INVISIBLE = '1'.
    MODIFY SCREEN.
  ENDIF.
ENDLOOP.

******************
*** PROCESSING ***

PERFORM DET_RELEVANT_PRGMS.

PERFORM DOWNLOAD_SRC_CDE.

PERFORM USER_INFO.

*INCLUDE RPUDPSM3.                      "Subroutines.
*----------------------------------------------------------------------*
*   INCLUDE RPUDPSM3
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  DET_RELEVANT_PRGMS
*&---------------------------------------------------------------------*
FORM DET_RELEVANT_PRGMS.
*-find relevant programs to be processed:
  SELECT * FROM TADIR INTO TABLE IADIR WHERE
                      DEVCLASS IN DEVCLASS
                 AND  OBJ_NAME IN OBJ_NAME
                 AND  OBJECT = 'PROG'.
  SORT IADIR.
*-load in relevant entries from D010SINF (=TRDIR) [we later use
* this table to check existence of objects if necessary]:
  SELECT * FROM D010SINF INTO TABLE I010SINF WHERE PROG IN OBJ_NAME.
ENDFORM.                               " DET_RELEVANT_PRGMS

*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD_SRC_CDE
*&---------------------------------------------------------------------*
FORM DOWNLOAD_SRC_CDE.

  DATA: STRING(45) TYPE C.

*-In beginning of file:
  CONCATENATE 'System:'(003) SY-SYSID '.' INTO TOT_SRC_CDE
    SEPARATED BY SPACE.
  APPEND TOT_SRC_CDE.
  TOT_SRC_CDE =
        'The following program(s) were chosen for downloading:'(002).
  APPEND TOT_SRC_CDE.
  CLEAR TOT_SRC_CDE.
  APPEND TOT_SRC_CDE.
  LOOP AT IADIR.
    TOT_SRC_CDE = IADIR-OBJ_NAME.
    APPEND TOT_SRC_CDE.
  ENDLOOP.
*-for each prgrm, download src code into table:
  LOOP AT IADIR.
    TOTAL = TOTAL + 1.
    CLEAR TOT_SRC_CDE.
    APPEND TOT_SRC_CDE.
    APPEND TOT_SRC_CDE.
*   concatenate '++++++++-> Source code of program' iadir-obj_name ':'
*                into tot_src_cde separated by space.
*   append tot_src_cde.
    STRING = IADIR-OBJ_NAME.
    REFRESH SRC_CDE.
    READ REPORT IADIR-OBJ_NAME INTO SRC_CDE.
    IF SY-SUBRC = 0.
      REFRESH SRC_CDE2.
      LOOP AT SRC_CDE.
        SRC_CDE2 = SRC_CDE.
        APPEND SRC_CDE2.
      ENDLOOP.

    DATA: V_FILE LIKE LCL_FILE.

    CLEAR: V_FILE.
    
    CONCATENATE LCL_FILE IADIR-OBJ_NAME '.TXT' INTO V_FILE.

* Download code.
    CALL FUNCTION 'WS_DOWNLOAD'
       EXPORTING
            FILENAME = V_FILE
            FILETYPE = 'DAT'
       TABLES
            DATA_TAB = SRC_CDE2.

    ELSE. "problems in reading specified report
*-----check if file exists by checking in (view) TRDIR = table D010SINF:
      READ TABLE I010SINF WITH KEY PROG = IADIR-OBJ_NAME.
      IF SY-SUBRC = 0.
*-------program really does exist so an error must be reported:
        FAILED = FAILED + 1.
        CONCATENATE 'Fehler beim Downloading'(M01)':' IADIR-OBJ_NAME
          INTO MESSAGE SEPARATED BY SPACE.
        WRITE: / MESSAGE.
        APPEND MESSAGE TO TOT_SRC_CDE.
      ENDIF.                           "IF SY-SUBRC = 0.
    ENDIF.                             "IF SY-SUBRC = 0.
  ENDLOOP.                             "LOOP AT IADIR.

ENDFORM.                               " DOWNLOAD_SRC_CDE

*&---------------------------------------------------------------------*
*&      Form  USER_INFO
*&---------------------------------------------------------------------*
FORM USER_INFO.
  ULINE.
  CONCATENATE 'Total prozessierte Datei'(M02) ':' TOTAL
   INTO MESSAGE SEPARATED BY SPACE.
  WRITE: / MESSAGE.
  CONCATENATE 'Davon konnten nicht gelesen werden'(M03) ':' FAILED
   INTO MESSAGE SEPARATED BY SPACE.
  WRITE: / MESSAGE.
  ULINE.
  CONCATENATE 'Quelltext speichert in lokales datei'(M04) ':'  LCL_FILE
   INTO MESSAGE SEPARATED BY SPACE.
  WRITE: / MESSAGE.
ENDFORM.                               " USER_INFO

Thanks,

Naren

2 REPLIES 2
Read only

Former Member
0 Likes
355

Hi,

You can use the sample program to download the programs..


REPORT YXCA_DOWNLOAD_SOURCE.

TABLES: TADIR, D010SINF.

TYPES:  LINE(112) TYPE C.

DATA:   TOTAL(5) TYPE N VALUE 0, FAILED(5) TYPE N VALUE 0.

DATA:   IADIR LIKE TADIR OCCURS 100 WITH HEADER LINE,
        I010SINF LIKE D010SINF OCCURS 100 WITH HEADER LINE,
        BEGIN OF SRC_CDE OCCURS 100,
          LINE TYPE LINE,
        END OF SRC_CDE,
        SRC_CDE2 LIKE SRC_CDE OCCURS 100 WITH HEADER LINE,
        BEGIN OF TOT_SRC_CDE OCCURS 1000,
          LINE TYPE LINE,
        END OF TOT_SRC_CDE,
        MESSAGE TYPE LINE.

SELECT-OPTIONS: DEVCLASS FOR TADIR-DEVCLASS,
                OBJ_NAME FOR TADIR-OBJ_NAME.
PARAMETERS:     LCL_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:TEMP'.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.
  IF SCREEN-GROUP1 = 'M1'.
    SCREEN-INVISIBLE = '1'.
    MODIFY SCREEN.
  ENDIF.
ENDLOOP.

******************
*** PROCESSING ***

PERFORM DET_RELEVANT_PRGMS.

PERFORM DOWNLOAD_SRC_CDE.

PERFORM USER_INFO.

*INCLUDE RPUDPSM3.                      "Subroutines.
*----------------------------------------------------------------------*
*   INCLUDE RPUDPSM3
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  DET_RELEVANT_PRGMS
*&---------------------------------------------------------------------*
FORM DET_RELEVANT_PRGMS.
*-find relevant programs to be processed:
  SELECT * FROM TADIR INTO TABLE IADIR WHERE
                      DEVCLASS IN DEVCLASS
                 AND  OBJ_NAME IN OBJ_NAME
                 AND  OBJECT = 'PROG'.
  SORT IADIR.
*-load in relevant entries from D010SINF (=TRDIR) [we later use
* this table to check existence of objects if necessary]:
  SELECT * FROM D010SINF INTO TABLE I010SINF WHERE PROG IN OBJ_NAME.
ENDFORM.                               " DET_RELEVANT_PRGMS

*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD_SRC_CDE
*&---------------------------------------------------------------------*
FORM DOWNLOAD_SRC_CDE.

  DATA: STRING(45) TYPE C.

*-In beginning of file:
  CONCATENATE 'System:'(003) SY-SYSID '.' INTO TOT_SRC_CDE
    SEPARATED BY SPACE.
  APPEND TOT_SRC_CDE.
  TOT_SRC_CDE =
        'The following program(s) were chosen for downloading:'(002).
  APPEND TOT_SRC_CDE.
  CLEAR TOT_SRC_CDE.
  APPEND TOT_SRC_CDE.
  LOOP AT IADIR.
    TOT_SRC_CDE = IADIR-OBJ_NAME.
    APPEND TOT_SRC_CDE.
  ENDLOOP.
*-for each prgrm, download src code into table:
  LOOP AT IADIR.
    TOTAL = TOTAL + 1.
    CLEAR TOT_SRC_CDE.
    APPEND TOT_SRC_CDE.
    APPEND TOT_SRC_CDE.
*   concatenate '++++++++-> Source code of program' iadir-obj_name ':'
*                into tot_src_cde separated by space.
*   append tot_src_cde.
    STRING = IADIR-OBJ_NAME.
    REFRESH SRC_CDE.
    READ REPORT IADIR-OBJ_NAME INTO SRC_CDE.
    IF SY-SUBRC = 0.
      REFRESH SRC_CDE2.
      LOOP AT SRC_CDE.
        SRC_CDE2 = SRC_CDE.
        APPEND SRC_CDE2.
      ENDLOOP.

    DATA: V_FILE LIKE LCL_FILE.

    CLEAR: V_FILE.
    
    CONCATENATE LCL_FILE IADIR-OBJ_NAME '.TXT' INTO V_FILE.

* Download code.
    CALL FUNCTION 'WS_DOWNLOAD'
       EXPORTING
            FILENAME = V_FILE
            FILETYPE = 'DAT'
       TABLES
            DATA_TAB = SRC_CDE2.

    ELSE. "problems in reading specified report
*-----check if file exists by checking in (view) TRDIR = table D010SINF:
      READ TABLE I010SINF WITH KEY PROG = IADIR-OBJ_NAME.
      IF SY-SUBRC = 0.
*-------program really does exist so an error must be reported:
        FAILED = FAILED + 1.
        CONCATENATE 'Fehler beim Downloading'(M01)':' IADIR-OBJ_NAME
          INTO MESSAGE SEPARATED BY SPACE.
        WRITE: / MESSAGE.
        APPEND MESSAGE TO TOT_SRC_CDE.
      ENDIF.                           "IF SY-SUBRC = 0.
    ENDIF.                             "IF SY-SUBRC = 0.
  ENDLOOP.                             "LOOP AT IADIR.

ENDFORM.                               " DOWNLOAD_SRC_CDE

*&---------------------------------------------------------------------*
*&      Form  USER_INFO
*&---------------------------------------------------------------------*
FORM USER_INFO.
  ULINE.
  CONCATENATE 'Total prozessierte Datei'(M02) ':' TOTAL
   INTO MESSAGE SEPARATED BY SPACE.
  WRITE: / MESSAGE.
  CONCATENATE 'Davon konnten nicht gelesen werden'(M03) ':' FAILED
   INTO MESSAGE SEPARATED BY SPACE.
  WRITE: / MESSAGE.
  ULINE.
  CONCATENATE 'Quelltext speichert in lokales datei'(M04) ':'  LCL_FILE
   INTO MESSAGE SEPARATED BY SPACE.
  WRITE: / MESSAGE.
ENDFORM.                               " USER_INFO

Thanks,

Naren

Read only

Former Member
0 Likes
354

Hi

You can write a utility program such that all the Z* programs will be downloaded into a file from TADIR table

so that we can download the code of all Z objects

or individually once the project is over you download the important things into a folder, so that they are useful for the next projects.

Reward points if useful

Regards

Anji