好久没有写代码了,今天来分享一个小程序,根据事务码找后台路径
SAP的后台配置可以通过事务码和后台路径进入到相关配置页面。在只知道后台配置事务码的情况下如何找到路径,SAP提供了两个标准的BAPI:
S_CUS_IMG_ACTIVITY_GET_W_TCODE
S_CUS_IMG_ENTRY_VIA_ACTIVITY
查询步骤如下:
SE37
输入S_CUS_IMG_ACTIVITY_GET_W_TCODE, 在TCODE输入:OS27,点击查询
查询出两条数据,

双击数据行将字段ACTIVITY的值复制出来:PPPI_MD_211

二、
新开一个页面继续适用事务码se37 打开另外一个BAPI
S_CUS_IMG_ENTRY_VIA_ACTIVITY,在IMG_ACTIVITIES中输入:PPPI_MD_211,然后点击查询


在这里带出了正确的后台配置路径

虽然这样能够查询到后台的路径,但是太过繁琐,为此我将这两个BAPI柔和到一起,写了程序。只要输入事务码,根据自己的选择来查询后台路径

选中数据之后,点击执行查询

带出后台配置路径

*&---------------------------------------------------------------------* *& Report ZTEST_01 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ztest_01. INCLUDE zpublic_alv. DATA : BEGIN OF gs_itab, activity TYPE cus_imgach-activity, docu_id TYPE cus_imgach-docu_id, attributes TYPE cus_imgach-attributes, c_activity TYPE cus_imgach-c_activity, tcode TYPE cus_imgach-tcode, fuser TYPE cus_imgach-fuser, fdate TYPE cus_imgach-fdate, ftime TYPE cus_imgach-ftime, luser TYPE cus_imgach-luser, ldate TYPE cus_imgach-ldate, ltime TYPE cus_imgach-ltime, sel TYPE char1, END OF gs_itab. DATA: itab LIKE TABLE OF gs_itab. FIELD-SYMBOLS:<fs_itab> LIKE gs_itab. PARAMETERS s_valr TYPE cus_actobj-tcode . START-OF-SELECTION. CALL FUNCTION 'S_CUS_IMG_ACTIVITY_GET_W_TCODE' EXPORTING tcode = s_valr TABLES activities_found = itab * EXCEPTIONS * NO_TCODE_GIVEN = 1 * NOT_USED_IN_IMG_ACTIVITIES = 2 * OTHERS = 3 . IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. DATA : lv_title TYPE char70 . PERFORM frm_get_field . gs_layout-cwidth_opt = 'X'."自动优化列宽 gs_layout-box_fname = 'sel'. gs_layout-zebra = 'X'. alv_print lv_title 'FRM_PF_STATUS_SET' 'FRM_USERCOMMAND' itab . FORM frm_get_field . CLEAR : gt_field , gt_field[] . alv_key 'ACTIVITY' '实施指南活动'. alv_key 'DOCU_ID' '文档对象' . alv3 'ATTRIBUTES' '定制属性' . alv3 'C_ACTIVITY' '定制活动' . alv3 'TCODE' '事务代码' . ENDFORM. FORM frm_usercommand USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = lr_grid. CALL METHOD lr_grid->check_changed_data. selfield-refresh = 'X'. selfield-row_stable = 'X'. selfield-col_stable = 'X'. CASE ucomm. WHEN '&SAVE'. PERFORM frm_sele. WHEN OTHERS. ENDCASE. ENDFORM. FORM frm_pf_status_set USING rt_extab TYPE slis_t_extab. DATA : fcode TYPE TABLE OF sy-ucomm . SET PF-STATUS 'STATUS_IMPORT' EXCLUDING fcode . ENDFORM. FORM frm_sele. DATA :s_IMG TYPE cus_imgach. DATA: t_img TYPE TABLE OF cus_imgach. LOOP AT itab ASSIGNING <fs_itab> WHERE sel = 'X' . s_img-activity = <fs_itab>-activity. APPEND s_img TO t_img. CLEAR s_img. CALL FUNCTION 'S_CUS_IMG_ENTRY_VIA_ACTIVITY' EXPORTING * USE_PROJECT_IMG = ' ' * PROJECT_NUMBER_OBLIGATORY = ' ' * USE_PROJECT_NUMBER = ' ' * SHOW_ALL_ENTRIES_AT_ONCE = ' ' activity = 'M' language = sy-langu * USE_PROJECT_VIEW = ' ' * CALLED_BY_SOLUTION_MANAGER = ' ' * IGNORE_SFW_SWITCHES = ' ' * IMPORTING * ES_MESSAGE = TABLES img_activities = t_img * DOCU_IDS = * NODE_IDS = * EXCEPTIONS * NO_ACTIVITIES_GIVEN = 1 * NOT_FOUND_IN_IMG = 2 * NOT_FOUND_IN_PROJECT = 3 * OTHERS = 4 . IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. ENDLOOP. ENDFORM.