SAP开发总结.docx

上传人:b****9 文档编号:23345705 上传时间:2023-05-16 格式:DOCX 页数:46 大小:86.11KB
下载 相关 举报
SAP开发总结.docx_第1页
第1页 / 共46页
SAP开发总结.docx_第2页
第2页 / 共46页
SAP开发总结.docx_第3页
第3页 / 共46页
SAP开发总结.docx_第4页
第4页 / 共46页
SAP开发总结.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

SAP开发总结.docx

《SAP开发总结.docx》由会员分享,可在线阅读,更多相关《SAP开发总结.docx(46页珍藏版)》请在冰豆网上搜索。

SAP开发总结.docx

SAP开发总结

1.权限字段检查

 AUTHORITY-CHECK OBJECT 'YMFIAVKORG'

           ID 'YMFIVKORG' FIELD GS_USERINFOS-VKORG.

METHOD authority_check.

  AUTHORITY-CHECK OBJECT 'S_ALV_LAYO'

           ID 'ACTVT' FIELD '23'.

  IF sy-subrc <> 0.

    IF NOT handle IS INITIAL.

      IF NOT log_group IS INITIAL.

        AUTHORITY-CHECK OBJECT 'S_ALV_LAYR'

                 ID 'ACTVT'     FIELD '23'

                 ID 'REPORT'    FIELD report

                 ID 'HANDLE'    FIELD handle

                 ID 'LOG_GROUP' FIELD log_group.

      ELSE.

        AUTHORITY-CHECK OBJECT 'S_ALV_LAYR'

                 ID 'ACTVT'     FIELD '23'

                 ID 'REPORT'    FIELD report

                 ID 'HANDLE'    FIELD handle

                 ID 'LOG_GROUP'  DUMMY.

      ENDIF.

    ELSE.

      IF NOT log_group IS INITIAL.

        AUTHORITY-CHECK OBJECT 'S_ALV_LAYR'

                 ID 'ACTVT'     FIELD '23'

                 ID 'REPORT'    FIELD report

                 ID 'HANDLE'    DUMMY

                 ID 'LOG_GROUP' FIELD log_group.

      ELSE.

        AUTHORITY-CHECK OBJECT 'S_ALV_LAYR'

                 ID 'ACTVT'     FIELD '23'

                 ID 'REPORT'    FIELD report

                 ID 'HANDLE'    DUMMY

                 ID 'LOG_GROUP' DUMMY.

      ENDIF.

    ENDIF.

  ENDIF.

  rc = sy-subrc.

  "dummy check for SU22 trace (needs note 1587228)

  IF cl_su2x_tools=>get_status_su22_trace( ) = 'X'.

    IF NOT handle IS INITIAL.

      IF NOT log_group IS INITIAL.

        AUTHORITY-CHECK OBJECT 'S_ALV_LAYR'

                 ID 'ACTVT'     FIELD '23'

                 ID 'REPORT'    FIELD report

                 ID 'HANDLE'    FIELD handle

                 ID 'LOG_GROUP' FIELD log_group.

      ELSE.

        AUTHORITY-CHECK OBJECT 'S_ALV_LAYR'

                 ID 'ACTVT'     FIELD '23'

                 ID 'REPORT'    FIELD report

                 ID 'HANDLE'    FIELD handle

                 ID 'LOG_GROUP'  DUMMY.

      ENDIF.

    ELSE.

      IF NOT log_group IS INITIAL.

        AUTHORITY-CHECK OBJECT 'S_ALV_LAYR'

                 ID 'ACTVT'     FIELD '23'

                 ID 'REPORT'    FIELD report

                 ID 'HANDLE'    DUMMY

                 ID 'LOG_GROUP' FIELD log_group.

      ELSE.

        AUTHORITY-CHECK OBJECT 'S_ALV_LAYR'

                 ID 'ACTVT'     FIELD '23'

                 ID 'REPORT'    FIELD report

                 ID 'HANDLE'    DUMMY

                 ID 'LOG_GROUP' DUMMY.

      ENDIF.

    ENDIF.

    IF sy-subrc = 0.

      "the result is not needed here

      RETURN.

    ENDIF.

  ENDIF.

ENDMETHOD.

2.宏+指针结合操作数据

METHOD COV_VALUE_RAN.

  DATA:

