• SAP ALV 报表增删改查 及 下载模板导入文件


    选择屏幕设置:

    1. 选择屏幕
    2. **********************************************************************
    3. * SELECTION-SCREEN
    4. **********************************************************************
    5. SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
    6. PARAMETERS: P1 RADIOBUTTON GROUP G1 DEFAULT 'X' USER-COMMAND CKB_CLICK."导入数据
    7. PARAMETERS: P2 RADIOBUTTON GROUP G1 ."修改数据
    8. PARAMETERS: P3 RADIOBUTTON GROUP G1 ."查询数据
    9. SELECTION-SCREEN END OF BLOCK BLK1.
    10. SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
    11. PARAMETERS: P_FILE LIKE RLGRAP-FILENAME MODIF ID A. "导入摸版
    12. PARAMETERS: P_WERKS LIKE ZMMT304-WERKS MODIF ID B. "工厂
    13. SELECT-OPTIONS:
    14. S_LIFNR FOR ZMMT304-LIFNR MODIF ID B,
    15. S_ZYZDM FOR ZMMT304-ZYZDM MODIF ID B.
    16. SELECTION-SCREEN END OF BLOCK BLK2.
    17. SELECTION-SCREEN FUNCTION KEY 1. 屏幕按钮添加
    18. AT SELECTION-SCREEN OUTPUT. 屏幕选择显示或隐藏
    19. IF P1 = 'X'.
    20. LV_HIDID = 'B'.
    21. ELSE.
    22. LV_HIDID = 'A'.
    23. ENDIF.
    24. LOOP AT SCREEN.
    25. IF SCREEN-GROUP1 = LV_HIDID.
    26. SCREEN-ACTIVE = '0'.
    27. SCREEN-INVISIBLE = '1'.
    28. MODIFY SCREEN.
    29. ELSE.
    30. SCREEN-ACTIVE = '1'.
    31. SCREEN-INVISIBLE = '0'.
    32. MODIFY SCREEN.
    33. ENDIF.
    34. ENDLOOP.
    35. 屏幕初始化:
    36. *&---------------------------------------------------------------------*
    37. * INITIALIZATION
    38. *&---------------------------------------------------------------------*
    39. INITIALIZATION.
    40. CONCATENATE ICON_XLS
    41. TEXT-B02 "模板下载
    42. INTO SSCRFIELDS-FUNCTXT_01.
    43. PERFORM FRM_AUTHORITY_CHECK. "权限检查perform
    44. 选择屏幕的数据输入处理:
    45. *&---------------------------------------------------------------------*
    46. * AT SELECTION-SCREEN
    47. *&---------------------------------------------------------------------*
    48. AT SELECTION-SCREEN.
    49. IF SSCRFIELDS-UCOMM = CNS_FCODE_FC01.
    50. PERFORM FRM_DOWNLOAD_TEMPLATE. 下载模板perform逻辑
    51. ENDIF.
    52. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    53. * 上传文件路径
    54. PERFORM FRM_FILE_INPUT. 选择文件perform
    55. 主数据处理
    56. *&---------------------------------------------------------------------*
    57. * START-OF-SELECTION
    58. *&---------------------------------------------------------------------*
    59. START-OF-SELECTION.
    60. * 主要处理
    61. PERFORM FRM_MAIN_EDIT. 数据处理perform
    62. 下载模板:
    63. *&---------------------------------------------------------------------*
    64. *& Form FRM_DOWNLOAD_TEMPLATE
    65. *&---------------------------------------------------------------------*
    66. * text
    67. *----------------------------------------------------------------------*
    68. * --> p1 text
    69. * <-- p2 text
    70. *----------------------------------------------------------------------*
    71. FORM FRM_DOWNLOAD_TEMPLATE .
    72. DATA:
    73. LV_FILENAME TYPE STRING,
    74. LV_PATH TYPE STRING,
    75. LV_FULLPATH TYPE STRING,
    76. LV_WINDOW_TITLE TYPE STRING.
    77. DATA: LS_NAME LIKE WWWDATATAB,
    78. LT_MIME LIKE W3MIME OCCURS 10.
    79. LV_WINDOW_TITLE = '导入模板'. "模板标题名称
    80. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    81. EXPORTING
    82. WINDOW_TITLE = LV_WINDOW_TITLE
    83. DEFAULT_EXTENSION = 'XLS' "C_EXTENSION"默认的扩展名
    84. DEFAULT_FILE_NAME = LV_FILENAME
    85. FILE_FILTER = 'Excel文件(*.XLS)|*.XLS'
    86. CHANGING
    87. FILENAME = LV_FILENAME
    88. PATH = LV_PATH
    89. FULLPATH = LV_FULLPATH
    90. EXCEPTIONS
    91. CNTL_ERROR = 1
    92. ERROR_NO_GUI = 2
    93. OTHERS = 3.
    94. IF LV_FULLPATH IS INITIAL.
    95. RETURN.
    96. ELSE.
    97. LS_NAME-RELID = 'MI'.
    98. LS_NAME-OBJID = 'ZMME304'. " SMW0 上载的模板名称
    99. CALL FUNCTION 'WWWDATA_IMPORT'
    100. EXPORTING
    101. KEY = LS_NAME
    102. TABLES
    103. MIME = LT_MIME.
    104. CALL FUNCTION 'GUI_DOWNLOAD'
    105. EXPORTING
    106. FILENAME = LV_FULLPATH "文件名+路径
    107. FILETYPE = 'BIN'
    108. TABLES
    109. DATA_TAB = LT_MIME. "存储模板的表
    110. ENDIF.
    111. ENDFORM.
    112. 选择文件:
    113. *&---------------------------------------------------------------------*
    114. *& Form FRM_FILE_INPUT
    115. *&---------------------------------------------------------------------*
    116. * text
    117. *----------------------------------------------------------------------*
    118. * --> p1 text
    119. * <-- p2 text
    120. *----------------------------------------------------------------------*
    121. FORM FRM_FILE_INPUT .
    122. DATA:LT_TAB TYPE FILETABLE, "存放文件名的内表
    123. LS_TAB TYPE LINE OF FILETABLE, "用来读取文件名的结构
    124. LV_FILE_FILTER TYPE STRING, "file filter
    125. LV_RC TYPE I. "函数返回值
    126. REFRESH:LT_TAB.
    127. CLEAR:LS_TAB,LV_FILE_FILTER,LV_RC.
    128. LV_FILE_FILTER = 'All Files (*.*)|*.*|Excel Files (*.xls)|*.xls|Excel Files (*.xlsx)|*.xlsx'.
    129. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
    130. EXPORTING
    131. WINDOW_TITLE = 'WINDOW_TITLE'
    132. FILE_FILTER = LV_FILE_FILTER
    133. CHANGING
    134. FILE_TABLE = LT_TAB
    135. RC = LV_RC
    136. EXCEPTIONS
    137. FILE_OPEN_DIALOG_FAILED = 1
    138. CNTL_ERROR = 2
    139. ERROR_NO_GUI = 3
    140. NOT_SUPPORTED_BY_GUI = 4
    141. OTHERS = 5.
    142. IF SY-SUBRC = 0.
    143. READ TABLE LT_TAB INDEX 1 INTO LS_TAB.
    144. IF SY-SUBRC = 0.
    145. P_FILE = LS_TAB.
    146. ENDIF.
    147. ENDIF.
    148. ENDFORM.
    149. 读取导入文件数据:
    150. *&---------------------------------------------------------------------*
    151. *& Form FRM_READ_DATA
    152. *&---------------------------------------------------------------------*
    153. * text
    154. *----------------------------------------------------------------------*
    155. * --> p1 text
    156. * <-- p2 text
    157. *----------------------------------------------------------------------*
    158. FORM FRM_READ_DATA .
    159. DATA:BEGIN OF LT_EXCEL OCCURS 0.
    160. INCLUDE STRUCTURE ALSMEX_TABLINE.
    161. DATA:END OF LT_EXCEL .
    162. DATA:LS_EXCEL LIKE LINE OF LT_EXCEL,
    163. LS_XLSX TYPE TY_XLSX,
    164. LV_FILENAME TYPE LOCALFILE,
    165. LV_BEGIN_COL TYPE I,
    166. LV_BEGIN_ROW TYPE I,
    167. LV_END_COL TYPE I,
    168. LV_END_ROW TYPE I.
    169. FIELD-SYMBOLS:.
    170. REFRESH LT_EXCEL.
    171. CLEAR:LV_FILENAME,LV_BEGIN_COL,LV_BEGIN_ROW,LV_END_COL,LV_END_ROW,LS_EXCEL.
    172. * 本地文件路径
    173. LV_FILENAME = P_FILE.
    174. LV_BEGIN_COL = 1.
    175. LV_BEGIN_ROW = 2.
    176. LV_END_COL = 7.
    177. LV_END_ROW = 10000.
    178. * 读取本地EXCEL文件数据
    179. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    180. EXPORTING
    181. FILENAME = LV_FILENAME
    182. I_BEGIN_COL = LV_BEGIN_COL
    183. I_BEGIN_ROW = LV_BEGIN_ROW
    184. I_END_COL = LV_END_COL
    185. I_END_ROW = LV_END_ROW
    186. TABLES
    187. INTERN = LT_EXCEL
    188. EXCEPTIONS
    189. INCONSISTENT_PARAMETERS = 1
    190. UPLOAD_OLE = 2
    191. OTHERS = 3.
    192. IF SY-SUBRC <> 0
    193. AND LT_EXCEL[] IS INITIAL.
    194. MESSAGE '上载模板数据为空!' TYPE 'S' DISPLAY LIKE 'E'.
    195. LEAVE LIST-PROCESSING.
    196. ENDIF.
    197. LOOP AT LT_EXCEL INTO LS_EXCEL.
    198. ASSIGN COMPONENT LS_EXCEL-COL OF STRUCTURE LS_XLSX TO .
    199. = LS_EXCEL-VALUE.
    200. AT END OF ROW.
    201. APPEND LS_XLSX TO GT_XLSX.
    202. CLEAR:
    203. LS_XLSX.
    204. ENDAT.
    205. CLEAR:LS_EXCEL.
    206. ENDLOOP.
    207. ENDFORM.

    增删改查处理:

    获取选择框

    1. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    2. IMPORTING
    3. e_grid = gv_grid.
    1. ALV CHANGED DATA光标移动失焦触发.
    2. LOOP AT pcl_data->mt_mod_cells INTO ls_cells.
    3. READ TABLE gt_data INTO gs_data INDEX ls_cells-row_id.
    4. ..........
    5. ENDLOOP.屏幕刷新函数
    6. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    7. IMPORTING
    8. e_grid = lo_grid.
    9. lw_stable-row = 'X'.
    10. lw_stable-col = 'X'.
    11. lo_grid->refresh_table_display(
    12. EXPORTING
    13. is_stable = lw_stable
    14. EXCEPTIONS
    15. finished = 1
    16. OTHERS = 2 ).

    本质上是技术上的活灵活用.将多种基础内容合并在一起,这样才算是业务结合学习内容实际. 算是真实开发.

    实际案例

    今天的这个案例讲的是一个自建立表,我们要给他实现增加,删除,修改,查询的功能.同时,增加权限检查. 本案例会从如何自建立表及表格函数生成器到最后权限检查都讲解一遍,并加入多种基础并经常使用的技巧.如果是新手会很友好.

    建表开始

    我们通过SE11进行自建立表的创建.注意的是,自建立表一定要以Z或者Y开头,一般都是附加模块及号码 表示自建表顺序 .

    ZSDT0015

    数据准备

    我们基础表建立完成后,就开始在SE38中开发程序.

    1. "数据准备types : BEGIN OF ty_DAta ,zhh TYPE i,EKORG TYPE ZSDT0015-EKORG ,MATNR TYPE ZSDT0015-MATNR ,VKORG TYPE ZSDT0015-VKORG ,ZLSMATNR TYPE ZSDT0015-ZLSMATNR ,ERNAM TYPE ZSDT0015-ERNAM ,ERDAT TYPE ZSDT0015-ERDAT ,ERZET TYPE ZSDT0015-ERZET ,END OF ty_DAta .data : gs_data TYPE ty_DAta .data : gt_data TYPE TABLE of ty_DAta .DATA : lv_num TYPE I VALUE IS INITIAL.data : flag TYPE c.data : ls_zsdt0015 TYPE ZSDT0015 .DATA : ls_data TYPE ty_data.DATA : lt_rows TYPE lvc_t_row.DATA : GT_LSDATA TYPE TABLE OF ty_DAta ." ALV 常量 .*--------------------------------------------------------------------** ALV变量*--------------------------------------------------------------------*DATA: wa_layout TYPE lvc_s_layo.DATA:wa_fieldcat TYPE lvc_s_fcat,gt_fieldcat TYPE lvc_t_fcat.DATA gs_grid TYPE lvc_s_glay. "新DATA: gv_grid TYPE REF TO cl_gui_alv_grid.DATA:gs_glay TYPE lvc_s_glay.DATA : gv_error TYPE c.DATA : bs1 TYPE c.选择屏幕
    2. TABLES : EKKO ,EKPO,VBAK .
    3. SELECTION-SCREEN BEGIN OF BLOCK block WITH FRAME TITLE text-001 .
    4. "select-OPTIONS s_EKORG for EKKO-EKORG .PARAMETERS p_EKORG TYPE EKORG OBLIGATORY .
    5. select-OPTIONS s_MATNR for EKPO-MATNR .
    6. "select-OPTIONS s_VKORG for VBAK-VKORG .PARAMETERS p_VKORG TYPE VKORG OBLIGATORY .
    7. SELECTION-SCREEN END OF BLOCK block .子例程建立
    8. *&---------------------------------------------------------------------**& 包含 ZSDR026AF*&---------------------------------------------------------------------**&---------------------------------------------------------------------**& Form get_Data
    9. *&---------------------------------------------------------------------**& text
    10. *&---------------------------------------------------------------------**& --> p1 text
    11. *& <-- p2 text
    12. *&---------------------------------------------------------------------*FORM get_Data .
    13. SELECT * FROM ZSDT0015 AS A INTO CORRESPONDING FIELDS OF TABLE gt_data where EKORG = p_EKORG and VKORG = p_VKORG .
    14. SORT gt_data by ERZET ." DESCENDING .
    15. GT_LSDATA = Gt_DATA .
    16. ENDFORM.*&amp;---------------------------------------------------------------------**&amp; Form diaplay_data
    17. *&amp;---------------------------------------------------------------------**&amp; text
    18. *&amp;---------------------------------------------------------------------**&amp; --> p1 text
    19. *&amp; <-- p2 text
    20. *&amp;---------------------------------------------------------------------*FORM display_data .
    21. PERFORM set_alv_layout.
    22. PERFORM bulid_fieldcat.
    23. PERFORM call_alv_func.
    24. ENDFORM.*&amp;---------------------------------------------------------------------**&amp; Form set_alv_layout
    25. *&amp;---------------------------------------------------------------------**&amp; text
    26. *&amp;---------------------------------------------------------------------**&amp; --> p1 text
    27. *&amp; <-- p2 text
    28. *&amp;---------------------------------------------------------------------*FORM set_alv_layout .
    29. CLEAR: wa_layout.
    30. wa_layout-zebra = 'X'. "斑马线
    31. wa_layout-cwidth_opt = 'X'. "自动列宽
    32. ENDFORM.*&amp;---------------------------------------------------------------------**&amp; Form bulid_fieldcat
    33. *&amp;---------------------------------------------------------------------**&amp; text
    34. *&amp;---------------------------------------------------------------------**&amp; --> p1 text
    35. *&amp; <-- p2 text
    36. *&amp;---------------------------------------------------------------------*FORM bulid_fieldcat .
    37. DEFINE add_col.
    38. * ADD 1 TO pos.* lw_fieldcat-col_pos = pos.
    39. wa_fieldcat-fieldname = &amp;1.
    40. wa_fieldcat-ref_field = &amp;2.
    41. wa_fieldcat-ref_table = &amp;3.
    42. wa_fieldcat-scrtext_l = &amp;4.
    43. wa_fieldcat-outputlen = &amp;5.
    44. wa_fieldcat-no_zero = &amp;6.
    45. wa_fieldcat-edit = &amp;7.
    46. wa_fieldcat-edit_mask = &amp;8.
    47. wa_fieldcat-key = &amp;9.
    48. CASE wa_fieldcat-fieldname.
    49. WHEN 'EKORG' or 'MATNR' or 'VKORG' or 'ZLSMATNR'.
    50. IF FLAG is INITIAL .
    51. wa_fieldcat-edit = 'X' .
    52. " wa_fieldcat-checkbox = 'X' .
    53. " wa_fieldcat-edit_mask = 'X'.
    54. ELSE .
    55. wa_fieldcat-edit = 'X' .
    56. ENDIF.
    57. WHEN OTHERS.ENDCASE .
    58. APPEND wa_fieldcat TO gt_fieldcat.
    59. CLEAR : wa_fieldcat.
    60. END-OF-DEFINITION.
    61. REFRESH: gt_fieldcat.
    62. add_col 'EKORG' space space '采购组织' space space space space space.
    63. add_col 'MATNR' 'MATNR' 'MARA' '物料号' space space space space space.
    64. add_col 'VKORG' space space '销售组织' space space space space space.
    65. add_col 'ZLSMATNR' 'MATNR' 'MARA' 'ZLSMATNR物料号' space space space space space.
    66. add_col 'ERNAM' space space '修改者' space space space space space.
    67. add_col 'ERDAT' space space '修改日期' space space space space space.
    68. add_col 'ERZET' space space '修改时间' space space space space space.
    69. ENDFORM.
    70. *&amp;---------------------------------------------------------------------**&amp; Form call_alv_func
    71. *&amp;---------------------------------------------------------------------**&amp; text
    72. *&amp;---------------------------------------------------------------------**&amp; --> p1 text
    73. *&amp; <-- p2 text
    74. *&amp;---------------------------------------------------------------------*FORM call_alv_func .
    75. DATA :gt_event TYPE slis_t_event,
    76. gs_event TYPE slis_alv_event.
    77. MOVE 'DATA_CHANGED' TO gs_event-name.
    78. MOVE 'ALV_DATA_CHANGED' TO gs_event-form.
    79. APPEND gs_event TO gt_event.
    80. gs_glay-edt_cll_cb = abap_true. " 选中复选款,立刻触发data changed 事件
    81. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    82. EXPORTING
    83. i_callback_program = sy-repid "回调程序
    84. i_callback_pf_status_set = 'SET_PF_STATUS'
    85. i_callback_user_command = 'USER_COMMAND'
    86. i_grid_settings = gs_glay
    87. is_layout_lvc = wa_layout
    88. it_fieldcat_lvc = gt_fieldcat "需要显示的内表的列
    89. i_save = 'A'
    90. it_events = gt_event
    91. TABLES
    92. t_outtab = gt_data "需要显示的数据
    93. EXCEPTIONS
    94. program_error = 1
    95. OTHERS = 2.
    96. IF sy-subrc <> 0.
    97. ENDIF.
    98. ENDFORM.
    99. FORM refresh_alv .
    100. DATA: lo_grid TYPE REF TO cl_gui_alv_grid,
    101. lw_stable TYPE lvc_s_stbl.
    102. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    103. IMPORTING
    104. e_grid = lo_grid.
    105. lw_stable-row = 'X'.
    106. lw_stable-col = 'X'.
    107. lo_grid->refresh_table_display(
    108. EXPORTING
    109. is_stable = lw_stable
    110. EXCEPTIONS
    111. finished = 1
    112. OTHERS = 2 ).ENDFORM.
    113. " 用户子程序
    114. FORM user_command USING r_ucomm LIKE sy-ucomm
    115. rs_selfield TYPE slis_selfield.
    116. CASE r_ucomm.
    117. WHEN '&C1' .
    118. " 输入料号 对应修改材料名称等信息.
    119. " PERFORM frm_process_print .
    120. WHEN '&INSERT' .
    121. IF FLAG IS INITIAL.
    122. MESSAGE '新增前请先点编辑按钮' TYPE 'E' .
    123. ELSE.
    124. PERFORM FORM_INSERT.
    125. PERFORM refresh_alv.
    126. ENDIF.
    127. WHEN '&UPDATE' .
    128. PERFORM FORM_UPDATE .
    129. PERFORM refresh_alv.
    130. WHEN '&DEL' .
    131. IF FLAG IS INITIAL .
    132. MESSAGE '删除请先点编辑按钮' TYPE 'E' .
    133. ELSE .
    134. PERFORM FORM_DEL .
    135. PERFORM refresh_alv.
    136. ENDIF.
    137. WHEN '&DATA_SAVE'.
    138. PERFORM FORM_SAVE .
    139. PERFORM refresh_alv.
    140. ENDCASE.ENDFORM.*&---------------------------------------------------------------------**& Form FORM_INSERT*&---------------------------------------------------------------------**& text 新增按钮
    141. *&---------------------------------------------------------------------**& --> p1 text
    142. *& <-- p2 text
    143. *&---------------------------------------------------------------------*FORM form_insert .
    144. CLEAR ls_data .
    145. ls_data-zhh = lines( gt_data ) + 1.
    146. ls_data-EKORG = p_EKORG.
    147. ls_data-MATNR = ''.
    148. ls_data-VKORG = p_VKORG.
    149. ls_data-ZLSMATNR = '' .
    150. ls_data-ERNAM = sy-uname.
    151. ls_data-ERDAT = sy-datum.
    152. ls_data-ERZET = sy-uzeit.
    153. INSERT ls_data INTO gt_data INDEX lines( gt_data ) + 1.
    154. SORT gt_data by ERZET DESCENDING .
    155. ENDFORM.*&---------------------------------------------------------------------**& Form FORM_UPDATE*&---------------------------------------------------------------------**& text 修改按钮 ,如果不点这个按钮只能查询
    156. *&---------------------------------------------------------------------**& --> p1 text
    157. *& <-- p2 text
    158. *&---------------------------------------------------------------------*FORM form_update .
    159. " 修改flag
    160. FLAG = 'X' .PERFORM bulid_fieldcat .
    161. REFRESH gt_data .
    162. gt_data = GT_LSDATA .PERFORM refresh_alv .MESSAGE '可以编辑' TYPE 'S' .
    163. ENDFORM.
    164. "得到选择框
    165. FORM get_grid.
    166. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    167. IMPORTING
    168. e_grid = gv_grid.ENDFORM.*&---------------------------------------------------------------------**& Form FORM_DEL*&---------------------------------------------------------------------**& text
    169. *&---------------------------------------------------------------------**& --> p1 text
    170. *& <-- p2 text
    171. *&---------------------------------------------------------------------*FORM form_del .
    172. PERFORM get_grid.
    173. CALL METHOD gv_grid->get_selected_rows
    174. IMPORTING
    175. et_index_rows = lt_rows.
    176. LOOP AT lt_rows INTO DATA(LS_ROWS).
    177. CLEAR ls_data .
    178. READ TABLE gt_data INTO ls_data INDEX ls_rows-index.
    179. MOVE-CORRESPONDING ls_data to ls_zsdt0015 .
    180. DELETE ZSDT0015 FROM ls_zsdt0015 . " 删除透明表数据
    181. DELETE gt_data INDEX ls_rows-index. " 删除内表
    182. ENDLOOP.
    183. " 更新当前序号
    184. LOOP AT gt_data ASSIGNING FIELD-SYMBOL(<lfs_item>).
    185. lv_num = lv_num + 1.
    186. <lfs_item>-zhh = lv_num.
    187. ENDLOOP.
    188. ENDFORM.*&amp;---------------------------------------------------------------------**&amp; Form FORM_SAVE*&amp;---------------------------------------------------------------------**&amp; text
    189. *&amp;---------------------------------------------------------------------**&amp; --> p1 text
    190. *&amp; <-- p2 text
    191. *&amp;---------------------------------------------------------------------*FORM form_save .
    192. IF FLAG = 'X'.
    193. LOOP AT GT_DATA INTO GS_DATA.
    194. MOVE-CORRESPONDING gs_data TO ls_zsdt0015.
    195. MODIFY ZSDT0015 FROM ls_zsdt0015 .
    196. CLEAR GS_DATA .
    197. ENDLOOP.
    198. MESSAGE '保存成功' TYPE 'I' .
    199. SORT gt_data .
    200. ELSE .
    201. MESSAGE '未点编辑只能看' TYPE 'I' .
    202. ENDIF.
    203. ENDFORM.
    204. FORM set_pf_status USING rt_extab TYPE slis_t_extab.
    205. DATA : lw_tab LIKE LINE OF rt_extab.
    206. REFRESH rt_extab.
    207. IF gv_error IS INITIAL.
    208. ELSE.
    209. " 删除按钮
    210. lw_tab-fcode = '&PRINT'.
    211. APPEND lw_tab TO rt_extab.
    212. ENDIF.
    213. SET PF-STATUS 'STD' EXCLUDING rt_extab.
    214. " SET TITLEBAR 'TIT_1000'.ENDFORM.
    215. FORM alv_data_changed USING pcl_data TYPE REF TO cl_alv_changed_data_protocol.
    216. DATA:
    217. l_name(100),
    218. ls_cells TYPE lvc_s_modi.
    219. FIELD-SYMBOLS: <f_field> TYPE any .
    220. IF FLAG = 'X'.
    221. LOOP AT pcl_data->mt_mod_cells INTO ls_cells.
    222. READ TABLE gt_data INTO gs_data INDEX ls_cells-row_id.
    223. gs_data-ERNAM = sy-uname.
    224. gs_data-ERDAT = sy-datum.
    225. gs_data-ERZET = sy-uzeit.
    226. MODIFY gt_data FROM GS_DATA TRANSPORTING ERNAM ERDAT ERZET WHERE zhh = GS_DATA-zhh and EKORG = gs_Data-ekorg and MATNR = gs_Data-matnr and VKORG = gs_Data-VKORG and ZLSMATNR = GS_DATA-ZLSMATNR.
    227. CLEAR gs_Data.
    1. ENDLOOP.ENDIF.DATA: ls_stbl TYPE lvc_s_stbl.PERFORM refresh_alv .ENDFORM.*&amp;---------------------------------------------------------------------**&amp; Form check_auth*&amp;---------------------------------------------------------------------**&amp; text 权限检查*&amp;---------------------------------------------------------------------**&amp; --> p1 text*&amp; <-- p2 text*&amp;---------------------------------------------------------------------*FORM check_auth .SELECT SINGLE ekorgFROM T024EINTO @DATA(ls_ekorg)WHERE ekorg = @p_ekorg.AUTHORITY-CHECK OBJECT 'M_EINF_EKO'ID 'ACTVT' DUMMYID 'EKORG' FIELD ls_ekorg .IF sy-subrc NE 0.MESSAGE '没有权限查看采购组织' &amp;&amp; p_ekorg &amp;&amp; '权限' TYPE 'E'.STOP.ENDIF.SELECT SINGLE vkorg INTO @DATA(lv_vkorg) FROM ztsd001 WHERE zrecon_no = @p_VKORG.IF sy-subrc EQ 0 .AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'ID 'VKORG' FIELD lv_vkorgID 'VTWEG' DUMMYID 'SPART' DUMMYID 'ACTVT' FIELD '03'.IF sy-subrc <> 0.MESSAGE '你无该销售组织权限,请检查!' TYPE 'S' DISPLAY LIKE 'E'..LEAVE LIST-PROCESSING.ENDIF.ENDIF.ENDFORM.程序调用
    2. " 数据准备
    3. INCLUDE ZSDR026AD .
    4. " 选择屏幕
    5. INCLUDE ZSDR026AS .
    6. " 子程序
    7. INCLUDE ZSDR026AF .
    8. "INITIALIZATION .INITIALIZATION .
    9. "at SELECTION-SCREEN
    10. at SELECTION-SCREEN .
    11. " 权限检查
    12. PERFORM check_auth.
    13. "at SELECTION-SCREEN OUTPUT .
    14. at SELECTION-SCREEN OUTPUT .
    15. "START-OF-SELECTION .START-OF-SELECTION .
    16. PERFORM get_Data .
    17. "end-of-SELECTION .
    18. end-of-SELECTION .
    19. PERFORM display_data.

  • 相关阅读:
    GD32F30x系列Systick系统滴答定时器 (Qt模拟项目 可套函数模板)
    Go项目踩坑:go get下载超时,goFrame框架下的go项目里将vue项目的dist同步打包发布,go项目打包并压缩
    正厚软件 | jdk的安装和环境变量配置总结
    Linux内核设计与实现(十)| 页高速缓存和页回写
    【树莓派不吃灰】Linux服务器篇(核心概念)
    小程序毕设作品之微信体育馆预约小程序毕业设计成品(8)毕业设计论文模板
    Rust调用同级目录中的rs文件和调用下级目录中的rs文件
    R语言计算dataframe所有数据列的平均值:将dataframe转化为矩阵或者向量后再计算
    陈学智升任VMware全球副总裁、大中华区总裁,面临四个挑战
    leetcode - 456. 132 Pattern
  • 原文地址:https://blog.csdn.net/qq_36952606/article/details/132901578