日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

可手工拖拽alv行记录的实例

發布時間:2025/3/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 可手工拖拽alv行记录的实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
程序代碼:
  • *Structure declaration for T016T
  • TYPES : BEGIN OF ty_t016t,
  • ? ?? ?? ?brsch TYPE brsch,
  • ? ?? ?? ?brtxt TYPE text1_016t,
  • ? ?? ?? ?spras TYPE spras,
  • ? ?? ?? ?END OF ty_t016t.
  • *Work area and internal table for??T016T
  • DATA : it_t016t TYPE STANDARD TABLE OF ty_t016t,
  • ? ?? ? wa_t016t TYPE ty_t016t.
  • *class declaration
  • CLASS lcl_objdragdropapp DEFINITION DEFERRED.
  • *data declarations for?ALV
  • DATA:? ?c_dragdropapp TYPE REF TO lcl_objdragdropapp,
  • ? ?? ???c_dockingcont TYPE REF TO cl_gui_docking_container,
  • ? ?? ???c_alv TYPE REF TO cl_gui_alv_grid,
  • * reference variable to CL_DRAGDROP:
  • ? ?? ???c_dragdropalv TYPE REF TO cl_dragdrop,
  • ? ?? ???it_layout TYPE lvc_s_layo,
  • ? ?? ???it_fcat??TYPE lvc_t_fcat.? ?? ?? ?? ?"Field catalogue
  • *declarations for handle event
  • DATA:? ?effect TYPE i,
  • ? ?? ???handle_alv TYPE i.
  • *initialization event
  • INITIALIZATION.
  • *start of selection event
  • START-OF-SELECTION.
  • *select data
  • ??PERFORM fetch_data.
  • *ALV output
  • ??PERFORM alv_output.
  • * Class definitions and method implementation for drag and drop
  • CLASS lcl_dragdrop DEFINITION.
  • ??PUBLIC SECTION.
  • ? ? DATA: wa TYPE ty_t016t,
  • ? ?? ?? ? index TYPE i.? ?"Index of Line to be moved
  • ENDCLASS.? ?? ?? ?? ?? ?? ???"LCL_DRAGDROP DEFINITION
  • *Application class definition
  • CLASS lcl_objdragdropapp DEFINITION.
  • ??PUBLIC SECTION.
  • ? ? METHODS:
  • *Handling Event Drag
  • ? ?? ?handle_alv_drag
  • ? ?? ???FOR EVENT ondrag
  • ? ?? ???OF cl_gui_alv_grid
  • ? ?? ???IMPORTING e_row e_column e_dragdropobj,
  • *Handling event DROP
  • ? ?? ?handle_alv_drop
  • ? ?? ???FOR EVENT ondrop
  • ? ?? ???OF cl_gui_alv_grid
  • ? ?? ???IMPORTING e_row e_column e_dragdropobj.
  • ENDCLASS.? ?? ?? ?? ?? ?? ???"LCL_objdragdropapp DEFINITION
  • *Application class implementation
  • CLASS lcl_objdragdropapp IMPLEMENTATION.
  • *??OnDrag event is used to 'fetch' information from the drag source.
  • ??METHOD handle_alv_drag.
  • ? ? DATA: dataobj TYPE REF TO lcl_dragdrop,
  • ? ?? ?? ? line TYPE ty_t016t.
  • * Read dragged row
  • ? ? READ TABLE it_t016t INDEX e_row-index INTO line.
  • * create and fill dataobject for events ONDROP
  • ? ? CREATE OBJECT dataobj.
  • * Remembering row index to move a line
  • ? ? MOVE e_row-index TO dataobj->index.
  • * store the dragged line.
  • ? ? READ TABLE it_t016t INTO dataobj->wa INDEX e_row-index.
  • * Assigning data object to the refering event parameter
  • ? ? e_dragdropobj->object = dataobj.
  • ??ENDMETHOD.? ?? ?? ?? ?? ?? ???"HANDLE_ALV_DRAG
  • *Event handler for event 'OnDrop'. This event is used
  • *to use your dragged information in combination with your drop source.
  • ??METHOD handle_alv_drop.
  • ? ? DATA: dataobj TYPE REF TO lcl_dragdrop,
  • ? ?? ?? ? drop_index TYPE i,
  • ? ?? ?? ? stable TYPE lvc_s_stbl.
  • * Refresh Alv Grid Control without scrolling
  • ? ? stable-row = 'X'.
  • ? ? stable-col = 'X'.

  • * Catch-Statement to ensure the drag&drop-Operation is aborted properly.
  • ? ? CATCH SYSTEM-EXCEPTIONS move_cast_error = 1.
  • ? ?? ?dataobj ?= e_dragdropobj->object.
  • ? ?? ?DELETE it_t016t INDEX dataobj->index.
  • ? ?? ?INSERT dataobj->wa INTO it_t016t INDEX e_row-index.
  • *Refreshing the ALV
  • ? ?? ?CALL METHOD c_alv->refresh_table_display
  • ? ?? ???EXPORTING
  • ? ?? ?? ? i_soft_refresh = 'X'
  • ? ?? ?? ? is_stable? ?? ?= stable.
  • ? ? ENDCATCH.
  • ? ? IF sy-subrc <> 0.
  • * If anything went wrong aborting the drag and drop operation:
  • ? ?? ?CALL METHOD e_dragdropobj->abort.
  • ? ? ENDIF.
  • ??ENDMETHOD.? ?? ?? ?? ?? ?? ???"HANDLE_ALV_DROP
  • ENDCLASS.? ?? ?? ?? ?? ?? ???"LCL_objdragdropapp IMPLEMENTATION
  • *&---------------------------------------------------------------------*
  • *&? ?? ?Form??alv_output
  • *&---------------------------------------------------------------------*
  • *? ?? ? text
  • *----------------------------------------------------------------------*
  • *??-->??p1? ?? ???text
  • *??<--??p2? ?? ???text
  • *----------------------------------------------------------------------*
  • FORM alv_output .
  • ??CALL SCREEN 600.

  • ENDFORM.? ?? ?? ?? ?? ?? ???" alv_output
  • ** Calling the ALV screen with custom container
  • *On this statement double click??it takes you to the screen painter SE51.
  • *Enter the attributes
  • *Create a Custom container and name it CC_CONT and OK code as OK_CODE.
  • *Save check and Activate the screen painter.
  • *Now a normal screen with number 600 is created which holds the ALV grid.
  • * PBO of the actual screen ,Here we can give a title and customized menus
  • *&---------------------------------------------------------------------*
  • *&? ?? ?Module??STATUS_0600??OUTPUT
  • *&---------------------------------------------------------------------*
  • *? ?? ? text
  • *----------------------------------------------------------------------*
  • MODULE status_0600 OUTPUT.
  • *??SET PF-STATUS 'xxxxxxxx'.
  • *??SET TITLEBAR 'xxx'.
  • ??IF c_alv IS INITIAL.
  • ? ? PERFORM alv_controls.
  • ??ENDIF.
  • ENDMODULE.? ?? ?? ?? ?? ???" STATUS_0600??OUTPUT
  • *&---------------------------------------------------------------------*
  • *&? ?? ?Form??alv_CONTROLS
  • *&---------------------------------------------------------------------*
  • *? ?? ? text
  • *----------------------------------------------------------------------*
  • *??-->??p1? ?? ???text
  • *??<--??p2? ?? ???text
  • *----------------------------------------------------------------------*
  • FORM alv_controls.
  • * create docking container for alv control
  • ??CREATE OBJECT c_dockingcont
  • ? ? EXPORTING
  • ? ?? ???dynnr = '600'
  • ? ?? ???extension = 300
  • ? ?? ???side = cl_gui_docking_container=>dock_at_top.

  • * create alv control
  • ??CREATE OBJECT c_alv
  • ? ???EXPORTING i_parent = c_dockingcont.
  • * create the application object to handle the?ABAP?Objects Events
  • ??CREATE OBJECT c_dragdropapp.
  • * Events alv control
  • *For Dragging
  • ??SET HANDLER c_dragdropapp->handle_alv_drag FOR c_alv.
  • *For Dropping
  • ??SET HANDLER c_dragdropapp->handle_alv_drop FOR c_alv.
  • * build tree nodes for drag&drop
  • ??PERFORM build_handle.
  • * Fieldcatalogue for ALV
  • ??PERFORM alv_build_fieldcat.
  • * ALV attributes FOR LAYOUT
  • ??PERFORM alv_report_layout.
  • * Call ALV GRID
  • ??CALL METHOD c_alv->set_table_for_first_display
  • ? ? EXPORTING
  • ? ?? ?is_layout? ?? ?? ?? ?? ?? ?? ?= it_layout
  • ? ? CHANGING
  • ? ?? ?it_outtab? ?? ?? ?? ?? ?? ?? ?= it_t016t
  • ? ?? ?it_fieldcatalog? ?? ?? ?? ?? ?= it_fcat
  • ? ? EXCEPTIONS
  • ? ?? ?invalid_parameter_combination = 1
  • ? ?? ?program_error? ?? ?? ?? ?? ???= 2
  • ? ?? ?too_many_lines? ?? ?? ?? ?? ? = 3
  • ? ?? ?OTHERS? ?? ?? ?? ?? ?? ?? ?? ?= 4.
  • ??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.? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? "ALV_CONTROLS
  • *&---------------------------------------------------------------------*
  • *&? ?? ?Form??build_handle
  • *&---------------------------------------------------------------------*
  • *? ?? ? text
  • *----------------------------------------------------------------------*
  • *??-->??p1? ?? ???text
  • *??<--??p2? ?? ???text
  • *----------------------------------------------------------------------*
  • FORM build_handle.

  • * define a drag & Drop behaviour for the whole grid
  • ??CREATE OBJECT c_dragdropalv.
  • ??effect = cl_dragdrop=>move + cl_dragdrop=>copy.
  • ??CALL METHOD c_dragdropalv->add
  • ? ? EXPORTING
  • ? ?? ?flavor? ???= 'Line'
  • ? ?? ?dragsrc? ? = 'X'
  • ? ?? ?droptarget = 'X'
  • ? ?? ?effect? ???= effect.
  • *getting the handle for drag and drop
  • ??CALL METHOD c_dragdropalv->get_handle
  • ? ? IMPORTING
  • ? ?? ?handle = handle_alv.

  • ENDFORM.? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? " build_handle
  • *&---------------------------------------------------------------------*
  • *&? ?? ?Form??fetch_data
  • *&---------------------------------------------------------------------*
  • *? ?? ? text
  • *----------------------------------------------------------------------*
  • *??-->??p1? ?? ???text
  • *??<--??p2? ?? ???text
  • *----------------------------------------------------------------------*
  • FORM fetch_data .
  • * select and display data from t016
  • ??SELECT brtxt brsch spras FROM t016t INTO CORRESPONDING FIELDS OF TABLE it_t016t
  • ??WHERE spras = 'EN'.

  • ENDFORM.? ?? ?? ?? ?? ?? ???" fetch_data
  • *&---------------------------------------------------------------------*
  • *&? ?? ?Form??alv_report_layout
  • *&---------------------------------------------------------------------*
  • *? ?? ? text
  • *----------------------------------------------------------------------*
  • *??-->??p1? ?? ???text
  • *??<--??p2? ?? ???text
  • *----------------------------------------------------------------------*
  • FORM alv_report_layout .
  • ??it_layout-grid_title = 'ALV Drag Drop'.
  • * provide handle to alv control to all rows for same drag & drop behaviour
  • ??it_layout-s_dragdrop-row_ddid = handle_alv.

  • ENDFORM.? ?? ?? ?? ?? ?? ???" alv_report_layout
  • *&---------------------------------------------------------------------*
  • *&? ?? ?Form??alv_build_fieldcat
  • *&---------------------------------------------------------------------*
  • *? ?? ? text
  • *----------------------------------------------------------------------*
  • *??-->??p1? ?? ???text
  • *??<--??p2? ?? ???text
  • *----------------------------------------------------------------------*
  • FORM alv_build_fieldcat .
  • ??DATA lv_fldcat TYPE lvc_s_fcat.
  • ??CLEAR lv_fldcat.
  • ??lv_fldcat-row_pos? ?= '1'.
  • ??lv_fldcat-col_pos? ?= '1'.
  • ??lv_fldcat-fieldname = 'BRSCH'.
  • ??lv_fldcat-tabname? ?= 'IT_T016T'.
  • ??lv_fldcat-outputlen = 8.
  • ??lv_fldcat-scrtext_m = 'Industry'.
  • ??APPEND lv_fldcat TO it_fcat.
  • ??CLEAR lv_fldcat.
  • ??lv_fldcat-row_pos? ?= '1'.
  • ??lv_fldcat-col_pos? ?= '2'.
  • ??lv_fldcat-fieldname = 'BRTXT'.
  • ??lv_fldcat-tabname? ?= 'IT_T016T'.
  • ??lv_fldcat-outputlen = 15.
  • ??lv_fldcat-scrtext_m = 'Description'.
  • ??APPEND lv_fldcat TO it_fcat.
  • ??CLEAR lv_fldcat.

  • ENDFORM.? ?? ?? ?? ?? ?? ???" alv_build_fieldcat
  • * PAI module of the screen created. In case we use an interactive ALV or
  • *for additional functionalities we can create OK codes
  • *and based on the user command we can do the coding.
  • *&---------------------------------------------------------------------*
  • *&? ?? ?Module??USER_COMMAND_0600??INPUT
  • *&---------------------------------------------------------------------*
  • *? ?? ? text
  • *----------------------------------------------------------------------*
  • MODULE user_command_0600 INPUT.
  • ENDMODULE.? ?? ?? ?? ?? ???" USER_COMMAND_0600??INPUT
  • 復制代碼
    程序執行效果:
    ?
    alv行記錄被拖拽之后的效果
    ?

    總結

    以上是生活随笔為你收集整理的可手工拖拽alv行记录的实例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。