SAP 函数积累(转
?1 . 函數WS_UPLOAD?
??? 功能﹕將TXT文件轉換成SAP中的內表定義的數據表格文件
??? 注意﹕1 函數將按參數 data_tab 的實際參數(假設為 table1) table1 定?????????????????????????????????????????????????????????????????
??????????? 義的各個字段的長度來依次將TXT文件間隔開﹐并依次將對應的值付給table1的
??????????? 字段,table中的各個字段必須為C 型
????????? 2 TXT文件中﹐各個字段值之間不能有空格
?? 事例: ZBC400_JOHN_26
2 . 函數TH_POPUP
???? 功能: 向函數入口參數 client , user決定的用戶發送信息(信息為入口參數 message 決
?????????? 定的信息)
???? 事例﹕ZBC_LSL_017
3. 函數?? HELP_VALUES_GET_WITH_TABLE
???? 功能﹕彈出用戶所需要的信息﹐讓用戶選擇﹐并把選種的信息付給輸入框﹐相當與建立起
?????????? SEARCH HELP
???? 注意: 1 tables 的參數 fields , valuetab 需要固定的內表結構
?????????? 2 importing 的參數 select_value 有高﹐低兩個值﹐即用戶選種的值付給相應的
???????????? 輸入框的最小值﹐最大值
?????????? 3 tables 的參數 fields , valuetab 的實際參數(假設為 tab_field, field_value)?
???????????? tab_field, field_value 的付值,其tab_field 內表中﹐有且僅有一個字段的?
???????????? selectflag = ‘X’?
????? 事例﹕ ZPP000293
4 . 函數 Z_UDARBID?
???????? 功能﹕根據工單號﹐當前工作中心代號﹐讀出上一工作中心代號﹐上一工作中心名稱﹐
?????????????? 下一工作中心代號﹐下一工作中心名稱
???????? 事例﹕ZPP000224_EDIT
???????? 說明﹕取得上下組別的函數更正確的函數 z_udarbid_change(可以解決組別
??????????????????????????????????????????????????????????? 循環問題)?
???????? 示例﹕ZBAK_ZPP000222_LSL
5 . 函數 Z_COLORANDSIZE?
???????? 功能﹕根據該物料的組態﹐得出該物料的顏色尺碼.
???????? 注意﹕入口參數 IP_SPRAS = ‘E’ 表示本廠款號﹐’M’表示客戶款號
6 . 函數 Z_PRINTTITLE?
??????? 功能 ﹕打印標準報表頭?
??????? 事例﹕ ZBC_LSL_777
7 . 函數 Z_PAGECHANGE?
??????? 功能﹕許多記錄時﹐進行翻葉操作
8 . 函數READ_TEXT
??????? 功能﹕讀取內文
??????? 假設﹕FORM get_pitext USING pn LIKE thead-tdname .?????
????????????? REFRESH tabline.
CALL FUNCTION 'READ_TEXT'
?????? EXPORTING
??????????? client???????? = sy-mandt
??????????? id???????????? = '0006'
??????????? language?????? = 'M'
??????????? object???????? = 'VBBK'
??????????? name?????????? = pn
??????????? archive_handle = 0
?????? IMPORTING
??????????? headers??????? = thead
?????? TABLES
??????????? lines????????? = tabline
?????? EXCEPTIONS
??????????? not_found????? = 2.
注意﹕ 1 tabline 必須為固定格式, headers 的實際參數必須為 thead
????????? name 的實際參數必須為thead-tdname 形式,靠它來確定取誰的內??????
????????? 文
2 client , language , archive_handle 的入口值基本固定如上
3 id 為 va03à轉到à表頭à內文à(雙擊要讀取的內文項)àgotoàheader
text id 既是參數 id 的值
text object 既是參數 object 的值
事例﹕ZPP000220
????????????
9 . 函數 Z_CURR_TO_CHAR .
??????? 功能﹕把 curr 型的數據轉化成 char 型的數據﹐轉化后的數據仍然?
????????????? 按 curr 型數據顯示 (“###,###,###.##”)并可以在char型數?
????????????? 前后添加固定個特殊字符?
???????????????? (“**12,111,456.23”, ”**********12.45”)
???? 假設 p_curr 為 CURR 型﹐ p_char = ‘*’
CALL FUNCTION 'Z_CURR_TO_CHAR'
???? EXPORTING
????????? p_curr_i??????? = p_curr
????? *?? p_char_i??????? = p_char
????? *?? p_num_i???????? = 2
????? *?? p_bore_i??????? =?
????? *?? p_nums_i??????? = 20
??? IMPORTING
????????? p_char_o??????? = t_chr
???? EXCEPTION
????????? no_p_curr_i???? = 1
????????? curr_type_wrong = 2
????????? not_bore_i????? = 3
????????? OTHERS????????? = 4.
說明﹕
????? p_curr : 必須輸入參數﹐不能超過15個長度,被轉化的參數
????? p_char : 可線參數﹐須添加的特殊字符
????? p_num_I : 可線參數﹐當參數p_nums_I為空時有效﹐要添加的特殊字符????????????????
??????????????? 的個數????????????????
????? p_bore_I: 可線參數﹐決定是在前/后添加特殊字符,bà前﹐eà后﹐默
??????????????? 認為 b,只能輸入b/e 否則函數不轉化
????? p_nums_I: 可線參數﹐決定轉化成固定個字符長度的﹐若參數p_char_I
???????????????? 有值﹐則不足位時補特殊字符﹐若參數p_char_I為空時﹐
???????????????? 該參數無效﹐若該參數輸入值﹐則參數p_num_I 無效。
????? p_char_o: 轉化后的數據
若執行該函數 sy-subrc 之值如下﹕
????????? 1à沒用輸入參數p_curr_I .
????????? 2à參數p_curr_I過長﹐或p_nums_I為空﹐p_num_I為負數
????????? 3à參數p_bore_I 不是輸入’e’/’b’(大小寫不區分)?
事例﹕ZBC_Z_CURR_TO_CHAR
8.函數 Z_COLORANDSIZE_MATNR?
功能 ﹕根據物料的款號得出該物料的特性值 (如C10019-EYEDE 的對應的A,C,D 的顏色說
???????? 明﹐39.5﹐41.5 的尺碼大小﹐見 TC : CT03 ) 放與一個內表中)
CALL FUNCTION 'Z_COLORANDSIZE_MATNR'
???? EXPORTING
????????? p_matnr = p_matnr
????????? p_spras = 'Z1'
?? TABLES
????????? t_tab??? = it
???? EXCEPTIONS
????????? no_matnr = 1
????????? no_data = 2
????????? OTHERS?? = 3.
說明﹕
?????? p_matnr : 必要入口參數﹐需要取得特性的物料的款號
?????? p_spras : 語言碼﹐默認為 ‘M’?
?????? it????? : 為內表﹐P_matnr 的各特性值便放與次表中﹐該表結構固定﹐???
???????????????? 字段如下﹕
????????????????? name?? 字符型 (= ‘COLOR’ 表示顏色特性﹐= ‘SIZE’ 表示
?????????????????????????????????? 尺碼特性)
????????????????? atwrt 特性碼 (如 D,E,F,39.4,41.5)
????????????????? atwtb 特性值說明﹐即通常所說的顏色﹐尺碼
?????? 執行后 sy-subrc = 1 表示 參數 p_matnr 為空
?????????????????????? = 2 表示 該 物料沒用特性值
?????????????????????? = 3 表示其它錯誤
???? 獲得結果比函數Z_COLORANDSIZE 更廣
9.函數WS_DOWNLOAD
???? 功能﹕將內表中的數據轉化成特定的文件
?????????? 見范例 zbc400_lsl_file_change
10. 函數WS_UPLOAD
????? 功能﹕將指定文件中的數據轉化成內表中的數據
?????????? 見范例 zbc400_lsl_file_change
11 . 函數ENQUEUE_ECMERKM
????? 功能﹕對數據表中記錄進行加鎖﹐可以根據加鎖是否成功來判斷是否還
??????????? 有其它客戶在更新該數據表
CALL FUNCTION 'ENQUEUE_ECMERKM'???????????
????????? EXPORTING
*???????? MODE_RCTMV???? = 'E'
????????? mandt????????????? = sy-mandt
????????? atnam????????????? = p_lock_atnam
*???????? X_ATNAM????????? = ' '
*???????? _SCOPE?????????? = '2'
*???????? _WAIT??????????? = ' '
*???????? _COLLECT???????? = ' '
???? EXCEPTIONS
????????? foreign_lock = 1
????????? system_failure = 2
????????? OTHERS???? = 3.
說明﹕ mandt ﹕ 使用的數據端口
??????? atnam ﹕ 被鎖定的記錄(可以確定唯一一條記錄)
12 函數EQUEUE_ECMERKM
?? 功能﹕對自己鎖定的記錄進行解鎖,常用于對數據表中數據進行更新操作之?
????????? 前﹐通常與 加鎖函數聯合起來用
?????????? CALL FUNCTION 'DEQUEUE_ECMERKM'
???????????????? EXPORTING
*??????????????????? mode_rctmv = 'E'
???????????????????? mandt????? = sy-mandt
???????????????????? atnam????? = p_ulock_atnam
*??????????????????? X_ATNAM??? = ' '
*??????????????????? _SCOPE???? = '3'
*?????????????????? _SYNCHRON?? = ' '
*?????????????????? _COLLECT??? = ' '
???????????????? EXCEPTIONS
???????????????????? OTHERS???? = 1.
說明﹕ mandt ﹕ 使用的數據端口
?????? atnam ﹕ 需要解鎖的記錄(可以確定唯一一條記錄)
13 .函數 TH_POPUT
?? 說明﹕該函數是向 SAP 用戶發送信息
CALL FUNCTION 'TH_POPUP'?????????? "向用戶發送信息
???????? EXPORTING
????????????? CLIENT???????? = BIT-MANDT
????????????? USER?????????? = BIT-BNAME
????????????? MESSAGE??????? = MES
????????????? MESSAGE_LEN??? = LEN???? "要發送的信息的長度可截斷部分信息
????????????? CUT_BLANKS???? = ' '
???????? EXCEPTIONS
????????????? USER_NOT_FOUND = 1.
參數﹕client ------客戶端口
??????? user--------用戶名(接收者)
??????? message—需要發送的信息(通常用變量儲存)
??????? message_len: 發送的信息截取的長度(若長度<mes的長度﹐則多余信
??????????????????? 息被截掉)
其中客戶端口﹐用戶名常常放與一內表中﹐內表結構必須為結構uinfo?
見示例 zbc400_lsl_send_message
14 .圖形顯示函數﹕GRAPH_2D(二維平面圖), GRAPH_3D(三維立體圖)
CALL FUNCTION 'GRAPH_2D'
???? EXPORTING
????????? mail_allow = 'X'
????????? titl?????? = l_title
???? TABLES
????????? data????? = t_graph.
????
參數﹕ title : 圖形的標題
???????? data: 存放數據的內表
GRAPH_3D 函數用法同 GRAPH_2D .
示例﹕ZBAK_ZPP000222_LSL
15 .函數CS_WHERE_USED_MAT(逆查BOM)
?? 說明﹕取的物料的上層物料
??????????????? CALL FUNCTION 'CS_WHERE_USED_MAT'?
???????????? EXPORTING
?????????????? datub????????????????????? = sy-datum
?????????????? datuv????????????????????? = sy-datum
?????????????? matnr????????????????????? = t_afru-matnr
*???????????? POSTP?????????????????????? = ' '
*???????????? RETCODE_ONLY??????????????? = ' '
*???????????? STLAN?????????????????????? = ' '
?????????????? werks????????????????????? = '1000'
*??????? IMPORTING
*???????????? TOPMAT????????????????????? =
???????????? TABLES
????????????????? wultb?????????????????? = ltb
????????????????? equicat???????????????? = equicat
????????????????? kndcat????????????????? = kndcat
????????????????? matcat????????????????? = matcat
????????????????? stdcat????????????????? = stdcat
????????????????? tplcat????????????????? = tplcat
???????????? EXCEPTIONS
????????????????? call_invalid??????????????? = 1
????????????????? material_not_found????????? = 2
????????????????? no_where_used_rec_found???? = 3
????????????????? no_where_used_rec_selected = 4
????????????????? no_where_used_rec_valid???? = 5
????????????????? OTHERS????????????????????? = 6.
???????? 參數﹕datub: 當前日期
?????????????? datuv: 當前日期
?????????????? matnr: 要找回上層BOM物料的物料
?????????????? werks: 工廠通常取’1000’?
?????????????? wultb: 所有的上層BOM物料存放在該表中(該表結構固定)
?????????????? equicat: 固定結構﹐一定要
?????????????? kndcat : 固定結構﹐一定要
?????????????? matcat: 固定結構﹐一定要?
?????????????? stdcat : 固定結構﹐一定要
?????????????? tplcat : 固定結構﹐一定要
示例:?? ZBAK_ZPP000222_LSL
BOM 展開函數(順查BOM)
16 .只展開 BOM 的函數
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
?? EXPORTING
????? capid = pm_capid?? “應用程序 一般為 PP01?
????? datuv = pm_datuv?? “通常為系統的當前日期?
????? mtnrv = pm_mtnrv?? “要展開BOM 的物料
????? mehrs = 'X'??????? “ x 表示多層展開﹐space 表示只展開第一層
????? werks = pm_werks?? “ 通常為 1000
?? IMPORTING
????? topmat = selpool
????? dstst = dstst_flg
?? TABLES
????? stb = stb????????? “展開的 BOM 存放在該內表
????? matcat = matcat??? “下面含有組件的物料存放在該內表
17 .展開與特性相關的特定款號的 BOM?
?? CALL FUNCTION 'CS_BOM_EXPL_ KND_V1'
?? EXPORTING
????? capid = pm_capid?? “應用程序 一般為 PP01?
????? datuv = pm_datuv?? “通常為系統的當前日期?
????? mtnrv = pm_mtnrv?? “要展開BOM 的物料
????? cuobj = vbap_wa-cuobj “與特性相關的組態
????? mehrs = 'X'??????? “ x 表示多層展開﹐space 表示只展開第一層
????? werks = pm_werks?? “ 通常為 1000
?? IMPORTING
????? topmat = selpool
????? dstst = dstst_flg
?? TABLES
????? stb = stb????????? “展開的 BOM 存放在該內表
????? matcat = matcat??? “下面含有組件的物料存放在該內表
范例見系統報表程序 RCS12001
1 說明﹕內表 stb, matcat 結構固定, 輸出參數 selpool , dstst_flg 固定,
????? 其固定結構如下:
內表:
?? DATA: BEGIN OF stb OCCURS 1000.
???????? INCLUDE STRUCTURE stpox.
?? DATA: END OF stb.
?? DATA: BEGIN OF matcat OCCURS 50.
???????? INCLUDE STRUCTURE cscmat.
?? DATA: END OF matcat.
輸出參數:
???? DATA: BEGIN OF selpool.
?????????? INCLUDE STRUCTURE cstmat.
????? DATA: END OF selpool.
????? DATA: dstst_flg LIKE csdata-xfeld.
2 說明﹕內表 stb 中的數據按第一層順序號排序﹐如第一層組件下還有BOM,?
????????? 則其BOM顯示在其下面﹐并依次分層(下面BOM 也按順序號排列)?
???????? stb 下的重要字段說明如下﹕
?????????? stufe : 在整個 BOM 中的層次?
???????????? tdidx : 對應 matcat-index ﹐標志直屬哪個物料下的 BOM
???????????? ojtxb : 上層物料的物料說明
???????????? ojtxp : 本身物料說明
???????????? idnrk : 組件名(即物料)
???????????? stlkn : 在各自 BOM 中的順序號
???????????? matkl : 該物料群組
???????????? mtart : 物料類型 (成品﹐半成品﹐原料)
?????????? matcat 下的重要字段 (表matcat 存放下面還有BOM 的物料)
?????????? matnr : 物料號
???????????? index : 順序號
函數 : SO_NEW_DOCUMENT_SEND_API1
功能﹕向SAP 用戶的收信箱中發送Email(內容存與內表中)
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
????? EXPORTING
?????????? document_data = email_send
?????????? document_type = 'RAW'
??????????? put_in_outbox = 'X'
?????????? put_in_outbox = ''
????? TABLES
?????????? object_content = it_data
?????????? receivers???? = email_rece.
說明﹕document_data : 發送Email 之屬性
????? object_content : 發送之內容
????? receivers????? : 收件者
總結
以上是生活随笔為你收集整理的SAP 函数积累(转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 脚本调试工具 Microsoft Scr
- 下一篇: 开发指南专题十六:JEECG微云快速开发