1. DUMMY是否是檢查全部的類型的權限呢?
PS:不是,dummy的意思是虛擬的意思,就是說權限檢查的時候有這個權限檢查字段,可是不對該字段作權限檢查。
AUTHORITY-CHECK
OBJECT
'Z_BRAND'
ID
'ACTVT'
DUMMY
ID
'BRAND'
FIELD
p_brand
.
IF
sy
-
subrc <>
0
.
MESSAGE
e001
(
00
)
WITH
'無品牌'
p_brand
'的權限'
.
ENDIF
.
2. BKK_DOMAIN_TEXTS_READ讀取域文本的內容,並存放到內表中,
DATA
:
lt_text
TYPE
bkkdc_t_domain_text
, "擡頭
lw_text
TYPE
bkkdc_s_domain_text
."工做區
CALL FUNCTION
'BKK_DOMAIN_TEXTS_READ'
EXPORTING
i_langu
=
sy
-
langu
i_domname
=
'ZD_HZDLX'
IMPORTING
et_domain_text
=
lt_text[]
.
方式二:
DATA
:
lt_domain
TYPE STANDARD TABLE OF
dd07v
WITH HEADER LINE
.
CALL FUNCTION
'DD_DOMVALUES_GET'
EXPORTING
domname
=
'ZD_ZAPPSEX'
text
=
'X'
langu
=
sy
-
langu
TABLES
dd07v_tab
=
lt_domain
.
方式三:
DATA: lt_values_tab TYPE TABLE OF dd07v.
CALL FUNCTION 'GET_DOMAIN_VALUES'
EXPORTING
domname = 'ZE_ZZSTA'
* TEXT = 'X'
* FILL_DD07L_TAB = ' '
TABLES
values_tab = lt_values_tab
* VALUES_DD07L =
EXCEPTIONS
no_values_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
REFRESH lt_values_tab.
ENDIF.
3.使用消息,便面DUMP掉。
CALL FUNCTION
'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
=
w_repid
i_callback_pf_status_set
=
'FRM_SET_PF_STATUS'
i_callback_user_command
=
'FRM_USER_COMMAND'
is_layout
=
w_layout
it_fieldcat
=
it_fieldcat[]
i_save
=
'A'
TABLES
t_outtab
=
gt_fhhzd[]
EXCEPTIONS
program_error
=
1
OTHERS
=
2
.
IF
sy
-
subrc <>
0
.
MESSAGE
e001
(
00
)
WITH
'函數REUSE_ALV_GRID_DISPLAY錯誤!'
.
ENDIF
.
4. 調用SUBMIT獲取數據
SUBMIT
zhzd_process
WITH
p_hzd
EQ
l_hzd
WITH
p_lx
EQ
'M'
AND RETURN
.
IMPORT
msg
=
gt_fhhzd
-
msg subrc
=
sy
-
subrc
FROM MEMORY ID
'ZHZD_PROCESS'
.
REPORT
zhzd_process
.
DATA
:
msg
TYPE
char255
.
PARAMETERS
p_hzd
TYPE
ze_hzd
.
PARAMETERS
p_lx
TYPE c
.
CASE
p_lx
.
WHEN
'F'
.
CALL FUNCTION
'Z_JSLHZD_PROCESS'
EXPORTING
hzd
=
p_hzd
IMPORTING
msg
=
msg
EXCEPTIONS
process_error
=
1
OTHERS
=
2
.
WHEN
'T'
.
CALL FUNCTION
'Z_JSLTHZD_PROCESS'
EXPORTING
hzd
=
p_hzd
IMPORTING
msg
=
msg
EXCEPTIONS
process_error
=
1
OTHERS
=
2
.
WHEN
'M'
.
CALL FUNCTION
'Z_MDHZD_PROCESS'
EXPORTING
hzd
=
p_hzd
IMPORTING
msg
=
msg
EXCEPTIONS
process_error
=
1
OTHERS
=
2
.
ENDCASE
.
EXPORT
msg
=
msg subrc
=
sy
-
subrc
TO MEMORY ID
'ZHZD_PROCESS'
.
5. 默認值,可是不顯示
PARAMETERS
:
p_jsdlx
LIKE
ztjsd
-
jsdlx
DEFAULT
'W'
NO
-
DISPLAY
.
6. 用來匹配模式與邏輯表達式 "p_num CO '0123456789.' p_num NA 'A....'"
1. CO / CN contains only or not : 只包含 不包含
CA / NA contains any or not any :包含任何一個 不包含任何一個
CS / NS contain string or not :包含string 不包含string
CP / NP contains pattern or not : 包含模式 不包含模式
IF
g_fiuser
=
space
.
"非財務用戶
r_werks
-
sign
=
'I'
.
r_werks
-
option
=
'NP'
.
r_werks
-
low
=
'*'
.
"所有門店
APPEND
r_werks
.
CLEAR
r_werks
.
ELSE
.
r_werks
-
sign
=
'I'
.
r_werks
-
option
=
'CP'
.
r_werks
-
low
=
'*'
.
"所有門店
APPEND
r_werks
.
CLEAR
r_werks
.
ENDIF
.
2.邏輯表達式
EQ或= 等於
NE或<>或>< 不等於
LT或< 小於
LE或<= 小於等於
GT或> 大於
SELECT SINGLE
name1 jyfs mdxz
INTO
(
g_name1
,
g_jyfs
,
g_mdxz
)
FROM
t001w
WHERE
werks
=
p_werks
.
8. DIV除以後,取的是整數部分,捨棄了小數部分的內容。若是想保留小數部分,須要使用‘/’dom
9. ON_CHANGE_OF 用來分組排序,在不一樣的組內進行排序。
LOOP AT
gt_data
ASSIGNING
<fs_a>
.
ON CHANGE OF
<fs_a>
-
clas1
.
CLEAR
:
l_pm
.
ENDON
.
l_pm
=
l_pm +
1
.
<fs_a>
-
pm
=
l_pm
.
10.
*刪除F8按鈕.
APPEND
'CRET'
TO
gt_exclude
.
CALL FUNCTION
'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status
=
sy
-
pfkey
TABLES
p_exclude
=
gt_exclude
.
11.BCALV_EDIT_04:使用INFORM來展現數據
* first check airline and connection
select single
*
from
spfli
into
gs_spfli
where
carrid
=
g_carrid
and
connid
=
g_connid
.
if
sy
-
subrc
ne
0
.
call function
'POPUP_TO_INFORM'
exporting
titel
=
text
-
i01
txt1
=
text
-
i02
txt2
=
text
-
i03
txt3
=
text
-
i04
txt4
=
text
-
i05
.
else
.
* §0.Lock your database table according to CARRID and CONNID
perform
lock_sflight
changing
g_success
.
if
g_success
eq
'X'
.
call screen
100
.
else
.
message
i000
(
0k
)
with text
-
i10
.
endif
.
endif
.
12.
* 數量四捨五入 向上取值與向下取值 1.
1.
CALL FUNCTION
'HR_NZ_ROUNDING_DECIMALS'
EXPORTING
value_in
=
gv_max
" Input field with decimals
conv_dec
=
0
" i Number of desired decimals for conversion
IMPORTING
value_out
=
gv_max
.
" Output field with rounded decimals
2.
a = 1.36 b = 1.34
CEIL( a/b ). "2
FLOOR( a/b ). "1
SIGN( dobj )返回參數符號:正數返回1,0返回0,負數返回-1.
CEIL( dobj )返回不小於輸入參數的最小整數值
FLOOR( dobj )返回不大於輸入參數的最大整數值
SQRT 平方根
注意:函數名與左括號間不能有空格,括號與參數間必須有空格.
13.檢查必須爲數字
"折扣檢查
l_str_len
=
strlen
(
gt_tab
-
netpr
).
CLEAR
l_do_index
.
DO
l_str_len
TIMES
.
IF NOT
'0123456789.'
CA
gt_tab
-
netpr+l_do_index
(
1
).
CONCATENATE
gt_tab
-
msg
'折扣必須爲數字!'
INTO
gt_tab
-
msg
.
ENDIF
.
l_do_index
=
l_do_index +
1
.
ENDDO
.
"最好的方法定義一個P類型的,用Catch來把字符串(去掉空格後)賦值給這個P類型,若是返回值爲0,就說明是數字~
14.ZFC_RT024:若是BAPI調用出錯,直接跳出本次的調用PERFORM 則使用RETURN。程序塊:FORM,MODULE,EVENT等。
1. CHECK: 後面跟一個表達式,當表達式的值爲假(false),CHECK發生做用,退出循環LOOP或者處理程序 Processing Block.
若是CEHCK在循環中,則退出當前的一次循環,從下一次循環繼續執行,相似於CONTINUE.
若是CHECK出如今循環外,則發生做用時,退出的是當前執行的程序塊 Processing Block,如:FORM METHOD or EVENT.
2. EXIT: EXIT出如今循環中,退出整個循環,程序從循環結束處開始繼續執行。
EXIT出如今循環外,退出的是當前的程序塊:processing Block,如:FORM METHOD or EVENT。與RETURN相似。
3. RETURN:使用RETURN來退出當前執行的程序塊,無論是在LOOP中仍是在Processing Block中,
PS: 建議只在循環中使用EXIT,而不使用RETURN,在外部退出Processing Block中,使用RETURN。
4. LEAVE PROGRAM: 直接退出當前程序。
5. CONTINUE: 與CHECK相似,CHECK是有條件終止,CONTINUE是無條件終止。在循環中,結束此輪循環,繼續下一輪循環。
6. STOP:結束當前塊,從下一個塊開始執行。這裏的塊指的是語句快。直接到END-OF-SELECTION.函數
15. 初始化field-symbols :
UNASSIGN <fs_gw_eban>
.
16. 在界面顯示正在執行的動做.
if
SY
-
BATCH
is initial
.
"SY-BATCH 正在後臺執行程序
call function
'SAPGUI_PROGRESS_INDICATOR'
exporting
TEXT
=
'正在遷移中間數據...'
.
endif
.
17. 解決篩選時出現篩選輸入字段沒有實際表中的字段那麼長的問題。 定義參照的表和字段,對於自定義的字段使用intlen屬性來設置
CLEAR
:
ls_fieldcat
.
LOOP AT
gt_fieldcat
INTO
ls_fieldcat
.
CASE
ls_fieldcat
-
fieldname
.
WHEN
'MATNR'
.
ls_fieldcat
-
ref_table
=
'MARA'
.
ls_fieldcat
-
ref_field
=
'MATNR'
.
* ls_fieldcat-intlen = 18.
ENDCASE
.
MODIFY
gt_fieldcat
FROM
ls_fieldcat
.
ENDLOOP
.
18.單位轉換函數:
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = lv_in"輸入的英文單位
IMPORTING
output = lv_out."輸出的中文單位
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = lv_in"輸入的中文單位
IMPORTING
output = lv_out."輸出的英文單位
19.RENAMING WITH SUFFIX suffix
INCLUDE TYPE t_day AS monday RENAMING WITH SUFFIX _mon.
INCLUDE TYPE t_day AS tuesday RENAMING WITH SUFFIX _tue.
INCLUDE TYPE t_day AS wednesday RENAMING WITH SUFFIX _wed.
20.ABAP的Parameter ID ,用來get/set值
Parameter ID 一般用於 Data element中,經過set/get方法存取它的值, 那麼到底Parameter ID 在哪兒進行維護的呢? 要注意的是這個Parameter ID 是跨Client的,因此維護的時候要注意。ui
記住可維護表:TPARA 是有必要的
21.查詢用戶的權限列表: SUIM OR S_BCE_68001400
22. 四捨五入函數:
CALL FUNCTION 'HR_NZ_ROUNDING_DECIMALS'
EXPORTING value_in = l_p " Input field with decimals conv_dec = 0 " i Number of desired decimals for conversion IMPORTING value_out = l_p " Output field with rounded decimals * EXCEPTIONS * NO_ROUNDING_REQUIRED = 1 " No rounding required. (CONV_DEC > VALUE_IN dec) * DECIMALS_GREATER_THAN_10 = 2 " Conversion only possible with decimals <= 10 * ROUNDING_ERROR = 3 " An error occurred during the decimal conversion * OTHERS = 4.