LO_DATA TYPE REF TO DATA.

  FIELD-SYMBOLS:

 TYPE ANY,

                 TYPE ANY.

  DEFINE LMACRO_SET_RANGE.

    IF NOT &1 IS INITIAL AND

       NOT &2 IS INITIAL.

    ASSIGN COMPONENT &1 OF STRUCTURE  TO ..

    IF  IS ASSIGNED.

       = &2.

        UNASSIGN .

    ENDIF.

   ENDIF.

  END-OF-DEFINITION.

  CHECK NOT IV_VALUE IS INITIAL.

  TRY.

      CREATE DATA LO_DATA LIKE LINE OF ER_RANGE.

      ASSIGN LO_DATA->* TO .

      IF  IS ASSIGNED.

        LMACRO_SET_RANGE 'SIGN'   'I'.

        LMACRO_SET_RANGE 'OPTION' 'EQ'.

        LMACRO_SET_RANGE 'LOW'     IV_VALUE.

        LMACRO_SET_RANGE 'SIGN'   'I'.

        APPEND  TO ER_RANGE.

        UNASSIGN .

      ENDIF.

    CATCH CX_ROOT.

  ENDTRY.

ENDMETHOD.

3.设置标准按钮的移除功能

METHOD SET_EXC_0100.

  DATA:

LT_INC TYPE TABLE OF UI_FUNC.

  APPEND CL_GUI_ALV_GRID=>MC_FC_DETAIL          TO LT_INC.

  APPEND CL_GUI_ALV_GRID=>MC_FC_SORT_ASC        TO LT_INC.

  APPEND CL_GUI_ALV_GRID=>MC_FC_SORT_DSC        TO LT_INC.

  APPEND CL_GUI_ALV_GRID=>MC_FC_FIND            TO LT_INC.

  APPEND CL_GUI_ALV_GRID=>MC_FC_FILTER          TO LT_INC.

  APPEND CL_GUI_ALV_GRID=>MC_MB_EXPORT          TO LT_INC.

  APPEND CL_GUI_ALV_GRID=>MC_MB_SUM             TO LT_INC.

  APPEND CL_GUI_ALV_GRID=>MC_FC_CURRENT_VARIANT TO LT_INC.

  APPEND CL_GUI_ALV_GRID=>MC_FC_VIEWS           TO LT_INC.

“使用按钮的移除功能

  CALL METHOD YMCL_FI_STKGZ_ACTION=>FUCTION_EXC

    EXPORTING

      IT_INC = LT_INC

    IMPORTING

      ET_EXC = ET_EXC.

ENDMETHOD.

4.回车监听事件

  CALL METHOD PO_GRID->GET_FILTERED_ENTRIES

    IMPORTING

      ET_FILTERED_ENTRIES = LT_FILT.

5.创建树的基本操作

DATA:

GO_TREE_DOCKING  TYPE REF TO            CL_GUI_DOCKING_CONTAINER,

     GO_TREE          TYPE REF TO            CL_GUI_SIMPLE_TREE,

     GV_TREE_0100_VIS TYPE                   C VALUE '',

     GT_ADD_NODES     LIKE STANDARD TABLE OF MTREESNODE.

6.更新屏幕界面

    LOOP AT SCREEN.

      IF SCREEN-NAME = 'P_WBST1'.

        SCREEN-INPUT = 0.

        MODIFY SCREEN.

      ENDIF.

      IF SCREEN-NAME = 'P_FQWBST'.

        SCREEN-INPUT = 0.

        MODIFY SCREEN.

      ENDIF.

7.设置基本事件操作

* 注册编辑作用方式 光标离开启作用

      CALL METHOD GO_GRID_0100->REGISTER_EDIT_EVENT

        EXPORTING

          I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED

        EXCEPTIONS

          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.

* 注册事件

      CREATE OBJECT GO_EVENTS.

      SET HANDLER:

                  GO_EVENTS->USER_COMMAND_0100       FOR GO_GRID_0100,

                  GO_EVENTS->AFTER_USER_COMMAND_0100 FOR GO_GRID_0100,

                  GO_EVENTS->HANDLE_DATA_CHANGED FOR GO_GRID_0100.

      CALL METHOD GO_GRID_0100->SET_TOOLBAR_INTERACTIVE.

*      CALL METHOD GO_GRID_0100->REGISTER_EDIT_EVENT

*        EXPORTING

*          I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.

      CALL METHOD GO_GRID_0100->REGISTER_EDIT_EVENT

        EXPORTING

          I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.

    ENDIF.

8.增加按钮功能项

METHOD ADD_FUNCTION .

  DATA L_ENTRY TYPE SCTX_ENTRY.

  L_ENTRY-TYPE        = SCTX_C_TYPE_FUNCTION.

  L_ENTRY-FCODE       = FCODE.

  L_ENTRY-FTYPE       = FTYPE.

  L_ENTRY-ICON        = ICON.

  L_ENTRY-TEXT        = TEXT.

  L_ENTRY-DISABLED    = DISABLED.

  L_ENTRY-HIDDEN      = HIDDEN.

  L_ENTRY-CHECKED     = CHECKED.

  l_entry-accelerator = accelerator.

