您的位置:首页 > 其它

UPSPL清单 ALV输出

2017-04-17 15:15 766 查看

UPSPL里看到这些计划文件夹,只能一个一个看。

公司的权限管理是基于计划文件夹的,也就是你要把某个表单的权限分配给用户,此表单的所有上级目录都要同时分配给用户,否则他啥也看不到。

特别是再去维护个技术文档或权限文档啥的,比较麻烦,简直要亲命了。

终于有时间自己搞一个程序,ALV输出,所有上级目录一目了然,复制粘贴,筛选排序,一次满足所有分析需求。

UPSPL里看到是这样的:



程序输出后是这样的:(最多支持9层深的目录结构)

SN是根据文件或文件夹所处的层次及本层排位来确定的。LV就是目录的深度。



可以复制代码执行出来去和UPSPL里对照看。

复制之后需要从FunctionGroup
KKBL中复制一个 STANDARD_FULLSCREEN 状态条过来



不然下面这些小按钮出不来



以下是ABAP代码:

REPORT  ZBPS_FOLDER_LIST.

TABLES:UPB_PS_NAME,UPB_PS_NAME_T.
TYPE-POOLS: slis.
DATA: it_fieldcat    TYPE slis_t_fieldcat_alv.
DATA: i_layout       TYPE slis_layout_alv.
DATA: I_SORT  TYPE  SLIS_T_SORTINFO_ALV.

DATA GT_FOLDER TYPE TABLE OF UPB_PS_NAME .
FIELD-SYMBOLS <FS_FOLDER> LIKE LINE OF GT_FOLDER.

DATA GT_FOLDER1 TYPE TABLE OF UPB_PS_NAME .
FIELD-SYMBOLS <FS_FOLDER1> LIKE LINE OF GT_FOLDER1.

DATA: BEGIN OF GS_ALV,

  LV TYPE I,

  LV1 LIKE UPB_PS_NAME-NAME,

  LV2 LIKE UPB_PS_NAME-NAME,

  LV3 LIKE UPB_PS_NAME-NAME,

  LV4 LIKE UPB_PS_NAME-NAME,

  LV5 LIKE UPB_PS_NAME-NAME,

  LV6 LIKE UPB_PS_NAME-NAME,

  LV7 LIKE UPB_PS_NAME-NAME,

  LV8 LIKE UPB_PS_NAME-NAME,

  LV9 LIKE UPB_PS_NAME-NAME,

  SN(18) TYPE C,

  NAME TYPE UPB_PS_NAME-NAME,

  TEXT TYPE UPB_Y_PS_NAMETXT,

  SEL TYPE C,

  TEXT1 TYPE UPB_Y_PS_NAMETXT,

  TEXT2 TYPE UPB_Y_PS_NAMETXT,

  TEXT3 TYPE UPB_Y_PS_NAMETXT,

  TEXT4 TYPE UPB_Y_PS_NAMETXT,

  TEXT5 TYPE UPB_Y_PS_NAMETXT,

  TEXT6 TYPE UPB_Y_PS_NAMETXT,

  TEXT7 TYPE UPB_Y_PS_NAMETXT,

  TEXT8 TYPE UPB_Y_PS_NAMETXT,

  TEXT9 TYPE UPB_Y_PS_NAMETXT,

END OF GS_ALV.
FIELD-SYMBOLS <FS_ALV> LIKE GS_ALV.
FIELD-SYMBOLS <FS_ALVTMP> LIKE GS_ALV.
DATA GT_ALV LIKE TABLE OF GS_ALV .

DATA GS_ALV_TMP LIKE GS_ALV.
DATA ALV1 LIKE TABLE OF GS_ALV .
DATA ALV2 LIKE TABLE OF GS_ALV .
DATA ALV3 LIKE TABLE OF GS_ALV .
DATA ALV4 LIKE TABLE OF GS_ALV .
DATA ALV5 LIKE TABLE OF GS_ALV .
DATA ALV6 LIKE TABLE OF GS_ALV .
DATA ALV7 LIKE TABLE OF GS_ALV .
DATA ALV8 LIKE TABLE OF GS_ALV .
DATA ALV9 LIKE TABLE OF GS_ALV .

