SAP程序跳转配置表,要控制按钮隐藏和通过选择屏幕筛选技巧
有业务需求,希望点击按钮跳转至配置表,且只允许读取不允许修改配置表,并且希望选择屏幕的选择条件能对配置表生效,话不多说,上代码
1.新建配置表,并乱维护一笔数据
源代码如下
*&---------------------------------------------------------------------*
*& Report ZTEST_PZB
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_PZB.
TABLES :SSCRFIELDS,ZTEST_DEMO.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_KOSTL FOR ZTEST_DEMO-KOSTL MODIF ID M1,
S_BUKRS FOR ZTEST_DEMO-BUKRS MODIF ID M1.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN FUNCTION KEY :1.
INITIALIZATION .
PERFORM frm_initial_data .
AT SELECTION-SCREEN.
PERFORM FRM_FC_PRESS. "按钮触发
*&---------------------------------------------------------------------*
*& Form frm_initial_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_initial_data .
DATA:functxt TYPE smp_dyntxt.
functxt-icon_id = icon_table_settings.
functxt-icon_text = '配置表'.
sscrfields-functxt_01 = functxt.
ENDFORM.
FORM frm_fc_press .
CASE sy-ucomm.
WHEN 'FC01'. " 下载模板
PERFORM frm_main_data USING 'ZTEST_DEMO'. "维护数据
WHEN OTHERS.
ENDCASE.
ENDFORM.
FORM frm_main_data USING pv_name . "维护数据
DATA:lt_dba_sellist TYPE STANDARD TABLE OF vimsellist.
DATA:ls_dba_sellist TYPE vimsellist.
DATA: lt_exclfun TYPE vimexclfun OCCURS 0 WITH HEADER LINE.
DATA:lt_tabname TYPE dd02v-tabname ."表名称
lt_exclfun[] = VALUE #( ( function = 'AEND' ) ) .
PERFORM frm_sel_data TABLES lt_dba_sellist s_kostl USING 'KOSTL'.
PERFORM frm_sel_data TABLES lt_dba_sellist s_bukrs USING 'BUKRS'.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = 'S'
generate_maint_tool_if_missing = 'X'
view_name = pv_name
TABLES
dba_sellist = lt_dba_sellist
excl_cua_funct = lt_exclfun[]
EXCEPTIONS
client_reference = 1
foreign_lock = 2
invalid_action = 3
no_clientindependent_auth = 4
no_database_function = 5
no_editor_function = 6
no_show_auth = 7
no_tvdir_entry = 8
no_upd_auth = 9
only_show_allowed = 10
system_failure = 11
unknown_field_in_dba_sellist = 12
view_not_found = 13
maintenance_prohibited = 14
OTHERS = 15.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM frm_sel_data TABLES pt_sel STRUCTURE vimsellist
pt_sel_in TYPE STANDARD TABLE
USING VALUE(pv_name).
.
DATA:lt_dba_sellist TYPE STANDARD TABLE OF vimsellist,
ls_dba_sellist TYPE vimsellist.
CHECK pt_sel_in[] IS NOT INITIAL .
CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
EXPORTING
fieldname = pv_name
append_conjunction = 'AND'
TABLES
sellist = pt_sel
rangetab = pt_sel_in.
* APPEND LINES OF lt_dba_sellist TO pt_sel .
ENDFORM.
可以通过debug看具体程序的入参数据,建完配置表,代码可直接复制运行

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐






所有评论(0)