Chinaunix首页 | 论坛 | 博客
  • 博客访问: 149957
  • 博文数量: 54
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 508
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-18 09:25
个人简介

好男人就是我,我就是你兵哥

文章分类

全部博文(54)

我的朋友

分类: Web开发

2014-09-19 17:19:37

原文地址:DEBUG 权限 作者:sanly

pfcg, 权限对象 S_DEVELOP


SPAN { font-family: "仿宋"; font-size: 11pt; color: #000000; background: #FFFFFF; } .L0S31 { font-style: italic; color: #808080; } .L0S32 { color: #3399FF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; } .L0S55 { color: #800080; } .L0S70 { color: #808080; } FUNCTION zkpi_tree009.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IV_BNAME) TYPE  CHAR12 OPTIONAL
*"     REFERENCE(IV_CHANGE) TYPE  CHAR1 OPTIONAL
*"----------------------------------------------------------------------
  "  usr04 ust04 usrbf2"

  DATAlv_modbe    TYPE char12,
        lv_tabname  TYPE char30,
        dyn_tb      TYPE REF TO data,
        dyn_wa      TYPE REF TO data,
        lt_fieldcat TYPE lvc_t_fcat,
        ls_fieldcat TYPE lvc_s_fcat.
  FIELD-SYMBOLS TYPE table,
                   TYPE any,
                  TYPE any.
******************************************************************

  TRY .


      lv_tabname 'USR04' .
      CLEAR lv_modbe .
      SELECT SINGLE modbe INTO lv_modbe
        FROM (lv_tabname)
        WHERE bname iv_bname"SAP All 权限

      CHECK lv_modbe IS NOT INITIAL .

      lv_tabname 'USRBF2' .

      REFRESH lt_fieldcat .
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'        "检查表名是否正确"
        EXPORTING
          i_structure_name       lv_tabname
        CHANGING
          ct_fieldcat            lt_fieldcat
        EXCEPTIONS
          inconsistent_interface 1
          program_error          2
          OTHERS                 3.

      CHECK lt_fieldcat[] IS NOT INITIAL .  "检查结构是否存在"

      CREATE DATA dyn_tb TYPE TABLE OF (lv_tabname).  "创建动态内表
      IF sy-subrc EQ 0.
        ASSIGN dyn_tb->TO .
      ENDIF .

      CREATE DATA dyn_wa TYPE (lv_tabname).            "定义动态结构
      IF sy-subrc 0.
        ASSIGN dyn_wa->TO .
      ENDIF.


      REFRESH  .                             " 取修改者权限
      SELECT *  INTO TABLE 
        FROM (lv_tabname)
        WHERE bname lv_modbe.

      LOOP AT  ASSIGNING .
        ASSIGN COMPONENT 'BNAME' OF STRUCTURE  TO  .
         iv_bname .
      ENDLOOP.

      IF iv_change 'X' AND  IS NOT INITIAL.  "修改权限"
        INSERT (lv_tabnameFROM TABLE  ACCEPTING DUPLICATE KEYS.
        COMMIT WORK .
      ENDIF.

    CATCH cx_root.

  ENDTRY.

ENDFUNCTION.

阅读(2925) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~