*&---------------------------------------------------------------------*
*& Report  ZEXIT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZEXIT_LZX.

TABLES: TSTC     , "SAPTransaction Codes
        TADIR    , " Directory of Repository Objects
        MODSAPT  , " SAP Enhancements - Short Texts
        SXS_ATTRT, " SAPBADI- short text
        MODACT   , " Modifications
        TRDIR    , " System table TRDIR
        TFDIR    , " Function Module
        ENLFDIR  , " Additional Attributes for Function Modules
        TSTCT    . " Transaction Code Texts

*&---------------------------------------------------------------------*
*& Variables
*&---------------------------------------------------------------------*
DATA: JTAB        LIKE TADIR OCCURS 0 WITH HEADER LINE.
DATA: FIELD1(30).
DATA: V_DEVCLASS  LIKE TADIR-DEVCLASS.
DATA: OBJECT      LIKE TADIR-OBJECT.
DATA: BDCDATA_WA  TYPE BDCDATA,
      BDCDATA_TAB TYPE TABLE OF BDCDATA.
DATA: OPT         TYPE CTU_PARAMS.

DATA: L_NAME      LIKE MODSAP-NAME,
      L_MEMBER    LIKE MODSAP-MEMBER,
      L_STEXT     LIKE TFTIT-STEXT.

*&---------------------------------------------------------------------*
*& Selection Screen Parameters
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK A01 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP.
PARAMETERS: P_TCODE LIKE TSTC-TCODE OBLIGATORY.
SELECTION-SCREEN SKIP.
PARAMETERS: EXIT RADIOBUTTON GROUP 1 DEFAULT 'X',
            BADI RADIOBUTTON GROUP 1.
SELECTION-SCREEN END OF BLOCK A01.

DEFINE BDC_PROGRAM.
  CLEAR BDCDATA_WA.
  BDCDATA_WA-PROGRAM  = &1.
  BDCDATA_WA-DYNPRO   = &2.
  BDCDATA_WA-DYNBEGIN = &3.
  APPEND BDCDATA_WA TO BDCDATA_TAB.
END-OF-DEFINITION.
DEFINE BDC_DETAIL.
  CLEAR BDCDATA_WA.
  BDCDATA_WA-FNAM = &1.
  BDCDATA_WA-FVAL = &2.
  APPEND BDCDATA_WA TO BDCDATA_TAB.
END-OF-DEFINITION.

*&---------------------------------------------------------------------*
*& Start of main program
*&---------------------------------------------------------------------*
START-OF-SELECTION.
  IF EXIT = 'X'.
    OBJECT = 'SMOD'.  " User-exit!
  ELSE.
    OBJECT = 'SXSD'.  " BADI!
  ENDIF.

* Validate Transaction Code:
  SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.
* Find Repository Objects for transaction code:
  IF SY-SUBRC EQ 0.                                         " IF 1
    SELECT SINGLE * FROM TADIR WHERE PGMID    = 'R3TR'
                                 AND OBJECT   = 'PROG'
                                 AND OBJ_NAME = TSTC-PGMNA. " Program name!
* 找到事务代码开发类
    MOVE: TADIR-DEVCLASS TO V_DEVCLASS. " Package
    IF SY-SUBRC NE 0.
      SELECT SINGLE * FROM TRDIR WHERE NAME = TSTC-PGMNA.
      IF TRDIR-SUBC EQ 'F'.
        SELECT SINGLE * FROM TFDIR   WHERE PNAME    = TSTC-PGMNA.
        SELECT SINGLE * FROM ENLFDIR WHERE FUNCNAME = TFDIR-FUNCNAME.
        SELECT SINGLE * FROM TADIR   WHERE PGMID    = 'R3TR'
                                       AND OBJECT   = 'FUGR'
                                       AND OBJ_NAME = ENLFDIR-AREA.
        MOVE: TADIR-DEVCLASS TO V_DEVCLASS.
      ENDIF.
    ENDIF.
*   Find SAP Modifactions:
    SELECT * FROM TADIR INTO TABLE JTAB WHERE PGMID    = 'R3TR'
                                          AND OBJECT   = OBJECT         "SMOD
                                          AND DEVCLASS = V_DEVCLASS.
    SELECT SINGLE * FROM TSTCT WHERE SPRSL EQ SY-LANGU
                                 AND TCODE EQ P_TCODE.

FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
    WRITE: /(19)  'Transaction Code - ',
            20(20) P_TCODE,
            45(50) TSTCT-TTEXT.
    SKIP.
    IF NOT JTAB[] IS INITIAL.                               " IF 2
      WRITE: /(100) SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
*     Exit:
      IF EXIT = 'X'.
        WRITE: /1  SY-VLINE,
                2  'Exit Name',
                22 SY-VLINE ,
                23 'Description',
                100 SY-VLINE.
*     BADI:
      ELSE.
        WRITE: /1  SY-VLINE,
                2  'BADI Name',
                22 SY-VLINE ,
                23 'Description',
                100 SY-VLINE.
      ENDIF.
      WRITE:/(100) SY-ULINE.
      LOOP AT JTAB.
*       EXIT:
        IF EXIT = 'X'.
          SELECT SINGLE * FROM MODSAPT WHERE SPRSL = SY-LANGU
                                         AND NAME  = JTAB-OBJ_NAME.
          FORMAT COLOR COL_NORMAL INTENSIFIED ON.
          WRITE: /1  SY-VLINE,
                  2  JTAB-OBJ_NAME HOTSPOT ON,
                  22 SY-VLINE ,
                  23 MODSAPT-MODTEXT,
                  100 SY-VLINE.
          CLEAR: L_NAME,
                 L_MEMBER,
                 L_STEXT.
          FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
          SELECT MODSAP~NAME
                 MODSAP~MEMBER
            INTO (L_NAME,L_MEMBER)
            FROM MODSAP
           WHERE MODSAP~NAME = JTAB-OBJ_NAME
             AND MODSAP~TYP <> ''
                  .
            IF L_MEMBER IS NOT INITIAL.
              SELECT SINGLE TFTIT~STEXT
                INTO L_STEXT
                FROM TFTIT
               WHERE TFTIT~FUNCNAME = L_MEMBER
                      .
            ENDIF.
            WRITE: /1  SY-VLINE,
                    5  L_MEMBER,
                    22 SY-VLINE ,
                    23 L_STEXT,
                    100 SY-VLINE.
          ENDSELECT.
*       BADI:
        ELSE.
          SELECT SINGLE * FROM SXS_ATTRT WHERE SPRSL     = SY-LANGU
                                           AND EXIT_NAME = JTAB-OBJ_NAME.
          FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
          WRITE: /1  SY-VLINE,
                  2  JTAB-OBJ_NAME HOTSPOT ON,
                  
22 SY-VLINE ,
                  
23 SXS_ATTRT-TEXT,
                  
100 SY-VLINE.
        
ENDIF.
      
ENDLOOP.
      
WRITE: /(100) SY-ULINE.
      
DESCRIBE TABLE JTAB.
      
SKIP.
      
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
      
IF EXIT = 'X'.
        
WRITE: / 'No of Exits:', SY-TFILL.
      
ELSE.
        
WRITE: / 'No of BADIs:', SY-TFILL.
      
ENDIF.
    
ELSE.                                                   " IF 2
      
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
      
WRITE: /(100) 'No User Exit exists'.
    
ENDIF.                                                  " IF 2
  
ELSE.                                                     " IF 1
    
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    
WRITE: /(100) 'Transaction Code Does Not Exist'.
  
ENDIF.                                                    " IF 1

* Take the user to SMOD for the Exit that was selected:

AT LINE-SELECTION.
  
GET CURSOR FIELD FIELD1.
  
CHECK FIELD1(4) EQ 'JTAB'.

* For exit:
  
IF EXIT = 'X'.
    
SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
    
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

* For BADI:
  
ELSE.
    
CLEAR: BDCDATA_WA, BDCDATA_TAB[].
    BDC_PROGRAM 
'SAPLSEXO' '0100' 'X'.
    BDC_DETAIL 
'BDC_CURSOR' 'G_IS_BADI'.
    BDC_DETAIL 
'BDC_OKCODE' '=ISSPOT'.
    BDC_DETAIL 
'G_IS_BADI' 'X'.
    BDC_PROGRAM 
'SAPLSEXO' '0100' 'X'.
    BDC_DETAIL 