DATA GS_ALV1 LIKE GS_ALV.
DATA GS_ALV2 LIKE GS_ALV.
DATA GS_ALV3 LIKE GS_ALV.
DATA GS_ALV4 LIKE GS_ALV.
DATA GS_ALV5 LIKE GS_ALV.
DATA GS_ALV6 LIKE GS_ALV.
DATA GS_ALV7 LIKE GS_ALV.
DATA GS_ALV8 LIKE GS_ALV.
DATA GS_ALV9 LIKE GS_ALV.

DATA lt_pm_name TYPE upb_yt_pm_name.
DATA GS_FOLDER LIKE LINE OF lt_pm_name.
FIELD-SYMBOLS <FS1> LIKE GS_FOLDER.

DATA FOLDER1 LIKE TABLE OF GS_FOLDER .
DATA FOLDER2 LIKE TABLE OF GS_FOLDER .
DATA FOLDER3 LIKE TABLE OF GS_FOLDER .
DATA FOLDER4 LIKE TABLE OF GS_FOLDER .
DATA FOLDER5 LIKE TABLE OF GS_FOLDER .
DATA FOLDER6 LIKE TABLE OF GS_FOLDER .
DATA FOLDER7 LIKE TABLE OF GS_FOLDER .
DATA FOLDER8 LIKE TABLE OF GS_FOLDER .
DATA FOLDER9 LIKE TABLE OF GS_FOLDER .

    DATA: BEGIN OF STR,

      S1 TYPE CHAR2 VALUE '00',

      S2 TYPE CHAR2 VALUE '00',

      S3 TYPE CHAR2 VALUE '00',

      S4 TYPE CHAR2 VALUE '00',

      S5 TYPE CHAR2 VALUE '00',

      S6 TYPE CHAR2 VALUE '00',

      S7 TYPE CHAR2 VALUE '00',

      S8 TYPE CHAR2 VALUE '00',

      S9 TYPE CHAR2 VALUE '00'.

    DATA END OF STR.

  DATA ZGET TYPE FLAG .

  DATA ZLASTNAME TYPE UPB_Y_PS_NAME .

PARAMETERS P_ALV TYPE C RADIOBUTTON GROUP R1.
PARAMETERS P_TRE TYPE C RADIOBUTTON GROUP R1.

START-OF-SELECTION.
IF P_ALV = 'X'.
PERFORM PREPARE_ALV.
PERFORM show_data.
ENDIF.
IF P_TRE = 'X'.
CALL FUNCTION 'UPB_PM_MAIN'

  EXPORTING

    I_APPLC              = 'UPS'

    I_DISPLAY_ONLY       = 'X'
*   I_EXECUTE_ONLY       =
*   I_PM_NAME            = '~P0022'
*   I_USE_BSP            =
* EXCEPTIONS
*   INVALID_APPLC        = 1
*   NO_ENTRY             = 2
*   OTHERS               = 3

          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDIF.

FORM PREPARE_ALV.

  CALL FUNCTION 'UPB_PM_GET_PLAN_MAPS'

    EXPORTING

     I_APPLC                  = 'UPS'

     I_ONLY_MAIN_AREA         = ''

     I_GET_ALL                = 'X'

   IMPORTING

     ET_PM_NAMES              = lt_pm_name

   EXCEPTIONS

     NOENTRY                  = 1

     INVALID_APPLC            = 2

     OTHERS                   = 3

            .

  IF SY-SUBRC <> 0.

  ENDIF.

