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.

原文地址:https://www.cnblogs.com/twttafku/p/14351860.html