zoukankan      html  css  js  c++  java
  • 通用函数接口日志

    即插即用^_^

     使用时:

    ZLYLOG 'ZLYTEST01' '01'."FM开头

    ZLYLOG 'ZLYTEST01' '02'."FM结尾

    TABLE:ZLOGDATA(此表是来存储所有LOG,字段可自由调整,此处只留有日期,时间,函数名)

    INCLUDE ZLYLOG,复制,激活(此INCLUDE是LOG主要部分,用来处理函数参数并记录Log以及log展示)

     在函数中使用时,需要将此INCLUDE加入函数主程序的最前方。如果有命名冲突,可修改。

    TABLES:TFDIR,TRDIR,ENLFDIR,RS38L,RFCDES,T100,TLIBG.
    
    "BEGIN
    DATA:BEGIN OF LS_HEAD,
           NAME   TYPE RS38L_FNAM,
           ERDAT  TYPE ERDAT,
           ZEIT   TYPE UZEIT,
           INDX   TYPE NUMC2,
           FDNAME TYPE RS38L_PAR_,
           AREA   TYPE RS38L_AREA,
           ERNAM  TYPE UNAME,
           RTYPE  TYPE BAPI_MTYPE,
    *       TCODE  TYPE TCODE,
    *       ADDR   TYPE NI_NODEADDR,
         END OF LS_HEAD.
    DATA:BEGIN OF CELL_HEADER OCCURS 0,
           HTEXT     TYPE STRING,
           WIDTH     TYPE I,
           NO_OUT,
           NO_ZERO,
           JUSTIFIED,
         END OF CELL_HEADER.
    DATA:  LV_PNAME_GD         TYPE TFDIR-PNAME,
           LS_HEADER_GD        TYPE HEADER_FB,
           LT_TABLES_GD        TYPE RSFB_PARA,
           LT_IMPORT_GD        TYPE RSFB_PARA,
           LT_EXPORT_GD        TYPE RSFB_PARA,
           LT_CHANGE_GD        TYPE RSFB_PARA,
           LV_PROGNAME_GD      TYPE TRDIR-NAME,
           LV_PARANAME_GD(100).
    
    FIELD-SYMBOLS: <LS_PARA>    TYPE RSFBPARA,
                   <LV_PARAFLD> TYPE ANY,
                   <LV_PARAVAL> TYPE ANY,
                   <DYN_TABLE>  TYPE STANDARD TABLE,
                   <LT_PARAFLD> TYPE ANY TABLE,
                   <LT_PARAVAL> TYPE ANY TABLE.
    
    
    DATA:LV_HEAD TYPE ZLOGDATA.
    
    DATA:GT_TAB TYPE TABLE OF ZLOGDATA,
         GV_TAB LIKE LINE OF GT_TAB,
         GW_TAB LIKE LINE OF GT_TAB.
    
    DATA:DY_TABLE TYPE REF TO DATA,
         DY_LINE  TYPE REF TO DATA.
    
    
    INCLUDE MS38LCOM.
    DATA: DOCUMENTATION LIKE FUNCT OCCURS 0 WITH HEADER LINE.
    
    DATA: TESTSTEP(3) VALUE 'PBO'.
    DATA : BEGIN OF FDESC OCCURS 10,
             NAME(30),                     "Feldname
             TABLE(40),                    "Tabellenname
             TYPE(1),                      "Datentyp
             LENGTH(5),                    "Länge
             ILENGTH(5),                   "Eingabelänge
             HLENGTH    TYPE P,               "Eingabelänge
             FTYPE(3),                     "Typ fdt_...
             VALUE      TYPE STRING,
             "I IMPORT
             "E EXPORT
             "C CHANGING
             "S STRUCTURE
             "Y TYPE
             "T TABLE
             NUMBER     TYPE I,                "Referenz, wessen Struktur
           END OF FDESC.
    
    DATA: MAX_FIELD_LENGTH_PAI TYPE I,
          MAX_FIELD_LENGTH     TYPE I,         " Maximale Feldlaenge
          FDESC_INDEX          LIKE SY-TABIX,
          PARAM_VALUE(220),
          V_PARAM_VALUE(220),
          D100_IOHIDE.
    
    DATA: STRUC_INFO_TABLE_ENTRY TYPE NF2TY_STRUC_INFO_TABLE_ENTRY,
          STRUC_INFO_TABLE       TYPE NF2TY_STRUC_INFO_TABLE,
          STRUC_INFO_TABLE_COPY  TYPE NF2TY_STRUC_INFO_TABLE.
    INCLUDE: <ICON>.
    
    FIELD-SYMBOLS: <F>.
    DATA:GV_FLAG TYPE C.
    
    
    
    
    *&---------------------------------------------------------------------*
    *&      Form  IN_DESCRIBE_FIELDS
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM IN_DESCRIBE_INTERFACE USING P_FNAME.
      REFRESH FDESC.
      CLEAR: MAX_FIELD_LENGTH, MAX_FIELD_LENGTH_PAI.
    
    * --Importfelder : Name, Länge und Typ bestimmen
      LOOP AT IF_IMPORT.
        AT LAST .
          GV_FLAG = 'X'.
        ENDAT.
    
    *    perform prm_write_header using text-130.
        PERFORM IN_DESCRIBE_FIELDS USING P_FNAME
                                         IF_IMPORT-PARAMETER
                                         IF_IMPORT-TYP
                                         IF_IMPORT-DBFIELD
                                         'I'
                                         TEXT-130.
      ENDLOOP.
    * --Changefelder : Name, Länge und Typ bestimmen
      LOOP AT IF_CHANGE.
        AT LAST .
          GV_FLAG = 'X'.
        ENDAT.
        PERFORM IN_DESCRIBE_FIELDS USING P_FNAME
                                         IF_CHANGE-PARAMETER
                                         IF_CHANGE-TYP
                                         IF_CHANGE-DBFIELD
                                         'C'
                                         TEXT-132.
      ENDLOOP.
    * --Exportfelder : Name, Länge und Typ bestimmen
      IF GV_TAB-INDX = '02'.
        LOOP AT IF_EXPORT.                   "keine neue Beschreibung wenn
          AT LAST .
            GV_FLAG = 'X'.
          ENDAT.
          READ TABLE FDESC WITH KEY IF_EXPORT-PARAMETER.  "schon IMPORT
          IF SY-SUBRC = 0.                   "Schon Input-Parameter ?
            IF FDESC-FTYPE = 'I'.            "nur Typ entsprechend ändern
              FDESC-FTYPE = 'IO'.
            ELSEIF FDESC-FTYPE = 'IS'.
              FDESC-FTYPE = 'IOS'.
            ENDIF.
            MODIFY FDESC INDEX SY-TABIX.
          ELSE.
            PERFORM IN_DESCRIBE_FIELDS USING P_FNAME
                                             IF_EXPORT-PARAMETER
                                             IF_EXPORT-TYP
                                             IF_EXPORT-DBFIELD
                                             'O'
                                             TEXT-140.
          ENDIF.
        ENDLOOP.
      ENDIF.
    * --Tablesfelder : Name, Länge und Typ bestimmen
      LOOP AT IF_TABLES.
        AT LAST .
          GV_FLAG = 'X'.
        ENDAT.
        PERFORM IN_DESCRIBE_FIELDS USING P_FNAME
                                         IF_TABLES-PARAMETER
                                         IF_TABLES-TYP
                                         IF_TABLES-DBSTRUCT
                                         'T'
                                         TEXT-160.
      ENDLOOP.
    * --Exceptions : Nix zu Bestimmen
      LOOP AT IF_EXCEPT.
        CLEAR FDESC.
        FDESC-NAME = IF_EXCEPT-EXCEPTION.
        APPEND FDESC.
      ENDLOOP.
    
    * Abtrennen
      CLEAR FDESC.
      FDESC-NAME = '*'.
      APPEND FDESC.
      MAX_FIELD_LENGTH = MAX_FIELD_LENGTH + 35.
      IF MAX_FIELD_LENGTH < 80.
        MAX_FIELD_LENGTH = 80.
      ENDIF.
      MAX_FIELD_LENGTH_PAI = MAX_FIELD_LENGTH_PAI + 35.
      IF MAX_FIELD_LENGTH_PAI < 80.
        MAX_FIELD_LENGTH_PAI = 80.
      ENDIF.
    
    
    ENDFORM.                               " IN_DESCRIBE_FIELDS
    
    *---------------------------------------------------------------------*
    *       FORM IN_DESCRIBE_FIELDS                                       *
    *---------------------------------------------------------------------*
    *       ........                                                      *
    *---------------------------------------------------------------------*
    *  -->  P_PARAMETER                                                   *
    *  -->  P_TYP                                                         *
    *  -->  P_STRUC                                                       *
    *  -->  P_KIND                                                        *
    *---------------------------------------------------------------------*
    FORM IN_DESCRIBE_FIELDS USING    P_FNAME
                                     P_PARAMETER
                                     P_TYP
                                     P_STRUC
                                     P_KIND
                                     P_TEXT.
      DATA: L_SLINE TYPE NF2TY_INFO_ENTRY.
      DATA: OFFSET    LIKE SY-FDPOS,
            D_TYPE(1) TYPE C VALUE 'I'.
      DATA: O_PARAM_VALUE    LIKE PARAM_VALUE,
            RESULT_TEXT(250).
      FIELD-SYMBOLS: <F>, <F1>.
    
      CASE P_KIND.
        WHEN 'I'.
          READ TABLE LT_IMPORT_GD ASSIGNING <LS_PARA> WITH KEY PARAMETER = P_PARAMETER.
        WHEN 'O'.
          READ TABLE LT_EXPORT_GD ASSIGNING <LS_PARA> WITH KEY PARAMETER = P_PARAMETER.
        WHEN 'C'.
          READ TABLE LT_CHANGE_GD ASSIGNING <LS_PARA> WITH KEY PARAMETER = P_PARAMETER.
        WHEN 'T'.
          READ TABLE LT_TABLES_GD ASSIGNING <LS_PARA> WITH KEY PARAMETER = P_PARAMETER.
        WHEN OTHERS.
      ENDCASE.
      IF <LS_PARA>-STRUCTURE IS INITIAL.
        ASSIGN <LS_PARA>-PARAMETER TO <LV_PARAFLD>.
      ELSE.
        CREATE DATA DY_TABLE TYPE TABLE OF (<LS_PARA>-STRUCTURE).
        ASSIGN DY_TABLE->* TO <DYN_TABLE>.
        IF P_KIND = 'T'.
          ASSIGN DY_TABLE->* TO <LV_PARAFLD>.
        ELSE.
          CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>.
          ASSIGN DY_LINE->* TO <LV_PARAFLD>.
        ENDIF.
    
      ENDIF.
    
      CHECK <LV_PARAFLD> IS ASSIGNED.
      LOOP AT GT_TAB INTO GW_TAB WHERE NAME = GV_TAB-NAME AND ERDAT = GV_TAB-ERDAT
                                 AND   ZEIT = GV_TAB-ZEIT AND ERNAM = GV_TAB-ERNAM
                                 AND   AREA = GV_TAB-AREA AND FDNAME = <LS_PARA>-PARAMETER.
        MOVE-CORRESPONDING GW_TAB TO LS_HEAD.
        TRY .
            IMPORT LS_HEAD-FDNAME = <LV_PARAFLD> FROM DATABASE ZLOGDATA(FL) ID LS_HEAD IGNORING CONVERSION ERRORS .
          CATCH CX_SY_IMPORT_MISMATCH_ERROR.
    *        MESSAGE '参数有变更' TYPE 'S'.
            MESSAGE S101(ZCRM_MSG).
    *        EXIT.
        ENDTRY.
    
      ENDLOOP.
    
      CLEAR FDESC.
      PERFORM CB_CALLBACK_DESCRIBE USING <LV_PARAFLD> P_PARAMETER P_KIND.
    
    
      FDESC-NAME = P_PARAMETER.
      IF NOT P_TYP IS INITIAL.
        FDESC-TABLE = P_TYP.
        CASE P_TYP.
          WHEN 'I' OR 'C' OR 'N' OR 'P' OR 'F' OR 'b' OR 's' OR 'T'
               OR 'D' OR 'X' OR 'STRING' OR 'XSTRING'.
            FDESC-VALUE = <LV_PARAFLD>.
            CONCATENATE '''' P_TYP '''' INTO FDESC-TABLE.
          WHEN 'TABLE' OR 'STANDARD TABLE' OR 'HASHED TABLE' OR
               'SORTED TABLE' OR 'INDEX TABLE'.
          WHEN 'ANY'.
            CLEAR FDESC-TABLE.
          WHEN OTHERS.
        ENDCASE.
      ELSE.
        FDESC-TABLE = P_STRUC.
      ENDIF.
      READ TABLE STRUC_INFO_TABLE_ENTRY-TYPE_INFO INDEX 1 INTO L_SLINE.
      FDESC-TYPE = L_SLINE-STRUC_TYPE.
      IF L_SLINE-VLENGTH > 200.
        L_SLINE-VLENGTH = 200.
      ENDIF.
      IF FDESC-TYPE = 'y' OR FDESC-TYPE = 'g'.
    *   Strings auf char 200
        L_SLINE-VLENGTH = 200.
      ENDIF.
      FDESC-LENGTH = L_SLINE-VLENGTH.
      FDESC-HLENGTH = L_SLINE-VLENGTH.
      FDESC-ILENGTH = L_SLINE-VLENGTH.
      IF L_SLINE-VLENGTH > MAX_FIELD_LENGTH.
        MAX_FIELD_LENGTH = L_SLINE-VLENGTH.
        MAX_FIELD_LENGTH_PAI = L_SLINE-VLENGTH.
      ENDIF.
      IF P_STRUC IS INITIAL.
        CASE FDESC-TYPE.
    ***JR 14.9.98
          WHEN 'h' OR 'v' OR IF_WB_CONSTANTS=>FLAG_STRUC OR 'u'.
    *      when 'h' or 'v' or 'T' or IF_WB_CONSTANTS=>flag_struc or 'u'.
            CONCATENATE P_KIND FDESC-TYPE INTO FDESC-FTYPE.
          WHEN OTHERS.
            FDESC-FTYPE = P_KIND.
        ENDCASE.
      ELSE.
        CONCATENATE P_KIND 'S' INTO FDESC-FTYPE.
      ENDIF.
      IF FDESC-VALUE IS INITIAL.
        IF FDESC-TYPE CA '%hvu'.
          FDESC-VALUE = '?'.
        ELSE.
          FDESC-VALUE = <LV_PARAFLD>.
        ENDIF.
      ENDIF.
    
      APPEND FDESC.
    
      IF GV_FLAG = 'X'.
    
        FORMAT COLOR 1 INTENSIFIED ON.
        ASSIGN SY-ULINE(MAX_FIELD_LENGTH) TO <F>.
        WRITE:/ <F>.
        WRITE :/ SY-VLINE, P_TEXT, 34 SY-VLINE,
               35 TEXT-131.
        POSITION MAX_FIELD_LENGTH.
        WRITE SY-VLINE.
        WRITE:/ <F>.
    
        GV_FLAG = ''.
    
        LOOP AT FDESC WHERE FTYPE(1) = P_KIND.
          CHECK NOT FDESC-TYPE = 'l'.        "Datenreferenz
          FDESC_INDEX = SY-TABIX.            "wird für Zugriff gehided
          D100_IOHIDE = 'I'.                 "Hide für späteren Zugriff
          CLEAR PARAM_VALUE. CLEAR O_PARAM_VALUE.
          IF P_KIND = 'T' OR P_KIND = 'C'.
            D_TYPE = 'O'.
          ENDIF.
          IF FDESC-VALUE = '?'.
          ELSE.
            O_PARAM_VALUE = PARAM_VALUE = FDESC-VALUE.
          ENDIF.
    
          IF PARAM_VALUE CO ' '. ENDIF.      ".+-E1234567890' AND
          IF ( FDESC-TYPE = 'I' OR           " Integer
               FDESC-TYPE = 'F' OR           " Float
               FDESC-TYPE = 'h' ).           " Tabelle
    * Die schreib er nämlich hinten hin
    *        offset = sy-fdpos.             "219 - FDESC-ILENGTH.
            SHIFT PARAM_VALUE LEFT BY SY-FDPOS PLACES.
            IF O_PARAM_VALUE CO ' '. ENDIF.
            SHIFT O_PARAM_VALUE LEFT BY SY-FDPOS PLACES.
          ELSE.
            OFFSET = 0.
          ENDIF.
          IF FDESC-ILENGTH > 0.
            ASSIGN PARAM_VALUE+OFFSET(FDESC-ILENGTH) TO <F1>.
          ENDIF.
    *   perform te_set_input_prompter using <f1>.
          FORMAT RESET.
          IF FDESC-TYPE = 'u' OR FDESC-TYPE = 'h' OR FDESC-TYPE = 'v' OR
             FDESC-TYPE = 'S' OR FDESC-TYPE = IF_WB_CONSTANTS=>FLAG_STRUC OR
             FDESC-TYPE = 'r' OR
             FDESC-FTYPE(1) = 'T'.                            " ec ftype = T
    * Nicht eingabebereit, da sowieso nicht komplett oder Typgerecht pflegb.
            IF FDESC-TYPE = 'h' OR FDESC-FTYPE(1) = 'T'.
    *       Sonst gibt es bei 5 Byte Tabellen '0 Eint'
    *          ASSIGN PARAM_VALUE+OFFSET(25) TO <F1>.
              ASSIGN FDESC-VALUE TO <F1>.
              WRITE : / SY-VLINE, 3 FDESC-NAME, 34 SY-VLINE,
                      35 ICON_LIST AS ICON QUICKINFO TEXT-010 HOTSPOT ON,
                      38  <F1> HOTSPOT ON.
            ELSEIF FDESC-TYPE = 'r'.
              IF FDESC-TABLE(7) = 'REF TO '.                    "#EC NOTEXT
                ASSIGN PARAM_VALUE TO <F1>.
                WRITE : / SY-VLINE, 3 FDESC-NAME, 34 SY-VLINE,
                        35 ICON_OO_CLASS AS ICON QUICKINFO TEXT-010 HOTSPOT ON,
                        38  <F1> HOTSPOT ON.
              ELSE.
                WRITE : / SY-VLINE, 3 FDESC-NAME, 34 SY-VLINE,
                        35 ICON_OO_CLASS AS ICON QUICKINFO TEXT-158,
                        38  <F1>.
              ENDIF.
            ELSE.
              WRITE : / SY-VLINE, 3 FDESC-NAME, 34 SY-VLINE,
                 35 ICON_DETAIL AS ICON QUICKINFO TEXT-010 HOTSPOT ON,
                 38  <F1> HOTSPOT ON.
            ENDIF.
          ELSE.
            WRITE : / SY-VLINE, 3 FDESC-NAME, 34 SY-VLINE,
                35  <F1> INPUT ON.
          ENDIF.
          HIDE : FDESC_INDEX, D100_IOHIDE.
          POSITION MAX_FIELD_LENGTH.
          WRITE SY-VLINE.
        ENDLOOP.
        WRITE:/ <F>.
        FORMAT RESET.
    
      ENDIF.
    ENDFORM.                               " IN_DESCRIBE_FIELDS
    *&---------------------------------------------------------------------*
    *&      Form  IN_IMPORT_INTERFACE
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM IN_IMPORT_INTERFACE USING P_FUNCNAME.
      DATA ENHA_IMP TYPE RSFB_IMP.
      DATA ENHA_EXP TYPE RSFB_EXP.
      DATA ENHA_CHA TYPE RSFB_CHA.
      DATA ENHA_TBL TYPE RSFB_TBL.
      DATA ENHA_DOCU TYPE TABLE OF RSFDO.
    
      REFRESH: IF_IMPORT, IF_EXPORT, IF_CHANGE, IF_TABLES, IF_EXCEPT,
               DOCUMENTATION.
    
    *ec Sept. 2004 wg. SFW, Switches sollen noch berücksichtigt werden
      CALL FUNCTION 'FUNCTION_IMPORT_DOKU'
        EXPORTING
          FUNCNAME           = P_FUNCNAME
          WITH_ENHANCEMENTS  = 'X'
        TABLES
          EXCEPTION_LIST     = IF_EXCEPT
          EXPORT_PARAMETER   = IF_EXPORT
          IMPORT_PARAMETER   = IF_IMPORT
          CHANGING_PARAMETER = IF_CHANGE
          TABLES_PARAMETER   = IF_TABLES
          DOKUMENTATION      = DOCUMENTATION
        EXCEPTIONS
          ERROR_MESSAGE      = 1
          FUNCTION_NOT_FOUND = 2
          INVALID_NAME       = 3
          OTHERS             = 4.
      LOOP AT DOCUMENTATION.
        MOVE-CORRESPONDING DOCUMENTATION TO PARAM_DOCU.
        APPEND PARAM_DOCU.
      ENDLOOP.
    
    ENDFORM.                               " IN_IMPORT_INTERFACE
    *---------------------------------------------------------------------*
    *       FORM CB_CALLBACK_DESCRIBE                                     *
    *---------------------------------------------------------------------*
    *       ........                                                      *
    *---------------------------------------------------------------------*
    *  -->  P_VALUE                                                       *
    *  -->  P_NAME                                                        *
    *---------------------------------------------------------------------*
    FORM CB_CALLBACK_DESCRIBE USING P_VALUE
                                    P_NAME
                                    P_KIND.
      DATA: L_TYPE_INFO TYPE  NF2TY_STRUC_INFO.
      DATA:S_TYPE_INFO LIKE LINE OF L_TYPE_INFO.
      DATA:LV_I TYPE N.
      FIELD-SYMBOLS:<F1> TYPE ANY TABLE.
    
      CALL FUNCTION 'RS_COMPLEX_OBJECT_TYPEINFO_GET'
        EXPORTING
          OBJECT_NAME = P_NAME
          OBJECT      = P_VALUE
        IMPORTING
          TYPE_INFO   = L_TYPE_INFO
        EXCEPTIONS
          OTHERS      = 0.
      STRUC_INFO_TABLE_ENTRY-PARAM_NAME = P_NAME.
      STRUC_INFO_TABLE_ENTRY-TYPE_INFO  = L_TYPE_INFO.
      APPEND STRUC_INFO_TABLE_ENTRY TO STRUC_INFO_TABLE.
    
      READ TABLE L_TYPE_INFO INDEX 1 INTO S_TYPE_INFO.
      IF SY-SUBRC = 0 .
        FDESC-TYPE = S_TYPE_INFO-STRUC_TYPE.
        IF ( FDESC-TYPE = 'h' OR FDESC-FTYPE(1) = 'T' ) OR ( P_KIND = 'T' AND FDESC-TYPE = '%' ).
          ASSIGN P_VALUE TO <F1>.
          DESCRIBE TABLE <F1> LINES LV_I.
          CONCATENATE LV_I '条目' INTO FDESC-VALUE.
        ENDIF.
      ENDIF.
    ENDFORM.                    "cb_callback_describe
    
    
    
    
    
    
    
    
    
    DEFINE ZLYLOG.
    
      LS_HEAD-NAME = &1.
      LS_HEAD-ERDAT = SY-DATUM.
      LS_HEAD-ZEIT = SY-UZEIT.
      LS_HEAD-INDX = &2.
      LS_HEAD-RTYPE = &3.
      LS_HEAD-ERNAM = SY-UNAME.
    
    
      LS_HEADER_GD-NAME = &1.
    
    *  IF &1 = 'AUTH_CHECK_TCODE'.
    *    LS_HEAD-TCODE = SY-TCODE.
    *    CALL FUNCTION 'TH_USER_INFO'
    *     IMPORTING
    *       ADDRSTR   =  LS_HEAD-ADDR.
    *  ENDIF.
    
    
    *  read function-pool
        SELECT SINGLE PNAME
               FROM TFDIR
               INTO  LV_PNAME_GD
               WHERE FUNCNAME =  LS_HEADER_GD-NAME.
        CALL FUNCTION 'FUNCTION_INCLUDE_SPLIT'
          EXPORTING
            PROGRAM   = LV_PNAME_GD
          IMPORTING
            GROUP     = LS_HEADER_GD-AREA
            NAMESPACE = LS_HEADER_GD-NAMESPACE.
    
        LS_HEAD-AREA = LS_HEADER_GD-AREA.
    *  insert namespace (e.g. /AFS/)
        CONCATENATE LS_HEADER_GD-NAMESPACE LS_HEADER_GD-AREA
               INTO LS_HEADER_GD-AREA.
    *  read parameter of function module
        CALL METHOD CL_FB_PARAMETER_DB=>READ
          IMPORTING
            TABLES = LT_TABLES_GD[]
            IMPORT = LT_IMPORT_GD[]
            EXPORT = LT_EXPORT_GD[]
            CHANGE = LT_CHANGE_GD[]
          CHANGING
            HEADER = LS_HEADER_GD.
    
        LV_PROGNAME_GD =  LS_HEADER_GD-NAME.
        TRANSLATE  LV_PROGNAME_GD USING ' ='.
        LV_PROGNAME_GD+30 = 'FT'.
    
        LOOP AT  LT_IMPORT_GD ASSIGNING <LS_PARA>.
          CONCATENATE '(' LV_PROGNAME_GD ')%_I' <LS_PARA>-PARAMETER
                       INTO LV_PARANAME_GD.
          ASSIGN (LV_PARANAME_GD) TO <LV_PARAFLD>.
          CHECK SY-SUBRC = 0.
          LS_HEAD-FDNAME = <LS_PARA>-PARAMETER.
          MOVE-CORRESPONDING LS_HEAD TO LV_HEAD.
          EXPORT LS_HEAD-FDNAME = <LV_PARAFLD> TO DATABASE ZLOGDATA(FL) FROM LV_HEAD ID LS_HEAD.
        ENDLOOP.
    
        IF &2 = '02'.
          LOOP AT  LT_EXPORT_GD ASSIGNING <LS_PARA>.
            CONCATENATE '(' LV_PROGNAME_GD ')%_O' <LS_PARA>-PARAMETER
                         INTO LV_PARANAME_GD.
            ASSIGN (LV_PARANAME_GD) TO <LV_PARAFLD>.
            CHECK SY-SUBRC = 0.
            LS_HEAD-FDNAME = <LS_PARA>-PARAMETER.
            MOVE-CORRESPONDING LS_HEAD TO LV_HEAD.
            EXPORT LS_HEAD-FDNAME = <LV_PARAFLD> TO DATABASE ZLOGDATA(FL) FROM LV_HEAD ID LS_HEAD.
          ENDLOOP.
        ENDIF.
        LOOP AT  LT_CHANGE_GD ASSIGNING <LS_PARA>.
          CONCATENATE '(' LV_PROGNAME_GD ')%_I' <LS_PARA>-PARAMETER
                       INTO LV_PARANAME_GD.
          ASSIGN (LV_PARANAME_GD) TO <LV_PARAFLD>.
          CHECK SY-SUBRC = 0.
          LS_HEAD-FDNAME = <LS_PARA>-PARAMETER.
          MOVE-CORRESPONDING LS_HEAD TO LV_HEAD.
          EXPORT LS_HEAD-FDNAME = <LV_PARAFLD> TO DATABASE ZLOGDATA(FL) FROM LV_HEAD ID LS_HEAD.
        ENDLOOP.
        LOOP AT  LT_TABLES_GD ASSIGNING <LS_PARA>.
          CONCATENATE '(' LV_PROGNAME_GD ')%_I'
                      <LS_PARA>-PARAMETER '[]'
                      INTO LV_PARANAME_GD.
          IF &2 = '02'.
          CONCATENATE '(' LV_PROGNAME_GD ')%_O'
                    <LS_PARA>-PARAMETER '[]'
                    INTO LV_PARANAME_GD.
          ENDIF.
          ASSIGN (LV_PARANAME_GD) TO <LT_PARAFLD>.
          CHECK SY-SUBRC = 0.
          LS_HEAD-FDNAME = <LS_PARA>-PARAMETER.
          MOVE-CORRESPONDING LS_HEAD TO LV_HEAD.
          EXPORT LS_HEAD-FDNAME = <LT_PARAFLD> TO DATABASE ZLOGDATA(FL) FROM LV_HEAD ID LS_HEAD.
          CONCATENATE <LS_PARA>-PARAMETER '[]' INTO LV_PARANAME_GD.
        ENDLOOP.
    END-OF-DEFINITION.
    FORM ZLYLOG USING GV_FM LV_C LV_T.
    
      DATA:  LV_PNAME_GD         TYPE TFDIR-PNAME,
             LS_HEADER_GD        TYPE HEADER_FB,
             LT_TABLES_GD        TYPE RSFB_PARA,
             LT_IMPORT_GD        TYPE RSFB_PARA,
             LT_EXPORT_GD        TYPE RSFB_PARA,
             LT_CHANGE_GD        TYPE RSFB_PARA,
             LV_PROGNAME_GD      TYPE TRDIR-NAME,
             LV_PARANAME_GD(100).
    
      FIELD-SYMBOLS: <LS_PARA>    TYPE RSFBPARA,
                     <LV_PARAFLD> TYPE ANY,
                     <LV_PARAVAL> TYPE ANY,
                     <LT_PARAFLD> TYPE ANY TABLE,
                     <LT_PARAVAL> TYPE ANY TABLE.
    
    *  DATA:LS_HEAD TYPE TY_HEAD.
      LS_HEAD-NAME = GV_FM.
      LS_HEAD-ERDAT = SY-DATUM.
      LS_HEAD-ZEIT = SY-UZEIT.
      LS_HEAD-INDX = LV_C.
      LS_HEAD-RTYPE = LV_T.
      LS_HEAD-ERNAM = SY-UNAME.
    
      DATA:LV_HEAD TYPE ZLOGDATA.
    
      LS_HEADER_GD-NAME = GV_FM.
    
    *  read function-pool
      SELECT SINGLE PNAME
             FROM TFDIR
             INTO  LV_PNAME_GD
             WHERE FUNCNAME =  LS_HEADER_GD-NAME.
      CALL FUNCTION 'FUNCTION_INCLUDE_SPLIT'
        EXPORTING
          PROGRAM   = LV_PNAME_GD
        IMPORTING
          GROUP     = LS_HEADER_GD-AREA
          NAMESPACE = LS_HEADER_GD-NAMESPACE.
    
      LS_HEAD-AREA = LS_HEADER_GD-AREA.
    *  insert namespace (e.g. /AFS/)
      CONCATENATE LS_HEADER_GD-NAMESPACE LS_HEADER_GD-AREA
             INTO LS_HEADER_GD-AREA.
    *  read parameter of function module
      CALL METHOD CL_FB_PARAMETER_DB=>READ
        IMPORTING
          TABLES = LT_TABLES_GD[]
          IMPORT = LT_IMPORT_GD[]
          EXPORT = LT_EXPORT_GD[]
          CHANGE = LT_CHANGE_GD[]
        CHANGING
          HEADER = LS_HEADER_GD.
    
      LV_PROGNAME_GD =  LS_HEADER_GD-NAME.
      TRANSLATE  LV_PROGNAME_GD USING ' ='.
      LV_PROGNAME_GD+30 = 'FT'.
    
      LOOP AT  LT_IMPORT_GD ASSIGNING <LS_PARA>.
        CONCATENATE '(' LV_PROGNAME_GD ')%_I' <LS_PARA>-PARAMETER
                     INTO LV_PARANAME_GD.
        ASSIGN (LV_PARANAME_GD) TO <LV_PARAFLD>.
        CHECK SY-SUBRC = 0.
        LS_HEAD-FDNAME = <LS_PARA>-PARAMETER.
        MOVE-CORRESPONDING LS_HEAD TO LV_HEAD.
        EXPORT LS_HEAD-FDNAME = <LV_PARAFLD> TO DATABASE ZLOGDATA(FL) FROM LV_HEAD ID LS_HEAD.
      ENDLOOP.
    
      IF LV_C = '02'.
        LOOP AT  LT_EXPORT_GD ASSIGNING <LS_PARA>.
          CONCATENATE '(' LV_PROGNAME_GD ')%_O' <LS_PARA>-PARAMETER
                       INTO LV_PARANAME_GD.
          ASSIGN (LV_PARANAME_GD) TO <LV_PARAFLD>.
          CHECK SY-SUBRC = 0.
          LS_HEAD-FDNAME = <LS_PARA>-PARAMETER.
          MOVE-CORRESPONDING LS_HEAD TO LV_HEAD.
          EXPORT LS_HEAD-FDNAME = <LV_PARAFLD> TO DATABASE ZLOGDATA(FL) FROM LV_HEAD ID LS_HEAD.
        ENDLOOP.
      ENDIF.
      LOOP AT  LT_CHANGE_GD ASSIGNING <LS_PARA>.
        CONCATENATE '(' LV_PROGNAME_GD ')%_I' <LS_PARA>-PARAMETER
                     INTO LV_PARANAME_GD.
        ASSIGN (LV_PARANAME_GD) TO <LV_PARAFLD>.
        CHECK SY-SUBRC = 0.
        LS_HEAD-FDNAME = <LS_PARA>-PARAMETER.
        MOVE-CORRESPONDING LS_HEAD TO LV_HEAD.
        EXPORT LS_HEAD-FDNAME = <LV_PARAFLD> TO DATABASE ZLOGDATA(FL) FROM LV_HEAD ID LS_HEAD.
      ENDLOOP.
      LOOP AT  LT_TABLES_GD ASSIGNING <LS_PARA>.
        CONCATENATE '(' LV_PROGNAME_GD ')%_I'
                    <LS_PARA>-PARAMETER '[]'
                    INTO LV_PARANAME_GD.
        IF LV_C = '02'.
          CONCATENATE '(' LV_PROGNAME_GD ')%_O'
                    <LS_PARA>-PARAMETER '[]'
                    INTO LV_PARANAME_GD.
        ENDIF.
        ASSIGN (LV_PARANAME_GD) TO <LT_PARAFLD>.
        CHECK SY-SUBRC = 0.
        LS_HEAD-FDNAME = <LS_PARA>-PARAMETER.
        MOVE-CORRESPONDING LS_HEAD TO LV_HEAD.
        EXPORT LS_HEAD-FDNAME = <LT_PARAFLD> TO DATABASE ZLOGDATA(FL) FROM LV_HEAD ID LS_HEAD.
        CONCATENATE <LS_PARA>-PARAMETER '[]' INTO LV_PARANAME_GD.
      ENDLOOP.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  PRM_SELECT_DETAIL
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM PRM_SELECT_DETAIL .
      READ TABLE FDESC INDEX FDESC_INDEX.
      CHECK FDESC-TYPE = '%' OR FDESC-TYPE = 'h' OR FDESC-TYPE = 'T'.
      CASE FDESC-FTYPE+0(1).
        WHEN 'I'.
          READ TABLE LT_IMPORT_GD ASSIGNING <LS_PARA> WITH KEY PARAMETER = FDESC-NAME..
        WHEN 'C'.
          READ TABLE LT_CHANGE_GD ASSIGNING <LS_PARA> WITH KEY PARAMETER = FDESC-NAME..
        WHEN 'O'.
          READ TABLE LT_EXPORT_GD ASSIGNING <LS_PARA> WITH KEY PARAMETER = FDESC-NAME..
        WHEN 'T'.
          READ TABLE LT_TABLES_GD ASSIGNING <LS_PARA> WITH KEY PARAMETER = FDESC-NAME..
        WHEN OTHERS.
      ENDCASE.
    
      CHECK <LS_PARA> IS ASSIGNED.
    
      CREATE DATA DY_TABLE TYPE TABLE OF (<LS_PARA>-STRUCTURE).
      ASSIGN DY_TABLE->* TO <DYN_TABLE>.
      IF FDESC-FTYPE+0(1) = 'T'.
        ASSIGN <DYN_TABLE> TO <LV_PARAFLD>.
      ELSE.
        CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>.
        ASSIGN DY_LINE->* TO <LV_PARAFLD>.
      ENDIF.
    
      LOOP AT GT_TAB INTO GW_TAB WHERE NAME = GV_TAB-NAME AND ERDAT = GV_TAB-ERDAT
                                  AND   ZEIT = GV_TAB-ZEIT AND INDX = GV_TAB-INDX
                                  AND   ERNAM = GV_TAB-ERNAM AND AREA = GV_TAB-AREA AND FDNAME = <LS_PARA>-PARAMETER.
        MOVE-CORRESPONDING GW_TAB TO LS_HEAD.
        TRY .
            IMPORT LS_HEAD-FDNAME = <LV_PARAFLD> FROM DATABASE ZLOGDATA(FL) ID LS_HEAD IGNORING CONVERSION ERRORS .
          CATCH CX_SY_IMPORT_MISMATCH_ERROR.
            MESSAGE '函数结构已变更' TYPE 'S'.
        ENDTRY.
    
      ENDLOOP.
      CALL FUNCTION 'RS_COMPLEX_OBJECT_EDIT'
        EXPORTING
          OBJECT_NAME          = FDESC-NAME
          MODE                 = ' '
          INSERT_TAB           = 'X'
          UPPER_CASE           = 'X'
          POPUP                = ' '
    *     DISPLAY_ACCESSIBLE   = ' '
        CHANGING
          OBJECT               = <LV_PARAFLD>
        EXCEPTIONS
          OBJECT_NOT_SUPPORTED = 1.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  PRM_GET_INTERFACE_PARA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_GV_TAB_NAME  text
    *----------------------------------------------------------------------*
    FORM PRM_GET_INTERFACE_PARA  USING    P_GV_TAB_NAME.
      LS_HEADER_GD-NAME = P_GV_TAB_NAME.
      SELECT SINGLE PNAME
            FROM TFDIR
            INTO  LV_PNAME_GD
      WHERE FUNCNAME =  LS_HEADER_GD-NAME.
      CALL FUNCTION 'FUNCTION_INCLUDE_SPLIT'
        EXPORTING
          PROGRAM   = LV_PNAME_GD
        IMPORTING
          GROUP     = LS_HEADER_GD-AREA
          NAMESPACE = LS_HEADER_GD-NAMESPACE.
    
      LS_HEAD-AREA = LS_HEADER_GD-AREA.
    *  insert namespace (e.g. /AFS/)
      CONCATENATE LS_HEADER_GD-NAMESPACE LS_HEADER_GD-AREA
             INTO LS_HEADER_GD-AREA.
    
      CALL METHOD CL_FB_PARAMETER_DB=>READ
        IMPORTING
          TABLES = LT_TABLES_GD[]
          IMPORT = LT_IMPORT_GD[]
          EXPORT = LT_EXPORT_GD[]
          CHANGE = LT_CHANGE_GD[]
        CHANGING
          HEADER = LS_HEADER_GD.
    
      LV_PROGNAME_GD =  LS_HEADER_GD-NAME.
    ENDFORM.
    FORM APPENDHEAD USING TEXT WIDTH NO_OUT NO_ZERO JUSTIFIED.
      CELL_HEADER-HTEXT = TEXT.
      CELL_HEADER-WIDTH = WIDTH.
      CELL_HEADER-NO_OUT = NO_OUT.
      CELL_HEADER-NO_ZERO = NO_ZERO.
      CELL_HEADER-JUSTIFIED = JUSTIFIED.
      APPEND CELL_HEADER.
    ENDFORM.
    FORM WRITE_CELL TABLES HEADER STRUCTURE CELL_HEADER
                           ITEM TYPE STANDARD TABLE
                     USING   FISRTCOL.
      DATA:ULENGTH TYPE I,
           COL_NUM TYPE I.
      DATA:STR(1000),
           STR_IDX   TYPE STRING,
           F_INDEX   TYPE I.
      FIELD-SYMBOLS:<F_FIELD>.
    
      DESCRIBE TABLE HEADER LINES COL_NUM.
      LOOP AT HEADER WHERE NO_OUT = '' OR NO_OUT = 'Z'.
        ULENGTH = ULENGTH + HEADER-WIDTH + 1.
      ENDLOOP.
      ULENGTH = ULENGTH + 1.
    
      WRITE AT /FISRTCOL(ULENGTH) SY-ULINE.
    
      NEW-LINE.POSITION FISRTCOL.
      LOOP AT HEADER WHERE NO_OUT = '' OR NO_OUT = 'Z'.
        WRITE '|' NO-GAP.
        WRITE : AT (HEADER-WIDTH) HEADER-HTEXT CENTERED NO-GAP.
      ENDLOOP.
      WRITE '|' NO-GAP.
      WRITE AT /FISRTCOL(ULENGTH) SY-ULINE.
    
      LOOP AT ITEM.
        NEW-LINE.POSITION FISRTCOL.
    
    
        DO COL_NUM TIMES.
          READ TABLE HEADER INDEX SY-INDEX.
          ASSIGN COMPONENT SY-INDEX OF STRUCTURE ITEM TO <F_FIELD>.
          IF SY-SUBRC <> 0.
            EXIT.
          ELSE.
            STR_IDX = SY-INDEX.
            CONDENSE STR_IDX.
            F_INDEX = SY-INDEX - 1.
            IF HEADER-NO_OUT = ''.
              IF HEADER-NO_ZERO = 'X'.
                WRITE <F_FIELD> TO STR LEFT-JUSTIFIED.
              ENDIF.
              IF HEADER-JUSTIFIED = 'R'.
                WRITE : '|' NO-GAP,AT (HEADER-WIDTH) STR RIGHT-JUSTIFIED NO-GAP.
              ELSE.
                WRITE : '|' NO-GAP,AT (HEADER-WIDTH) STR LEFT-JUSTIFIED NO-GAP.
              ENDIF.
            ENDIF.
          ENDIF.
    
        ENDDO.
    
        WRITE '|' NO-GAP.
        WRITE AT /FISRTCOL(ULENGTH) SY-ULINE.
    
      ENDLOOP.
    
    ENDFORM.

    REPORT ZLYLOGP,显示:

    "
    REPORT ZLYLOGP NO STANDARD PAGE HEADING.
    INCLUDE ZLYLOG.
    DATA:GT_SHOW TYPE TABLE OF ZLOGDATA.
    
    DATA:GT_FIELDCAT TYPE LVC_T_FCAT.
    DATA GS_FIELDCAT LIKE LINE OF GT_FIELDCAT.
    DATA LS_LAYOUT TYPE LVC_S_LAYO.
    
    DEFINE APPEND_FIELDCAT .
      CLEAR GS_FIELDCAT.
      GS_FIELDCAT-FIELDNAME = &1.
      GS_FIELDCAT-SCRTEXT_L = &2.
      GS_FIELDCAT-OUTPUTLEN = &3.
      GS_FIELDCAT-NO_ZERO = &4.
      APPEND GS_FIELDCAT TO GT_FIELDCAT."GT_FIELDCAT.
    END-OF-DEFINITION.
    
    SELECTION-SCREEN:BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:S_NAME FOR ZLOGDATA-NAME.
    SELECT-OPTIONS:S_ERDAT FOR ZLOGDATA-ERDAT.
    SELECT-OPTIONS:S_ZEIT FOR ZLOGDATA-ZEIT.
    SELECT-OPTIONS:S_AREA FOR ZLOGDATA-AREA.
    SELECT-OPTIONS:S_ERNAM FOR ZLOGDATA-ERNAM.
    SELECTION-SCREEN END OF BLOCK BLK01.
    
    
    START-OF-SELECTION.
    
    
      SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_TAB
          FROM ZLOGDATA
          WHERE NAME IN S_NAME
          AND   ERDAT IN S_ERDAT
          AND   ZEIT  IN S_ZEIT
          AND   AREA  IN S_AREA
          AND   ERNAM IN S_ERNAM.
    
    
    
      CHECK GT_TAB[] IS NOT INITIAL.
    
      GT_SHOW[] = GT_TAB[].
    
      SORT GT_SHOW BY RELID AREA NAME ERDAT ZEIT INDX ERNAM.
      DELETE ADJACENT DUPLICATES FROM GT_SHOW COMPARING RELID AREA NAME ERDAT ZEIT INDX ERNAM.
    
    
      PERFORM PRM_SHOW.
    
    END-OF-SELECTION.
    
    
    
    AT LINE-SELECTION.
      PERFORM PRM_SELECT_DETAIL.
    
    TOP-OF-PAGE." DURING LINE-SELECTION.
      DATA:GV_STR TYPE STRING.
      DATA:GV_C(8) TYPE C.
      IF GV_TAB-INDX = '01'.
        GV_C = '传入参数'.
      ELSE.
        GV_C = '传出参数'.
      ENDIF.
      CONCATENATE '函数组:' GV_TAB-AREA '函数:' GV_TAB-NAME '用户' GV_TAB-ERNAM INTO GV_STR SEPARATED BY ' '.
      WRITE:GV_STR,GV_TAB-ERDAT,GV_TAB-ZEIT, SPACE, GV_C.
      ULINE /0(135).
    *&---------------------------------------------------------------------*
    *&      Form  PRM_SHOW
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM PRM_SHOW .
      PERFORM PRM_SET_FIELD.
    
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
        EXPORTING
          I_CALLBACK_PROGRAM       = SY-REPID
          IS_LAYOUT_LVC            = LS_LAYOUT
          IT_FIELDCAT_LVC          = GT_FIELDCAT[]
          I_CALLBACK_PF_STATUS_SET = 'PRM_SET_STATUS'
          I_CALLBACK_USER_COMMAND  = 'PRM_USER_COMMAND'
    *     I_STRUCTURE_NAME         = 'ZLOGDATA'
          I_DEFAULT                = 'X'
          I_SAVE                   = 'A'
        TABLES
          T_OUTTAB                 = GT_SHOW
        EXCEPTIONS
          PROGRAM_ERROR            = 1
          OTHERS                   = 2.
      IF SY-SUBRC <> 0.
    * Implement suitable error handling here
      ENDIF.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  PRM_SET_FIELD
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM PRM_SET_FIELD .
      REFRESH GT_FIELDCAT.
    *  LS_LAYOUT-CWIDTH_OPT    = 'X'. "优化列宽选项是否设置
      LS_LAYOUT-ZEBRA         = 'X'.
    
      APPEND_FIELDCAT:
                      'NAME'               '函数名称'             30      'X',
                      'AREA'               '函数组'               26     '',
                      'ERDAT'              '日期'                 10     'X',
                      'ZEIT'               '时间'                 8     'X',
                      'ERNAM'              '用户名'               16     'X',
                      'RTYPE'              '消息类型'             8     '',
                      'INDX'               '序号'                 5     'X',
                      'RTMSG'              '消息内容'             60     ''.
    ENDFORM.
    FORM PRM_SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB..
      SET PF-STATUS 'ZSTAT' EXCLUDING RT_EXTAB.
    ENDFORM.                    "PRM_SET_STATUS
    FORM PRM_USER_COMMAND USING P_UCOMM    LIKE SY-UCOMM
                            P_SELFIELD TYPE SLIS_SELFIELD.
    *  DATA:LV_DYN TYPE SY-DYNNR VALUE SY-DYNNR.
      IF P_UCOMM = '&IC1'.
        READ TABLE GT_SHOW INTO GV_TAB INDEX P_SELFIELD-TABINDEX.
        IF SY-SUBRC = 0.
          PERFORM PRM_GET_INTERFACE_PARA USING GV_TAB-NAME.
          PERFORM IN_IMPORT_INTERFACE USING GV_TAB-NAME."GET IMPORT INTERFACE
    *      PERFORM IN_DESCRIBE_INTERFACE USING GV_TAB-NAME."GET IDESC INTERFACE
          CALL SCREEN 9000."这个屏幕需要创建,空屏幕只包含一个PBO
          SET SCREEN 0500."这个是alv屏幕^_^
        ENDIF.
      ENDIF.
    ENDFORM.                    "PRM_USER_COMMAND
    *&---------------------------------------------------------------------*
    *&      Module  STATUS_9000  OUTPUT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    MODULE STATUS_9000 OUTPUT.
    *  SET PF-STATUS 'xxxxxxxx'.
    
    *  SET TITLEBAR 'xxx'.
      LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
      SET PF-STATUS SPACE.
      SUPPRESS DIALOG.
      PERFORM IN_DESCRIBE_INTERFACE USING GV_TAB-NAME."GET IDESC INTERFACE
    ENDMODULE.

    T-code使用日志

    https://archive.sap.com/discussions/thread/1450444

  • 相关阅读:
    查询sqlserver 表结构呀
    每日笔记---使用@ConfigurationProperties读取yml配置
    注解@Slf4j
    maven 环境变量 设置
    maven settings 设置
    如何配置Java环境变量
    SSH通过SSH代理连接到内网机器
    解决jenkins slave 中文乱码 encoding=ANSI_X3.4-1968
    netcore 获取本地网络IP地址
    centos7安装libgdiplus。netcore生成验证码,处理图片
  • 原文地址:https://www.cnblogs.com/sapSB/p/6600424.html
Copyright © 2011-2022 走看看