*  BREAK-POINT.

  SORT lt_pm_name BY PREVPM.

  PERFORM SUB_FOLDERS_LV1.

  PERFORM SUB_FOLDERS_LV TABLES FOLDER1 FOLDER2 ."

  PERFORM SUB_FOLDERS_LV TABLES FOLDER2 FOLDER3 ."

  PERFORM SUB_FOLDERS_LV TABLES FOLDER3 FOLDER4 ."

  PERFORM SUB_FOLDERS_LV TABLES FOLDER4 FOLDER5 ."

  PERFORM SUB_FOLDERS_LV TABLES FOLDER5 FOLDER6 ."

  PERFORM SUB_FOLDERS_LV TABLES FOLDER6 FOLDER7 ."

  PERFORM SUB_FOLDERS_LV TABLES FOLDER7 FOLDER8 ."

  PERFORM SUB_FOLDERS_LV TABLES FOLDER8 FOLDER9 ."

  DATA ZSN TYPE I VALUE 0 .

  PERFORM SUB_ALV TABLES FOLDER1 ALV1 USING 1.

  PERFORM SUB_ALV TABLES FOLDER2 ALV2 USING 2.

  PERFORM SUB_ALV TABLES FOLDER3 ALV3 USING 3.

  PERFORM SUB_ALV TABLES FOLDER4 ALV4 USING 4.

  PERFORM SUB_ALV TABLES FOLDER5 ALV5 USING 5.

  PERFORM SUB_ALV TABLES FOLDER6 ALV6 USING 6.

  PERFORM SUB_ALV TABLES FOLDER7 ALV7 USING 7.

  PERFORM SUB_ALV TABLES FOLDER8 ALV8 USING 8.

  PERFORM SUB_ALV TABLES FOLDER9 ALV9 USING 9.

  LOOP AT ALV1 INTO GS_ALV1.

    STR+2(16) = ''.

    PERFORM SUB_FILL2 CHANGING STR-S1 .

    GS_ALV1-SN = STR.

    APPEND GS_ALV1 TO GT_ALV.

    LOOP AT ALV2 INTO GS_ALV2 WHERE LV1 = GS_ALV1-NAME.

      STR+4(14) = ''.

      PERFORM SUB_FILL2 CHANGING STR-S2 .

      GS_ALV2-SN = STR.

      APPEND GS_ALV2 TO GT_ALV.

      LOOP AT ALV3 INTO GS_ALV3 WHERE LV2 = GS_ALV2-NAME.

        STR+6(12) = ''.

        PERFORM SUB_FILL2 CHANGING STR-S3 .

        GS_ALV3-SN = STR.

        APPEND GS_ALV3 TO GT_ALV.

        LOOP AT ALV4 INTO GS_ALV4 WHERE LV3 = GS_ALV3-NAME.

          STR+8(10) = ''.

          PERFORM SUB_FILL2 CHANGING STR-S4 .

          GS_ALV4-SN = STR.

          APPEND GS_ALV4 TO GT_ALV.

          LOOP AT ALV5 INTO GS_ALV5 WHERE LV4 = GS_ALV4-NAME.

            STR+10(8) = ''.

            PERFORM SUB_FILL2 CHANGING STR-S5 .

            GS_ALV5-SN = STR.

            APPEND GS_ALV5 TO GT_ALV.

            LOOP AT ALV6 INTO GS_ALV6 WHERE LV5 = GS_ALV5-NAME.

              STR+12(6) = ''.

              PERFORM SUB_FILL2 CHANGING STR-S6 .

              GS_ALV6-SN = STR.

              APPEND GS_ALV6 TO GT_ALV.

              LOOP AT ALV7 INTO GS_ALV7 WHERE LV6 = GS_ALV6-NAME.

                STR+14(4) = ''.

                PERFORM SUB_FILL2 CHANGING STR-S7 .

                GS_ALV7-SN = STR.

                APPEND GS_ALV7 TO GT_ALV.

                LOOP AT ALV8 INTO GS_ALV8 WHERE LV7 = GS_ALV7-NAME.

                  STR+16(2) = ''.

                  PERFORM SUB_FILL2 CHANGING STR-S8 .

                  GS_ALV8-SN = STR.

                  APPEND GS_ALV8 TO GT_ALV.

                  LOOP AT ALV9 INTO GS_ALV9 WHERE LV8 = GS_ALV8-NAME.

                    PERFORM SUB_FILL2 CHANGING STR-S9 .

                    GS_ALV9-SN = STR.

                    APPEND GS_ALV9 TO GT_ALV.

                  ENDLOOP.

                ENDLOOP.

              ENDLOOP.

            ENDLOOP.

          ENDLOOP.

        ENDLOOP.

      ENDLOOP.

    ENDLOOP.

  ENDLOOP.

  DATA ZINDEX LIKE SY-TABIX.

  LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE LV = 3.

    READ TABLE GT_ALV ASSIGNING <FS_ALVTMP> WITH KEY LV2 = <FS_ALV>-LV2 LV3 = '' .

    <FS_ALV>-LV1 = <FS_ALVTMP>-LV1.

  ENDLOOP.

  LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE LV = 4.

    READ TABLE GT_ALV ASSIGNING <FS_ALVTMP> WITH KEY LV3 = <FS_ALV>-LV3 LV4 = '' .

    <FS_ALV>-LV1 = <FS_ALVTMP>-LV1.

    <FS_ALV>-LV2 = <FS_ALVTMP>-LV2.

  ENDLOOP.

  LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE LV = 5.

    READ TABLE GT_ALV ASSIGNING <FS_ALVTMP> WITH KEY LV4 = <FS_ALV>-LV4 LV5 = '' .

    <FS_ALV>-LV1 = <FS_ALVTMP>-LV1.

    <FS_ALV>-LV2 = <FS_ALVTMP>-LV2.

    <FS_ALV>-LV3 = <FS_ALVTMP>-LV3.

  ENDLOOP.

  LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE LV = 6.

    READ TABLE GT_ALV ASSIGNING <FS_ALVTMP> WITH KEY LV5 = <FS_ALV>-LV5 LV6 = '' .

    <FS_ALV>-LV1 = <FS_ALVTMP>-LV1.

    <FS_ALV>-LV2 = <FS_ALVTMP>-LV2.

    <FS_ALV>-LV3 = <FS_ALVTMP>-LV3.

    <FS_ALV>-LV4 = <FS_ALVTMP>-LV4.

  ENDLOOP.

  LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE LV = 7.

    READ TABLE GT_ALV ASSIGNING <FS_ALVTMP> WITH KEY LV6 = <FS_ALV>-LV6 LV7 = '' .

    <FS_ALV>-LV1 = <FS_ALVTMP>-LV1.

    <FS_ALV>-LV2 = <FS_ALVTMP>-LV2.

    <FS_ALV>-LV3 = <FS_ALVTMP>-LV3.

    <FS_ALV>-LV4 = <FS_ALVTMP>-LV4.

    <FS_ALV>-LV5 = <FS_ALVTMP>-LV5.

  ENDLOOP.

  LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE LV = 8.

    READ TABLE GT_ALV ASSIGNING <FS_ALVTMP> WITH KEY LV7 = <FS_ALV>-LV7 LV8 = '' .

    <FS_ALV>-LV1 = <FS_ALVTMP>-LV1.

    <FS_ALV>-LV2 = <FS_ALVTMP>-LV2.

    <FS_ALV>-LV3 = <FS_ALVTMP>-LV3.

    <FS_ALV>-LV4 = <FS_ALVTMP>-LV4.

    <FS_ALV>-LV5 = <FS_ALVTMP>-LV5.

    <FS_ALV>-LV6 = <FS_ALVTMP>-LV6.

  ENDLOOP.

  LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE LV = 9.

    READ TABLE GT_ALV ASSIGNING <FS_ALVTMP> WITH KEY LV8 = <FS_ALV>-LV8 LV9 = '' .

    <FS_ALV>-LV1 = <FS_ALVTMP>-LV1.

    <FS_ALV>-LV2 = <FS_ALVTMP>-LV2.

    <FS_ALV>-LV3 = <FS_ALVTMP>-LV3.

    <FS_ALV>-LV4 = <FS_ALVTMP>-LV4.

    <FS_ALV>-LV5 = <FS_ALVTMP>-LV5.

    <FS_ALV>-LV6 = <FS_ALVTMP>-LV6.

    <FS_ALV>-LV7 = <FS_ALVTMP>-LV7.

  ENDLOOP.

  SORT lt_pm_name BY NAME.

  LOOP AT GT_ALV ASSIGNING <FS_ALV>.

    READ TABLE lt_pm_name ASSIGNING <FS1> BINARY SEARCH WITH KEY

    NAME = <FS_ALV>-LV1.

    IF SY-SUBRC = 0.

      <FS_ALV>-TEXT1 = <FS1>-TEXT.

    ENDIF.

    READ TABLE lt_pm_name ASSIGNING <FS1> BINARY SEARCH WITH KEY

    NAME = <FS_ALV>-LV2.

    IF SY-SUBRC = 0.

      <FS_ALV>-TEXT2 = <FS1>-TEXT.

    ENDIF.

    READ TABLE lt_pm_name ASSIGNING <FS1> BINARY SEARCH WITH KEY

    NAME = <FS_ALV>-LV3.

    IF SY-SUBRC = 0.

      <FS_ALV>-TEXT3 = <FS1>-TEXT.

    ENDIF.

    READ TABLE lt_pm_name ASSIGNING <FS1> BINARY SEARCH WITH KEY

    NAME = <FS_ALV>-LV4.

    IF SY-SUBRC = 0.

      <FS_ALV>-TEXT4 = <FS1>-TEXT.

    ENDIF.

    READ TABLE lt_pm_name ASSIGNING <FS1> BINARY SEARCH WITH KEY

    NAME = <FS_ALV>-LV5.

    IF SY-SUBRC = 0.

      <FS_ALV>-TEXT5 = <FS1>-TEXT.

    ENDIF.

    READ TABLE lt_pm_name ASSIGNING <FS1> BINARY SEARCH WITH KEY

    NAME = <FS_ALV>-LV6.

    IF SY-SUBRC = 0.

      <FS_ALV>-TEXT6 = <FS1>-TEXT.

    ENDIF.

    READ TABLE lt_pm_name ASSIGNING <FS1> BINARY SEARCH WITH KEY

    NAME = <FS_ALV>-LV7.

    IF SY-SUBRC = 0.

      <FS_ALV>-TEXT7 = <FS1>-TEXT.

    ENDIF.

    READ TABLE lt_pm_name ASSIGNING <FS1> BINARY SEARCH WITH KEY

    NAME = <FS_ALV>-LV8.

    IF SY-SUBRC = 0.

      <FS_ALV>-TEXT8 = <FS1>-TEXT.

    ENDIF.

    READ TABLE lt_pm_name ASSIGNING <FS1> BINARY SEARCH WITH KEY

    NAME = <FS_ALV>-LV9.

    IF SY-SUBRC = 0.

      <FS_ALV>-TEXT9 = <FS1>-TEXT.

    ENDIF.

  ENDLOOP.
