常用的SAP系统FM
生活随笔
收集整理的這篇文章主要介紹了
常用的SAP系统FM
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
獲取生產定單狀態
-----------------------------------------------------
call function 'STATUS_TEXT_EDIT'
EXPORTING
flg_user_stat = 'X'
objnr = LO_OBJNR
only_active = 'X'
spras = sy-langu
IMPORTING
line = ls_statu
EXCEPTIONS
object_not_found = 01.
使用:objnr 狀態對象號,only_active 激活的 ,
----------------------------------------------------- 獲取匯率
READ_EXCHANGE_RATE?
--------------------------------------------------
獲取每個月的最后一天
---------------------------------------------------
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = date
IMPORTING
last_day_of_month = date1.
-------------------------------------------------------
--------------------------------------------------------------
去掉前面0
*&--------------------------------------------------------------------*
*& Form frm_alpha_output 去零
*&--------------------------------------------------------------------*
DEFINE alpha_minus.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = &1
importing
output = &1.
END-OF-DEFINITION.
---------------------------------------------------
前面加0
---------------------------------------------------
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = &1
importing
output = &1.
------------------------------------------------
踢用戶
TH_DELETE_USER
---------------------------------------
CALL FUNCTION 'CUT_2BYTES_STRINGS'
EXPORTING
I_STR = T_STR
I_LEN = 4
IMPORTING
O_STR = T_TXT04
T_STR 輸入字符 I_LEN 長度 T_TXT04輸出字符
-------------------------------------------
金額轉換成大寫
---------------------------------------------
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
AMOUNT = T_AMOUNT10
CURRENCY = 'RMB'
LANGUAGE = '1'
IMPORTING
IN_WORDS = S_AMWORD2
EXCEPTIONS
NOT_FOUND = 1
TOO_LARGE = 2
OTHERS = 3.
--------------------------------------------------------
用于比較新內表和原內表內容,key_length指原表'record'中所有字段的長度,
-------------------------------------------------------------------
*CALL FUNCTION 'CTVB_COMPARE_TABLES'
* EXPORTING
* TABLE_OLD = RECORD[] "原內表
* TABLE_NEW = RECORD2[] "新內表
* KEY_LENGTH = 91
* IMPORTING
* TABLE_DEL = RECORD3[]
** TABLE_ADD = RECORD4[]
** TABLE_MOD = RECORD5[]
--------------------------------------------------
把SAP里的負號放到前面來的函數
CLOI_PUT_SIGN_IN_FRONT
--------------------------------------------------
使用示例
DATA : t(10) TYPE c VALUE '65465-' .
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = t.
write : t .
-------------------------------------------
通過這個日期得出那天是星期幾
DAY_IN_WEEK
----------------------------------------
用來得到將來/過去的日期的
RP_CALC_DATE_IN_INTERVAL
-------------------------------------------
日期的加減
BKK_ADD_MONTH_TO_DATE
--------------------------------------------------------------------
一組有用的用戶交互窗口函數
POPUP_TO_CONFIRM_LOSS_OF_DATA 顯示有YES/NO的彈出窗口,提示用戶未保存的數據將丟失
POPUP_TO_CONFIRM_STEP 提示是否確認操作的彈出窗口
POPUP_TO_CONFIRM_WITH_MESSAGE 可以顯示定制的提示信息的確認窗口
POPUP_TO_CONFIRM_WITH_VALUE 顯示確認用戶對某個特定對象的操作的彈出窗口
POPUP_TO_DECIDE 將待確認選項以單選按鈕的方式顯示的彈出窗口
POPUP_TO_DECIDE_WITH_MESSAGE 帶消息的確認窗口
POPUP_TO_DISPLAY_TEXT 顯示多行信息的窗口
POPUP_TO_SELECT_MONTH 月份選擇窗口
POPUP_WITH_TABLE_DISPLAY 有表格對象的確認窗口
-------------------------------------------------------------------------------
一組操縱客戶端文件系統的函數
GUI_CREATE_DIRECTORY 在PC上建立文件目錄
GUI_DELETE_FILE 刪除PC上的文件
GUI_DOWNLOAD 文件下載函數
GUI_EXEC 執行PC上的程序,或者打開文件
GUI_GET_DESKTOP_INFO 得到PC客戶端的系統信息,比如操作系統等
GUI_REMOVE_DIRECTORY 刪除PC目錄
GUI_RUN 運行PC程序(ShellExecute)
GUI_UPLOAD 從PC上傳程序
-------------------------------------------------------------------
判斷某天是否是假日
HOLIDAY_CHECK_AND_GET_INFO
-------------------------------------------------------------------
ABAP_DOCU_DOWNLOAD
Download ABAP documentation in HTML format.
---------------------------------------------------------------------
GET_CURRENT_YEAR
得到當前的財政年(fiscal year)
---------------------------------------------------------------------
察看某日期的屬性,包括該日期是星期幾,第幾天(周2=2),是不是公共假期等,需要輸入國家日歷。
DAY_ATTRIBUTES_GET
Return useful information about a day. Will tell you the day of theweek as a word (Tuesday), the day of the week (2 would be Tuedsay),whether the day is a holiday, and more.(provided by FrancoisHenrotte)?
-----------------------------------------------------------------------------------------------------
CLPB_IMPORT :從剪貼板導入internal table
CLPB_EXPORT:從internal table輸入到剪貼板
示例程序:GRCLPB_1
在SE38環境下的程序名輸入欄輸入'DEMO*'后按F4,你可以查到SAP所有的DEMO示例程序,會學到很多ABAP功能的實現方法,輸入'BCALV*'后按F4,你可以查到很多ALV示例程序
SHIFT str LEFT DELETING LEADING '0'.如果要在layout顯示不出前面的0 格式:&字段(zc)&
如果要在layout顯示不出小數點后面的0 格式:&字段(.0)&
金額的阿拉伯數據轉漢字的函數!
FUNCTION zfi_convert_to_capitalization.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(P_AMOUNT) TYPE WERTV8
*" EXPORTING
*" REFERENCE(P_CAPITALIZATION) TYPE STRING
*"----------------------------------------------------------------------
DATA:
v_s00(2) VALUE '零',
v_s01(2) VALUE '壹',
v_s02(2) VALUE '貳',
v_s03(2) VALUE '叁',
v_s04(2) VALUE '肆',
v_s05(2) VALUE '伍',
v_s06(2) VALUE '陸',
v_s07(2) VALUE '柒',
v_s08(2) VALUE '捌',
v_s09(2) VALUE '玖',
v_w00(2) VALUE '',
v_w01(2) VALUE '拾',
v_w02(2) VALUE '佰',
v_w03(2) VALUE '仟',
v_w04(2) VALUE '萬',
v_w05(4) VALUE '拾萬',
v_w06(4) VALUE '佰萬',
v_w07(4) VALUE '仟萬',
v_w08(2) VALUE '億',
v_w09(4) VALUE '拾億',
v_w10(4) VALUE '佰億',
v_w11(4) VALUE '仟億',
v_w12(4) VALUE '萬億',
v_sy(2) VALUE '元',
v_sj(2) VALUE '角',
v_sf(2) VALUE '分',
v_amount(16),"將金額轉換成字符型
v_len TYPE i,"v_amount或p_capitalization的長度
v_var(5),"v_s0,v_s1,...,v_w0,v_w1,...
v_num(2) TYPE n,"每一位的數值
v_s_num(2),"v_s0,v_s1,...中的值
v_weight(2) TYPE n,"權數
v_w_num(4),"v_w0,v_w1,...中的值
v_flag0 TYPE i VALUE 1,"是否輸出'零',0不輸出,1輸出
v_n TYPE i VALUE 0.
v_amount = p_amount.
SHIFT v_amount LEFT DELETING LEADING space.
SHIFT v_amount LEFT DELETING LEADING '0'.
*-計算分-----------------------------------------
v_len = strlen( v_amount ).
v_len = v_len - 1.
v_num = v_amount+v_len(1).
IF v_num <> '0'.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE v_s_num v_sf p_capitalization INTOp_capitalization.
ENDIF.
*-計算角-----------------------------------------
v_len = strlen( v_amount ).
v_len = v_len - 2.
v_num = v_amount+v_len(1).
IF v_num <> '0'.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE v_s_num v_sj p_capitalization INTOp_capitalization.
ENDIF.
*-輸出‘整’字-------------------------------------
IF p_capitalization = ' '.
CONCATENATE '整' p_capitalization INTO p_capitalization.
ENDIF.
*-計算整數---------------------------------------
v_len = strlen( v_amount ).
v_len = v_len - 3.
if v_len = 0.
exit.
endif.
v_amount = v_amount(v_len)." 整數部分
*-輸出‘元’字-------------------------------------
CONCATENATE v_sy p_capitalization INTO p_capitalization.
v_n = v_len - 1.
v_weight = 0.
DO v_len TIMES.
* 從個位開始
v_num = v_amount+v_n(1).
IF v_num <> '0'.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE 'v_w' v_weight INTO v_var.
WRITE (v_var) TO v_w_num.
CONCATENATE v_s_num v_w_num p_capitalization INTOp_capitalization.
v_flag0 = 1.
ELSE.
IF v_flag0 = 1.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE v_s_num p_capitalization INTO p_capitalization.
v_flag0 = 0.
ENDIF.
ENDIF.
v_weight = v_weight + 1.
v_n = v_n - 1.
ENDDO.
*-刪除個位可能出現'零'的情況-----------------
SEARCH p_capitalization FOR '元'.
IF sy-subrc = 0.
v_n = sy-fdpos - 2.
IF p_capitalization+v_n(2) = v_s00.
v_len = strlen( p_capitalization ).
CONCATENATE p_capitalization(v_n) p_capitalization+sy-fdpos INTOp_capitalization.
ENDIF.
ENDIF.
ENDFUNCTION.
-----------------------------------------------------
call function 'STATUS_TEXT_EDIT'
EXPORTING
flg_user_stat = 'X'
objnr = LO_OBJNR
only_active = 'X'
spras = sy-langu
IMPORTING
line = ls_statu
EXCEPTIONS
object_not_found = 01.
使用:objnr 狀態對象號,only_active 激活的 ,
----------------------------------------------------- 獲取匯率
READ_EXCHANGE_RATE?
--------------------------------------------------
獲取每個月的最后一天
---------------------------------------------------
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = date
IMPORTING
last_day_of_month = date1.
-------------------------------------------------------
--------------------------------------------------------------
去掉前面0
*&--------------------------------------------------------------------*
*& Form frm_alpha_output 去零
*&--------------------------------------------------------------------*
DEFINE alpha_minus.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = &1
importing
output = &1.
END-OF-DEFINITION.
---------------------------------------------------
前面加0
---------------------------------------------------
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = &1
importing
output = &1.
------------------------------------------------
踢用戶
TH_DELETE_USER
---------------------------------------
CALL FUNCTION 'CUT_2BYTES_STRINGS'
EXPORTING
I_STR = T_STR
I_LEN = 4
IMPORTING
O_STR = T_TXT04
T_STR 輸入字符 I_LEN 長度 T_TXT04輸出字符
-------------------------------------------
金額轉換成大寫
---------------------------------------------
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
AMOUNT = T_AMOUNT10
CURRENCY = 'RMB'
LANGUAGE = '1'
IMPORTING
IN_WORDS = S_AMWORD2
EXCEPTIONS
NOT_FOUND = 1
TOO_LARGE = 2
OTHERS = 3.
--------------------------------------------------------
用于比較新內表和原內表內容,key_length指原表'record'中所有字段的長度,
-------------------------------------------------------------------
*CALL FUNCTION 'CTVB_COMPARE_TABLES'
* EXPORTING
* TABLE_OLD = RECORD[] "原內表
* TABLE_NEW = RECORD2[] "新內表
* KEY_LENGTH = 91
* IMPORTING
* TABLE_DEL = RECORD3[]
** TABLE_ADD = RECORD4[]
** TABLE_MOD = RECORD5[]
--------------------------------------------------
把SAP里的負號放到前面來的函數
CLOI_PUT_SIGN_IN_FRONT
--------------------------------------------------
使用示例
DATA : t(10) TYPE c VALUE '65465-' .
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = t.
write : t .
-------------------------------------------
通過這個日期得出那天是星期幾
DAY_IN_WEEK
----------------------------------------
用來得到將來/過去的日期的
RP_CALC_DATE_IN_INTERVAL
-------------------------------------------
日期的加減
BKK_ADD_MONTH_TO_DATE
--------------------------------------------------------------------
一組有用的用戶交互窗口函數
POPUP_TO_CONFIRM_LOSS_OF_DATA 顯示有YES/NO的彈出窗口,提示用戶未保存的數據將丟失
POPUP_TO_CONFIRM_STEP 提示是否確認操作的彈出窗口
POPUP_TO_CONFIRM_WITH_MESSAGE 可以顯示定制的提示信息的確認窗口
POPUP_TO_CONFIRM_WITH_VALUE 顯示確認用戶對某個特定對象的操作的彈出窗口
POPUP_TO_DECIDE 將待確認選項以單選按鈕的方式顯示的彈出窗口
POPUP_TO_DECIDE_WITH_MESSAGE 帶消息的確認窗口
POPUP_TO_DISPLAY_TEXT 顯示多行信息的窗口
POPUP_TO_SELECT_MONTH 月份選擇窗口
POPUP_WITH_TABLE_DISPLAY 有表格對象的確認窗口
-------------------------------------------------------------------------------
一組操縱客戶端文件系統的函數
GUI_CREATE_DIRECTORY 在PC上建立文件目錄
GUI_DELETE_FILE 刪除PC上的文件
GUI_DOWNLOAD 文件下載函數
GUI_EXEC 執行PC上的程序,或者打開文件
GUI_GET_DESKTOP_INFO 得到PC客戶端的系統信息,比如操作系統等
GUI_REMOVE_DIRECTORY 刪除PC目錄
GUI_RUN 運行PC程序(ShellExecute)
GUI_UPLOAD 從PC上傳程序
-------------------------------------------------------------------
判斷某天是否是假日
HOLIDAY_CHECK_AND_GET_INFO
-------------------------------------------------------------------
ABAP_DOCU_DOWNLOAD
Download ABAP documentation in HTML format.
---------------------------------------------------------------------
GET_CURRENT_YEAR
得到當前的財政年(fiscal year)
---------------------------------------------------------------------
察看某日期的屬性,包括該日期是星期幾,第幾天(周2=2),是不是公共假期等,需要輸入國家日歷。
DAY_ATTRIBUTES_GET
Return useful information about a day. Will tell you the day of theweek as a word (Tuesday), the day of the week (2 would be Tuedsay),whether the day is a holiday, and more.(provided by FrancoisHenrotte)?
-----------------------------------------------------------------------------------------------------
CLPB_IMPORT :從剪貼板導入internal table
CLPB_EXPORT:從internal table輸入到剪貼板
示例程序:GRCLPB_1
在SE38環境下的程序名輸入欄輸入'DEMO*'后按F4,你可以查到SAP所有的DEMO示例程序,會學到很多ABAP功能的實現方法,輸入'BCALV*'后按F4,你可以查到很多ALV示例程序
SHIFT str LEFT DELETING LEADING '0'.如果要在layout顯示不出前面的0 格式:&字段(zc)&
如果要在layout顯示不出小數點后面的0 格式:&字段(.0)&
金額的阿拉伯數據轉漢字的函數!
FUNCTION zfi_convert_to_capitalization.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(P_AMOUNT) TYPE WERTV8
*" EXPORTING
*" REFERENCE(P_CAPITALIZATION) TYPE STRING
*"----------------------------------------------------------------------
DATA:
v_s00(2) VALUE '零',
v_s01(2) VALUE '壹',
v_s02(2) VALUE '貳',
v_s03(2) VALUE '叁',
v_s04(2) VALUE '肆',
v_s05(2) VALUE '伍',
v_s06(2) VALUE '陸',
v_s07(2) VALUE '柒',
v_s08(2) VALUE '捌',
v_s09(2) VALUE '玖',
v_w00(2) VALUE '',
v_w01(2) VALUE '拾',
v_w02(2) VALUE '佰',
v_w03(2) VALUE '仟',
v_w04(2) VALUE '萬',
v_w05(4) VALUE '拾萬',
v_w06(4) VALUE '佰萬',
v_w07(4) VALUE '仟萬',
v_w08(2) VALUE '億',
v_w09(4) VALUE '拾億',
v_w10(4) VALUE '佰億',
v_w11(4) VALUE '仟億',
v_w12(4) VALUE '萬億',
v_sy(2) VALUE '元',
v_sj(2) VALUE '角',
v_sf(2) VALUE '分',
v_amount(16),"將金額轉換成字符型
v_len TYPE i,"v_amount或p_capitalization的長度
v_var(5),"v_s0,v_s1,...,v_w0,v_w1,...
v_num(2) TYPE n,"每一位的數值
v_s_num(2),"v_s0,v_s1,...中的值
v_weight(2) TYPE n,"權數
v_w_num(4),"v_w0,v_w1,...中的值
v_flag0 TYPE i VALUE 1,"是否輸出'零',0不輸出,1輸出
v_n TYPE i VALUE 0.
v_amount = p_amount.
SHIFT v_amount LEFT DELETING LEADING space.
SHIFT v_amount LEFT DELETING LEADING '0'.
*-計算分-----------------------------------------
v_len = strlen( v_amount ).
v_len = v_len - 1.
v_num = v_amount+v_len(1).
IF v_num <> '0'.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE v_s_num v_sf p_capitalization INTOp_capitalization.
ENDIF.
*-計算角-----------------------------------------
v_len = strlen( v_amount ).
v_len = v_len - 2.
v_num = v_amount+v_len(1).
IF v_num <> '0'.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE v_s_num v_sj p_capitalization INTOp_capitalization.
ENDIF.
*-輸出‘整’字-------------------------------------
IF p_capitalization = ' '.
CONCATENATE '整' p_capitalization INTO p_capitalization.
ENDIF.
*-計算整數---------------------------------------
v_len = strlen( v_amount ).
v_len = v_len - 3.
if v_len = 0.
exit.
endif.
v_amount = v_amount(v_len)." 整數部分
*-輸出‘元’字-------------------------------------
CONCATENATE v_sy p_capitalization INTO p_capitalization.
v_n = v_len - 1.
v_weight = 0.
DO v_len TIMES.
* 從個位開始
v_num = v_amount+v_n(1).
IF v_num <> '0'.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE 'v_w' v_weight INTO v_var.
WRITE (v_var) TO v_w_num.
CONCATENATE v_s_num v_w_num p_capitalization INTOp_capitalization.
v_flag0 = 1.
ELSE.
IF v_flag0 = 1.
CONCATENATE 'v_s' v_num INTO v_var.
WRITE (v_var) TO v_s_num.
CONCATENATE v_s_num p_capitalization INTO p_capitalization.
v_flag0 = 0.
ENDIF.
ENDIF.
v_weight = v_weight + 1.
v_n = v_n - 1.
ENDDO.
*-刪除個位可能出現'零'的情況-----------------
SEARCH p_capitalization FOR '元'.
IF sy-subrc = 0.
v_n = sy-fdpos - 2.
IF p_capitalization+v_n(2) = v_s00.
v_len = strlen( p_capitalization ).
CONCATENATE p_capitalization(v_n) p_capitalization+sy-fdpos INTOp_capitalization.
ENDIF.
ENDIF.
ENDFUNCTION.
總結
以上是生活随笔為你收集整理的常用的SAP系统FM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 更新登录SAP后的LOGO
- 下一篇: SAP_如何获得关于SAP配置表的系统设