zoukankan      html  css  js  c++  java
  • 2016.4.26_下载abap代码【ABAP】

    系统里存了很多以前写的代码,好长时间不看都忘了,还是想存到本地,挨个复制粘贴太麻烦了,有好多程序写的很正式,有很多include,复制起来就更麻烦了。

    所以想着写个程序把程序名一输,自动下载所有代码。

    *&---------------------------------------------------------------------*
    *& REPORT  YZ_TEST
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*
    
    REPORT YZ_TEST NO STANDARD PAGE HEADING
                       MESSAGE-ID YTEST.
    
    TYPES :BEGIN OF TYP_DATA,
             DATA(200) TYPE C,
           END OF TYP_DATA.
    DATA GT_ALLCODE TYPE STANDARD TABLE OF TYP_DATA WITH HEADER LINE.
    DATA GT_TEMPCODE TYPE STANDARD TABLE OF TYP_DATA WITH HEADER LINE.
    DATA GT_INCLUDE  TYPE STANDARD TABLE OF TYP_DATA WITH HEADER LINE.
    DATA LV_LENG TYPE I.
    DATA LV_PROGLEN TYPE I.
    DATA LV_FPATH TYPE STRING.
    DATA GV_MARK TYPE C.
    CONSTANTS: LC_POINT TYPE C VALUE '.'.
    CONSTANTS: LC_INCLUDE TYPE C LENGTH 7 VALUE 'INCLUDE'.
    
    PARAMETERS:P_REPORT TYPE RSRD1-OBJNAME OBLIGATORY DEFAULT 'YZTEST'.
    
    PARAMETERS: P_PATH TYPE IBIPPARMS-PATH OBLIGATORY
                    DEFAULT 'C:Usersxabap01Desktop	est.xls' .
    
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.
      PERFORM F_F4_PATH  CHANGING P_PATH.
    
    
    START-OF-SELECTION.
      LV_PROGLEN = STRLEN( P_REPORT ) + 3.
      READ REPORT P_REPORT INTO GT_ALLCODE.
    
      LOOP AT GT_ALLCODE.
        SEARCH GT_ALLCODE-DATA FOR 'INCLUDE'.
        IF SY-SUBRC EQ 0.
          GV_MARK = 'X'.
    
          LV_LENG = STRLEN( GT_ALLCODE-DATA ).
          SHIFT GT_ALLCODE-DATA UP TO LC_INCLUDE LEFT.
          GT_ALLCODE-DATA = GT_ALLCODE-DATA+8(LV_PROGLEN).
    
          GT_INCLUDE-DATA = GT_ALLCODE-DATA.
          APPEND GT_INCLUDE.
          CLEAR: GT_INCLUDE,GT_ALLCODE.
        ENDIF.
      ENDLOOP.
    
      IF GV_MARK EQ 'x'.
      LOOP AT GT_INCLUDE.
          READ REPORT GT_INCLUDE-DATA INTO GT_TEMPCODE.
          IF SY-SUBRC EQ 0.
            APPEND LINES OF GT_TEMPCODE TO GT_ALLCODE.
            CLEAR:GT_TEMPCODE,GT_TEMPCODE[].
          ENDIF.
        ENDLOOP.
        CLEAR GV_MARK.
      ENDIF.
    
      LV_FPATH = P_PATH.
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          FILENAME                = LV_FPATH
          FILETYPE                = 'ASC'
          WRITE_FIELD_SEPARATOR   = 'X'
        TABLES
          DATA_TAB                = GT_ALLCODE
        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 E000 WITH 'download failed !' .
        RETURN.
      ENDIF.
    
    *&---------------------------------------------------------------------*
    *&      Form  F_F4_PATH
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      <--P_P_PATH  text
    *----------------------------------------------------------------------*
    FORM F_F4_PATH  CHANGING P_PATH.
    
      DATA: LV_EXTEN TYPE STRING,
            LV_FILTER TYPE STRING,
            LV_DIREC TYPE STRING,
            LV_FP TYPE STRING,
            LV_RC TYPE I,
            LT_FT TYPE FILETABLE,
            LS_FT LIKE LINE OF LT_FT.
    
      CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
        EXPORTING
          DEFAULT_EXTENSION       = LV_EXTEN
          FILE_FILTER             = LV_FILTER
          INITIAL_DIRECTORY       = LV_DIREC
        CHANGING
          FILE_TABLE              = LT_FT
          RC                      = LV_RC
        EXCEPTIONS
          FILE_OPEN_DIALOG_FAILED = 1
          CNTL_ERROR              = 2
          ERROR_NO_GUI            = 3
          NOT_SUPPORTED_BY_GUI    = 4
          OTHERS                  = 5.
      READ TABLE LT_FT INTO LS_FT INDEX 1.
      LV_FP = LS_FT.
    
      P_PATH = LV_FP.
    ENDFORM.                    " F_F4_PATH

    写完以后给同事看,结果人家给了一个更好的代码:

    http://blog.163.com/fuwa_beijing/blog/static/50467514201041135032400/

    功能看起来很多,下载程序代码同时还能把程序中用到的表结构下载成html文件。最终还是用这个代码备份了所有程序。

  • 相关阅读:
    BitSet源码
    BitSet
    webrtc在ubuntu14.04上的编译过程(12.04亦可)
    使用 ssh -R 建立反向/远程TCP端口转发代理
    爬虫与反爬虫
    Linux IO模式及 select、poll、epoll详解
    PF_RING 总结
    40行代码的人脸识别实践
    初学者必读:IBM长文解读人工智能、机器学习和认知计算
    C 格式化显示时间(time.h)
  • 原文地址:https://www.cnblogs.com/fieldcatalog/p/5434714.html
Copyright © 2011-2022 走看看