ENDFORM.

  FORM SUB_ALV

    TABLES FOLDERS STRUCTURE GS_FOLDER

           ALV STRUCTURE GS_ALV

    USING LEVEL .
*    DATA ZTIMES TYPE I .

    FIELD-SYMBOLS <COLNAME>.

    FIELD-SYMBOLS <COLNAME1>.

    FIELD-SYMBOLS <COLNAME2>.

    DATA ZCOL TYPE I.

    DATA ZCOL1 TYPE I.

    DATA ZCOL2 TYPE I.

    DATA ZLASTFOLDER TYPE UPB_Y_PS_NAME .

    FIELD-SYMBOLS <F_CHAR2> TYPE CHAR2.

*    ZTIMES = LEVEL - 1.

    ZCOL1 = LEVEL  .

    ZCOL2 = LEVEL + 1 .

*    ASSIGN COMPONENT ZCOL1 OF STRUCTURE STR TO <F_CHAR2>.

    LOOP AT FOLDERS ASSIGNING <FS1>.

      ASSIGN COMPONENT ZCOL2 OF STRUCTURE GS_ALV TO <COLNAME2>.

      <COLNAME2> = <FS1>-NAME.

      IF <COLNAME2>(2) = '~C'.

        <COLNAME2>(2) = '~P'.

      ENDIF.

      IF LEVEL > 1.

        ASSIGN COMPONENT ZCOL1 OF STRUCTURE GS_ALV TO <COLNAME1>.

        <COLNAME1> = <FS1>-PREVPM.

        IF <COLNAME1>(2) = '~C'.

          <COLNAME1>(2) = '~P'.

        ENDIF.

        ZLASTFOLDER = <COLNAME1>.

        IF <COLNAME1>(1) NE '~'.

          <COLNAME1> = ZLASTFOLDER .

        ENDIF.

      ENDIF.

      GS_ALV-LV = LEVEL .

      GS_ALV-NAME = <FS1>-NAME .

      GS_ALV-TEXT = <FS1>-TEXT .