* Unused for Entries of Type FUNCTION:

  CLEAR L_ENTRY-MENU.

 IF insert_at_the_top IS INITIAL.

*   insert new function at the end:

    APPEND l_entry TO entrytab.

  ELSE.

*   insert new function at the top:

    INSERT l_entry INTO entrytab INDEX 1 .

  ENDIF.

  raise event changed.

* ...

ENDMETHOD.

9.工具函数VRM创建屏幕下拉框

TYPE-POOLS:

vrm.

TYPE-POOL VRM .

*******************************工具基本属性*************************

TYPES:

*-- Single Value in Value Set

       BEGIN OF VRM_VALUE,

         KEY(40) TYPE C,

         TEXT(80) TYPE C,

       END OF VRM_VALUE,

*-- Table of Values

       VRM_VALUES TYPE VRM_VALUE OCCURS 0,

*-- Id of Value Set

       VRM_ID TYPE VRM_VALUE-TEXT,

*-- table of Ids of Value Set

       VRM_IDS TYPE VRM_ID OCCURS 0,

*-- QueueRow

       BEGIN OF VRM_QUEUEROW,

         TAG,

         VALUE TYPE VRM_VALUE,

       END   OF VRM_QUEUEROW,

*-- Queue

       VRM_QUEUE TYPE VRM_QUEUEROW OCCURS 0.

CONSTANTS:

  VRM_TYPE(20)                          VALUE 'application',

  VRM_SUBTYPE(20)                       VALUE 'x-sapvaluesets',

  VRM_QUEUE_TAG_HEADER                  VALUE 'T',

  VRM_QUEUE_TAG_SUBHEADER               VALUE 'X',

  VRM_QUEUE_TAG_ENTRY                   VALUE ' ',

  VRM_QUEUE_KEY_TYPE TYPE VRM_VALUE-KEY VALUE 'TYPE',

  VRM_QUEUE_KEY_NAME TYPE VRM_VALUE-KEY VALUE 'NAME'.

*****************************下拉列表实例*************************

REPORT YMPSR102 NO STANDARD PAGE HEADING MESSAGE-ID YMPS.

TYPE-POOLS VRM.

"定义一个下拉表屏幕参数

SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.

PARAMETERS:

P_LIST TYPE C AS LISTBOX VISIBLE LENGTH 12.

SELECTION-SCREEN END OF BLOCK A.

INITIALIZATION.

  PERFORM FRM_INIT_LISTBOX.

*&---------------------------------------------------------------------*

*&      Form  FRM_INIT_LISTBOX

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FRM_INIT_LISTBOX .

  "下拉框代码实现

  DATA :

LIST  TYPE         VRM_VALUES , "下拉值

        VALUE LIKE LINE OF LIST ."list box的结构

  DATA:

STR TYPE STRING.

  "赋值到list内表中

  DO 10 TIMES.

    STR = SY-TABIX.

    CONCATENATE 'KEY' STR INTO VALUE-KEY.

    CONCATENATE 'TXT' STR INTO VALUE-TEXT.

    APPEND VALUE TO LIST .

  ENDDO.

  "调用函数展示

  CALL FUNCTION 'VRM_SET_VALUES'

    EXPORTING

      ID     = 'P_LIST'

      VALUES = LIST.

ENDFORM.                    " FRM_INIT_LISTBOX

10.自定义ALV控件工具条的按钮

TYPE-POOLS:

VRM,ICON.

CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.

DATA:

 ITAB TYPE TABLE OF SPFLI,

      WA   TYPE          SPFLI.

DATA:

 NAME      TYPE        SCRFNAME VALUE 'ALV',      "定义屏幕标识

      CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,   "自定义屏幕组件

      ALV_GRID  TYPE REF TO CL_GUI_ALV_GRID.           "ALV列表显示

DATA:

 EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.

DATA:

 SAVE_OK TYPE SY-UCOMM,

      OK_CODE TYPE SY-UCOMM.

SELECT * FROM SPFLI INTO TABLE ITAB.

CALL SCREEN 100.

*&---------------------------------------------------------------------*

*&       Class LCL_EVENT_RECEIVER

*&---------------------------------------------------------------------*

*        Toolbar and user command event handle

*----------------------------------------------------------------------*

CLASS LCL_EVENT_RECEIVER DEFINITION.

  PUBLIC SECTION.

    METHODS:

      HANDLE_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID

        IMPORTING E_OBJECT E_INTERACTIVE,

      HANDLE_UCOMM FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID

        IMPORTING E_UCO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1