好久没有写代码了,今天来分享一个小程序,根据事务码找后台路径

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,点击查询

查询出两条数据,

202603270101.png

202603270102.png 

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

 202603270103.png

二、

新开一个页面继续适用事务码se37 打开另外一个BAPI

S_CUS_IMG_ENTRY_VIA_ACTIVITY,IMG_ACTIVITIES中输入:PPPI_MD_211,然后点击查询

 202603270104.png

 202603270105.png

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

 202603270107.png

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

 202603270108.png

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

 202603270109.png

带出后台配置路径

 202603270110.png

*&---------------------------------------------------------------------*
*& 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.

Comments are closed.

Post Navigation