*      ADD 1 TO <F_CHAR2>.
*      IF <F_CHAR2> = 99 .
*        <F_CHAR2> = 00 .
*      ENDIF.
*      GS_ALV-SN = STR.

      APPEND GS_ALV TO ALV .

      CLEAR GS_ALV.

    ENDLOOP.
*  STR = '000000000000000000'.

  ENDFORM.

FORM SUB_FOLDERS_LV1 .

  READ TABLE lt_pm_name BINARY SEARCH ASSIGNING <FS1> WITH KEY PREVPM = ''.

  IF SY-SUBRC = 0.

    ZGET = 'X'.

    ZLASTNAME = <FS1>-NAME.

    APPEND <FS1> TO FOLDER1.

  ELSE.

    ZGET = ''.

  ENDIF.

  "依次取出第一层的所有子节点

  WHILE ZGET = 'X'.

    READ TABLE lt_pm_name BINARY SEARCH ASSIGNING <FS1> WITH KEY PREVPM = ZLASTNAME .

    IF SY-SUBRC = 0.

      ZGET = 'X'.

      ZLASTNAME = <FS1>-NAME.

      APPEND <FS1> TO FOLDER1.

    ELSE.

      ZGET = ''.

    ENDIF.

  ENDWHILE.
ENDFORM.
FORM SUB_FOLDERS_LV TABLES FARHER STRUCTURE GS_FOLDER SON STRUCTURE GS_FOLDER .

  DATA GS_FOLDER_TMP LIKE GS_FOLDER.

  DATA ZFATHER TYPE UPB_PS_NAME-NAME.

  LOOP AT FARHER INTO GS_FOLDER WHERE NAME(2) = '~P' .

    ZLASTNAME = GS_FOLDER-NAME.

    ZLASTNAME(2) = '~C'.

    ZFATHER = GS_FOLDER-NAME.

    "首先取目录下第一个子节点

    READ TABLE lt_pm_name BINARY SEARCH ASSIGNING <FS1> WITH KEY PREVPM = ZLASTNAME .

    IF SY-SUBRC = 0.

      ZGET = 'X'.

      ZLASTNAME = <FS1>-NAME.

      APPEND <FS1> TO SON.

    ELSE.

      ZGET = ''.

    ENDIF.

    "然后依次取第二个及以后的子节点

    WHILE ZGET = 'X'.

      READ TABLE lt_pm_name BINARY SEARCH ASSIGNING <FS1> WITH KEY PREVPM = ZLASTNAME .

      IF SY-SUBRC = 0.

        ZGET = 'X'.

        ZLASTNAME = <FS1>-NAME.

        GS_FOLDER_TMP = <FS1> .

        GS_FOLDER_TMP-PREVPM = ZFATHER .

        APPEND GS_FOLDER_TMP TO SON.

      ELSE.

        ZGET = ''.

      ENDIF.

    ENDWHILE.

  ENDLOOP.
