很多经常用到的函数,希望对大家有帮助.
Funtion:DDIF_FIELDINFO_GET
功能:获得字段的相关信息
参数:
Import:
TABNAME:数据库表的名字
FIELDNAME:无需指定,由LFIELDNAME代替了
LANGU: 语言设定,默认sy-langu
LFIELDNAME:指定关联字段
ALL_TYPES:是否指定所有类型
GROUP_NAMES:是否包含include的字段
UCLEN:没用过,应该是和unicode相关的
Export:
X030L_WA:返回表头的信息
DDOBJTYPE:表类型
'TRANSP' = transparent table
'POOL' = logical pooled table
'CLUSTER' = logical cluster table
'VIEW' = database or projection view
'INTTAB' = structure, help view, maintenance view or structure view
'TPOOL' = physical pooled table
'TCLUSTER' = physical cluster table
'DTEL' = data element
'TTYP' = table type
DFIES_WA:没用过
LINES_DESCR:没用过
Tables:
DFIES_TAB:字段列表
FIXED_VALUES:域的固定值
说明:该函数可用来获得某个表或者结构或者视图等所有字段的相关信息,所以如果想用alv来维护某个表的时候,对设定field catalog有帮助。
Funtion:DDIF_NAMETAB_GET
功能:获得字段的相关信息(不包含text)
参数:
Import:
TABNAME:数据库表的名字
LFIELDNAME:指定关联字段
ALL_TYPES:是否指定所有类型
GROUP_NAMES:是否包含include的字段
UCLEN:没用过,应该是和unicode相关的
Export:
X030L_WA:返回表头的信息
DTELINFO_WA:data element的信息
TTYPINFO_WA:表类型的信息
DDOBJTYPE:表类型
'TRANSP' = transparent table
'POOL' = logical pooled table
'CLUSTER' = logical cluster table
'VIEW' = database or projection view
'INTTAB' = structure, help view, maintenance view or structure view
'TPOOL' = physical pooled table
'TCLUSTER' = physical cluster table
'DTEL' = data element
'TTYP' = table type
DFIES_WA:没用过
LINES_DESCR:没用过
Tables:
DFIES_TAB:字段列表
FIXED_VALUES:域的固定值
Funtion:DDIF_TABL_GET
功能:获得表的相关信息
参数:
Import:
NAME:数据库表的名字
STATE:状态
STATE = 'A' (read the active version)
STATE = 'M' (read the latest version)
LANGU: 语言设定,默认sy-langu
Export:
GOTSTATE:状态信息
DD02V_WA:表头
DD09L_WA:表表的技术信息
Tables:
DD03P_TAB:表的字段列表
DD05M_TAB:表的外键字段
DD08V_TAB:表的外键
DD12V_TAB:表索引
DD17V_TAB:表的索引字段
DD35V_TAB:检索help相关
DD36M_TAB:检索help相关
Funtion:POPUP_TO_DECIDE_LIST
功能:弹出供选择窗口,最多25个选项,选择可以是单选按钮也可以是复选按钮,可以设定最多选择的个数。
参数:
Import:
CURSORLINE :默认光标所在行
MARK_FLAG:选择的标志,一般设为‘X’
MARK_MAX: 最大选择的选项个数
START_COL:起始行
START_ROW :起始列,用来定位弹出窗口的位置
TEXTLINE1:文本行
TEXTLINE2:文本行
TEXTLINE3 :文本行
TITEL:弹出窗口的标题
DISPLAY_ONLY:仅显示
Export:
ANSWER:A:取消 空:做了选择
Tables:
T_SPOPLI:选择结果
例子:
REPORT Z_BOBO .
* 定义函数需要的变量
DATA: BEGIN OF SPOPLIST OCCURS 15.
INCLUDE STRUCTURE SPOPLI.
DATA: END OF SPOPLIST.
DATA: ANTWORT TYPE C.
* 添加选择参数
SPOPLIST-VAROPTION = 'Creditor'.
APPEND SPOPLIST.
SPOPLIST-VAROPTION = 'Material'.
APPEND SPOPLIST.
SPOPLIST-VAROPTION = 'Account '.
SPOPLIST-SELFLAG = 'X'.
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
EXPORTING TITEL = 'Possible entra: Order'
TEXTLINE1 = 'By which criteria'
TEXTLINE2 = 'should orders'
TEXTLINE3 = 'be selected?'
MARK_MAX = 2
MARK_FLAG = 'X'
IMPORTING ANSWER = ANTWORT
TABLES T_SPOPLI = SPOPLIST
EXCEPTIONS TOO_MUCH_ANSWERS = 1
TOO_MUCH_MARKS = 2.
IF SY-SUBRC = 2.
WRITE: 'Too many answers chosen.'.
ENDIF.
* 取消
IF ANTWORT = 'A'.
WRITE: 'Popup canceled.'.
ELSE.
WRITE: 'Options chosen:'.
LOOP AT SPOPLIST WHERE SELFLAG = 'X'.
WRITE: / SPOPLIST-VAROPTION.
ENDLOOP.
ENDIF.
SYSTEM-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.
SYSTEM-CALL:DY_GET_SET_FIELD_VALUE
说明:获得或者设置屏幕字段的值
参数:
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,那么根据这个字段就会取得相应的另外一个字段的值,然后把这个之设置到第二个字段。
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 TYPE I.
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 screen focus
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
GET PARAMETER ID 'RID' FIELD SHSUBSCREEN .
SHSCREEN = SHSUBSCREEN.
GET PARAMETER ID 'DYN' FIELD SHSUBSCREENNO.
SHSCREENNO = SHSUBSCREENNO.
DYNP_EXPORT ='V_WA_DYNPRO_9000-ZZOINO'.
DYNP_EXPVAL = L_ZZOINO.
* System call for set screen
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 set screen
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
参数:
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之前调用的程序
CALLBACK_FORM:在f4之前调用的程序里面的form名称,形式如下
FORM <NAME> TABLES RECORD_TAB STRUCTURE 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的字段可以放在这个表中。
推测:如果屏幕上有多个字段关联,那么只作一个help的话,这个应该可以满足。
例子:
FORM A3000_SET_F4_FIELD_WERKS USING P_FIELD.
TYPES:
BEGIN OF T_S_WERKS,
WERKS TYPE T001W-WERKS, "プラント
NAME1 TYPE T001W-NAME1, "名称
NAME2 TYPE T001W-NAME2, "名称2
STRAS TYPE T001W-STRAS, "地名/番地-号
ORT01 TYPE T001W-ORT01, "市区町村名
END OF T_S_WERKS.
TYPES T_I_WERKS TYPE STANDARD TABLE OF T_S_WERKS.
*这个就是value_tab
DATA L_IT_WERKS TYPE T_I_WERKS.
*取数据
SELECT WERKS "プラント
NAME1 "名称
NAME2 "名称 2
STRAS "地名/番地-号
ORT01 "市区町村名
FROM T001W
INTO CORRESPONDING 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_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
Function: READ_TEXT/CREATE_TEXT
功能:读取长文本/创建长文本
参数:
Import:
CLIENT:集团
ID:文本ID(TTXID中定义)
LANGUAGE:语言
NAME:文本名字()
OBJECT:文本对象(TTXOB中定义)
Export:
HEADER:文本的描述信息
Tables:
LINES:文本内容
例子:读取销售订单头文本
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
功能:根据语言决定单位的显示
参数:
Import:
INPUT:内部单位显示方式
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
功能:全角转换为半角
参数:
Import:
ALL:全部转换
ALPHABET_UPPER:A-Z转换
ALPHABET_LOWER:a-z转换
NUMERIC:0-9转换
Export:
CONVERTED:转换的字符个数
Changing:
TEXT:转换结果
Function: SJIS_SBC_TO_DBC
功能:半角转换为全角
参数:
Import:
ALL:全部转换
ALPHABET_UPPER:A-Z转换
ALPHABET_LOWER:a-z转换
NUMERIC:0-9转换
Export:
CONVERTED:转换的字符个数
Changing:
TEXT:转换结果
Function: CO_R0_CHECK_DECIMAL_POINT
功能:根据单位检查数据的小数位
参数:
Import:
I_QUANTITY:数量
I_UNIT:单位
例子:下面的例子会返回错误信息,以为单位ST是不能有小数位的。
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
功能:检查邮政编码
参数:
Import:
COUNTRY:国家(T005)----------必输
ONE_TIME_ACCOUNT:不明确
POSTAL_CODE:邮政编码
POSTAL_CODE_PO_BOX:没用过,以下为推测:如果输入则会检查,如果t005表中的XPLPF设置了,那么如果输入PO_BOX,这个选项就必须输入。
PO_BOX:没用过
REGION:区域
Export:
POSTAL_CODE:邮编
EV_POSTAL_CODE:邮编的格式
EV_POSTAL_CODE_PO_BOX:没用过
Funtion:CONVERSION_EXIT_ALPHA_INPUT
功能:全数字则在前面补0
参数:
Import:
INPUT:输入的字符串
Export:
OUTPUT:输出的字符串
Funtion:CONVERSION_EXIT_ALPHA_OUTPUT
功能:和上面相反
Funtion:GET_JOB_RUNTIME_INFO
功能:获得job相关信息
参数:
Export:
EVENTID:后台处理的事件id
EVENTPARM:后台事件的参数(例如,job id,job名字)
TERNAL_PROGRAM_ACTIVE:没用过
JOBCOUNT:job id
JOBNAME:job 名称
Funtion:TERMINAL_ID_GET
功能:获得端末id
参数:
Import:
USERNAME:用户名
Export:
TERMINAL:terminal id
Funtion:DATE_CONVERT_TO_FACTORYDATE
功能:把输入日期转为工厂日历日期
参数:
Import:
CORRECT_OPTION:表示工作日计算方式的标记
DATE:必须转化为工厂日历日期的日期
FACTORY_CALENDAR_ID:工厂日历 ID
Export:
DATE:必须转化为工厂日历日期的日期
FACTORYDATE:指定日历中的工作日数
WORKINGDAY_INDICATOR:表示某日期是否为工作日的标志
例子:
DATA: DATE1 LIKE SCAL-DATE,
DATE2 LIKE SCAL-DATE,
CORRECTION LIKE SCAL-INDICATOR,
CALENDAR LIKE SCAL-FCALID,
FACTORYDATE LIKE SCAL-FACDATE,
WORKDAY LIKE SCAL-INDICATOR.
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING DATE = DATE1
CORRECT_OPTION = CORRECTION
FACTORY_CALENDAR_ID = CALENDAR
IMPORTING DATE = DATE2
FACTORYDATE = FACTORYDATE
WORKINGDAY_INDICATOR = WORKDAY
EXCEPTIONS CORRECT_OPTION_INVALID = 1
DATE_AFTER_RANGE = 2
DATE_BEFORE_RANGE = 3
DATE_INVALID = 4
FACTORY_CALENDAR_NOT_FOUND = 5.
Funtion:MESSAGE_TEXT_BUILD
功能:把消息转为文本
参数:
Import:
MSGID:消息id
MSGNR:消息号
MSGV1:参数1
MSGV2:参数2
MSGV3:参数3
MSGV4:参数4
Export:
MESSAGE_TEXT_OUTPUT:输出的字符串
说明:可以用write <message> to <text>代替
Function: POPUP_TO_CONFIRM
Group:SPO1
功能:弹出确认窗口
参数:
Import:
TITLEBAR:弹出窗口的标题,最多40位
TEXT_QUESTION:问题,最长80位,多出来的截断
TEXT_BUTTON_1:第一按钮的text,最长8位
ICON_BUTTON_1:第一按钮显示的icon
TEXT_BUTTON_2:第二按钮的text,最长8位
ICON_BUTTON_2:第二按钮显示的icon
DEFAULT_BUTTON:默认的按钮
DISPLAY_CANCEL_BUTTON:是否显示取消
POPUP_TYPE:弹出的类型: 决定显示的icon
ICON_MESSAGE_QUESTION :问题
ICON_MESSAGE_INFORMATION:信息
ICON_MESSAGE_WARNING:警告
ICON_MESSAGE_ERROR:错误
ICON_MESSAGE_CRITICAL:冲突
START_COLUMN:弹出位置:列
START_ROW:弹出位置:行
IV_QUICKINFO_BUTTON_1:第一按钮的显示信息(鼠标放上去后看到的)
IV_QUICKINFO_BUTTON_2:第二按钮的显示信息(鼠标放上去后看到的)
Export:
ANSWER:返回点击的按钮
'1' :第一个按钮
'2' :第二个按钮
'A' :取消按钮
Function: CS_BOM_EXPL_MAT_V2
功能:BOM展开
参数:
Import:
CAPID:application id
DATUV:有效开始日
EMENG:数量
MTNRV:物料
MEHRS:多阶层bom展开
WERKS:工厂
STLAN:bom用途
Tables:
STB:展开明细
说明:一般定义上面几个参数就可以了,鉴于该函数参数太多,就不一一说明了
Function: CLOI_PUT_SIGN_IN_FRONT
功能:将负号提前
参数:
Changing:
VALUE:需要负号提前的变量
Function: EPS_GET_DIRECTORY_LISTING
功能:获得某路径下的文件列表
参数:
Import:
DIR_NAME:需要查找的路径
FILE_MASK:没用过
Export:
DIR_NAME:文件路径
FILE_COUNTER:文件个数
ERROR_COUNTER:错误的个数
Tables:
DIR_LIST:文件列表
说明:这个函数可以获得服务器某个路径下的所有文件,对open dataset for read file中file名字的获得有帮助。
Function: BAPI_COMPANYCODE_GET_PERIOD
功能:获得公司的会计年度以及过账日期
参数:
Import:
COMPANYCODEID:公司代码
POSTING_DATE:posting date
Export:
FISCAL_YEAR:会计年度
FISCAL_PERIOD:财务期间
RETURN:返回值
说明:该函数可用来检查会计期间。
Function: MARA_SINGLE_READ
功能:读取物料信息
参数:
Import:
KZRFB:Indicator: Refresh buffer entry
MAXTZ:Max. no. of entries in buffer(这两个参数应该和性能优化相关)
MATNR:物料号
SPERRMODUS:Lock mode (none, shared, excl.)
STD_SPERRMODUS:Standard lock mode (if different)(锁相关)
OUTPUT_NO_MESSAGE:是否输出消息
Export:
WMARA:返回的物料信息
说明:该函数可用于性能优化,例如无法避免在loop中有sql的情况可以用该函数取代sql。
对mara的其它操作参考function group:MG21
Function: KNA1_SINGLE_READ
功能:读取customer表信息
参数:
Import:
KZRFB:Indicator: Refresh buffer entry
KNA1_KUNNR:customer code
Export:
WKNA1:返回的信息
说明:还有很多表的读取参考function group:MG41
Function: ADDR_GET_COMPLETE_ALL_TYPES
功能:获得地址的相关信息
参数:
Import:
ADDRNUMBER:address number
PERSNUMBER:个人信息
ADDRESS_OBJECT_TYPE:类型 1:组织 2:个人 3:客户
Export:
ADDR1_COMPLETE:地址1
ADDR2_COMPLETE:地址2
ADDR3_COMPLETE:地址3
ADDR1_COMPLETE_BAPI:地址1
ADDR2_COMPLETE_BAPI:地址2
ADDR3_COMPLETE_BAPI:地址3(以上三个bapi用)
Function: READ_VBFA
功能:取得document flow(省得select了)
参数:
Import:
I_VBELV:Preceding sales and distribution document
I_POSNV:Preceding item of an SD document
I_VBTYP_V:Document category of preceding SD document
I_VBTYP_N:Document category of subsequent document
I_FKTYP:Billing category
I_BYPASSING_BUFFER:是否用buffer
I_REFRESH_BUFFER:删除buffer?
Tables:
E_VBFA:凭证流的表
说明:可以通过by passing buffer来优化性能
Function: SD_VBAK_SINGLE_READ
功能:读取销售订单表头信息
参数:
Import:
I_VBELN:销售订单
I_BYPASSING_BUFFER:是否用buffer
I_REFRESH_BUFFER:删除buffer?
Export:
E_VBAK:返回表头信息
说明:读相关sd表的函数请参考function group:V45I
Function: LIKP_READ
功能:Delivery Header Data
参数:
Import:
I_VBELN:Delivery
LINE_EXIST:if 'x' check only if line exsists
Export:
O_ANSWR:send out 'x' for line exsists in table
Tables:
E_LIKP:SD Document: Delivery Header Data
说明:有关读取delivery的信息请参考function group:LMGT
Function: CREATE_SAP_SHORTCUT
功能:创建快捷方式
参数:
Import:
SC_COMMAND:指定的tcode
SC_TITLE:快捷方式名字:例如:se38
SC_TYPE:快捷方式类型:有三种:’report’,’ transaction’,’ system command’
NO_DIALOG:是否弹出窗口
说明:具体没什么用,做着玩玩。
Function: SAPGUI_PROGRESS_INDICATOR
功能:显示进度
参数:
Import:
PERCENTAGE:进度的百分数,>0,<100.
TEXT:文本
说明:在运行时间很长的程序中可以选择使用,这样保证了程序不会中止。当然也可以在rz10里面设置程序运行时间,不过比较麻烦。
Funtion:K_GROUP_SELECT
功能:利润中心组的检索help
参数:
Import:
BUTTONS:按钮,决定是否可以选择group类型
CLASS :cost center class
CRUSER:创建人
FIELD_NAME:字段名称:此项为必输项
SEARCHFLD:还没用过
SEARCHFLD_INPUT:成本控制范围是否可以输入(参照图1)
SEARCHFLD_REQUIRED:成本控制范围是否必输,如果设置为不可输入,
那么这个参数无效(参考图2)
SET:利润中心组的开头字母
START_COLUMN:弹出窗口的位置
START_ROW :弹出窗口的位置
TABLE:表或者结构的名称
Export:
SET_NAME:取得帮助字段的值
例子
*&---------------------------------------------------------------------
*& Report Z_BOBO_20060228 *
*&---------------------------------------------------------------------*
*& 弹出窗口,利润中心组的帮助,这样就省得f4_value_request了 * *
*&---------------------------------------------------------------------*
REPORT Z_BOBO_20060228 .
DATA : W_PRCGC1(15) TYPE C.
DATA : W_SETNAME(15) TYPE C.
SELECT-OPTIONS : S_PRCGC FOR W_PRCGC1. " 利润中心组
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PRCGC-LOW.
CALL FUNCTION 'K_GROUP_SELECT'
EXPORTING
BUTTONS = 'X'
CLASS = '0106'
FIELD_NAME = 'RPRCTR'
SEARCHFLD_INPUT = 'X'
SEARCHFLD_REQUIRED = 'X'
SET = '@'
TABLE = 'CCSS'
IMPORTING
SET_NAME = W_SETNAME
EXCEPTIONS
NO_SET_PICKED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
S_PRCGC-LOW = W_SETNAME.
ENDIF.
START-OF-SELECTION.
WRITE: 'TEST BOBO'.
function:SD_VBAP_READ_WITH_VBELN
功能:根据销售订单读取表vbap中的信息
参数:
import:I_VBELN 订单号(必输项)
I_BYPASSING_BUFFER 是否回避buffer
I_REFRESH_BUFFER 是否清空buffer
tables:ET_VBAPVB 不清楚其意义
ET_VBAP vbap表
form:EDIT_LINES
功能:把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织
原因:如果用CREATE_TEXT登录的长文本不存在该问题,如果是在前台业务登录的text,那么存到数据库的时候会在72位的地方换行,在lines这个表中的TDFORMAT设置为空,导致READ_TEXT返回的表中的行数也许不是你需要的行数。
代码:
FORM EDIT_LINES TABLES P_IT_LINES STRUCTURE TLINE.
DATA:
L_IT_LINES TYPE STANDARD TABLE OF TLINE,
L_WA_LINES TYPE TLINE,
L_WA_LINE1 TYPE TLINE,
L_LINE TYPE I.
DATA:
L_INDEX TYPE I,
L_I TYPE I.
READ TABLE P_IT_LINES TRANSPORTING NO FIELDS
WITH KEY TDFORMAT = 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 TABLE L_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.
IF L_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
function:VIEW_MAINTENANCE_CALL
功能:维护表视图等
The function module calls the extended table maintenance (View maintenance).
参数:
import:ACTION S = Display U = Change T = Transport
CORR_NUMBER 传送号(上面的action是t)
SHOW_SELECTION_POPUP 是否弹出选择画面
VIEW_NAME 视图名
NO_WARNING_FOR_CLIENTINDEP 跨集团是否现实警告
VARIANT_FOR_SELECTION 变式名
CHECK_DDIC_MAINFLAG 察看是否为可维护对象
其他的参数暂时没有用到,有用到的朋友可以补充
今天介绍JOB相关的几个函数: 1. JOB_OPEN IMPORT: DELANFREP:这里设定在JOB执行完毕之后是否删除JOB JOBGROUP:JOB分配个某个组,一般用不到 JOBNAME:JOB的名字,这个名字方便你在SM37中察看 JOBCLASS:没用过,不知道有什么作用 EXPORT: JOBCOUNT:返回的JOB的ID CHANGING: RET:判断函数的执行情况 2. JOB_SUBMIT IMPORT: AUTHCKNAM:检查权限,传入用户名 JOBCOUNT:一般是传入刚才取到的JOB ID JOBNAME:JOB的名字 REPORT:执行JOB的程序名字 VARIANT:JOB执行时候的变式 3. JOB_CLOSE IMPORT: JOBCOUNT:一般是传入刚才取到的JOB ID JOBNAME:JOB的名字 这三个函数是JOB程序的主要处理流程,其中我只列出了主要用的参数, 至于其他的如果哪位朋友用到可以补充一下。 需要注意一点就是JOB_CLOSE的时候要分两种情况,一种是周期性JOB的关闭, 另一种是即时JOB的关闭。控制的参数需要多指定一些: 周期性JOB: PREDJOB_CHECKSTAT:检查JOB执行的状态 PRED_JOBNAME:周期性JOB的名字 即时性JOB: STRTIMMED:这个参数设置为’X’ |
方法: FILE_OPEN_DIALOG
*数据的定义 DATA: TAB TYPE FILETABLE, "存放文件名的内表 WA TYPE LINE OF FILETABLE, "用来读取文件名的结构 FILE_FILTER TYPE STRING, "file filter RC TYPE I. "函数返回值
*定义file filter,注意定义的格式,显示的时候最后一个为默认的显示 *与你定义的DEFAULT_EXTENSION无关 FILE_FILTER = 'All Files (*.*)|*.*|Excel Files (*.xls)|*.xls|Word files(*.doc)|*.doc'.
*这就是打开文件的函数,或者说方法也行 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG EXPORTING * 对话框的标题 WINDOW_TITLE = 'WINDOW_TITLE' * 默认的文件后缀名 DEFAULT_EXTENSION = '*.DOC' * 默认打开的文件名 DEFAULT_FILENAME = 'C:\TEST' * 文件打开的filter FILE_FILTER = FILE_FILTER * 初始化的目录 INITIAL_DIRECTORY = 'C:\' * 是否可以同时打开多个文件 MULTISELECTION = 'X' CHANGING * 你所打开的文件名字列表 FILE_TABLE = TAB * 返回值,如果成功打开了,为1 RC = RC EXCEPTIONS FILE_OPEN_DIALOG_FAILED = 1 CNTL_ERROR = 2 ERROR_NO_GUI = 3 NOT_SUPPORTED_BY_GUI = 4 others = 5 . IF SY-SUBRC = 0. READ TABLE TAB INDEX 1 INTO WA. WRITE: WA. ENDIF.
|