sap 双ALV联动显示示例

博客介绍了相关实现方法,涉及Python开发语言,在Linux服务器环境下,与数据库交互,还提及命令模式。

实现方法

  • 代码

    	CLASS lcl_events_receiver DEFINITION DEFERRED.
    	TABLES: zmm_ap_po_head.
    	
    	TYPES: BEGIN OF ty_zmm_ap_po_head,
    	  box TYPE c.
    	        INCLUDE STRUCTURE zmm_ap_po_head.
    	TYPES: END OF ty_zmm_ap_po_head.
    	
    	TYPES: BEGIN OF ty_zmm_ap_po_item,
    	  box TYPE c.
    	        INCLUDE STRUCTURE zmm_ap_po_item.
    	TYPES: END OF ty_zmm_ap_po_item.
    	
    	DATA: sellist TYPE TABLE OF vimsellist,
    	      wa_sellist TYPE vimsellist.
    	
    	DATA: go_customer_container TYPE REF TO cl_gui_custom_container,
    	      go_split TYPE REF TO cl_gui_splitter_container,
    	      go_grid_head TYPE REF TO cl_gui_alv_grid,
    	      go_grid_item TYPE REF TO  cl_gui_alv_grid.
    	
    	DATA: gt_zmm_ap_po_head TYPE TABLE OF ty_zmm_ap_po_head,
    	      gt_zmm_ap_po_item TYPE TABLE OF ty_zmm_ap_po_item.
    	
    	DATA: gr_table_head TYPE REF TO cl_salv_table,
    	      gr_table_item TYPE REF TO cl_salv_table.
    	
    	DATA: go_columns TYPE REF TO cl_salv_columns.
    	DATA: gs_layout TYPE lvc_s_layo, "布局
    	      gt_fieldcat TYPE lvc_t_fcat, "字段属性内表
    	      gt_fieldcat_head TYPE lvc_t_fcat, "字段属性内表
    	      gt_fieldcat_item TYPE lvc_t_fcat, "字段属性内表
    	      gs_fieldcat TYPE lvc_s_fcat,
    	      gs_ui_func TYPE ui_func,         "隐藏工具栏图标
    	      gt_ui_func TYPE ui_functions,
    	      gv_col TYPE i.
    	
    	DATA: go_events_receiver TYPE REF TO lcl_events_receiver.
    	
    	CONSTANTS: lc_appid TYPE string VALUE 'dcfa5c7d-cef8-8837-a49f-6f1d92adf792'.
    	*----------------------------------------------------------------------*
    	*       CLASS lcl_events_receiver DEFINITION
    	*----------------------------------------------------------------------*
    	*
    	*----------------------------------------------------------------------*
    	CLASS lcl_events_receiver DEFINITION .
    	  PUBLIC SECTION.
    	    "工具栏事件
    	    METHODS toolbar FOR EVENT toolbar OF cl_gui_alv_grid
    	      IMPORTING e_object.
    	
    	    "处理命令事件
    	    METHODS user_command FOR EVENT user_command OF cl_gui_alv_grid
    	      IMPORTING e_ucomm.
    	
    	    "数据改变事件
    	    METHODS data_changed FOR EVENT data_changed OF cl_gui_alv_grid
    	      IMPORTING er_data_changed.
    	
    	    METHODS data_changed_finished FOR EVENT data_changed_finished OF cl_gui_alv_grid
    	          IMPORTING e_modified.
    	
    	    "单击事件
    	    METHODS hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
    	      IMPORTING e_row_id e_column_id.
    	
    	    "双击事件
    	    METHODS double_click FOR EVENT double_click OF cl_gui_alv_grid
    	      IMPORTING e_row e_column.
    	ENDCLASS.                    "LCL_EVENTS_RECEIVER DEFINITION
    	
    	"事件接收类实现
    	*----------------------------------------------------------------------*
    	*       CLASS LCL_EVENTS_RECEIVER IMPLEMENTATION
    	*----------------------------------------------------------------------*
    	*
    	*----------------------------------------------------------------------*
    	CLASS lcl_events_receiver IMPLEMENTATION.
    	  "工具栏事件实现
    	  METHOD toolbar.
    	    PERFORM frm_toolbar USING e_object.
    	  ENDMETHOD.                    "TOOLBAR
    	
    	  "处理命令事件实现
    	  METHOD user_command.
    	    PERFORM frm_user_command USING e_ucomm.
    	  ENDMETHOD.                    "USER_COMMAND
    	
    	  METHOD data_changed_finished .
    	    PERFORM frm_data_changed_finished USING e_modified .
    	  ENDMETHOD .                    "handle_data_changed_finished
    	
    	
    	  "数据改变事件实现
    	  METHOD data_changed.
    	*    PERFORM frm_data_changed USING er_data_changed.
    	  ENDMETHOD.                    "DATA_CHANGED
    	
    	  "单击事件实现
    	  METHOD hotspot_click.
    	*    PERFORM frm_hotspot_click USING e_row_id e_column_id.
    	  ENDMETHOD.                    "HOTSPOT_CLICK
    	
    	  "双击事件
    	  METHOD double_click.
    	*    PERFORM frm_double_click USING e_row e_column.
    	  ENDMETHOD.                    "DOUBLE_CLICK
    	ENDCLASS.                    "LCL_EVENTS_RECEIVER IMPLEMENTATION
    	
    	DEFINE marco_sellist.
    	  wa_sellist-viewfield = &1.
    	  wa_sellist-operator  = &2.
    	  wa_sellist-value     = &3.
    	  wa_sellist-and_or    = &4.
    	  append wa_sellist to sellist.
    	  clear wa_sellist.
    	END-OF-DEFINITION.
    	
    	DEFINE m_fieldcat.
    	  clear gs_fieldcat.
    	  gs_fieldcat-fieldname = &1.
    	  gs_fieldcat-ref_table = &2.
    	  gs_fieldcat-ref_field = &3.
    	  gs_fieldcat-scrtext_s = &4.
    	  gs_fieldcat-scrtext_m = &4.
    	  gs_fieldcat-scrtext_l = &4.
    	  gv_col = gv_col + 1.
    	  gs_fieldcat-col_pos = gv_col.
    	
    	  if &1 eq 'BOX'.
    	    if &5 = 'X'.
    	      gs_fieldcat-edit = 'X'.
    	    endif.
    	    gs_fieldcat-checkbox = 'X'.
    	  endif.
    	
    	  append gs_fieldcat to gt_fieldcat.
    	END-OF-DEFINITION.
    	
    	SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    	PARAMETERS: p_sync  TYPE c RADIOBUTTON GROUP g1 USER-COMMAND ucomm DEFAULT'X',
    	            p_send  TYPE c RADIOBUTTON GROUP g1,
    	            p_reset TYPE c RADIOBUTTON GROUP g1,
    	            p_query  TYPE c RADIOBUTTON GROUP g1.
    	SELECTION-SCREEN END OF BLOCK b1.
    	
    	SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    	PARAMETERS: p_fm1 TYPE c  MODIF ID m1 DEFAULT'X' USER-COMMAND fm.",
    	*            p_fm2 TYPE c RADIOBUTTON GROUP g2 MODIF ID m1.
    	
    	SELECTION-SCREEN END OF BLOCK b2.
    	
    	SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
    	SELECT-OPTIONS: s1_ebeln FOR zmm_ap_po_head-ebeln MODIF ID m2,
    	                s1_bsart FOR zmm_ap_po_head-bsart MODIF ID m2,
    	                s1_bukrs FOR zmm_ap_po_head-bukrs MODIF ID m2,
    	                s1_lifnr FOR zmm_ap_po_head-lifnr MODIF ID m2,
    	                s1_zterm FOR zmm_ap_po_head-zterm MODIF ID m2,
    	                s1_aedat FOR zmm_ap_po_head-aedat MODIF ID m2,
    	                s1_ernam FOR zmm_ap_po_head-ernam MODIF ID m2,
    	                s1_loekz FOR zmm_ap_po_head-loekz MODIF ID m2,
    	                s1_zcdat FOR zmm_ap_po_head-zcdate MODIF ID m2,
    	                s1_zctim FOR zmm_ap_po_head-zctime MODIF ID m2,
    	                s1_type FOR zmm_ap_po_head-type MODIF ID m2,
    	                s1_msg FOR zmm_ap_po_head-message MODIF ID m2,
    	                s1_zupmo FOR zmm_ap_po_head-zupmod NO INTERVALS MODIF ID m3,
    	                s1_zupfl FOR zmm_ap_po_head-zupflg NO INTERVALS MODIF ID m4.
    	
    	PARAMETERS: p_max TYPE tbmaxsel MODIF ID mi OBLIGATORY DEFAULT 500.
    	
    	SELECTION-SCREEN END OF BLOCK b3.
    	
    	INITIALIZATION.
    	
    	AT SELECTION-SCREEN OUTPUT.
    	
    	  LOOP AT SCREEN.
    	    IF p_fm1 = 'X'.
    	
    	      IF p_query = 'X' AND screen-group1 = 'MI'.
    	        screen-active = 1.
    	      ELSEIF screen-group1 = 'MI'.
    	        screen-active = 0.
    	      ENDIF.
    	
    	      CASE 'X'.
    	        WHEN p_sync.                  "后台同步
    	          IF screen-group1 = 'M2' OR screen-group1 = 'M3' OR screen-group1 = 'M4'.
    	            screen-active = 0.
    	          ENDIF.
    	        WHEN p_reset.                  "重置传输标识
    	        WHEN p_send.                   "手动同步
    	          IF screen-group1 = 'M3'.
    	            screen-input = 0.
    	          ENDIF.
    	        WHEN p_query.                  "查询
    	
    	        WHEN OTHERS.
    	      ENDCASE.
    	*    ELSEIF p_fm2 = 'X'.
    	*      IF screen-group1 = 'M2' OR screen-group1 = 'M3'.
    	*        screen-active = 0.
    	*      ELSEIF p_query = 'X' AND screen-group1 = 'MI'.
    	*        screen-active = 1.
    	*      ELSEIF screen-group1 = 'MI'.
    	*        screen-active = 0.
    	*      ENDIF.
    	
    	    ENDIF.
    	
    	    MODIFY SCREEN.
    	  ENDLOOP.
    	
    	AT SELECTION-SCREEN.
    	  CASE sy-ucomm.
    	    WHEN 'UCOMM'.
    	      IF p_send = 'X'.
    	
    	        s1_zupmo-sign = 'I'.
    	        s1_zupmo-option = 'EQ'.
    	        s1_zupmo-low = '2'.
    	        APPEND s1_zupmo.
    	        CLEAR: s1_zupfl,s1_zupfl[].
    	      ELSEIF p_reset = 'X'.
    	        CLEAR: s1_zupfl,s1_zupfl[],s1_zupmo,s1_zupmo[].
    	      ELSE.
    	        CLEAR: s1_zupmo,s1_zupmo[].
    	      ENDIF.
    	  ENDCASE.
    	
    	  PERFORM frm_check_author.
    	
    	START-OF-SELECTION.
    	
    	  IF p_fm1 = 'X'.           "采购订单业务
    	    CASE 'X'.
    	      WHEN p_sync.                             "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值