ENDFORM.
FORM show_data .

  PERFORM build_fieldcat.

  PERFORM build_layout.

  PERFORM build_sort.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program       = sy-cprog

      i_callback_pf_status_set = 'SET_PF_STATUS'

      i_callback_user_command  = 'FRM_USER_COMMAND'

      is_layout                = i_layout

      it_fieldcat              = it_fieldcat

      IT_SORT                   = I_SORT

    TABLES

      t_outtab                 = GT_ALV[]

    EXCEPTIONS

      program_error            = 1

      OTHERS                   = 2.

  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

ENDFORM.
FORM build_fieldcat .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'SN' 'SN' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV' 'LV' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'NAME' 'NAME' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT' 'TEXT' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV1' 'LV1' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT1' 'TEXT1' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV2' 'LV2' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT2' 'TEXT2' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV3' 'LV3' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT3' 'TEXT3' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV4' 'LV4' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT4' 'TEXT4' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV5' 'LV5' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT5' 'TEXT5' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV6' 'LV6' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT6' 'TEXT6' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV7' 'LV7' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT7' 'TEXT7' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV8' 'LV8' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT8' 'TEXT8' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'LV9' 'LV9' '' 'L' .
PERFORM sub_fill_fieldcat_alv TABLES it_fieldcat USING '' '' 'TEXT9' 'TEXT9' '' 'L' .

