*&---------------------------------------------------------------------* *& Report Z14 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT z14. TYPE-POOLS:slis. "1.声明变量 DATA:lt_fieldcat TYPE slis_t_fieldcat_alv, ls_fieldcat TYPE slis_fieldcat_alv, ls_layout TYPE slis_layout_alv. DATA lt_event TYPE slis_t_event. "定义事件内表 DATA ls_event TYPE slis_alv_event. "定义事件工作区 "2.定义内表 TYPES:BEGIN OF ty_alvshow, bukrs TYPE bkpf-bukrs,"公司代码 belnr TYPE bkpf-belnr,"会计凭证编号 gjahr TYPE bkpf-gjahr,"会计年度 blart TYPE bkpf-blart,"凭证类型 bktxt TYPE bkpf-bktxt,"凭证抬头文本 END OF ty_alvshow. DATA: lt_ty_alvshow TYPE TABLE OF ty_alvshow, ls_ty_alvshow TYPE ty_alvshow. "3-读取数据 SELECT a~bukrs a~belnr a~gjahr a~blart a~bktxt FROM bkpf AS a INTO TABLE lt_ty_alvshow . ls_layout-zebra = 'X'. ls_layout-detail_popup = 'X'. ls_layout-f2code = '&ETA'. ls_layout-colwidth_optimize = 'X'. ls_layout-detail_titlebar = '详细信息'. DATA index TYPE int2. index = 1. ls_fieldcat-col_pos = index. ls_fieldcat-fieldname = 'bukrs'. ls_fieldcat-key = 'X'. ls_fieldcat-datatype = 'char'. ls_fieldcat-outputlen = '4'. ls_fieldcat-seltext_m = '公司代码'. APPEND ls_fieldcat TO lt_fieldcat. CLEAR ls_fieldcat. index = index + 1. ls_fieldcat-col_pos = index. ls_fieldcat-fieldname = 'belnr'. ls_fieldcat-key = 'X'. ls_fieldcat-datatype = 'char'. ls_fieldcat-outputlen = '10'. ls_fieldcat-seltext_m = '会计凭证编号'. APPEND ls_fieldcat TO lt_fieldcat. CLEAR ls_fieldcat. index = index + 1. ls_fieldcat-col_pos = index. ls_fieldcat-fieldname = 'gjahr'. ls_fieldcat-datatype = 'NUMC'. ls_fieldcat-outputlen = '4'. ls_fieldcat-seltext_m = '会计年度'. ls_fieldcat-do_sum = 'X'. APPEND ls_fieldcat TO lt_fieldcat. CLEAR ls_fieldcat. index = index + 1. ls_fieldcat-col_pos = index. ls_fieldcat-fieldname = 'blart'. ls_fieldcat-datatype = 'CHAR'. ls_fieldcat-outputlen = '2'. ls_fieldcat-seltext_m = '凭证类型'. APPEND ls_fieldcat TO lt_fieldcat. CLEAR ls_fieldcat. index = index + 1. ls_fieldcat-col_pos = index. ls_fieldcat-fieldname = 'bktxt'. ls_fieldcat-datatype = 'CHAR'. ls_fieldcat-outputlen = '25'. ls_fieldcat-seltext_m = '凭证抬头文本'. ls_fieldcat-edit = 'X'. APPEND ls_fieldcat TO lt_fieldcat. CLEAR ls_fieldcat. "定义事件 ************定义事件 REUSE_ALV_EVENTS_GET ls_event-name = 'USER_COMMAND'."用户响应事件 ls_event-form = 'FORM_USER_COMMAND'."定义子例程最好和name值一样前面加FORM APPEND ls_event TO lt_event. CLEAR :ls_event. ls_event-name = 'TOP_OF_PAGE'."显示标题 ls_event-form = 'FORM_TOP_OF_PAGE'. APPEND ls_event TO lt_event. CLEAR :ls_event. ls_event-name = 'PF_STATUS_SET'."设置GUI状态栏 ls_event-form = 'FORM_PF_STATUS_SET'. APPEND ls_event TO lt_event. CLEAR :ls_event. "排序设置 DATA it_sort TYPE slis_sortinfo_alv OCCURS 0. DATA ls_sort TYPE slis_sortinfo_alv. ls_sort-fieldname = 'belnr'. ls_sort-down = 'X'. APPEND ls_sort TO it_sort. DATA ls_setting TYPE lvc_s_glay. ls_setting-edt_cll_cb = 'X'. "显示ALV DATA:pgm TYPE sy-repid. pgm = sy-repid. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' i_callback_program = pgm * I_CALLBACK_PF_STATUS_SET = ' ' * I_CALLBACK_USER_COMMAND = ' ' * I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = i_grid_settings = ls_setting is_layout = ls_layout it_fieldcat = lt_fieldcat * IT_EXCLUDING = * IT_SPECIAL_GROUPS = it_sort = it_sort * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = it_events = lt_event * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = lt_ty_alvshow EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. *----------------------------------------------子例程程序------------------------- **************form子例程定义**************** FORM form_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. CASE r_ucomm . WHEN 'ZADD'. MESSAGE '你点击了添加按钮' TYPE 'I'. WHEN 'ZSAVE'. data t_bkpf type TABLE OF bkpf. data e_bkpf type bkpf. SELECT * FROM bkpf INTO TABLE t_bkpf FOR ALL ENTRIES IN lt_ty_alvshow where BELNR = lt_ty_alvshow-belnr. LOOP at t_bkpf INTO e_bkpf. READ TABLE lt_ty_alvshow INTO ls_ty_alvshow WITH KEY belnr = e_bkpf-belnr. IF sy-subrc = 0. data xid type char50. xid = ls_ty_alvshow-bktxt. e_bkpf-bktxt = ls_ty_alvshow-bktxt. MODIFY t_bkpf FROM e_bkpf. MESSAGE xid type 'I'. ENDIF. ENDLOOP. UPDATE bkpf FROM TABLE t_bkpf. IF sy-subrc = 0. commit WORK. MESSAGE '更新成功' type 'I'. ELSE. ROLLBACK work. ENDIF. ENDCASE. ENDFORM. FORM form_top_of_page. DATA:lt_commentary TYPE slis_t_listheader, wt_commentary TYPE slis_listheader. wt_commentary-typ = 'H'. wt_commentary-info = '销售凭证清单'. APPEND wt_commentary TO lt_commentary. wt_commentary-typ = 'S'. wt_commentary-info = '销售凭证清单'. APPEND wt_commentary TO lt_commentary. wt_commentary-typ = 'A'. wt_commentary-info = '销售凭证清单'. APPEND wt_commentary TO lt_commentary. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = lt_commentary * i_logo = 'ZXY' "图片tcodeOAER * I_END_OF_LIST_GRID = * I_ALV_FORM = . ENDFORM. FORM form_pf_status_set USING rt_extab TYPE slis_t_extab. SET PF-STATUS 'Z142'. ENDFORM.
标签:bkpf,fieldcat,更新,lt,ls,ALV,TYPE,event From: https://www.cnblogs.com/hua900822/p/16969890.html