• 屏幕增强操作步骤


    屏幕增强操作步骤

    责任编辑:李倩作者:SAP网   2009-07-15   
     
    文本Tag: ABAP

    【IT168 技术文章】

        1. SMOD -> 按F4-> SAP Applications ->选择增强所在的模块->记住出口名称
        2. CMOD -> 创建项目用ZXXXX  -> 选enhancement assignments ,输入增强名称,回车 ->
        选择组件 ,双击Screen exit后的名称。-> 在PAI 中调用要显示的子屏幕,在属性中选择子屏幕,回到最初界面激活。
        3.在页面下调用现有内容页面,在PBO中写CALL SUBSCREEN AREA INCLUDING 'ZCO03' '0120'. 这里'ZCO03'是程序名,  '0120'是子屏幕号。
        在PAI中写CALL SUBSCREEN AREA.
        注意:找屏幕出口可以用程序:
        REPORT YSMOD2 .
        TABLES: MODSAP,MODACT, TSTC.
        PARAMETERS: INPUT1 LIKE TSTC-TCODE DEFAULT ' ',
        INPUT2 LIKE MODSAP-TYP DEFAULT ' '.
        DATA: SEARCH1(6),
        SEARCH2(3),
        SEARCH3 LIKE MODSAP-MEMBER.
        DATA : FIRST_ROW VALUE 'Y'.
        CONCATENATE: '%' INPUT1 '%' INTO SEARCH1,'%' INPUT2 INTO SEARCH2.
        SELECT * FROM TSTC WHERE TCODE LIKE SEARCH1.
        FIRST_ROW = 'Y'.
        CHECK TSTC-PGMNA NE SPACE.
        CONCATENATE '%' TSTC-PGMNA '%' INTO SEARCH3.
        SELECT * FROM MODSAP WHERE TYP LIKE SEARCH2 AND MEMBER LIKE SEARCH3.
        SELECT SINGLE * FROM MODACT WHERE MEMBER = MODSAP-NAME.IF FIRST_ROW EQ 'Y'.
        WRITE: /0 TSTC-TCODE, 6 TSTC-PGMNA, 16 MODSAP-NAME, 32 MODSAP-TYP,
        45 MODSAP-MEMBER, 70 MODACT-NAME.   FIRST_ROW = 'N'.ELSE.
        WRITE: /16 MODSAP-NAME, 32 MODSAP-TYP, 45 MODSAP-MEMBER, 70 MODACT-NAME.
        ENDIF.
        CLEAR : MODSAP, MODACT.ENDSELECT.
        IF SY-SUBRC NE 0.
        WRITE : /0 TSTC-TCODE, 6 TSTC-PGMNA, 30 'No exits found'.
        ENDIF.
        CLEAR TSTC.
        ENDSELECT.
        END-OF-SELECTION.
        CLEAR: SEARCH1, SEARCH2, SEARCH3.
        4.修改页面名称在菜单出口(Menu exit).
        路径:CMOD->输入项目名称->组件,双击菜单出口名称后,在函数文本中写入。如"客户出口".
        5. CMOD->输入项目名称->组件。双击功能退出后面的FUNCTION后,双击INCLUDE后的名称,在里面写入自己代码。写代码时,参考IMPORT,EXPORT里面的参数。如(出口名称PPCO0012)
        *&---------------------------------------------------------------------*
        *&  包括                ZXCO1U11
        *&---------------------------------------------------------------------*
        tables:CAUFVD,AFPOD,afpo.
        data: begin of itab occurs 0,
        kdauf like afpo-kdauf,
        kdpos like afpo-kdpos,
        end of itab.
        select kdauf  kdpos into table itab from afpo where aufnr = I_CAUFVD-aufnr.
        EXPORT ITAB TO MEMORY ID 'ID1'.
        SUBMIT ZCO03 AND RETURN.  注意:ZCO03是自己创建的程序.
        *包括 ZXCO1U11 中代码 到这里为止。
        注意:ZCO03中的屏幕属性选择子屏幕。
        ZCO03 代码如下:
        *&---------------------------------------------------------------------*
        *& Report  ZCO03
        *&
        *&---------------------------------------------------------------------*
        *&
        *&
        *&---------------------------------------------------------------------*
        REPORT  ZCO03.
        tables: afpo,caufvd.
        DATA: OK_CODE LIKE  SY-UCOMM.
        DATA: SAVE_OK LIKE SY-UCOMM.
        data aufnr like caufvd-aufnr.
        data: begin of itab occurs 0,
        kdauf like afpo-kdauf,
        kdpos like afpo-kdpos,
        end of itab.
        *&---------------------------------------------------------------------*
        *&      Module  STATUS_0120  OUTPUT
        *&---------------------------------------------------------------------*
        *       text
        *----------------------------------------------------------------------*
        *module STATUS_0120 output.
        **  SET PF-STATUS 'xxxxxxxx'.
        **  SET TITLEBAR 'xxx'.
        *
        *endmodule.                 " STATUS_0120  OUTPUT
        *INCLUDE ZCO03_USER_COMMAND_0120I01.
        *&SPWIZARD: DECLARATION OF TABLECONTROL 'ITA' ITSELF
        CONTROLS: ITA TYPE TABLEVIEW USING SCREEN 0120.
        *&SPWIZARD: LINES OF TABLECONTROL 'ITA'
        DATA:     G_ITA_LINES  LIKE SY-LOOPC.
        *&SPWIZARD: OUTPUT MODULE FOR TC 'ITA'. DO NOT CHANGE THIS LINE!
        *&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
        MODULE ITA_CHANGE_TC_ATTR OUTPUT.
        DESCRIBE TABLE ITAB LINES ITA-lines.
        ENDMODULE.
        *&SPWIZARD: OUTPUT MODULE FOR TC 'ITA'. DO NOT CHANGE THIS LINE!
        *&SPWIZARD: GET LINES OF TABLECONTROL
        MODULE ITA_GET_LINES OUTPUT.
        G_ITA_LINES = SY-LOOPC.
        ENDMODULE.
        *&SPWIZARD: INPUT MODULE FOR TC 'ITA'. DO NOT CHANGE THIS LINE!
        *&SPWIZARD: PROCESS USER COMMAND
        MODULE ITA_USER_COMMAND INPUT.
        OK_CODE = SY-UCOMM.
        PERFORM USER_OK_TC USING    'ITA'
        'ITAB'
        ' '
        CHANGING OK_CODE.
        SY-UCOMM = OK_CODE.
        ENDMODULE.
        *----------------------------------------------------------------------*
        *   INCLUDE TABLECONTROL_FORMS                                         *
        *----------------------------------------------------------------------*
        *&---------------------------------------------------------------------*
        *&      Form  USER_OK_TC                                               *
        *&---------------------------------------------------------------------*
        FORM USER_OK_TC USING    P_TC_NAME TYPE DYNFNAM
        P_TABLE_NAME
        P_MARK_NAME
        CHANGING P_OK      LIKE SY-UCOMM.
        *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
        DATA: L_OK              TYPE SY-UCOMM,
        L_OFFSET          TYPE I.
        *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
        *&SPWIZARD: Table control specific operations                          *
        *&SPWIZARD: evaluate TC name and operations                            *
        SEARCH P_OK FOR P_TC_NAME.
        IF SY-SUBRC <> 0.
        EXIT.
        ENDIF.
        L_OFFSET = STRLEN( P_TC_NAME ) + 1.
        L_OK = P_OK+L_OFFSET.
        *&SPWIZARD: execute general and TC specific operations                 *
        CASE L_OK.
        WHEN 'INSR'.                      "insert row
        PERFORM FCODE_INSERT_ROW USING    P_TC_NAME
        P_TABLE_NAME.
        CLEAR P_OK.
        WHEN 'DELE'.                      "delete row
        PERFORM FCODE_DELETE_ROW USING    P_TC_NAME
        P_TABLE_NAME
        P_MARK_NAME.
        CLEAR P_OK.
        WHEN 'P--' OR                     "top of list
        'P-'  OR                     "previous page
        'P+'  OR                     "next page
        'P++'.                       "bottom of list
        PERFORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME
        L_OK.
        CLEAR P_OK.
        *     WHEN 'L--'.                       "total left
        *       PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME.
        *
        *     WHEN 'L-'.                        "column left
        *       PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME.
        *
        *     WHEN 'R+'.                        "column right
        *       PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME.
        *
        *     WHEN 'R++'.                       "total right
        *       PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME.
        *
        WHEN 'MARK'.                      "mark all filled lines
        PERFORM FCODE_TC_MARK_LINES USING P_TC_NAME
        P_TABLE_NAME
        P_MARK_NAME   .
        CLEAR P_OK.
        WHEN 'DMRK'.                      "demark all filled lines
        PERFORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
        P_TABLE_NAME
        P_MARK_NAME .
        CLEAR P_OK.
        *     WHEN 'SASCEND'   OR
        *          'SDESCEND'.                  "sort column
        *       PERFORM FCODE_SORT_TC USING P_TC_NAME
        *                                   l_ok.
        ENDCASE.
        ENDFORM.                              " USER_OK_TC
        *&---------------------------------------------------------------------*
        *&      Form  FCODE_INSERT_ROW                                         *
        *&---------------------------------------------------------------------*
        FORM fcode_insert_row
        USING    P_TC_NAME           TYPE DYNFNAM
        P_TABLE_NAME             .
        *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
        DATA L_LINES_NAME       LIKE FELD-NAME.
        DATA L_SELLINE          LIKE SY-STEPL.
        DATA L_LASTLINE         TYPE I.
        DATA L_LINE             TYPE I.
        DATA L_TABLE_NAME       LIKE FELD-NAME.
        FIELD-SYMBOLS <TC>                 TYPE CXTAB_CONTROL.
        FIELD-SYMBOLS <TABLE>              TYPE STANDARD TABLE.
        FIELD-SYMBOLS <LINES>              TYPE I.
        *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
        ASSIGN (P_TC_NAME) TO <TC>.
        *&SPWIZARD: get the table, which belongs to the tc                     *
        CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
        ASSIGN (L_TABLE_NAME) TO <TABLE>.                "not headerline
        *&SPWIZARD: get looplines of TableControl                              *
        CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME.
        ASSIGN (L_LINES_NAME) TO <LINES>.
        *&SPWIZARD: get current line                                           *
        GET CURSOR LINE L_SELLINE.
        IF SY-SUBRC <> 0.                   " append line to table
        L_SELLINE = <TC>-LINES + 1.
        *&SPWIZARD: set top line                                               *
        IF L_SELLINE > <LINES>.
        <TC>-TOP_LINE = L_SELLINE - <LINES> + 1 .
        ELSE.
        <TC>-TOP_LINE = 1.
        ENDIF.
        ELSE.                               " insert line into table
        L_SELLINE = <TC>-TOP_LINE + L_SELLINE - 1.
        L_LASTLINE = <TC>-TOP_LINE + <LINES> - 1.
        ENDIF.
        *&SPWIZARD: set new cursor line                                        *
        L_LINE = L_SELLINE - <TC>-TOP_LINE + 1.
        *&SPWIZARD: insert initial line                                        *
        INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE.
        <TC>-LINES = <TC>-LINES + 1.
        *&SPWIZARD: set cursor                                                 *
        SET CURSOR LINE L_LINE.
        ENDFORM.                              " FCODE_INSERT_ROW
        *&---------------------------------------------------------------------*
        *&      Form  FCODE_DELETE_ROW                                         *
        *&---------------------------------------------------------------------*
        FORM fcode_delete_row
        USING    P_TC_NAME           TYPE DYNFNAM
        P_TABLE_NAME
        P_MARK_NAME   .
        *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
        DATA L_TABLE_NAME       LIKE FELD-NAME.
        FIELD-SYMBOLS <TC>         TYPE cxtab_control.
        FIELD-SYMBOLS <TABLE>      TYPE STANDARD TABLE.
        FIELD-SYMBOLS <WA>.
        FIELD-SYMBOLS <MARK_FIELD>.
        *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
        ASSIGN (P_TC_NAME) TO <TC>.
        *&SPWIZARD: get the table, which belongs to the tc                     *
        CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
        ASSIGN (L_TABLE_NAME) TO <TABLE>.                "not headerline
        *&SPWIZARD: delete marked lines                                        *
        DESCRIBE TABLE <TABLE> LINES <TC>-LINES.
        LOOP AT <TABLE> ASSIGNING <WA>.
        *&SPWIZARD: access to the component 'FLAG' of the table header         *
        ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
        IF <MARK_FIELD> = 'X'.
        DELETE <TABLE> INDEX SYST-TABIX.
        IF SY-SUBRC = 0.
        <TC>-LINES = <TC>-LINES - 1.
        ENDIF.
        ENDIF.
        ENDLOOP.
        ENDFORM.                              " FCODE_DELETE_ROW
        *&---------------------------------------------------------------------*
        *&      Form  COMPUTE_SCROLLING_IN_TC
        *&---------------------------------------------------------------------*
        *       text
        *----------------------------------------------------------------------*
        *      -->P_TC_NAME  name of tablecontrol
        *      -->P_OK       ok code
        *----------------------------------------------------------------------*
        FORM COMPUTE_SCROLLING_IN_TC USING    P_TC_NAME
        P_OK.
        *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
        DATA L_TC_NEW_TOP_LINE     TYPE I.
        DATA L_TC_NAME             LIKE FELD-NAME.
        DATA L_TC_LINES_NAME       LIKE FELD-NAME.
        DATA L_TC_FIELD_NAME       LIKE FELD-NAME.
        FIELD-SYMBOLS <TC>         TYPE cxtab_control.
        FIELD-SYMBOLS <LINES>      TYPE I.
        *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
        ASSIGN (P_TC_NAME) TO <TC>.
        *&SPWIZARD: get looplines of TableControl                              *
        CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME.
        ASSIGN (L_TC_LINES_NAME) TO <LINES>.
        *&SPWIZARD: is no line filled?                                         *
        IF <TC>-LINES = 0.
        *&SPWIZARD: yes, ...                                                   *
        L_TC_NEW_TOP_LINE = 1.
        ELSE.
        *&SPWIZARD: no, ...                                                    *
        CALL FUNCTION 'SCROLLING_IN_TABLE'
        EXPORTING
        ENTRY_ACT             = <TC>-TOP_LINE
        ENTRY_FROM            = 1
        ENTRY_TO              = <TC>-LINES
        LAST_PAGE_FULL        = 'X'
        LOOPS                 = <LINES>
        OK_CODE               = P_OK
        OVERLAPPING           = 'X'
        IMPORTING
        ENTRY_NEW             = L_TC_NEW_TOP_LINE
        EXCEPTIONS
        *              NO_ENTRY_OR_PAGE_ACT  = 01
        *              NO_ENTRY_TO           = 02
        *              NO_OK_CODE_OR_PAGE_GO = 03
        OTHERS                = 0.
        ENDIF.
        *&SPWIZARD: get actual tc and column                                   *
        GET CURSOR FIELD L_TC_FIELD_NAME
        AREA  L_TC_NAME.
        IF SYST-SUBRC = 0.
        IF L_TC_NAME = P_TC_NAME.
        *&SPWIZARD: et actual column                                           *
        SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.
        ENDIF.
        ENDIF.
        *&SPWIZARD: set the new top line                                       *
        <TC>-TOP_LINE = L_TC_NEW_TOP_LINE.
        ENDFORM.                              " COMPUTE_SCROLLING_IN_TC
        *&---------------------------------------------------------------------*
        *&      Form  FCODE_TC_MARK_LINES
        *&---------------------------------------------------------------------*
        *       marks all TableControl lines
        *----------------------------------------------------------------------*
        *      -->P_TC_NAME  name of tablecontrol
        *----------------------------------------------------------------------*
        FORM FCODE_TC_MARK_LINES USING P_TC_NAME
        P_TABLE_NAME
        P_MARK_NAME.
        *&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------*
        DATA L_TABLE_NAME       LIKE FELD-NAME.
        FIELD-SYMBOLS <TC>         TYPE cxtab_control.
        FIELD-SYMBOLS <TABLE>      TYPE STANDARD TABLE.
        FIELD-SYMBOLS <WA>.
        FIELD-SYMBOLS <MARK_FIELD>.
        *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
        ASSIGN (P_TC_NAME) TO <TC>.
        *&SPWIZARD: get the table, which belongs to the tc                     *
        CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
        ASSIGN (L_TABLE_NAME) TO <TABLE>.                "not headerline
        *&SPWIZARD: mark all filled lines                                      *
        LOOP AT <TABLE> ASSIGNING <WA>.
        *&SPWIZARD: access to the component 'FLAG' of the table header         *
        ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
        <MARK_FIELD> = 'X'.
        ENDLOOP.
        ENDFORM.                                          "fcode_tc_mark_lines
        *&---------------------------------------------------------------------*
        *&      Form  FCODE_TC_DEMARK_LINES
        *&---------------------------------------------------------------------*
        *       demarks all TableControl lines
        *----------------------------------------------------------------------*
        *      -->P_TC_NAME  name of tablecontrol
        *----------------------------------------------------------------------*
        FORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
        P_TABLE_NAME
        P_MARK_NAME .
        *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
        DATA L_TABLE_NAME       LIKE FELD-NAME.
        FIELD-SYMBOLS <TC>         TYPE cxtab_control.
        FIELD-SYMBOLS <TABLE>      TYPE STANDARD TABLE.
        FIELD-SYMBOLS <WA>.
        FIELD-SYMBOLS <MARK_FIELD>.
        *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
        ASSIGN (P_TC_NAME) TO <TC>.
        *&SPWIZARD: get the table, which belongs to the tc                     *
        CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
        ASSIGN (L_TABLE_NAME) TO <TABLE>.                "not headerline
        *&SPWIZARD: demark all filled lines                                    *
        LOOP AT <TABLE> ASSIGNING <WA>.
        *&SPWIZARD: access to the component 'FLAG' of the table header         *
        ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
        <MARK_FIELD> = SPACE.
        ENDLOOP.
        ENDFORM.                                          "fcode_tc_mark_lines
        *&---------------------------------------------------------------------*
        *&      Module  STATUS_0120  OUTPUT
        *&---------------------------------------------------------------------*
        *       text
        *----------------------------------------------------------------------*
        module STATUS_0120 output.
        *  SET PF-STATUS 'xxxxxxxx'.
        *  SET TITLEBAR 'xxx'.
        IMPORT ITAB   FROM MEMORY ID 'ID1'.
        endmodule.                 " STATUS_0120  OUTPUT
        *&---------------------------------------------------------------------*
        *&      Module  USER_COMMAND_0120  INPUT
        *&---------------------------------------------------------------------*
        *       text
        *----------------------------------------------------------------------*
        module USER_COMMAND_0120 input.
        endmodule.                 " USER_COMMAND_0120  INPUT
        注意:在屏幕的属性里面要选子屏幕。
        最后,激活所有东西。

  • 相关阅读:
    正则表达式(验证账号密码邮箱身份证)
    JS Fetch
    事件流动
    JS DOM和BOM
    CSS的定位
    For each...in / For...in / For...of 的解释和例子
    CSS的gridlayout
    CSS position属性
    CSS的颜色
    twelfth week
  • 原文地址:https://www.cnblogs.com/goodsmith/p/3596735.html
Copyright © 2020-2023  润新知