Function One
函數(shù)名????????????????????????????????????????????????????描述???????????????????????
???SD_VBAP_READ_WITH_VBELN????????????根據(jù)銷售訂單讀取表vbap中的信息
???EDIT_LINES???????????????????????????????????????????把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新組織
???VIEW_MAINTENANCE_CALL?????????????????維護表視圖
???函數(shù)名????????????????????????????????描述????????????????????????
DY_GET_FOCUS???????????????獲得屏幕焦點
DY_GET_SET_FIELD_VALUE????獲得或者設置屏幕字段的值
???函數(shù)名??????????????????????????????????????????????????????????描述????????????????????????
???F4IF_INT_TABLE_VALUE_REQUEST??????????顯示檢索help
???READ_TEXT?????????????????????????????????????????????????讀取長文本
???CONVERSION_EXIT_CUNIT_OUTPUT??????????單位轉換
???SJIS_DBC_TO_SBC?????????????????????????????????????全角轉半角
???SJIS_SBC_TO_DBC?????????????????????????????????????半角轉換為全角
???CO_R0_CHECK_DECIMAL_POINT?????????????根據(jù)單位檢查數(shù)據(jù)的小數(shù)位
???POSTAL_CODE_CHECK?????????????????????檢查郵政編碼
?
???函數(shù)名??????????????????????????????????????描述????????????????????????
???CONVERSION_EXIT_ALPHA_INPUT??????????全數(shù)字則在前面補0
???CONVERSION_EXIT_ALPHA_INPUT??????????和上面相反
???GET_JOB_RUNTIME_INFO?????????????????獲得job相關信息
???TERMINAL_ID_GET??????????????????????獲得端末id
???DATE_CONVERT_TO_FACTORYDATE??????????把輸入日期轉為工廠日歷日期
???MESSAGE_TEXT_BUILD???????????????????把消息轉為文本
?
???函數(shù)名??????????????????????????????????????描述????????????????????????
???POPUP_TO_CONFIRM?????????????????????彈出確認窗口
?
???函數(shù)名??????????????????????????????????????描述????????????????????????
???CONVERSION_EXIT_MATN1_INPUT????????????????物料號碼轉換函數(shù)
???CONVERSION_EXIT_MATN1_OUTPUT???????????????同上相反
???CONVERT_TO_LOCAL_CURRENCY??????????????????按照指定日期匯率轉換金額為指定貨幣類型
???SSF_FUNCTION_MODULE_NAME???????????????????根據(jù)form名取得對應的函數(shù)名(SmartForm)????
?
???函數(shù)名??????????????????????????????????????描述????????????????????????
???DATE_CHECK_PLAUSIBILITY????????????????日期CHECK
???cl_gui_frontend_services=>gui_upload 上傳到服務器
???cl_gui_frontend_services=>gui_download?????下載到服本地
???SSF_FUNCTION_MODULE_NAME???SMARTFORMS輸出報表時,生成一個函數(shù)名稱,然后CALL這個名稱
?
???函數(shù)名??????????????????????????????????????描述????????????????????????
???POPUP_TO_DECIDE_LIST????????????????彈出供選擇窗口
?
?
1.function:SD_VBAP_READ_WITH_VBELN
?? 功能:根據(jù)銷售訂單讀取表vbap中的信息
?? 參數(shù):
?????import:I_VBELN???????????????????????????訂單號(必輸項)
??????????????????I_BYPASSING_BUFFER????是否回避buffer
??????????????????I_REFRESH_BUFFER???????是否清空buffer
????tables:ET_VBAPVB???????????????????????不清楚其意義
?????????????????ET_VBAP???????????????????????????vbap表
2.form:EDIT_LINES
??功能:把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新組織
??原因:如果用CREATE_TEXT登錄的長文本不存在該問題,如果是在前臺業(yè)務登錄的text,那么存到數(shù)據(jù)庫的時候會在72位的地方換行,在lines這個表中的TDFORMAT設置為空,導致READ_TEXT返回的表中的行數(shù)也許不是你需要的行數(shù)。
?? 代碼:
FORM EDIT_LINES TABLES P_IT_LINES STRUCTURE TLINE.
DATA:
??? L_IT_LINESTYPE STANDARD TABLE OF TLINE,
??? L_WA_LINESTYPE TLINE,
??? L_WA_LINE1TYPE TLINE,
??? L_LINE TYPEI.
DATA:
??? L_INDEX TYPEI,
???L_I????TYPEI.
READ TABLE P_IT_LINES TRANSPORTING NO FIELDS
??? WITH KEYTDFORMAT = SPACE.
CHECK SY-SUBRC = 0.
L_LINE = LINES( P_IT_LINES ).
CHECK L_LINE > 1.
L_IT_LINES[] = P_IT_LINES[].
CLEAR: P_IT_LINES[].
L_INDEX = 2.
DO.
??? CLEAR:L_WA_LINES.
??? READ TABLEL_IT_LINES INTO L_WA_LINES INDEX L_INDEX.
??? IF SY-SUBRC<> 0.
?????L_I = L_INDEX - 1.
?????READ TABLE L_IT_LINES INTO L_WA_LINES INDEX L_I.
?????IF SY-SUBRC = 0 .
???????APPEND L_WA_LINES TO P_IT_LINES.
?????ENDIF.
?????EXIT.
??? ENDIF.
??? IFL_WA_LINES-TDFORMAT = '*'.
?????L_I = L_INDEX - 1.
?????CLEAR L_WA_LINE1.
?????READ TABLE L_IT_LINES INTO L_WA_LINE1 INDEX L_I.
?????APPEND L_WA_LINE1 TO P_IT_LINES.
?????L_INDEX = L_I + 2.
??? ELSE.
?????L_I = L_INDEX - 1.
?????READ TABLE L_IT_LINES INTO L_WA_LINE1 INDEX L_I.
?????CONCATENATE L_WA_LINE1-TDLINE L_WA_LINES-TDLINE
????????????INTO L_WA_LINE1-TDLINE.
?????APPEND L_WA_LINE1 TO P_IT_LINES.
?????L_INDEX = L_INDEX + 2.
??? ENDIF.
ENDDO.
ENDFORM.???????????????????" S4110_EDIT_LINES
3.function:VIEW_MAINTENANCE_CALL
功能:維護表視圖等
???????The function module calls the extended table maintenance (Viewmaintenance).
參數(shù):
???import:ACTION??????S = Display U = Change T = Transport
???????????CORR_NUMBER 傳送號(上面的action是t)
???????????SHOW_SELECTION_POPUP??是否彈出選擇畫面
???????????VIEW_NAME???視圖名
???????????NO_WARNING_FOR_CLIENTINDEP 跨集團是否現(xiàn)實警告
???????????VARIANT_FOR_SELECTION?? 變式名
???????????CHECK_DDIC_MAINFLAG????察看是否為可維護對象
補充:VIEW_MAINTENANCE_CALL
例子:
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
???EXPORTING
?????ACTION??????????????????????='U'?????????"更新
?????SHOW_SELECTION_POPUP????????='X'?????????"顯示選擇畫面
?????VIEW_NAME???????????????????= 'ZPPT000020' "表名
?????NO_WARNING_FOR_CLIENTINDEP?? = ''?????????"不顯示警告
???EXCEPTIONS
?????CLIENT_REFERENCE????????????= 1
?????FOREIGN_LOCK????????????????= 2
?????INVALID_ACTION??????????????= 3
?????NO_CLIENTINDEPENDENT_AUTH???= 4
?????NO_DATABASE_FUNCTION????????= 5
?????NO_EDITOR_FUNCTION??????????= 6
?????NO_SHOW_AUTH????????????????= 7
?????NO_TVDIR_ENTRY??????????????= 8
?????NO_UPD_AUTH?????????????????= 9
?????ONLY_SHOW_ALLOWED???????????= 10
?????SYSTEM_FAILURE??????????????= 11
?????UNKNOWN_FIELD_IN_DBA_SELLIST = 12
?????VIEW_NOT_FOUND??????????????= 13
?????MAINTENANCE_PROHIBITED??????= 14
?????OTHERS??????????????????????= 15.
效果:
每天函數(shù)講解系列----2006.01.10
?
1.SYSTEM-CALL:DY_GET_FOCUS
說明:獲得屏幕焦點
參數(shù):
?????????ID 'SSCREENNAM' FIELD CURRSUBSCREEN
?????????ID 'SSCREENNBR' FIELD CURRSUBSCREENNO
?????????ID 'MSCREENNAM' FIELD CURRSCREEN
?????????ID 'MSCREENNBR' FIELD CURRSCREENNO
?????????ID 'FIELDNAME' FIELD CURSOR_FIELD
?????????ID 'FIELDOFFS' FIELD DUMMYOFFS
?????????ID 'LINE' FIELD CURSOR_LINE.
2.SYSTEM-CALL:DY_GET_SET_FIELD_VALUE
說明:獲得或者設置屏幕字段的值
參數(shù):
?????ID 'GET_SET'???FIELD 'S'???"S:Set mode G:Get mode
?????ID 'SSCREENNAM' FIELD SHSUBSCREEN
?????ID 'SSCREENNBR' FIELD SHSUBSCREENNO
?????ID 'MSCREENNAM' FIELD SHSCREEN
?????ID 'MSCREENNBR' FIELD SHSCREENNO
?????ID 'FIELDNAME' FIELD DYNP_EXPORT
?????ID 'LINE' FIELD DYNP_EXSTEPL
?????ID 'VALUE' FIELD DYNP_EXPVAL.
例子:我做了一個檢索help的exit,例如屏幕上有兩個字段,我按了一個字段的檢索help,那么根據(jù)這個字段就會取得相應的另外一個字段的值,然后把這個之設置到第二個字段。
FUNCTION ZTEST_F4.
*"----------------------------------------------------------------------
*"*"Local interface:
*" TABLES
*"?????SHLP_TAB TYPE SHLP_DESCT
*"?????RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"????REFERENCE(SHLP) TYPE SHLP_DESCR
*"????REFERENCE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*"----------------------------------------------------------------------
* Local data definition
DATA: L_ZZOINO(3) TYPE C.
DATA: L_ZZPOSID(10) TYPE C.
DATA: DYNP_EXPORT(132), DYNP_EXPVAL(132).
DATA: DYNP_EXSTEPL TYPE I, OK, DUMMYCHAR.
DATA: DUMMYOFFS TYPE I.
DATA: SHSUBSCREEN LIKE HELP_INFO-DYNPPROG,
???????SHSUBSCREENNO LIKE HELP_INFO-DYNPRO,
???????SHSCREEN LIKE HELP_INFO-DYNPPROG,
???????SHSCREENNO LIKE HELP_INFO-DYNPRO.
DATA: CURRSUBSCREEN LIKE HELP_INFO-DYNPPROG,
???????CURRSUBSCREENNO LIKE HELP_INFO-DYNPRO,
???????CURRSCREEN LIKE HELP_INFO-DYNPPROG,
???????CURRSCREENNO LIKE HELP_INFO-DYNPRO.
DATA: CURSOR_FIELD LIKE DYNPREAD-FIELDNAME, CURSOR_LINE TYPEI.
DATA: SETCURSOR_AVAILABLE TYPE I.
* Get record value from record table
READ TABLE RECORD_TAB INDEX 1.
L_ZZPOSID = RECORD_TAB+0(10).
IF SHLP_TAB-INTDESCR-HOTKEY IS INITIAL.
??? L_ZZOINO =RECORD_TAB+10(3).
ENDIF.
* Check command, if return, set screen
IF CALLCONTROL-STEP = 'RETTOP'.
*?? Initialize screen, get screenfocus
??? CALL'DY_GET_FOCUS'
?????????ID 'SSCREENNAM' FIELD CURRSUBSCREEN
?????????ID 'SSCREENNBR' FIELD CURRSUBSCREENNO
?????????ID 'MSCREENNAM' FIELD CURRSCREEN
?????????ID 'MSCREENNBR' FIELD CURRSCREENNO
?????????ID 'FIELDNAME' FIELD CURSOR_FIELD
?????????ID 'FIELDOFFS' FIELD DUMMYOFFS
?????????ID 'LINE' FIELD CURSOR_LINE.
*?? Set screen parameter
??? GETPARAMETER ID 'RID' FIELD SHSUBSCREEN .
??? SHSCREEN =SHSUBSCREEN.
??? GETPARAMETER ID 'DYN' FIELD SHSUBSCREENNO.
??? SHSCREENNO =SHSUBSCREENNO.
???DYNP_EXPORT??='V_WA_DYNPRO_9000-ZZOINO'.
???DYNP_EXPVAL?? = L_ZZOINO.
*?? System call for setscreen
??? CALL'DY_GET_SET_FIELD_VALUE'
?????ID 'GET_SET'???FIELD 'S'???"Set mode
?????ID 'SSCREENNAM' FIELD SHSUBSCREEN
?????ID 'SSCREENNBR' FIELD SHSUBSCREENNO
?????ID 'MSCREENNAM' FIELD SHSCREEN
?????ID 'MSCREENNBR' FIELD SHSCREENNO
?????ID 'FIELDNAME' FIELD DYNP_EXPORT
?????ID 'LINE' FIELD DYNP_EXSTEPL
?????ID 'VALUE' FIELD DYNP_EXPVAL.
*?? System call for setscreen
???DYNP_EXPORT??='V_WA_DYNPRO_9000-ZZPOSID'.
???DYNP_EXPVAL?? = L_ZZPOSID.
??? CALL'DY_GET_SET_FIELD_VALUE'
?????ID 'GET_SET'???FIELD 'S'???"Set mode
?????ID 'SSCREENNAM' FIELD SHSUBSCREEN
?????ID 'SSCREENNBR' FIELD SHSUBSCREENNO
?????ID 'MSCREENNAM' FIELD SHSCREEN
?????ID 'MSCREENNBR' FIELD SHSCREENNO
?????ID 'FIELDNAME' FIELD DYNP_EXPORT
?????ID 'LINE' FIELD DYNP_EXSTEPL
?????ID 'VALUE' FIELD DYNP_EXPVAL.
ENDIF.
ENDFUNCTION.
?
?
Function:F4IF_INT_TABLE_VALUE_REQUEST
功能:顯示檢索help
參數(shù):
????Import:
???????DDIC_STRUCTURE:返回table的結構:
?????????‘s’:VALUE_TAB的結構
?????????‘c’:VALUE_TAB只有一個字段
???????RETFIELD:返回的字段名稱------------必輸
???????DYNPPROG:當前程序
???????DYNPNR: 屏幕號
???????DYNPROFIELD:屏幕上需要檢索help的字段名稱
???????WINDOW_TITLE:檢索help的標題
???????VALUE_ORG:檢索help屏幕顯示屬性:
???????‘c’:cell by cell
???????‘s’:structured
???????CALLBACK_PROGRAM:在f4之前調(diào)用的程序
???????CALLBACK_FORM:在f4之前調(diào)用的程序里面的form名稱,形式如下
??????????FORM <NAME> TABLES RECORD_TABSTRUCTURE SEAHLPRES
???????????????????CHANGING SHLP TYPE SHLP_DESCR
?????????????????????????????CALLCONTROL LIKE DDSHF4CTRL.
????Export:
???????USER_RESET:如果沒有選擇(按紅x),返回‘x’
????Tables:
???????VALUE_TAB:傳進去的表-----------必輸
???????FIELD_TAB:Fields of the hit list(暫時沒用)
???????RETURN_TAB:返回值表,即如果選擇了而沒有寫到屏幕上的值存在這個表中。
???????DYNPFLD_MAPPING:把屏幕上需要help的字段可以放在這個表中。
??????????推測:如果屏幕上有多個字段關聯(lián),那么只作一個help的話,這個應該可以滿足。
例子:
FORM A3000_SET_F4_FIELD_WERKS USING P_FIELD.
TYPES:
BEGIN OF T_S_WERKS,
??? WERKS TYPET001W-WERKS,?? "プラント
??? NAME1 TYPET001W-NAME1,?? "名稱
??? NAME2 TYPET001W-NAME2,?? "名稱2
??? STRAS TYPET001W-STRAS,?? "地名/番地-號
??? ORT01 TYPET001W-ORT01,?? "市區(qū)町村名
END OF T_S_WERKS.
TYPES T_I_WERKS TYPE STANDARD TABLE OF T_S_WERKS.
*這個就是value_tab
DATA?? L_IT_WERKS TYPET_I_WERKS.
*取數(shù)據(jù)
SELECT WERKS???"プラント
????????NAME1???"名稱
????????NAME2??? "名稱2
????????STRAS???"地名/番地-號
????????ORT01???"市區(qū)町村名
??? FROMT001W
??? INTOCORRESPONDING FIELDS OF TABLE L_IT_WERKS.
*調(diào)用函數(shù)
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
???EXPORTING
?????RETFIELD??????????????= 'WERKS'???“plant
?????DYNPPROG??????????????= SY-REPID?? “程序名
?????DYNPNR????????????????= SY-DYNNR?? “屏幕號
?????DYNPROFIELD???????????= P_FIELD???“字段名稱
?????VALUE_ORG?????????????='S'???????“顯示屬性:cell by cell
??? TABLES
?????VALUE_TAB?????????????= L_IT_WERKS
???EXCEPTIONS
?????PARAMETER_ERROR???????= 1
?????NO_VALUES_FOUND???????= 2
?????OTHERS????????????????= 3
???????????.
IF SY-SUBRC <> 0.
????MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
????????????WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.???????????????????" A3000_SET_F4_FIELD_WERKS
程序:
REPORTZF4IF_INT_TABLE_VALUE_REQUEST??????????????????????????????????.
TYPES:
BEGIN OF T_S_WERKS,
??? WERKSTYPE T001W-WERKS,?? "
??? NAME1TYPE T001W-NAME1,?? "
??? NAME2TYPE T001W-NAME2,?? "2
??? STRASTYPE T001W-STRAS,?? "/-
??? ORT01TYPE T001W-ORT01,?? "
END OF T_S_WERKS.
TYPES T_I_WERKS TYPE STANDARD TABLE OF T_S_WERKS.
*value_tab
DATA?? L_IT_WERKS TYPET_I_WERKS.
PARAMETERS: P_WERKS(4) TYPE C.
AT SELECTION-SCREENON VALUE-REQUEST FOR P_WERKS.
*AT SELECTION-SCREEN ON HELP-REQUEST FOR .
*
SELECTWERKS??? "
????????NAME1??? "
????????NAME2??? " 2
????????STRAS??? "/-
????????ORT01??? "
??? FROMT001W
??? INTOCORRESPONDING FIELDS OF TABLE L_IT_WERKS.
*
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
???EXPORTING
?????RETFIELD??????????????= 'WERKS'???"plant
?????DYNPPROG??????????????= SY-REPID?? "
?????DYNPNR????????????????= SY-DYNNR?? "
?????DYNPROFIELD???????????= 'P_WERKS'???"
?????VALUE_ORG?????????????='S'???????"cell by cell
???TABLES
?????VALUE_TAB?????????????= L_IT_WERKS
???EXCEPTIONS
?????PARAMETER_ERROR???????= 1
?????NO_VALUES_FOUND???????= 2
?????OTHERS????????????????= 3
???????????.
IF SY-SUBRC <> 0.
????MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
????????????WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Function: READ_TEXT/CREATE_TEXT
功能:讀取長文本/創(chuàng)建長文本
參數(shù):
Import:
???CLIENT:集團
???ID:文本ID(TTXID中定義)
???LANGUAGE:語言
???NAME:文本名字()
???OBJECT:文本對象(TTXOB中定義)
Export:
???HEADER:文本的描述信息
Tables:
???LINES:文本內(nèi)容
例子:讀取銷售訂單頭文本
????CALL FUNCTION 'READ_TEXT'
???????EXPORTING
?????????ID?????????????????????= ‘Y001’
?????????LANGUAGE???????????????= SY-LANGU
?????????NAME???????????????????= ‘385’
?????????OBJECT?????????????????= ‘VBBK’
???????TABLES
?????????LINES??????????????????= L_IT_LINES
???????EXCEPTIONS
?????????ID?????????????????????= 1
?????????LANGUAGE???????????????= 2
?????????NAME???????????????????= 3
?????????NOT_FOUND??????????????= 4
?????????OBJECT?????????????????= 5
?????????REFERENCE_CHECK????????= 6
?????????WRONG_ACCESS_TO_ARCHIVE = 7
?????????OTHERS?????????????????= 8.
Function: CONVERSION_EXIT_CUNIT_OUTPUT
功能:根據(jù)語言決定單位的顯示
參數(shù):
???Import:
?????INPUT:內(nèi)部單位顯示方式
?????LANGUAGE:語言代碼
???Export:
?????LONG_TEXT:單位的長文本
?????OUTPUT:外部單位顯示方式
?????SHORT_TEXT:單位的短文本
例子:單位顯示轉換
?????CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
?????EXPORTING
???????INPUT?????????= ‘ST’
???????LANGUAGE??????= SY-LANGU
?????IMPORTING
???????OUTPUT????????= L_OUT
?????EXCEPTIONS
???????UNIT_NOT_FOUND = 1
???????OTHERS????????= 2.
Function: SJIS_DBC_TO_SBC
功能:全角轉換為半角
參數(shù):
???Import:
?????ALL:全部轉換
?????ALPHABET_UPPER:A-Z轉換
?????ALPHABET_LOWER:a-z轉換
?????NUMERIC:0-9轉換
???Export:
?????CONVERTED:轉換的字符個數(shù)
???Changing:
?????TEXT:轉換結果
Function: SJIS_SBC_TO_DBC
功能:半角轉換為全角
參數(shù):
???Import:
?????ALL:全部轉換
?????ALPHABET_UPPER:A-Z轉換
?????ALPHABET_LOWER:a-z轉換
?????NUMERIC:0-9轉換
???Export:
?????CONVERTED:轉換的字符個數(shù)
???Changing:
?????TEXT:轉換結果
Function: CO_R0_CHECK_DECIMAL_POINT
功能:根據(jù)單位檢查數(shù)據(jù)的小數(shù)位
參數(shù):
???Import:
?????I_QUANTITY:數(shù)量
?????I_UNIT:單位
??例子:下面的例子會返回錯誤信息,以為單位ST是不能有小數(shù)位的。
???????CALL FUNCTION 'CO_R0_CHECK_DECIMAL_POINT'
?????????EXPORTING
???????????I_QUANTITY??????= 3.2
???????????I_UNIT??????????=‘ST’
?????????EXCEPTIONS
???????????WRONG_DATA??????= 1
???????????OTHERS??????????= 2.??
Function: POSTAL_CODE_CHECK
功能:檢查郵政編碼
參數(shù):
???Import:
?????COUNTRY:國家(T005)----------必輸
?????ONE_TIME_ACCOUNT:不明確
?????POSTAL_CODE:郵政編碼
?????POSTAL_CODE_PO_BOX:沒用過,以下為推測:如果輸入則會檢查,如果t005表中的XPLPF設置了,那么如果輸入PO_BOX,這個選項就必須輸入。
??????PO_BOX:沒用過
??????REGION:區(qū)域
???Export:
?????POSTAL_CODE:郵編
?????EV_POSTAL_CODE:郵編的格式
?????EV_POSTAL_CODE_PO_BOX:沒用過
例子:檢查輸入的郵編是否有效
???????CALL FUNCTION 'POSTAL_CODE_CHECK'
?????????EXPORTING
???????????COUNTRY????????????????????= 'JP'
???????????POSTAL_CODE????????????????= L_WA_DISP-POST_CODE1
?????????EXCEPTIONS
???????????NOT_VALID??????????????????= 1
???????????OTHERS?????????????????????= 2
總結
以上是生活随笔為你收集整理的Function One的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设计折叠样式的屏幕(类似MIGO的屏
- 下一篇: Function Two