SAP 的CALL FUNCTION 函数汇总
- 格式:doc
- 大小:125.00 KB
- 文档页数:19
1、获取订单状态(STATUS_READ 和 STATUS_TEXT_EDIT)1.STATUS_READ 改函数的实现原理大概是通过订单的对象好(OR+订单号)到JEST 中取出字段STAT INACT.JEST表中STAT是一串从字面看不出意思的字符,可以根据STAT到表TJ02T中找到具体的描述。
下面是具体用法DATA:objnr TYPE aufk-objnr.objnr = 'OR000000100014'.DATA:t_status TYPE TABLE OF jstat WITH HEADER LINE."结果存放在STATUS表中CALL FUNCTION 'STATUS_READ'EXPORTINGclient = sy-mandtobjnr = objnrTABLESstatus = t_statusEXCEPTIONSobject_not_found = 1OTHERS = 2.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.LOOP AT t_status.IF t_status = 'I0046'.WRITE:'订单已关闭'.EXIT.ENDIF.ENDLOOP.2.STATUS_TEXT_EDIT 改函数读取的结果是将订单状态拼接到一个字符串中,而且这个字符串是在前台订单上看到的状态,比较直接,这样做的结果就可能由于状态较多导致长度过长,在某些情况下取的数据可能不准。
下面是一段代码DATA:line TYPE bsvx-sttxt.CALL FUNCTION 'STATUS_TEXT_EDIT'EXPORTINGclient = sy-mandtobjnr = objnrspras = sy-languIMPORTINGline = lineEXCEPTIONSobject_not_found = 1OTHERS . "IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.SEARCH line FOR 'CLSD'.IF sy-subrc = 0.WRITE:'订单已关闭'.ENDIF.DATA i_jstat LIKE jstat OCCURS 0 WITH HEADER LINE.CALL FUNCTION 'STATUS_READ'EXPORTINGclient = sy-mandtobjnr = i_caufv_resb-objnr ”对象号only_active = 'X'* IMPORTING* OBTYP =* STSMA =* STONR =TABLESstatus = i_jstat “目前的所有状态EXCEPTIONSobject_not_found = 1OTHERS = 2.LOOP AT i_jstat WHERE stat = 'I0013' "DLT 删除标识符.OR stat = 'I0012' "DLV 交货OR stat = 'I0045' "TECO 技术实现OR stat = 'I0043' "LKD 冻结OR stat = 'I0001' "CRTD 建立OR stat = 'I0046' "CLSD 已结算OR stat = 'I0076'. "DLID 删除标志l_delete = 'X'.EXIT.ENDLOOP.2、图标的函数ICON_CREATE1、定义字段data: status_icon type icons-text.2、创建屏幕,并在屏幕定义创建一个"Status Icon"控件,命名为:status_icon3、利用ICON_CREATE函数在输出是设置ICON。
SAP常用的函数函数名描述CONVERSION_EXIT_ALPHA_INPUT 料号前面补0CONVERSION_EXIT_ALPHA_OUTPUT 料号前面减0CONVERSION_EXIT_MATN1_INPUT 料号前面补0CONVERSION_EXIT_MATN1_OUTPUT 料号前面减0LAST_DAY_OF_MONTHS 查询某日期的在当月的最后一天CO_SF_CAUFVD_GET 根据工单号查询订单抬头和项目SO_NEW_DOCUMENT_ATT_SEND_API1 外发邮件VIEW_MAINTENANCE_CALL 调用数据表的维护视图SO_OBJECT_SEND 外发邮件函数名CONVERSION_EXIT_ALPHA_INPUT功能:料号前面补0,实例:CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' "料号前面加0”EXPORTINGinput = matnr_inIMPORTINGoutput = matnr_out.说明:1)数字料号入Table需要补0,不会自动产生,有字母料号却会自动补0.2)只能用’字符型’CONVERSION_EXIT_MATN1_INPUT功能:料号前面补0实例:CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' "料号前面补0”EXPORTINGinput = matnr_inIMPORTINGoutput = matnr_outEXCEPTIONSlength_error = 1OTHERS = 2.说明: 1)数字料号入Table需要补0,不会自动产生,有字母料号却会自动补0.2)只能用于料号转换CONVERSION_EXIT_ALPHA_OUTPUT功能:料号前面去0实例:CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' "料号前面去0. EXPORTINGinput = wa_ysy1-matnrIMPORTINGoutput = wa_ysy1-matnr.说明:CONVERSION_EXIT_MATN1_OUTPUT功能:料号前面去0实例:CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'EXPORTINGinput = t_afpo-matnrIMPORTINGoutput = t_afpo-matnrEXCEPTIONSOTHERS = 1.说明:LAST_DAY_OF_MONTHS功能:查询某日期的在当月的最后一天CALL FUNCTION 'LAST_DAY_OF_MONTHS'EXPORTINGday_in = f_date "月任意一天类型必须为D(要完成日期##IMPORTINGlast_day_of_month = p_date "月最后一天类型必须为D(完整日期)EXCEPTIONSday_in_no_date = 1OTHERS = 2.说明:CO_SF_CAUFVD_GET功能: 根据工单号查询订单抬头和项目实例:DATA: wa_caufvd TYPE caufvd.CALL FUNCTION 'CO_SF_CAUFVD_GET'"取得订单抬头和项目EXPORTINGaufnr_imp = aufnrIMPORTINGcaufvd_exp = wa_caufvd “订单抬头和项目结构EXCEPTIONSnot_found = 1OTHERS = 2.说明:SO_NEW_DOCUMENT_ATT_SEND_API1功能:邮件发送 SAPoffice: Send new document with attachments usingRFC 实例:FORM email_itab. “邮件内容“WRITE: '编号' TO email_itab-line+0(3), "255个长度的文本字段:文本"'记帐日期' TO email_itab-line+3(10),ENDFORM. "email_itabFORM reset_objpack .it_packing_list-transf_bin = space. "标记将以二进制形式传输对象的标志" it_packing_list-head_start = 0."表头开始行"it_packing_list-head_num = 1. "表头行数"it_packing_list-body_start = 1."内容开始行"it_packing_list-body_num = it_message_lines. "内容行数"it_packing_list-doc_type = 'RAW'. "信息类型"APPEND it_packing_list.ENDFORM. "reset_objpackFORM reset_doc_chng .DESCRIBE TABLE email_itab LINES it_message_lines.gd_doc_data-doc_size = it_message_lines * 255 + STRLEN( email_itab). "SAPoffice 文档的大小 "gd_doc_data-obj_langu = sy-langu. "创建文档使用的语言"gd_doc_data-obj_name = 'SAPRPT'. "文档,文件夹或分配清单的名称"gd_doc_data-obj_descr = '邮件标题'. "Email标题"gd_doc_data-sensitivty = 'F'. "对象:灵敏度(个人的,功能的,...) F:功能"ENDFORM. "reset_doc_chngFORM reset_reclist .SELECT zmaaddrINTO it_receivers-receiverFROM ziebtemail.it_receivers-rec_type = 'U'. "互联网地址APPEND it_receivers.CLEAR it_receivers.ENDSELECT.ENDFORM. "reset_reclistDATA: gd_doc_data LIKE sodocchgi1,gd_sent_all(1) TYPE c,it_message_lines TYPE sy-tabix,it_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,it_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE.DATA: BEGIN OF email_itab OCCURS 10.INCLUDE STRUCTURE soli.DATA: END OF email_itab.PERFORM email_itab. "TABLES OUTPUT_TAB.PERFORM reset_doc_chng.PERFORM reset_reclist.PERFORM reset_objpack.CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'EXPORTINGdocument_data = gd_doc_data “新文档的属性”PUT_IN_OUTBOX = 'X' “标志:发送后将文档移到outbox* COMMIT_WORK = ' '* IMPORTINGSENT_TO_ALL = gd_sent_all “Flag: Document sent to all”* NEW_OBJECT_ID = ID of created object (not document!)tablespacking_list = it_packing_list “SAPoffice:输入对象组件描述”* OBJECT_HEADER =* CONTENTS_BIN =* CONTENTS_TXT =* CONTENTS_HEX =* OBJECT_PARA =* OBJECT_PARB =receivers = email_itab”SAPoffice:API 收件人清单的结构”* EXCEPTIONS* TOO_MANY_RECEIVERS = 1* DOCUMENT_NOT_SENT = 2* DOCUMENT_TYPE_NOT_EXIST = 3* OPERATION_NO_AUTHORIZATION = 4* PARAMETER_ERROR = 5* X_ERROR = 6* ENQUEUE_ERROR = 7* OTHERS = 8.IF sy-subrc <>0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.说明:VIEW_MAINTENANCE_CALL功能:调用数据表的维护视图实例:CALL FUNCTION 'VIEW_MAINTENANCE_CALL'EXPORTINGaction = 'U' “活动(显示/维护/传输)”* CORR_NUMBER = ' '* GENERATE_MAINT_TOOL_IF_MISSING = ' '* SHOW_SELECTION_POPUP = ' 'view_name = 'ZIEBTEMAIL' “要处理的视图/表格的名称”* NO_WARNING_FOR_CLIENTINDEP = ' '* RFC_DESTINATION_FOR_UPGRADE = ' '* CLIENT_FOR_UPGRADE = ' '* VARIANT_FOR_SELECTION = ' '* COMPLEX_SELCONDS_USED = ' '* CHECK_DDIC_MAINFLAG = ' '* SUPPRESS_WA_POPUP = ' '* TABLES* DBA_SELLIST =* EXCL_CUA_FUNCT =* 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.IF sy-subrc <>0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.说明:SO_OBJECT_SEND功能:外发邮件实例:REPORT ztmail02 .DATA: BEGIN OF itab OCCURS 0,pernr LIKE pa0001-pernr,ename LIKE pa0001-ename,END OF itab.DATA: message_content LIKE soli OCCURS 10 WITH HEADER LINE, receiver_list LIKE soos1 OCCURS 5 WITH HEADER LINE,packing_list LIKE soxpl OCCURS 2 WITH HEADER LINE,listobject LIKE abaplist OCCURS 10,compressed_attachment LIKE soli occurs 100 WITH HEADER LINE, w_object_hd_change LIKE sood1 occurs 100 WITH HEADER LINE, compressed_size LIKE sy-index.START-OF-SELECTION.SELECT pernr enameINTO CORRESPONDING FIELDS OF TABLE itabFROM pa0001WHERE pernr <50.LOOP AT itab.WRITE: /02 sy-vline, itab-pernr, 15 sy-vline, itab-ename, 50sy-vline.ENDLOOP.*receiversreceiver_list-recextnam = 'eric.guh@'. “直接外部地址作为接收方”receiver_list-recesc = ‘U’. “收件人类型的说明; U 互联网地址”receiver_list-sndart = ‘MAIL'. “输出设备; MAIL 邮件”receiver_list-sndpri = '1'. “发送:优先级; 1 最高优先权”APPEND receiver_list.*general dataw_object_hd_change-objla = sy-langu. “创建文档使用的语言”w_object_hd_change-objnam = 'Object name'. “文档,文件夹或分配清单的名称”w_object_hd_change-objsns = 'F'. “对象:灵敏度(个人的,功能的,...)” F: 功能w_object_hd_change -OBJDES = ‘Message subject’. “Mail的标题”APPEND w_object_hd_change.*contentmessage_content-line = 'Message content'. “发送的内容”APPEND message_content.CALL FUNCTION 'SO_OBJECT_SEND'EXPORTINGobject_hd_change = w_object_hd_change “通常头数据”object_type = 'RAW' “对象类型”OUTBOX_FLAG = 'X' “标志:发送后将文档移到outboxowner = sy-uname “负责传送的用户”TABLESobjcont = message_content “发送的内容”receivers = receiver_list “接收对象属性”att_cont = compressed_attachment.。
abap call function用法ABAPCallFunction是SAPABAP编程语言的一个重要组件,它提供了一种方便的方式来调用SAP系统中的函数模块。
在SAP系统中,函数模块是一种预定义的程序单元,它可以完成一些特定的任务,比如数据库操作、数据处理、输出等。
在ABAP程序中,通过ABAP Call Function语句可以调用SAP 系统中的函数模块。
调用函数模块需要提供一些参数,包括函数模块名称、输入参数、输出参数等。
下面我们介绍一下ABAP Call Function的用法。
1. 函数模块名称调用函数模块时需要提供函数模块的名称。
一般来说,函数模块名称是由两部分组成,即函数组和函数名称。
函数组是函数模块所属的逻辑组织单元,它用于标识函数模块的来源。
函数名称是函数模块的名称,它用于标识函数模块的功能。
函数模块名称的格式一般为“函数组名/函数名”。
2. 输入参数调用函数模块时需要提供输入参数。
输入参数是函数模块需要的数据,它会被传递给函数模块,用于完成相应的任务。
输入参数可以是简单类型的数据,比如整数、字符串等,也可以是结构体或表格类型的数据。
输入参数的定义需要与函数模块的输入参数定义保持一致。
3. 输出参数函数模块执行完成后,会返回一些结果,这些结果可以通过输出参数来获取。
输出参数与输入参数类似,可以是简单类型的数据,也可以是结构体或表格类型的数据。
输出参数的定义需要与函数模块的输出参数定义保持一致。
4. 调用函数模块调用函数模块的语法如下:CALL FUNCTION function_nameEXPORTINGinput_parametersIMPORTINGoutput_parameters.其中,function_name是函数模块名称;input_parameters是输入参数;output_parameters是输出参数。
EXPORTING和IMPORTING关键字用于指定参数的类型。
1、获取订单状态(STATUS_READ 和 STATUS_TEXT_EDIT)1.STATUS_READ 改函数的实现原理大概是通过订单的对象好(OR+订单号)到JEST 中取出字段STAT INACT.JEST表中STAT是一串从字面看不出意思的字符,可以根据STAT到表TJ02T中找到具体的描述。
下面是具体用法DATA:objnr TYPE aufk-objnr.objnr = 'OR000000100014'.DATA:t_status TYPE TABLE OF jstat WITH HEADER LINE."结果存放在STATUS表中CALL FUNCTION 'STATUS_READ'EXPORTINGclient = sy-mandtobjnr = objnrTABLESstatus = t_statusEXCEPTIONSobject_not_found = 1OTHERS = 2.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.LOOP AT t_status.IF t_status = 'I0046'.WRITE:'订单已关闭'.EXIT.ENDIF.ENDLOOP.2.STATUS_TEXT_EDIT 改函数读取的结果是将订单状态拼接到一个字符串中,而且这个字符串是在前台订单上看到的状态,比较直接,这样做的结果就可能由于状态较多导致长度过长,在某些情况下取的数据可能不准。
下面是一段代码DATA:line TYPE bsvx-sttxt.CALL FUNCTION 'STATUS_TEXT_EDIT'EXPORTINGclient = sy-mandtobjnr = objnrspras = sy-languIMPORTINGline = lineEXCEPTIONSobject_not_found = 1OTHERS . "IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.SEARCH line FOR 'CLSD'.IF sy-subrc = 0.WRITE:'订单已关闭'.ENDIF.DATA i_jstat LIKE jstat OCCURS 0 WITH HEADER LINE.CALL FUNCTION 'STATUS_READ'EXPORTINGclient = sy-mandtobjnr = i_caufv_resb-objnr ”对象号only_active = 'X'* IMPORTING* OBTYP =* STSMA =* STONR =TABLESstatus = i_jstat “目前的所有状态EXCEPTIONSobject_not_found = 1OTHERS = 2.LOOP AT i_jstat WHERE stat = 'I0013' "DLT 删除标识符.OR stat = 'I0012' "DLV 交货OR stat = 'I0045' "TECO 技术实现OR stat = 'I0043' "LKD 冻结OR stat = 'I0001' "CRTD 建立OR stat = 'I0046' "CLSD 已结算OR stat = 'I0076'. "DLID 删除标志l_delete = 'X'.EXIT.ENDLOOP.2、图标的函数ICON_CREATE1、定义字段data: status_icon type icons-text.2、创建屏幕,并在屏幕定义创建一个"Status Icon"控件,命名为:status_icon3、利用ICON_CREATE函数在输出是设置ICON。
SAP⽇期处理函数汇总SAP⽇期处理函数汇总⽇期处理计算两个⽇期间的⼯作天数,就是剔除了双休⽇后的天数.( 待考证)DATE_CONVERT_TO_FACTORYDATEHR_HK_DIFF_BT_2_DATES根据当前时间如何找到上⽉的第⼀天和最后⼀天?CALL FUNCTION "FIMA_DATE_CREATE"EXPORTINGI_DATE = SY-DATUMI_MONTHS = "-1"I_SET_LAST_DAY_OF_MONTH = "X"IMPORTINGE_DATE = LASTDATE.LASTDATE是上个⽉最后⼀天。
FIRSTDAY是上⽉第⼀天CONCATENATE LASTDATE+(6) "01" INTO FIRSTDAY.。
当天是当年的第⼏周DATE_GET_WEEK得到该周第⼀天WEEK_GET_FIRST_DAY查找当前⽉份以前的⽉份(⽐如现在是4⽉份,如果我需要知道6个⽉之前是哪个⽉)CCM_GO_BACK_MONTHSRP_CALC_DATE_IN_INTERVAL获取两⽇期之间天数函数:HR_MX_INTERVAL_BETWEEN_DATES取得当⽉的第⼀天和最后⼀天CONCATENATE sy-datum(6) "01" INTO so_date-low.CALL FUNCTION "BKK_GET_MONTH_LASTDAY"EXPORTINGi_date = sy-datumIMPORTINGe_date = so_date-high.so_date-sign = "I". so_date-option = "BT". APPEND so_date.RP_CALC_DATE_IN_INTERVAL 年⽉⽇加减DATE_CHECK_PLAUSIBILITY ⽇期有效性检查SD_DATETIME_DIFFERENCE 两⽇期作差DATE_CONVERT_TO_FACTORYDATE 把输⼊⽇期转为⼯⼚⽇历⽇期MONTH_NAMES_GET 获得所有的⽉和名字F4_DATE 弹出⼀个窗⼝显⽰⼀个⽇历允许⽤户选择⼀个⽇期。
No.1 日期时间相关函数 1. DAY_IN_WEEK 根据日期返回星期几2. DATE_GET_WEEK 根据日期返回第几周3. NEXT_WEEK 根据当前周返回下周信息,比如200846.返回200847,Monday: 2008.11.17 Sun4. WEEK_GET_FIRST_DAY 取得一周的第一天5. RP_LAST_DAY_OF_MONTHS 根据一个月的第一天获得一个月的最后一天6. RP_CALC_DATE_IN_INTERVAL 年月日加减7. CONVERSION_EXIT_INVDT_INPUT 转化日期格式为内部格式8. CONVERSION_EXIT_INVDT_OUTPUT 转化内部日期格式为输出格式9. DATE_CHECK_PLAUSIBILITY 日期有效性检查10. ATE_STRING_CONVERT 把日期字符串转化为指定的格式11. DATE_CONVERT_TO_FACTORYDATE 把输入日期转化为工厂日历日期12. FACTORYDATE_CONVERT_TO_DATE 根据工厂日历日期返回日期13. LAST_FACTORYDATE_GET 根据工厂日历ID返回最后一个工厂日期14. RE_ADD_MONTH_TO_DATE 给日期加月15. BKK_ADD_MONTH_TO_DATE 给一个日期加月计算出新的日期16. DAY_ATTRIBUTES_GET 某日期的属性,包括该日期是星期几,第几天(周2=2),是不是公共假期17. HOLIDAY_CHECK_AND_GET_INFO 判断某天是否是假日18. F4_DATE 弹出一个窗口显示一个日历允许用户选择一个日期。
19. F4_CLOCK 弹出时间的输入帮助20. POPUP_TO_SELECT_MONTH 年月的输入帮助21. HOLIDAY_GET 根据工厂日历/节日日历返回一个节日表22. .MONTH_NAMES_GET 取得所有月和月的名字23. DAY_NAMES_GET 取得一周各天的名称No.2 DDIC相关函数1. DDIF_TABL_GET 根据数据库表读取数据库表的所有技术信息(例如字段,数据类型,检索帮助,che2. DD_DOMVALUES_GET 根据域名返回域的相关信息3. DD_DOMA_GET 根据domain名字取得domain的相关信息4. DD_SHLP_CALL_FROM_DYNP 可以显示DDIC的F4输入帮助No.3 数据CHECK相关函数1. DATE_CHECK_PLAUSIBILITY 日期有效性检查2. CATS_NUMERIC_INPUT_CHECK 检查是否为数字3. CO_R0_CHECK_DECIMAL_POINT 根据数量单位检查小数位4. POSTAL_CODE_CHECK 检查邮政编码5. ADDR_POSTAL_CODE_CHECK 检查邮政编码(地址服务)No. 4 字符,字符串处理相关函数1. CLOI_PUT_SIGN_IN_FRONT 负号前置2.CONVERSION_EXIT_ALPHA_INPUT 数字字符串补前导零3. CONVERSION_EXIT_ALPHA_OUTPUT 数字字符串去前导零4. SJIS_DBC_TO_SBC 全角转化为半角5. SJIS_SBC_TO_DBC 半角转换为全角6. STRING_REVERSE 字符串反向7. STRING_CENTER 居中字符串8. STRING_MOVE_RIGHT 字符串居右9. STRING_LENGTH 计算字符串长度10. TEXT_SPLIT 字符串分割11. RKD_WORD_WRAP 把字符串按任意长度分割存入内表No.5 数据转换函数1. CONVERSION_EXIT_CUNIT_OUTPUT 内部单位转化为外部单位输出2. CONVERSION_EXIT_CUNIT_INPUT 外部计量单位转化输入3. UNIT_CONVERSION_SIMPLE 计量单位转换4. BAPI_CURRENCY_CONV_TO_EXTERNAL 货币金额转化为外部数据格式输出5. BAPI_CURRENCY_CONV_TO_INTERNAL6. CURRENCY_AMOUNT_SAP_TO_DISPLAY 显示存储的货币金額7. CURRENCY_AMOUNT_DISPLAY_TO_SAP 存储输入的货币金額8. CONVERT_TO_LOCAL_CURRENCY 按照指定日期汇率转换金额为指定货币类型No. 6 其他函数1. POPUP_TO_INFORM 弹出信息框2. POPUP_TO_CONFIRM 弹出确认窗口3. POPUP_TO_CONFIRM_STEP 弹出一个对话框询问用户是否操作继续4. SAPGUI_PROGRESS_INDICATOR 显示处理进度条5. CREATE_TEXT 创建长文本6. READ_TEXT 读取长文本7. MESSAGE_TEXT_BUILD 把消息转化为文本8. REUSE_ALV_FIELDCATALOG_MERGE 根据数据字典结构或者内表创建字段目录9. POPUP_WITH_TABLE_DISPLAY 弹出一个简单的列表画面,可以选择某一行,返回选择行的索引10. LVC_FIELDCATALOG_MERGE 半自动创建Field catalog11. CALL_BROWSER 调用IE浏览器12. F4IF_INT_TABLE_VALUE_REQUEST 显示自定义的F4检索帮助14. HELP_DOCU_SHOW_FOR_FIELD 调用F1帮助15. HELP_VALUES_GET_EXTEND 根据屏幕一字段值显示F4,并可以把其他关联字段值填充到屏幕15.DYNP_VALUES_READ 读取屏幕上字段值16. DYNP_VALUES_UPDATE 选择F4后,将选定表行值返回到屏幕17. HELP_VALUES_GET_NO_DD_NAME 显示没有数据字典参考的内部表18. HELP_VALUES_GET_WITH_DD_NAME 显示有数据字典参考的内部表19. HELP_VALUES_GET_WITH_TABLE_EXT 17,18的功能合20. VRM_SET_VALUES 做LIST BOX 会用 到的一个函数21. TERM_CONTROL_EDIT 弹出一个文本编辑框22. POPUP_GET_VALUES 对于显示和值请求的会话框, 没有检查23. COMPLEX_SELECTIONS_DIALOG 在Dialog 里设置复杂选择标准7 Sunday:2008.11.23共假期等,需要输入国家日历。
SAP 常用FUNCTIONBOM 展开函数CS_BOM_EXPL_MA T_V2:只展开BOM 的函数CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'EXPORTINGcapid = pm_capid “应用程序一般为PP01datuv = pm_datuv “通常为系统的当前日期mtnrv = pm_mtnrv “要展开BOM 的物料mehrs = 'X' “ x 表示多层展开﹐space 表示只展开第一层werks = pm_werks “ 通常为1000IMPORTINGtopmat = selpooldstst = dstst_flgTABLESstb = stb “展开的BOM 存放在该内表matcat = matcat “下面含有组件的物料存放在该内表CS_BOM_EXPL_ KND_V1:展开与特性相关的特定款号的BOM CALL FUNCTION 'CS_BOM_EXPL_ KND_V1' EXPORTINGcapid = pm_capid “应用程序一般为PP01datuv = pm_datuv “通常为系统的当前日期mtnrv = pm_mtnrv “要展开BOM 的物料cuobj = vbap_wa-cuobj “与特性相关的组态mehrs = 'X' “ x 表示多层展开﹐space 表示只展开第一层werks = pm_werks “ 通常为1000IMPORTINGtopmat = selpooldstst = dstst_flgTABLESstb = stb “展开的BOM 存放在该内表matcat = matcat “下面含有组件的物料存放在该内表范例见系统报表程序RCS12001STA TUS_TEXT_EDIT:获取生产定单状态call function 'STATUS_TEXT_EDIT'EXPORTINGflg_user_stat = 'X'objnr = LO_OBJNRonly_active = 'X'spras = sy-languIMPORTINGline = ls_statuEXCEPTIONSobject_not_found = 01.使用:objnr 状态对象号,only_active 启动的,LAST_DAY_OF_MONTHS:获取每个月的最后一天CALL FUNCTION 'LAST_DAY_OF_MONTHS' EXPORTINGday_in = dateIMPORTINGlast_day_of_month = date1.CONVERSION_EXIT_ALPHA_OUTPUT:去掉字符串前面0 DEFINE alpha_minus.call function 'CONVERSION_EXIT_ALPHA_OUTPUT' exportinginput = &1importingoutput = &1.END-OF-DEFINITION.CONVERSION_EXIT_ALPHA_INPUT:前面加0call function 'CONVERSION_EXIT_ALPHA_INPUT' exportinginput = &1importingoutput = &1.TH_DELETE_USER:踢用户CALL FUNCTION 'CUT_2BYTES_STRINGS' EXPORTINGI_STR = T_STRI_LEN = 4IMPORTINGO_STR = T_TXT04T_STR 输入字符I_LEN 长度T_TXT04输出字符SPELL_AMOUNT:金额转换成英文CALL FUNCTION 'SPELL_AMOUNT'EXPORTINGAMOUNT = T_AMOUNT10CURRENCY = 'RMB'LANGUAGE = '1'IMPORTINGIN_WORDS = S_AMWORD2EXCEPTIONSNOT_FOUND = 1TOO_LARGE = 2OTHERS = 3.CLOI_PUT_SIGN_IN_FRONT:把SAP里的负号放到前面来的函数DA TA : t(10) TYPE c V ALUE '65465-' .CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'CHANGINGvalue = t.write : t .CONVERT_OTF :将SAP文檔(SAP Script)转换成其它类型。
CALL FUNCTION 'CONVERT_OTF'EXPORTINGFORMAT = 'PDF'IMPORTINGBIN_FILESIZE = FILE_LENTABLESOTF = OTFDATALINES = PDFDATAEXCEPTIONSERR_MAX_LINEWIDTH = 1ERR_FORMAT = 2ERR_CONV_NOT_POSSIBLE = 3OTHERS = 4。
SD_VBAP_READ_WITH_VBELN:根据销售订单读取表vbap中的信息参数:import:I_VBELN 订单号(必输项)I_BYPASSING_BUFFER 是否回避bufferI_REFRESH_BUFFER 是否清空buffertables:ET_VBAPVB 不清楚其意义ET_VBAP vbap表VIEW_MAINTENANCE_CALL:维护表视图等参数:import:ACTION S = Display U = Change T = TransportCORR_NUMBER 传送号(上面的action是t)SHOW_SELECTION_POPUP 是否弹出选择画面VIEW_NAME 视图名NO_WARNING_FOR_CLIENTINDEP 跨集团是否现实警告VARIANT_FOR_SELECTION 变式名CHECK_DDIC_MAINFLAG 察看是否为可维护对象例子:CALL FUNCTION 'VIEW_MAINTENANCE_CALL'EXPORTINGACTION = 'U' "更新SHOW_SELECTION_POPUP = 'X' "显示选择画面VIEW_NAME = 'ZPPT000020' "表名NO_W ARNING_FOR_CLIENTINDEP = ' ' "不显示警告EXCEPTIONSCLIENT_REFERENCE = 1FOREIGN_LOCK = 2INV ALID_ACTION = 3NO_CLIENTINDEPENDENT_AUTH = 4NO_DATABASE_FUNCTION = 5NO_EDITOR_FUNCTION = 6NO_SHOW_AUTH = 7NO_TVDIR_ENTRY = 8NO_UPD_AUTH = 9ONL Y_SHOW_ALLOWED = 10SYSTEM_FAILURE = 11UNKNOWN_FIELD_IN_DBA_SELLIST = 12VIEW_NOT_FOUND = 13MAINTENANCE_PROHIBITED = 14OTHERS = 15.READ_TEXT/CREATE_TEXT:读取长文本/创建长文本参数:Import:CLIENT:集团ID:文本ID(TTXID中定义)LANGUAGE:语言NAME:文本名字()OBJECT:文本对象(TTXOB中定义)Export:HEADER:文本的描述信息Tables:LINES:文本内容例子:读取销售订单头文本CALL FUNCTION 'READ_TEXT'EXPORTINGID = ‘Y001’LANGUAGE = SY-LANGUNAME = ‘385’OBJECT = ‘VBBK’TABLESLINES = L_IT_LINESEXCEPTIONSID = 1LANGUAGE = 2NAME = 3NOT_FOUND = 4OBJECT = 5REFERENCE_CHECK = 6WRONG_ACCESS_TO_ARCHIVE = 7OTHERS = 8.CONVERSION_EXIT_CUNIT_OUTPUT:根据语言决定单位的显示参数:Import:INPUT:内部单位显示方式LANGUAGE:语言代码Export:LONG_TEXT:单位的长文本OUTPUT:外部单位显示方式SHORT_TEXT:单位的短文本例子:单位显示转换CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'EXPORTINGINPUT = ‘ST’LANGUAGE = SY-LANGUIMPORTINGOUTPUT = L_OUTEXCEPTIONSUNIT_NOT_FOUND = 1OTHERS = 2.SJIS_DBC_TO_SBC:全角转换为半角参数:Import:ALL:全部转换ALPHABET_UPPER:A-Z转换ALPHABET_LOWER:a-z转换NUMERIC:0-9转换Export:CONVERTED:转换的字符个数Changing:TEXT:转换结果SJIS_SBC_TO_DBC:半角转换为全角参数:Import:ALL:全部转换ALPHABET_UPPER:A-Z转换ALPHABET_LOWER:a-z转换NUMERIC:0-9转换Export:CONVERTED:转换的字符个数Changing:TEXT:转换结果CO_R0_CHECK_DECIMAL_POINT:根据单位检查数据的小数字参数:Import:I_QUANTITY:数量I_UNIT:单位例子:下面的例子会返回错误信息,以为单位ST是不能有小数字的。
CALL FUNCTION 'CO_R0_CHECK_DECIMAL_POINT'EXPORTINGI_QUANTITY = 3.2I_UNIT =‘ST’EXCEPTIONSWRONG_DATA = 1OTHERS = 2.POSTAL_CODE_CHECK:检查邮政编码参数:Import:COUNTRY:国家(T005)----------必输ONE_TIME_ACCOUNT:不明确POSTAL_CODE:邮政编码POSTAL_CODE_PO_BOX:没用过,以下为推测:如果输入则会检查,如果t005表中的XPLPF设置了,那么如果输入PO_BOX,这个选项就必须输入。