SAP实现页面跳转
一、刷新页面:
-
代码:
FORM frm_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. DATA gv_str TYPE string. *刷新alv DATA:lob_grid TYPE REF TO cl_gui_alv_grid. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = lob_grid. CALL METHOD lob_grid->check_changed_data. rs_selfield-refresh = 'X'. rs_selfield-col_stable = 'X'. rs_selfield-row_stable = 'X'. CASE r_ucomm. WHEN '&INTO'. PERFORM frm_bapi_data."批次特性匯入 PERFORM frm_bapi_alldata."文件匯入 WHEN '&IC1'."页面跳转 IF rs_selfield-fieldname = 'AUFNR'. gv_str = rs_selfield-value+0(2). IF gv_str = '45' OR gv_str = '48'."採購單 set PARAMETER ID 'BSA' field 'ZNB'. set PARAMETER ID 'BES' field rs_selfield-value. call TRANSACTION 'ME23N'. ELSEIF gv_str = '55'. PERFORM frm_bdcme39 USING rs_selfield-value. ELSE."訂單 PERFORM frm_bdcco03 USING rs_selfield-value. ENDIF. ELSEIF rs_selfield-fieldname = 'MBLNR'. IF rs_selfield-value IS NOT INITIAL. PERFORM frm_bdcmbl USING rs_selfield-value. ENDIF. ENDIF. ENDCASE. rs_selfield-refresh = 'X'. "宽度自适应 gt_layo-cwidth_opt = 'X'. CALL METHOD lob_grid->set_frontend_layout EXPORTING is_layout = gt_layo. CALL METHOD lob_grid->refresh_table_display " 功能A: 基本显示 EXCEPTIONS finished = 1 OTHERS = 2. CALL METHOD lob_grid->refresh_table_display. ENDFORM.
-
注意:刷新时,工具栏会再次出现,可以设置gt_layo的参数no_toolar来去掉工具栏
二、页面跳转:
-
使用SET PARAMETER和CALL TRANSACTION语句跳转:
案例一:
CASE r_ucomm. WHEN '&INTO'. PERFORM frm_bapi_data."批次特性匯入 PERFORM frm_bapi_alldata."文件匯入 WHEN '&IC1'."页面跳转 IF rs_selfield-fieldname = 'AUFNR'. gv_str = rs_selfield-value+0(2). IF gv_str = '45' OR gv_str = '48'."採購單 set PARAMETER ID 'BSA' field 'ZNB'. set PARAMETER ID 'BES' field rs_selfield-value. call TRANSACTION 'ME23N'. ELSEIF gv_str = '55'. PERFORM frm_bdcme39 USING rs_selfield-value. ELSE."訂單 PERFORM frm_bdcco03 USING rs_selfield-value. ENDIF. ELSEIF rs_selfield-fieldname = 'MBLNR'. IF rs_selfield-value IS NOT INITIAL. PERFORM frm_bdcmbl USING rs_selfield-value. ENDIF. ENDIF. ENDCASE.
-
MIGO时需要通过函数MIGO_DIALOG进行跳转
CALL FUNCTION 'MIGO_DIALOG' EXPORTING I_ACTION = 'A04' I_REFDOC = 'R02' I_MBLNR = '4900000324' I_MJAHR = '2018' EXCEPTIONS ILLEGAL_COMBINATION = 1 OTHERS = 2 . IF sy-subrc <> 0. * Implement suitable error handling here ENDIF.