'BDC_CURSOR' 'G_BADINAME'.
    BDC_DETAIL 
'BDC_OKCODE' '=SHOW'.
    BDC_DETAIL 
'G_BADINAME' SY-LISEL+1(20).
    OPT
-DISMODE = 'E'.
    OPT
-DEFSIZE = 'X'.
    
CALL TRANSACTION 'SE18' USING BDCDATA_TAB OPTIONS FROM OPT.
  
ENDIF.

abap 增强查找小程序的更多相关文章

  1. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  2. 微信小程序开发心得

    微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...

  3. 微信应用号(小程序)开发IDE配置(第一篇)

    2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...

  4. TODO:小程序开发过程之体验者

    TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...

  5. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

  6. 微信小程序体验(2):驴妈妈景区门票即买即游

    驴妈妈因为出色的运营能力,被腾讯选为首批小程序内测单位.驴妈妈的技术开发团队在很短的时间内完成了开发任务,并积极参与到张小龙团队的内测问题反馈.驴妈妈认为,移动互联网时代,微信是巨大的流量入口,也是旅 ...

  7. 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)

    转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...

  8. 微信小程序(微信应用号)组件讲解

    这篇文章主要讲解微信小程序的组件. 首先,讲解新建项目.现在有句话:招聘三天以上微信小程序开发,这个估计只能去挖微信的工程师了.技术新,既然讲解,那我们就从开始建项目讲解. 打开微信web开发者工具, ...

  9. 神技!微信小程序(应用号)抢先入门教程(附最新案例DEMO-豆瓣电影)持续更新

    微信小程序 Demo(豆瓣电影) 由于时间的关系,没有办法写一个完整的说明,后续配合一些视频资料,请持续关注 官方文档:https://mp.weixin.qq.com/debug/wxadoc/de ...

随机推荐

  1. python练习题-day24

    1.单继承 class Animal: def __init__(self,name,hp,aggr): self.name=name self.hp=hp self.aggr=aggr def ea ...

  2. 创建docker公共仓库

    1.注册公共仓库的账号 https://hub.docker.com 账号:user-a 密码:pwd 2.Linux中登录docker公共仓库 docker login 3.上传一个docker镜像 ...

  3. 10个用于处理日期和时间的 Python 库

    Python本身提供了处理时间日期的功能,也就是datetime标准库.除此之外,还有很多优秀的第三方库可以用来转换日期格式,格式化,时区转化等等.今天就给大家分享10个这样的Python库. 上期入 ...

  4. REDHAT YUM本地源的搭建和使用

    yum源一般分为两种,本地yum源和本地网络yum源,前者是通过文件提供安装包,后者是通过网络下载安装包: 由于Redhat7.3的yum源需要注册付费,所以往往会出现下载yum源安装包失败,如下图: ...

  5. ehcarts 四川地图

    vue 首先你要傻子地图就引入进来(没得的地图需要你json请求得到(这个json自己去找),然后你要注册这个地图,echarts有的话就不用注册) import "../../node_m ...

  6. DDD关键知识点整理汇总

    创建领域对象采用构造函数或者工厂,如果用工厂时需要依赖于领域服务或仓储,则通过构造函数注入到工厂: 一个聚合是由一些列相联的Entity和Value Object组成,一个聚合有一个聚合根,聚合根是E ...

  7. 利用反射和JDBC元数据实现更加通用的查询方法

    package com.at221.jdbc; import java.io.IOException; import java.io.InputStream; import java.sql.*; i ...

  8. mysql杯观锁与乐观锁

    悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念.本文将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍. 悲观锁(Pessimistic Lock) 悲观锁的 ...

  9. 如何共享联盟cookie

    接上一篇阿里妈妈账号登录状态如何长时间保存 既然我们获取到了cookie, 如果有多个程序都要使用到联盟帐号的时候, 如果不共享cookie, 那么每个程序都需要登录一次, 真的很浪费资源. 如何共享 ...

  10. Task3

    姓名:蔡典 学号:1425052044 班级:信管142 兴趣爱好:电影,美剧,游戏 个人编程能力:较弱,没自己写过代码 码云账号:18809188@qq.com 直接搜索码云然后进入官网输入基本信息 ...