• ESB函数组: 共用include(1)


    *&---------------------------------------------------------------------*
    *&  包括              ZESB001
    *&---------------------------------------------------------------------*





    ********************函数字段名获取
      DATA: ITI LIKE FUPARAREF OCCURS WITH HEADER LINE.
      DATA: ITS LIKE FUPARAREF OCCURS WITH HEADER LINE.


      SELECT * INTO TABLE ITI FROM FUPARAREF
      WHERE FUNCNAME = FUNC_NAME
      AND R3STATE 'A'
      AND PARAMTYPE 'I'
      AND PARAMETER LIKE 'I_%'.



      SELECT * INTO TABLE ITS FROM FUPARAREF
      WHERE FUNCNAME = FUNC_NAME
      AND R3STATE 'A'
      AND PARAMTYPE 'T'
      AND PARAMETER LIKE 'S_%'.


      FIELD-SYMBOLS:
         <FS>  TYPE ANY    ,
         <FS_LINE>  TYPE ANY    ,
        <FS_TABLE>  TYPE STANDARD TABLE.
      DATA: NEW_LINE  TYPE REF TO DATA.
      DATA: QUERY_TABLE LIKE  DD02L-TABNAME.
      DATA: QUERY_FIELD LIKE  DD02L-TABNAME.



    SORT ITS.
      LOOP AT ITS.
        CONCATENATE ITS-PARAMETER '[]' INTO QUERY_TABLE.
        ASSIGN (QUERY_TABLETO <FS_TABLE>.

        CREATE DATA NEW_LINE LIKE LINE OF <FS_TABLE>.
        ASSIGN NEW_LINE->* TO <FS_LINE>.

        sort <FS_TABLE>.
        LOOP AT  <FS_TABLE> INTO <FS_LINE>.
          ASSIGN COMPONENT  'SIGN' OF STRUCTURE <FS_LINE> TO  <FS>.
          IF <FS>  IS INITIAL.
    *        DELETE <FS_TABLE>  <FS_LINE>.
            DELETE TABLE <FS_TABLE> FROM <FS_LINE>.
          ENDIF.
        ENDLOOP.


      ENDLOOP.


    * ----------------------------------------------------------------------
    *  取表定义
    * ----------------------------------------------------------------------
      DATA BEGIN OF TABLE_STRUCTURE OCCURS 10.
              INCLUDE STRUCTURE DFIES.
      DATA END OF TABLE_STRUCTURE.
      DATA TABLE_TYPE TYPE DD02V-TABCLASS.
      DATABEGIN OF WHKS OCCURS 0,
            TEXT(200),
           END OF WHKS.

    SORT ITI.
      LOOP AT  ITI.
        ASSIGN (ITI-PARAMETERTO <FS>.
        CHECK <FS> 'X'.
        CLEAR WHKS[].


        CLEAR: QUERY_TABLE,QUERY_FIELD,TABLE_STRUCTURE[].
        MOVE ITI-PARAMETER+2(20)  TO QUERY_TABLE.
        SHIFT  QUERY_TABLE LEFT DELETING LEADING SPACE.

        CALL FUNCTION 'DDIF_FIELDINFO_GET'
          EXPORTING
            TABNAME              = QUERY_TABLE
    *   FIELDNAME            = ' '
       LANGU                '1'
    *   LFIELDNAME           = ' '
    *   ALL_TYPES            = ' '
    *   GROUP_NAMES          = ' '
          IMPORTING
    *   X030L_WA             =
            DDOBJTYPE            = TABLE_TYPE
    *   DFIES_WA             =
    *   LINES_DESCR          =
          TABLES
            DFIES_TAB            = TABLE_STRUCTURE
    *   FIXED_VALUES         =
          EXCEPTIONS
            NOT_FOUND            1
            INTERNAL_ERROR       2
            OTHERS               3
            .

        CHECK TABLE_STRUCTURE[] IS NOT INITIAL.



        READ TABLE TABLE_STRUCTURE WITH KEY DOMNAME 'MANDT'.
        IF  SY-SUBRC 0.
          WHKS-TEXT = TABLE_STRUCTURE-FIELDNAME.
          APPEND WHKS.
          WHKS-TEXT ' = ''800'' '.   "可用sy-变量组合
          APPEND WHKS.
        ENDIF.


    *    APPEND LINES OF TABLE_STRUCTURE TO TAB_DDL.

        DATA: ZRFC_IC001_V1 TYPE INT4.
        CLEAR ZRFC_IC001_V1.
    SORT ITS.
        LOOP AT ITS.
          MOVE ITS-PARAMETER+2(20)  TO QUERY_FIELD.
          SHIFT  QUERY_FIELD LEFT DELETING LEADING SPACE.
          READ TABLE TABLE_STRUCTURE WITH KEY FIELDNAME = QUERY_FIELD.
          IF SY-SUBRC 0.
            ZRFC_IC001_V1 LINES( WHKS ).
            IF ZRFC_IC001_V1 > 0.
              CONCATENATE ' AND ' QUERY_FIELD ' IN ' ITS-PARAMETER INTO WHKS-TEXT SEPARATED BY SPACE.
            ELSE.
              CONCATENATE '  ' QUERY_FIELD ' IN ' ITS-PARAMETER INTO WHKS-TEXT SEPARATED BY SPACE.
            ENDIF.
            APPEND WHKS.
          ENDIF.

        ENDLOOP.


        CONCATENATE 'ITAB_' QUERY_TABLE '[]' INTO QUERY_FIELD.
        ASSIGN (QUERY_FIELDTO <FS_TABLE>.

        CHECK SY-SUBRC 0.

        DATA: STR TYPE STRING.
        CLEAR STR.
        IF TAB_FIELD[] IS INITIAL.
          STR '*'.
        ENDIF.

    SORT TAB_FIELD.
        LOOP AT TAB_FIELD.
          READ TABLE TABLE_STRUCTURE WITH KEY FIELDNAME = TAB_FIELD-FIELDNAME.

          IF SY-SUBRC 0.
            CONCATENATE STR TAB_FIELD-FIELDNAME INTO STR SEPARATED BY SPACE.
            MOVE TABLE_STRUCTURE-FIELDTEXT TO TAB_FIELD-FIELDTEXT.
            MODIFY TAB_FIELD.
          ENDIF.
        ENDLOOP.

        IF STR IS INITIAL.
          STR '*'.
        ENDIF.

        SELECT (STRINTO
        CORRESPONDING FIELDS OF TABLE <FS_TABLE>
        FROM (QUERY_TABLE)
        WHERE (WHKS).


      ENDLOOP.

  • 相关阅读:
    本地电脑视频播放器推荐PotPlayer、KMPlayer
    使用metaWebBlog接口实现博客文章同步
    水淼·文件批量处理器
    vm虚机转parallels
    linux 查找大文件、日志文件并且删除,解决磁盘爆满的问题
    dockercompose 安装
    Centos7 中tcpreplay安装使用
    K8S入门详细教程
    C#.NET WinForm 多个子Task嵌套 Task.WaitAll 阻塞UI线程
    EF EntityFramework 强制从数据库中取数据,而不是上下文
  • 原文地址:https://www.cnblogs.com/twttafku/p/14351860.html
Copyright © 2020-2023  润新知