在ALV中添加搜索帮助并返回多列值
来源:互联网 发布:人工智能吧 编辑:程序博客网 时间:2024/06/14 19:27
**=====================================================================**& Report ZPM_RP_09**=====================================================================*REPORT zpm_rp_09.*======================================================================** Modify Log History.*----------------------------------------------------------------------***No. Modified by Date Transport Description*--- ----------- ---- --------- -----------*M1*======================================================================** Tables*======================================================================*TABLES:zpm_rp_09.*======================================================================** Constants*======================================================================**======================================================================** Types*======================================================================*TYPE-POOLS : abap,slis,icon,shlp.*======================================================================** Internal Tables/work areas*======================================================================*DATA:BEGIN OF gt_out OCCURS 0, zzjhbh LIKE zpm_rp_09-zzjhbh, "计划编号 zzhxmh LIKE zpm_rp_09-zzhxmh, "行项目号 werks LIKE zpm_rp_09-werks, "工厂 name1 LIKE zpm_rp_09-name1, "工厂名称 pspnr TYPE zpm_rp_09-pspnr, "大修预算编号 post1 LIKE zpm_rp_09-post1, "大修预算名称 sel(1) TYPE c, END OF gt_out.DATA: fieldcat TYPE lvc_t_fcat WITH HEADER LINE.DATA:gt_excel LIKE TABLE OF alsmex_tabline, gw_excel LIKE alsmex_tabline.DATA:BEGIN OF gt_upload OCCURS 0, zzjhbh LIKE zpm_rp_09-zzjhbh, "计划编号 zzhxmh LIKE zpm_rp_09-zzhxmh, "行项目号 werks LIKE zpm_rp_09-werks, "工厂 name1 LIKE zpm_rp_09-name1, "工厂名称 pspnr LIKE zpm_rp_09-pspnr, "大修预算编号 post1 LIKE zpm_rp_09-post1, "大修预算名称 END OF gt_upload.*======================================================================** Data declarations*======================================================================*DATA: wa_layout TYPE lvc_s_layo, gt_events TYPE slis_t_event WITH HEADER LINE, gs_event LIKE LINE OF gt_events.DATA: g_grid TYPE REF TO cl_gui_alv_grid.DATA:gv_file TYPE rlgrap-filename.DATA: ref_grid TYPE REF TO cl_gui_alv_grid.DATA:lw_layout TYPE slis_layout_alv.*----------------------------------------------------------------------** CLASS lcl_event_receiver DEFINITION*----------------------------------------------------------------------***----------------------------------------------------------------------*CLASS lcl_event_receiver DEFINITION. PUBLIC SECTION. METHODS handle_modify FOR EVENT data_changed_finished OF cl_gui_alv_grid IMPORTING e_modified et_good_cells. METHODS: handle_f4 FOR EVENT onf4 OF cl_gui_alv_grid IMPORTING e_fieldname es_row_no er_event_data et_bad_cells.ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION*----------------------------------------------------------------------** CLASS LCL_EVENT_RECEIVER IMPLEMENTATION*----------------------------------------------------------------------***----------------------------------------------------------------------*CLASS lcl_event_receiver IMPLEMENTATION. METHOD handle_modify. DATA stbl TYPE lvc_s_stbl. DATA:wa_out LIKE gt_out. LOOP AT gt_out INTO wa_out. CALL FUNCTION 'CONVERSION_EXIT_ABPSN_INPUT' EXPORTING input = wa_out-pspnr IMPORTING output = wa_out-pspnr. SELECT SINGLE post1 INTO wa_out-post1 FROM prps WHERE posid = wa_out-pspnr. CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT' EXPORTING input = wa_out-pspnr IMPORTING output = wa_out-pspnr. MODIFY gt_out FROM wa_out. ENDLOOP.* 稳定刷新 stbl-row = 'X'." 基于行的稳定刷新 stbl-col = 'X'." 基于列稳定刷新 CALL METHOD ref_grid->refresh_table_display EXPORTING is_stable = stbl. ENDMETHOD. "HANDLE_MODIFY*---------------------------------------------------------------------------------------------* METHOD handle_f4.* 窗口时间参数的自定义f4检索帮助 PERFORM f4_help_zsjcs USING e_fieldname es_row_no.* 设置后,alv稳定刷新 PERFORM refresh_table_alv. ENDMETHOD. "HANDLE_F4ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATIONDATA gt_event_receiver TYPE REF TO lcl_event_receiver .*---------------------------------------------------------------**DEFINATION*---------------------------------------------------------------*DEFINE fill_field. CLEAR FIELDCAT. FIELDCAT-FIELDNAME = &1. FIELDCAT-SCRTEXT_L = &2. FIELDCAT-CFIELDNAME = &3. FIELDCAT-OUTPUTLEN = &4. FIELDCAT-EDIT = &5. APPEND FIELDCAT.END-OF-DEFINITION.*======================================================================** Range declarations*======================================================================**======================================================================** Input Selection Screen*======================================================================*SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001. PARAMETERS:p_werks LIKE zpm_rp_09-werks OBLIGATORY. "工厂SELECTION-SCREEN END OF BLOCK bl1.*======================================================================** Initialization*======================================================================*INITIALIZATION.*======================================================================** At Selection Screen*======================================================================*AT SELECTION-SCREEN. PERFORM frm_authorization_check_swerk. "对工厂进行权限检查*======================================================================** At Selection Screen Output*======================================================================*AT SELECTION-SCREEN OUTPUT .*======================================================================** AT SELECTION-SCREEN ON VALUE-REQUEST*======================================================================**at selection-screen on value-request for p_ksgru.*======================================================================** Start of Selection*======================================================================*START-OF-SELECTION.PERFORM frm_get_data.*======================================================================** End of Selection*======================================================================*END-OF-SELECTION. PERFORM frm_display_data.*&---------------------------------------------------------------------**& Form FRM_GET_DATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_get_data . SELECT zzjhbh zzhxmh werks name1 pspnr post1 INTO CORRESPONDING FIELDS OF TABLE gt_out FROM zpm_rp_09 WHERE werks = p_werks.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_DISPLAY_DATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_display_data . PERFORM frm_layout. PERFORM frm_fill_field. PERFORM frm_alv_display.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_LAYOUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_layout . CLEAR: wa_layout."它用来定义ALV报表的整体属性 wa_layout-cwidth_opt = 'X'."优化列宽选项是否设置 wa_layout-box_fname = 'SEL'.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_FILL_FIELD*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_fill_field . fieldcat-fieldname = 'WERKS'. fieldcat-scrtext_l = '工厂'. fieldcat-cfieldname = ''. fieldcat-outputlen = '20'. fieldcat-edit = ''. fieldcat-f4availabl = 'X'. APPEND fieldcat. CLEAR fieldcat. fill_field 'NAME1' '工厂名称' '' '20' ''. fieldcat-fieldname = 'ZZJHBH'. fieldcat-scrtext_l = '大修计划号'. fieldcat-cfieldname = ''. fieldcat-outputlen = '20'. fieldcat-edit = ''. fieldcat-f4availabl = 'X'. APPEND fieldcat. CLEAR fieldcat. fieldcat-fieldname = 'ZZHXMH'. fieldcat-scrtext_l = '大修计划行项目号'. fieldcat-cfieldname = ''. fieldcat-outputlen = '20'. fieldcat-edit = ''. fieldcat-f4availabl = 'X'. APPEND fieldcat. CLEAR fieldcat. fieldcat-fieldname = 'PSPNR'. fieldcat-scrtext_l = '大修预算编号'. fieldcat-cfieldname = ''. fieldcat-outputlen = '20'. fieldcat-edit = ''. fieldcat-f4availabl = 'X'. APPEND fieldcat. CLEAR fieldcat. fill_field 'POST1' '大修预算名称' '' '20' ''.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_ALV_DISPLAY*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_alv_display . gt_events-name = 'CALLER_EXIT'. "slis_ev_caller_exit_at_start事件 gt_events-form = 'FM_BUTTON'. APPEND gt_events. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_program = sy-repid i_callback_user_command = 'USER_COMMAND' i_callback_pf_status_set = 'PF_STATUS' is_layout_lvc = wa_layout it_fieldcat_lvc = fieldcat[] i_default = 'X' i_save = 'A' it_events = gt_events[] TABLES t_outtab = gt_out[] EXCEPTIONS OTHERS = 2. IF sy-subrc <> 0. ENDIF.ENDFORM. " FRM_ALV_DISPLAYFORM pf_status USING lt_extab. SET PF-STATUS 'MENU'.ENDFORM.*&---------------------------------------------------------------------**& Form user_command*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->UCOMM text* -->RS_SELFIELD text*----------------------------------------------------------------------*FORM user_command USING ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. "#EC CALLED CASE ucomm. WHEN 'CHANGE'. PERFORM frm_change_function. WHEN 'DELETE'. PERFORM frm_delete_function. WHEN 'CREATE'. PERFORM frm_create_function. WHEN 'SAVE'. PERFORM frm_save_function. WHEN 'IMPORT'. PERFORM frm_import_function. ENDCASE. rs_selfield-refresh = 'X'. rs_selfield-col_stable = 'X'. rs_selfield-row_stable = 'X'.ENDFORM. "user_command*&---------------------------------------------------------------------**& Form FRM_CHANGE_FUNCTION*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_change_function . LOOP AT fieldcat. IF fieldcat-fieldname = 'NAME1' OR fieldcat-fieldname = 'POST1' OR fieldcat-fieldname = 'WERKS' OR fieldcat-fieldname = 'ZZHXMH'. fieldcat-edit = ''. ELSE. fieldcat-edit = 'X'. ENDIF. MODIFY fieldcat TRANSPORTING edit. ENDLOOP. PERFORM frm_alv_display.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_DELETE_FUNCTION*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_delete_function . DATA: l_answer(1) TYPE c. READ TABLE gt_out WITH KEY sel = 'X'. IF sy-subrc <> 0. MESSAGE '请选择要删除的行!' TYPE 'E'. ELSE. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING titlebar = '删除' text_question = '是否要删除该内容?' default_button = '2' display_cancel_button = 'X' IMPORTING answer = l_answer EXCEPTIONS text_not_found = 1 OTHERS = 2. IF l_answer = '1'. LOOP AT gt_out WHERE sel = 'X'. DELETE gt_out. DELETE FROM zpm_rp_09 WHERE zzjhbh = gt_out-zzjhbh AND zzhxmh = gt_out-zzhxmh AND werks = gt_out-werks. IF sy-subrc = 0. MESSAGE '删除成功!' TYPE 'S'. ELSE. MESSAGE '删除失败!' TYPE 'E'. ENDIF. ENDLOOP. ENDIF. ENDIF.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_CREATE_FUNCTION*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_create_function . APPEND INITIAL LINE TO gt_out. LOOP AT gt_out. IF gt_out-werks = ''. SELECT SINGLE werks name1 INTO (gt_out-werks,gt_out-name1) FROM t001w WHERE werks = p_werks. MODIFY gt_out. ENDIF. ENDLOOP.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_SAVE_FUNCTION*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_save_function . DATA: lv_valid TYPE char01. DATA:lv_mes TYPE string. DATA lt_save TYPE TABLE OF zpm_rp_09 WITH HEADER LINE. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = g_grid. CALL METHOD g_grid->check_changed_data IMPORTING e_valid = lv_valid. IF lv_valid IS INITIAL. EXIT. ENDIF. REFRESH lt_save. LOOP AT gt_out. lt_save-zzjhbh = gt_out-zzjhbh. lt_save-zzhxmh = gt_out-zzhxmh. lt_save-werks = gt_out-werks. lt_save-name1 = gt_out-name1. lt_save-pspnr = gt_out-pspnr. lt_save-post1 = gt_out-post1. APPEND lt_save. CLEAR lt_save. ENDLOOP. MODIFY zpm_rp_09 FROM TABLE lt_save. COMMIT WORK. IF sy-subrc = 0. MESSAGE '保存成功!' TYPE 'S'. ELSE. MESSAGE '保存失败!' TYPE 'E'. ENDIF.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_IMPORT_FUNCTION*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_import_function . PERFORM frm_get_fiel_name. PERFORM frm_excel_upload. PERFORM frm_data_get.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_GET_FIEL_NAME*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_get_fiel_name . CALL FUNCTION 'WS_FILENAME_GET' EXPORTING mode = 'O' title = '选取路径' IMPORTING filename = gv_file EXCEPTIONS inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 OTHERS = 5.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_EXCEL_UPLOAD*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_excel_upload . CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = gv_file i_begin_col = 1 i_begin_row = 2 i_end_col = 6 i_end_row = 5000 TABLES intern = gt_excel EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 OTHERS = 3. IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. REFRESH gt_upload. SORT gt_excel BY row. LOOP AT gt_excel INTO gw_excel. CASE gw_excel-col. WHEN '001'. gt_upload-werks = gw_excel-value. WHEN '002'. gt_upload-name1 = gw_excel-value. WHEN '003'. gt_upload-zzjhbh = gw_excel-value. WHEN '004'. gt_upload-zzhxmh = gw_excel-value. WHEN '005'. gt_upload-pspnr = gw_excel-value. WHEN '006'. gt_upload-post1 = gw_excel-value. WHEN OTHERS. ENDCASE. AT END OF row. APPEND gt_upload. CLEAR gt_upload. ENDAT. ENDLOOP.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_DATA_GET*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_data_get . DATA:lt_import LIKE TABLE OF zpm_rp_09 WITH HEADER LINE. LOOP AT gt_upload. MOVE-CORRESPONDING gt_upload TO gt_out. APPEND gt_out. CLEAR gt_out. ENDLOOP. REFRESH lt_import. LOOP AT gt_out. MOVE-CORRESPONDING gt_out TO lt_import. APPEND lt_import. CLEAR lt_import. ENDLOOP. MODIFY zpm_rp_09 FROM TABLE lt_import. COMMIT WORK. IF sy-subrc = 0. MESSAGE '导入成功!' TYPE 'S'. ELSE. MESSAGE '导入失败' TYPE 'E'. ENDIF.ENDFORM.*&---------------------------------------------------------------------**& Form fm_button*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->E_GRID text*----------------------------------------------------------------------*FORM fm_button USING e_grid TYPE slis_data_caller_exit. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = ref_grid.* 设置enter事件 CALL METHOD ref_grid->register_edit_event EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_enter EXCEPTIONS error = 1 OTHERS = 2. CREATE OBJECT gt_event_receiver. SET HANDLER gt_event_receiver->handle_modify FOR ref_grid. DATA: lv_event_receiver TYPE REF TO lcl_event_receiver, lt_f4 TYPE lvc_t_f4, ls_f4 TYPE lvc_s_f4. ls_f4-fieldname = 'WERKS'. "窗口时间参数(需要定义F4帮助按钮的字段) ls_f4-register = 'X'. ls_f4-getbefore = 'X'. ls_f4-chngeafter = 'X'. INSERT ls_f4 INTO TABLE lt_f4. ls_f4-fieldname = 'PSPNR'. "窗口时间参数(需要定义F4帮助按钮的字段) ls_f4-register = 'X'. ls_f4-getbefore = 'X'. ls_f4-chngeafter = 'X'. INSERT ls_f4 INTO TABLE lt_f4. ls_f4-fieldname = 'ZZJHBH'. "窗口时间参数(需要定义F4帮助按钮的字段) ls_f4-register = 'X'. ls_f4-getbefore = 'X'. ls_f4-chngeafter = 'X'. INSERT ls_f4 INTO TABLE lt_f4. ls_f4-fieldname = 'ZZHXMH'. "窗口时间参数(需要定义F4帮助按钮的字段) ls_f4-register = 'X'. ls_f4-getbefore = 'X'. ls_f4-chngeafter = 'X'. INSERT ls_f4 INTO TABLE lt_f4. CREATE OBJECT lv_event_receiver. SET HANDLER lv_event_receiver->handle_f4 FOR ref_grid. CALL METHOD ref_grid->register_f4_for_fields EXPORTING it_f4 = lt_f4[].ENDFORM. "FM_BUTTON*&---------------------------------------------------------------------**& Form REFRESH_TABLE_ALV*&---------------------------------------------------------------------** 设置后,alv稳定刷新*----------------------------------------------------------------------*FORM refresh_table_alv . DATA: stbl TYPE lvc_s_stbl.* stbl-row = 'X'." 基于行的稳定刷新 stbl-col = 'X'." 基于列稳定刷新 CALL METHOD ref_grid->refresh_table_display EXPORTING is_stable = stbl.ENDFORM. " REFRESH_TABLE_ALV*&---------------------------------------------------------------------**& Form F4_HELP_ZSJCS*&---------------------------------------------------------------------** 窗口时间参数的自定义f4检索帮助*----------------------------------------------------------------------*FORM f4_help_zsjcs USING p_fieldname TYPE lvc_fname p_row_no TYPE lvc_s_roid. DATA: lt_return TYPE STANDARD TABLE OF ddshretval, ls_return TYPE ddshretval.DATA:BEGIN OF lt_t001w OCCURS 0, werks LIKE t001w-werks, name1 LIKE t001w-name1, END OF lt_t001w. IF p_fieldname = 'WERKS'. SELECT name1 werks INTO CORRESPONDING FIELDS OF TABLE lt_t001w FROM t001w. SORT lt_t001w BY werks. DELETE ADJACENT DUPLICATES FROM lt_t001w COMPARING werks. ENDIF. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'WERKS' "lt内表里面的字段 dynpprog = sy-repid dynpnr = sy-dynnr dynprofield = 'WERKS' "画面上绑定字段 value_org = 'S' callback_program = sy-repid TABLES value_tab = lt_t001w "需要显示帮助的值内表 return_tab = lt_return "返回值 EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. IF sy-subrc = 0. READ TABLE gt_out INDEX p_row_no-row_id. IF lw_layout-edit = 'X'. READ TABLE lt_return INTO ls_return INDEX 1. gt_out-werks = ls_return-fieldval. MODIFY gt_out INDEX p_row_no-row_id TRANSPORTING werks. ENDIF. ENDIF.DATA:BEGIN OF lt_prps OCCURS 0, "大修预算编号 pspnr LIKE prps-pspnr, post1 LIKE prps-post1, END OF lt_prps. IF p_fieldname = 'PSPNR'. SELECT pspnr post1 INTO CORRESPONDING FIELDS OF TABLE lt_prps FROM prps. ENDIF. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'PSPNR' "lt内表里面的字段 dynpprog = sy-repid dynpnr = sy-dynnr dynprofield = 'PSPNR' "画面上绑定字段 value_org = 'S' callback_program = sy-repid TABLES value_tab = lt_prps "需要显示帮助的值内表 return_tab = lt_return "返回值 EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. IF sy-subrc = 0. READ TABLE gt_out INDEX p_row_no-row_id. IF sy-subrc = 0. READ TABLE lt_return INTO ls_return INDEX 1. IF sy-subrc = 0. READ TABLE fieldcat WITH KEY fieldname = ls_return-retfield. IF fieldcat-edit = 'X'. gt_out-pspnr = ls_return-fieldval. MODIFY gt_out INDEX p_row_no-row_id TRANSPORTING pspnr. ENDIF. ENDIF. ENDIF. ENDIF.DATA:BEGIN OF lt_zzjhbh OCCURS 0, "计划编号 zzjhbh TYPE zzjhbh, zzhxmh TYPE zzhxmh, zzequnr TYPE zzequnr, zzktext TYPE zzktext, END OF lt_zzjhbh.DATA:lv_index TYPE char02. IF p_fieldname = 'ZZJHBH'. READ TABLE gt_out INDEX p_row_no-row_id. IF sy-subrc = 0. SELECT zpm001b~zzjhbh zpm001b~zzhxmh zpm001b~zzequnr zpm001b~zzktext INTO CORRESPONDING FIELDS OF TABLE lt_zzjhbh FROM zpm001a INNER JOIN zpm001b ON zpm001b~zzjhbh = zpm001a~zzjhbh WHERE zpm001a~zzjhjt = '02' AND zpm001a~zzjhlx = '03' AND zpm001a~zzjhdw = gt_out-werks. ENDIF. ENDIF. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'ZZJHBH' "lt内表里面的字段 dynpprog = sy-repid dynpnr = sy-dynnr dynprofield = 'ZZJHBH' "画面上绑定字段 value_org = 'S' callback_program = sy-repid multiple_choice = 'X' callback_form = 'BO_CALLBACK_FORM' TABLES value_tab = lt_zzjhbh "需要显示帮助的值内表 return_tab = lt_return "返回值 EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. IF sy-subrc = 0. DATA:wa_out LIKE gt_out. lv_index = p_row_no-row_id - 1. LOOP AT lt_return INTO ls_return. READ TABLE fieldcat WITH KEY fieldname = ls_return-retfield. IF fieldcat-edit = 'X' AND fieldcat-fieldname = 'ZZJHBH'. wa_out-zzjhbh = ls_return-fieldval. ELSEIF fieldcat-fieldname = 'ZZHXMH'. wa_out-zzhxmh = ls_return-fieldval. ENDIF. IF ls_return-fieldname = 'F0002'. lv_index = lv_index + 1. ENDIF. IF wa_out-zzjhbh IS NOT INITIAL AND wa_out-zzhxmh IS NOT INITIAL. MODIFY gt_out FROM wa_out INDEX lv_index TRANSPORTING zzjhbh zzhxmh. CLEAR wa_out. ENDIF. ENDLOOP. ENDIF.DATA:BEGIN OF lt_zzhxmh OCCURS 0, "行项目号 zzjhbh LIKE zpm001b-zzjhbh, zzhxmh LIKE zpm001b-zzhxmh, END OF lt_zzhxmh. IF p_fieldname = 'ZZHXMH'. READ TABLE gt_out INDEX p_row_no-row_id. IF sy-subrc = 0. SELECT zzhxmh zzjhbh INTO CORRESPONDING FIELDS OF TABLE lt_zzhxmh FROM zpm001b WHERE zzjhbh = gt_out-zzjhbh. ENDIF. ENDIF. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'ZZHXMH' "lt内表里面的字段 dynpprog = sy-repid dynpnr = sy-dynnr dynprofield = 'ZZHXMH' "画面上绑定字段 value_org = 'S' callback_program = sy-repid TABLES value_tab = lt_zzhxmh "需要显示帮助的值内表 return_tab = lt_return "返回值 EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. IF sy-subrc = 0. READ TABLE gt_out INDEX p_row_no-row_id. IF sy-subrc = 0. READ TABLE lt_return INTO ls_return INDEX 1. IF sy-subrc = 0. READ TABLE fieldcat WITH KEY fieldname = ls_return-retfield. IF fieldcat-edit = 'X'. gt_out-zzhxmh = ls_return-fieldval. MODIFY gt_out INDEX p_row_no-row_id TRANSPORTING zzhxmh. ENDIF. ENDIF. ENDIF. ENDIF.ENDFORM. " F4_HELP_FORM bo_callback_formTABLES record_tab STRUCTURE seahlpresCHANGING shlp TYPE shlp_descr_tcallcontrol LIKE ddshf4ctrl.DATA: interface LIKE LINE OF shlp-interface,fp LIKE LINE OF shlp-fieldprop.CLEAR interface.CLEAR fp. fp-shlpoutput = 'X'. MODIFY shlp-fieldprop FROM fp TRANSPORTING shlpoutput WHERE shlpoutput = space.READ TABLE shlp-interface INTO interface INDEX 1.interface-shlpfield+4(1) = '1'. "第一个位置。调用F4函数本身就已经有内容,所以会造成选择后面的语言或者是物料描述的时候,物料代码无法更改,所以此处用MODIFY 就可以解决这个问题interface-valfield = 'ZZJHBH'. APPEND interface TO shlp-interface.MODIFY shlp-interface FROM interface INDEX 1.interface-shlpfield+4(1) = '2'. "这里的数字 代表F4搜索帮助弹出的ALV对话框,字段的位置,比如此行是显示F4弹出的alv第二列的内容interface-valfield = 'ZZHXMH'.APPEND interface TO shlp-interface.ENDFORM. "bo_callback_form*&---------------------------------------------------------------------**& Form FRM_AUTHORIZATION_CHECK_SWERK*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_authorization_check_swerk . DATA:lv_message TYPE char50. DATA:BEGIN OF lt_werks OCCURS 0, werks LIKE t001w-werks, END OF lt_werks. SELECT werks INTO CORRESPONDING FIELDS OF TABLE lt_werks FROM t001w WHERE werks = p_werks. LOOP AT lt_werks.AUTHORITY-CHECK OBJECT 'I_IWERK' ID 'TCD' DUMMY ID 'IWERK' FIELD lt_werks-werks.IF sy-subrc <> 0. CLEAR lv_message. CONCATENATE '你没有该工厂' lt_werks-werks '的权限!' INTO lv_message. MESSAGE lv_message TYPE 'E'. CLEAR lt_werks.ENDIF. ENDLOOP.ENDFORM.
0 0
- 在ALV中添加搜索帮助并返回多列值
- ABAP:ALV中自定义搜索帮助
- 在ALV列表中添加下拉框
- 在alv中按F4显示帮助信息
- 如何在Android Studio中搜索并添加jar包
- abap:alv (oo)自定义搜索帮助
- 通过创建帮助类,创建数据库,并在数据库中添加,修改,删除数据
- 如何在abap中为ALV添加事件处理
- ALV通过F4事件,实现自定义搜索帮助F4
- 关于F4搜索帮助返回多列值的实现方法
- ALV中的回车事件相应及添加F4帮助
- SAP CRM 在Web UI中创建搜索帮助
- 在网页中添加 “返回顶部”按钮
- 在Activity中添加返回键
- 如何在表视图中添加搜索
- 在navigationItem中添加搜索栏
- stcpbrk--在源字符串(s1)中找出最先含有搜索字符串(s2)中任一字符的位置并返回,若找不到则返回空指针。
- 自建数据库表,并在ALV报表中直接向更新自建表中写数据范例
- 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
- FFMPEG解码多线程
- 从零开始配置MySQL MMM
- Math.xx()
- 设计模式六大原则(1):单一职责原则
- 在ALV中添加搜索帮助并返回多列值
- Android SQLite操作封装
- Linux 下搭建 php 开发环境完整教程
- 11个面向文档的开源NoSQL数据库
- 配置JAVA的环境变量
- PL/SQL基础语法入门
- casperjs对cookie的处理
- SAP SD信用控制管理
- Android自定义View的实现方法,带你一步步深入了解View