ENDFORM.
FORM build_layout .

  i_layout-zebra                = 'X'.

  i_layout-colwidth_optimize    = 'X'.

  i_layout-detail_popup         = 'X'.

  i_layout-detail_initial_lines = 'X'.

  i_layout-box_fieldname = 'SEL'.
ENDFORM.
FORM sub_fill_fieldcat_alv  TABLES lt_fieldcat TYPE slis_t_fieldcat_alv

  USING ref_tabname ref_fieldname fieldname fieldlabel p_hotspot p_just.

  DATA: ws_fieldcat TYPE slis_fieldcat_alv .

  DATA: w_col_pos TYPE i.

*  ws_fieldcat-tabname = 'GT_ALV'.

  w_col_pos = w_col_pos + 1.

  CLEAR ws_fieldcat.

  IF ref_tabname <> space.

    ws_fieldcat-ref_tabname = ref_tabname.

  ENDIF.

  IF ref_fieldname <> space.

    ws_fieldcat-ref_fieldname = ref_fieldname.

  ENDIF.

  ws_fieldcat-fieldname = fieldname.

  IF fieldlabel <> space.

    ws_fieldcat-seltext_l = fieldlabel.

    ws_fieldcat-seltext_m = fieldlabel.

    ws_fieldcat-seltext_s = fieldlabel.

    ws_fieldcat-ddictxt = 'M'.

    ws_fieldcat-reptext_ddic = fieldlabel.

  ENDIF.

  ws_fieldcat-key = space.

  ws_fieldcat-do_sum = space.

  ws_fieldcat-col_pos = w_col_pos.

  ws_fieldcat-no_out = space.

  ws_fieldcat-hotspot = p_hotspot.

  ws_fieldcat-just = p_just.

  APPEND ws_fieldcat TO lt_fieldcat .
ENDFORM.                    " sub_fill_fieldcat_alv

FORM set_pf_status USING  extab TYPE slis_t_extab.

  SET PF-STATUS 'STANDARD_FULLSCREEN' .

ENDFORM.                    "SET_PF_STATUS

FORM frm_user_command USING r_ucomm LIKE sy-ucomm

                           selfield TYPE slis_selfield.

  CASE r_ucomm.

    WHEN  '&F03' OR '&F15' OR '&F12'.

    WHEN OTHERS.

  ENDCASE.
***&刷新
*  selfield-refresh = 'X'.
ENDFORM.
FORM BUILD_SORT .

  DATA L_SORT TYPE slis_sortinfo_alv .
*  L_SORT-spos  = 0 .
*
*    ADD 1 TO L_SORT-spos .
*    L_SORT-fieldname = 'BNAME' .
*    APPEND L_SORT TO I_SORT.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  SUB_FILL2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_STR_S1  text
*----------------------------------------------------------------------*
FORM SUB_FILL2  CHANGING S.

  ADD 1 TO S .

  IF S <= 9.

    CONCATENATE '0' S INTO S.

  ENDIF.
ENDFORM.                    " SUB_FILL2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UPSPL ALV BPS