• 整理程序使用的工具代码【转】


    *&---------------------------------------------------------------------*
    *& Report  ZZQK_DOWNLOAD_TEST


    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*

    REPORT  zzqk_download_test.
    TABLES:tadir,trdirt,tstc,dd03l,dd02l,dd04l,dd02t,dd03t,dd04t.

    DATA: BEGIN OF ytadir OCCURS 0.
            INCLUDE STRUCTURE tadir.
            INCLUDE STRUCTURE trdirt.
    DATA: END OF ytadir.

    DATA:prog(72TYPE OCCURS WITH HEADER LINE.
    *表结构
    DATA:BEGIN OF tab OCCURS 0.
            INCLUDE STRUCTURE dd03l.
    DATA:text(40).
    DATA:END OF tab.

    DATA:BEGIN OF t1 OCCURS 0,
         tabname LIKE dd02l-tabname,
         ddtext LIKE dd02t-ddtext,
    END OF t1.

    DATA:BEGIN OF itab OCCURS 0,
         field(15), "字段
         key(6), "关键字
         elment(15), "字段类型
         type(10), "数据类型
         leng(8) , "长度
         decimals(8) , "小数
         chk(10), "表检查
         can(10), "参考表
         cfi(10), "参考字段
         text(40), "字段描述
    END OF itab.

    DATA: yyname LIKE rlgrap-filename .
    DATA: tt(500OCCURS WITH HEADER LINE.
    DATA: rn(72).

    DATA:fields(40),
         lin TYPE i,
         val(30),
         rep(40).

    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
    PARAMETERS:dow AS CHECKBOX. "是否下载
    PARAMETERS:p_dir TYPE string DEFAULT 'C:\'. "下载路径
    PARAMETERS:stype(6DEFAULT 'TXT'.
    SELECTION-SCREEN END OF BLOCK blk1.

    PARAMETERS:r1 RADIOBUTTON GROUP DEFAULT 'X' USER-COMMAND com1 ,
               r2 RADIOBUTTON GROUP r.

    SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME.
    SELECT-OPTIONS:author FOR tadir-author MODIF ID hd1. "开发人
    SELECT-OPTIONS:devclass FOR tadir-devclass MODIF ID hd1. "开发类
    SELECT-OPTIONS:obj FOR tadir-obj_name MODIF ID hd1 . "下载程序名称
    SELECTION-SCREEN END OF BLOCK blk2.

    SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME .
    SELECT-OPTIONS:tabname FOR dd02l-tabname MODIF ID hd2 . "下载表名称
    SELECTION-SCREEN END OF BLOCK blk3 .

    AT SELECTION-SCREEN OUTPUT .
      IF r1 'X'.
        LOOP AT SCREEN .
          IF screen-group1 'HD2' .
            screen-active '0' .
            MODIFY SCREEN .
          ENDIF .
        ENDLOOP .
      ELSEIF r2 'X' .
        LOOP AT SCREEN .
          IF screen-group1 'HD1' .
            screen-active '0' .
            MODIFY SCREEN .
          ENDIF .
        ENDLOOP .
      ENDIF.


    START-OF-SELECTION .
      IF r1 'X'.
        PERFORM get_data.
      ENDIF.

      IF r2 'X'.
        IF tabname IS INITIAL.
          MESSAGE '请输入要下载的表名!' TYPE 'E'.
        ELSE.
          PERFORM get_table_data.
        ENDIF.
      ENDIF.


    AT LINE-SELECTION.
      CLEAR: fields, lin.
      GET CURSOR FIELD fields LINE lin VALUE val.
      lin lin 1.
      IF lin >= 1.
        READ TABLE ytadir INDEX lin.
        IF sy-subrc 0.
          CLEAR rep.
          CLEAR prog.
          rep ytadir-obj_name.
          READ REPORT rep INTO prog.
          EDITOR-CALL FOR prog.
        ENDIF.
      ENDIF.

    END-OF-SELECTION.


    *---------------------------------------------------------------------*
    * FORM GET_DATA *
    *---------------------------------------------------------------------*
    * ........ *
    *---------------------------------------------------------------------*
    FORM get_data.
      SELECT INTO CORRESPONDING FIELDS OF TABLE ytadir
      FROM tadir
      INNER JOIN trdirt ON tadir~obj_name trdirt~name
      WHERE object 'PROG'
      AND obj_name IN obj
      AND devclass IN devclass
      AND author IN author.
      SORT ytadir BY obj_name.

      WRITE:'开发类','开发人','程序名称','程序标题'.
      LOOP AT ytadir.
        IF dow 'X'.
          REFRESH tt.
          rn ytadir-obj_name.
          READ REPORT rn INTO tt.

          CONCATENATE p_dir ytadir-author '_' ytadir-obj_name
          '_' ytadir-text '.' stype
          INTO yyname.

          CALL FUNCTION 'WS_DOWNLOAD'
            EXPORTING
              filename yyname
              filetype 'ASC'
            TABLES
              data_tab tt.

          IF sy-subrc 0.
            WRITE:/1(10ytadir-devclass,
            (8ytadir-author,
            (15ytadir-obj_name,
            (40ytadir-text.

            FORMAT COLOR 5.
            WRITE: '已下载'.
            FORMAT COLOR OFF.
          ELSE.
            WRITE:/ ytadir-devclass,ytadir-author,ytadir-obj_name,ytadir-text.
            FORMAT COLOR 4.
            WRITE: '无法下载'.
            FORMAT COLOR OFF.

          ENDIF.
        ELSE.
          WRITE:/ ytadir-devclass,ytadir-author,ytadir-obj_name,ytadir-text.
        ENDIF.

      ENDLOOP.

    ENDFORM.                    "GET_DATA

    *---------------------------------------------------------------------*
    * FORM GET_TABLE_DATA *
    *---------------------------------------------------------------------*
    * ........ *
    *---------------------------------------------------------------------*
    FORM get_table_data.
      SELECT DISTINCT INTO CORRESPONDING FIELDS OF TABLE t1
      FROM dd02t WHERE tabname IN tabname
      AND ddlanguage EQ '1'.

      SELECT INTO CORRESPONDING FIELDS OF TABLE tab FROM dd03l AS a
      WHERE a~tabname IN tabname.
      SORT tab BY tabname position.

      WRITE:/'字段名','关键字','数据元素','数据类型','长度','小数',
      '表检查','参考表','参考字段','字段描述'.
      ULINE.
      LOOP AT t1.
        REFRESH itab.
        CLEAR yyname.

        IF dow 'X'.
          itab-field '字段名'.
          itab-key '关键字'.
          itab-elment '数据元素'.
          itab-type '数据类型'.
          itab-leng '长度'.
          itab-decimals '小数'.
          itab-text '字段描述'.
          itab-chk '表检查'.
          itab-can '参考表'.
          itab-cfi '参考字段'.
          APPEND itab.
          CLEAR itab.
        ENDIF.
        CONCATENATE t1-tabname '_' t1-ddtext '的表结构如下:'
        INTO yyname.
        FORMAT COLOR 3.
        WRITE:/ yyname.
        FORMAT COLOR OFF.


        LOOP AT tab WHERE tabname t1-tabname.
          itab-field tab-fieldname.
          itab-key tab-keyflag.
          itab-elment tab-rollname.
          itab-type tab-datatype.
          itab-leng tab-leng.
          itab-chk tab-checktable.
          itab-can tab-reftable.
          itab-cfi tab-reffield.
          itab-decimals tab-decimals.

          IF tab-rollname NE space.
            SELECT SINGLE FROM dd04t WHERE rollname tab-rollname
            AND ddlanguage '1'.
            IF sy-subrc 0.
              itab-text dd04t-ddtext.
            ELSE.
              CLEAR itab-text.
            ENDIF.
          ELSE.
            SELECT SINGLE FROM dd03t WHERE tabname tab-tabname
            AND ddlanguage '1'
            AND fieldname tab-fieldname.
            IF sy-subrc 0.
              itab-text dd03t-ddtext.
            ELSE.
              CLEAR itab-text.
            ENDIF.
          ENDIF.
          APPEND itab.
          WRITE:/ itab-field,itab-key,itab-elment,itab-type,itab-leng,
          itab-decimals,itab-chk,itab-can,itab-cfi,itab-text.
          CLEAR itab.
        ENDLOOP.

        IF dow 'X'.
          CONCATENATE p_dir t1-tabname '_' t1-ddtext '.' stype
          INTO yyname.

          CALL FUNCTION 'WS_DOWNLOAD'
            EXPORTING
              filename yyname
              filetype 'ASC'
            TABLES
              data_tab itab.

        ELSE.
          ULINE.
        ENDIF.

      ENDLOOP.
    ENDFORM.                    "GET_TABLE_DATA

  • 相关阅读:
    System.Web.Security下提供了非常简单的MD5加密算法,但处在非Web层的项目要怎么使用MD5加密呢?
    切换用户账户访问共享 记
    从盛大通行证上摘下来的身份证验证代码
    HA_Xenu1.3.6 使用手记
    asp.net跨域共享session(不能跨主机名)
    应用程序池自动关闭
    忘记 win2003 密码 记
    Ajax 入门 【学习手记】
    转载 防盗链
    超链接的 target
  • 原文地址:https://www.cnblogs.com/purehunter/p/2331844.html
Copyright © 2020-2023  润新知