SAP 常用函数
SAP 常用函数

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常用的函数函数名描述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.。
SAP常用Function一览

6. READ_TEXT 读取长文本
7. MESSAGE_TEXT_BUILD 把消息转化为文本
8. REUSE_ALV_FIELDCATALOG_MERGE 根据数据字典结构或者内表创建字段目录
9. POPUP_WITH_TABLE_DISPLAY 弹出一个简单的列表画面,可以选择某一行,返回选择行的索引
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 里设置复杂选择标准
5. BAPI_CURRENCY_CONV_TO_INTERNAL 6. CURRENCY_AMOUNT_SAP_TO_DISPLAY 显示存储的货币金額 7. CURRENCY_AMOUNT_DISPLAY_TO_SAP 存储输入的货币金額 8. CONVERT_TO_LOCAL_CURRENCY 按照指定日期汇率转换金额为指定货币类型
15.DYNP_VALUES_READ 读取屏幕上字段值
16. DYNP_VALUES_UPDATE 选择F4后,将选定表行值返回到屏幕
sap abap 整行读取长文本 函数

SAP ABAP 整行读取长文本函数在SAP ABAP编程中,我们经常需要处理大量的文本数据。
以下是一些常用的函数,用于在ABAP中整行读取长文本。
1. GET_LINE_LENGTH( )```abapGET_LINE_LENGTH( )```这个函数无参数,调用它将会返回当前文本行的长度。
2. GET_LINE( )```abapGET_LINE( )```这个函数无参数,调用它将会读取当前文本行的内容,返回的是文本行的字符串。
3. CONCATENATE( )```abapCONCATENATE( )```此函数接受两个字符串参数,将它们连接在一起并返回结果字符串。
4. SUBSTITUTE( )```abapSUBSTITUTE( source string; search string; replace string [; occurrence [; pattern type ] ] )```此函数接受最多五个参数。
它在指定字符串(source string)中查找指定的子字符串(search string),并用指定的替换字符串(replace string)替换它。
可以选择指定替换的特定次数(occurrence),也可以选择指定使用的特定模式类型(pattern type)。
5. TRANSLATE( )```abapTRANSLATE( source string; search string; replace string [; occurrence [; pattern type ] ] )```此函数类似于SUBSTITUTE( ),但它还有一个额外的功能:删除源字符串中所有匹配的子字符串。
6. GET_TRANSLATION( )```abapGET_TRANSLATION( source string; search string; replace string [; occurrence [; pattern type ] ] )```此函数类似于SUBSTITUTE( )和TRANSLATE( ),但它返回一个新字符串,其中所有匹配的子字符串都被替换为指定的替换字符串,并且所有其他字符都被删除。
sap-function 常用 大全

可以显示定制的提 示信息的确认窗口 64 POPUP_TO_CONFIRM_WITH_MESSAGE 。系统在窗口上显 示一个绿色问号图 标。
65 POPUP_TO_CONFIRM_WITH_VALUE
显示确认用户对某 个特定对象的操作 的弹出窗口。系统 在窗口上显示一个 绿色问号图标。 将待确认选项以单 选按钮的方式显示 的弹出窗口
39 HOLIDAY_CHECK_AND_GET_INFO
判断某天是否是假 日
40 INIT_TEXT
上传长文本到SAP。
41 INIT_TEXTSAVE_TEXTCOMMIT_TEXT
会計伝票テキスト を登録
42 JOB_CLOSE
ジョブをリリース
43 JOB_OPEN
設定されたョブ名 称によりジョブを オープン
61 POPUP_TO_CONFIRM
该函数是POPUP函数 的增强版,可以自 定义按钮文本和图 标。
显示有YES/NO的弹 62 POPUP_TO_CONFIRM_LOSS_OF_DATA 出窗口,提示用户 未保存的数据将丢 失。 系统在窗口上 63 POPUP_TO_CONFIRM_STEP 提示是否确认操作 的弹出窗口
函数名
描述
1 BKK_ADD_MONTH_TO_DATE
日期的加减
2 C14B_ADD_TIME
加時間到某月某日 某時得其結果
3 CATS_NUMERIC_INPUT_CHECK
数値チェック
4 CLOI_PUT_SIGN_IN_FRONT
把SAP里的负号放到 前面来的函数
5 CO_R0_CHECK_DECIMAL_POINT
根据语言决定单位 的显示
10 CONVERT_DATE_INPUT
常用的SAP标准函数

常⽤的SAP标准函数Function Module DescriptionABAP4_CALL_TRANSACTION Call transaction code, also see SAPGUI_SET_FUNCTIONCODEGet additional user address details not retrived bySUSR_USER_ADDRESS_READ (i.e. email address)Retrieve fiscal year and payrole period (based on date andcompany code)CALCULATE_DATE Increase/decrease DATE by a specific number of Days/Months CONVERT_DATE_TO_EXTERNAL Converts date from system storage format to users specifieddisplay formatCREATE_TEXTS Create standard texts (i.e. PO headers texts)Convert currency value from value stored in SAP to displayedcurrencyConvert currency value from displayed currency value to valuestored in SAPCLPB_EXPORT Export files to clipboardCLBP_IMPORT Copies clipboard into tableDATE_COMPUTE_DAY Returns day of the week for a particular date(1=Monday, 5=Fridayetc.)DATE_TO_DAY Returns day of the week for a particular date('Monday', 'Friday','Sat.')ENQUEUE_READ Returns list if active lock objectsRetrieve fiscal year and payrole period (Note: verision parameter isfiscal year varient from table T009)Return values (i.e. from an F4 value request) into respective fieldson a dynpro.F4IF_INT_TABLE_VALUE_REQUEST Display internal table as search help (documented in SAP)FILE_GET_NAME Retrieve Logical file path. Use Transaction 'FILE' to view/createlogical file pathsFTI_FISCAL_YEAR_MONTH_GET Returns fiscal year for specific dateDownload file to PCUpload file from PCHR_SEN_CRULE_0100_DATE Increase/decrease DATE by a specific number ofDays/Months/YearsJOB_OPEN, JOB_SUBMIT, JOB_CLOSE Create and submit background jobs.Builds actual message based on info returned from CalltransactionNUMBER_GET_NEXT Get the next unique number in a number range. Use tcode SNROfor maintaining number ranges.NUMBER_CHECK Check if number is within a number range (see tcode SNRO) NUMBER_GET_INFO Get info about number range (see tcode SNRO).POPUP*Display Pop-up Screen(s)Retrive standard texts (i.e. PO headers texts)READ_EXCHANGE_RATE Retrieve exchange rate on a particular dateRS_CREATE_VARIANT Creating a Report VariantRS_VARIANT_CONTENTS Returns contents of a variant, is also useful as the result lists allvariable names that could be set on screen.Get list of files within specific directory(Application Server) SAPGUI_SET_FUNCTIONCODE Execute SAP function code. Can also be used to executetransaction code by using '/o' i.e. '/OSE80'.STUM_WP_TOTAL_ACTIVITY Retrieves list of all process from all servers (i.e. SM50, SM66).Also returns a second table, containing a list of all the servers. STUM_WP_SERVER_ACTIVITYS &Retrieves list of processes on current server.EW_TH_WPINFOGet user address details stored under 'Own data'SUSR_USER_PARAMETERS_GET Get user parameter details stored under 'Own data'SUSR_USER_DISPLAY_WITH_AUTHS Displays user authorisation objects (Note: may have to debugaround authority checks)SUSR_USER_AGR_ACTIVITYGR_GET Get users activity group detailsSUSR_SYNC_USER_TABLES Sync USR tablesExecute external command(FTP data in & out of SAP)TH_POPUP Display Windows Message on Users ScreenWS_EXECUTE Execute External Program。
SAPABAP函数总结常用函数解释

SAPABAP函数总结常用函数解释SAPABAP是一种流行的编程语言,常用于SAP系统开发。
在ABAP中,函数是可重复使用的代码块,用于执行特定的任务或操作。
这些函数可以在ABAP程序中调用,以提高代码的可维护性和重用性。
下面是一些常用的SAPABAP函数以及它们的解释。
1.STRLEN函数:返回一个字符串的长度。
这个函数可以用于计算字符串的字符数,以便于处理和操作字符串。
2.CONCATENATE函数:将多个字符串连接成一个字符串。
这个函数可以用于连接两个或多个字符串,使其成为一个新的字符串。
3.REPLACE函数:替换字符串中指定的内容。
这个函数可以用于替换一个字符串中的一些子串,以实现特定的文本替换需求。
4.SPLIT函数:将一个字符串按照指定的分隔符分割成一个字符串表。
这个函数可以用于将一个长字符串以指定的分隔符分割为多个小字符串,并存储在表中。
5.TRANSLATE函数:替换字符串中的字符。
这个函数可以用于替换一个字符串中的特定字符或字符串,以实现文本的转换或调整。
6.NUMERIC_CHECK函数:检查一个字符串是否为合法的数字。
这个函数可以用于验证一个字符串是否为合法的数字,以确保数据的准确性。
7.DATE_CONVERSION_FUNCTIONS函数:日期转换函数。
这个函数可以用于在不同日期格式之间进行转换,以满足不同日期格式的需求。
8.DYNPRO_NOT_FOUND函数:检查屏幕元素是否存在。
这个函数可以用于检查SAP屏幕中是否存在一个指定的屏幕元素,以便根据结果来决定后续的操作。
9.WRITE函数:向输出窗口或内部表写入数据。
这个函数可以用于将数据写入SAP输出窗口,或写入内部表,以进行后续的数据处理。
10.SY-SUBRC函数:获取最近一次操作的执行状态。
这个函数可以用于获取最近一次操作的执行结果,以便根据结果进行进一步的处理和判断。
11.CONVERSION_EXIT_ALPHA_INPUT函数:输入转换函数。
SAP几个常用函数.doc

SAP几个常用函数.docSAP中几个常用函数函数名描述ABAP_DOCU_DOWNLOAD Download ABAP documentation in HTML format.ARFC_GET_TID-以十六进制形式返回终端的IP地址。
ADDR_GET_COMPLETE_ALL_TYPES 功能:获得地址的相关信息BP_EVENT_RAISE-在ABAP/4程序屮触发一个事件。
BKK_ADD_MONTH_TO_DATE 日期的加减BAPI_COMPANYCODE_GET_PERIOD功能:获得公司的会计年度以及过账日期CONVERT_OTFSPOOLJOB_2_PDF ? converts a OTF spool to PDF (i。
e。
Sap script document)CONVERT_ABAPSPOOLJOB_2_PDF -convert ABAP spool output to PDFCLPBJMPORT :从剪贴板导入internal tableCLPB_EXPORT :从internal table 输入到剪贴板COMMIT_TEXT -To load long text into SAP。
CONVERT_OTF -将SAP文档(SAP Script)转换成其他类型。
CONVERT_TO_LOCAL_CURRENCY按照指定日期汇率转换金额为指定货币类型cLgui_frontend_services=>gui_upload 上传到服务器cLguiJrontend_services=>gui_download下载至U服本地CURRENCY_AMOUNT_SAP_TO_BAPI 数量因货币变化CONVERSION_EXIT_CUNIT_OUTPUTCONVERSION_EXIT_ALPHA_INPUT CONVERSION_EXIT_ALPHA_ OUTPUT CONVERSION_EXIT_MATN1_INPUT 功能:根据语言决定单位的显示全数字则在前面补0和上面相反物料号码转换函数CONVERSION EXIT MATN1 OUTPUT 同上相反CLOI_PUT_SIGN_IN_FRONT CO RO CHECK DECIMAL POINT 功能:将负号提前功能:根据单位检查数据的小数位DAY_ATTRIBUTES_GETReturn useful information about a day. Will tell you the day of the week as a word (Tuesday),the day of the week (2 would be Tuedsay), whether the day is a holiday, and more.(provided byFrancois Henrotte)?DATE_CHECK_PLAUSIBILITY 检查日期合法性DAY_IN_WEEK 通过这个日期得出那大是星期几DATE GET WEEK- 返回一个口期所在的周数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。
call function'ICON_CREATE'exportingname= 'ICON_RED_LIGHT'text= '图标后的文本'info= '提示'add_stdinf= 'X'importingresult= status_iconexceptionsicon_not_found= 1outputfield_too_short = 2others= 3.可以通过函数ICON_CREATE将alv中的单元格(Cell)变成ICON. LOOP AT git_alv ASSIGNING <lfs_alv>.CALL FUNCTION'ICON_CREATE'EXPORTINGname = icon_pdf "图标名字info = 'PDF'IMPORTINGresult = <lfs_alv>-pdf_orderEXCEPTIONSOTHERS = 0.ENDLOOP另外不要忘了声明一个TYPE-POOLS:icon.TYPE-POOLS:icon.3、进度条函数SAPGUI_PROGRESS_INDICATOR DATA: ll_lines(10),"行数ll_tabix(10),"循环标号ll_pecnt TYPE p LENGTH 6 DECIMALS 2,"百分比ll_pecet(6),"百分数ll_text(40)."消息CLEAR: ll_lines,ll_tabix,ll_pecnt,ll_pecet,ll_text.DESCRIBE TABLE it_vbrk LINES ll_lines."获取内表行数*LOOP AT it_vbrk INTO wa_vbrk.ll_tabix = sy-tabix."当前处理的行号ll_pecnt = ll_tabix / ll_lines * 100."已处理百分比ll_pecet = ll_pecnt."拼接显示消息CONCATENATE'已完成' ll_pecet '%,共' ll_tabix '条/' ll_lines '条'INTO ll_text.CONDENSE ll_text."整理格式,去掉多余空格,格式更整齐CALL FUNCTION'SAPGUI_PROGRESS_INDICATOR'"调用进度条函数,传入百分比和消息EXPORTINGpercentage = ll_pecnttext = ll_text.CLEAR: ll_pecnt,ll_pecet,ll_text.……ENDLOOP.4、GET_GLOBALS_FROM_SLVC_FULLSCR创建alv grid时,有时需要修改alv中的数据。
修改后将数据传到alv多所对应内表,我们在alv的usercommand事件中可以这样写:FORM usercommand USING ucomm TYPE sy-ucommselfield TYPE slis_selfield.DATA: lr_grid TYPE REF TO cl_gui_alv_grid.DATA l_tabix LIKE sy-tabix.CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’IMPORTINGe_grid = lr_grid.CALL METHOD lr_grid->check_changed_data.selfield-refresh = ‘X’.selfield-row_stable = ‘X’.selfield-col_stable = ‘X’.*otherENDFORM.5、创建供应商找到一个类和方法来创建,类名:VMD_EI_API 方法名:MAINTAIN_DIRECT_INPUT,类似的* 供应商表头ls_vendors-header-object_instance-lifnr = lv_vendor. "供应商ls_vendors-header-object_task = 'M'. "创建/更改* 通用数据ls_vendors-central_data-central-data-stceg = stceg. "增值税登记号 ls_vendors-central_data-central-data-ktokk = '0001'. "账户组ls_vendors-central_data-central-data-j_1kfrepre = j_1kfrepre. "代表名称 ls_vendors-central_data-central-datax-stceg = 'X'. "增值税登记号ls_vendors-central_data-central-datax-ktokk = 'X'. "账户组ls_vendors-central_data-central-datax-j_1kfrepre = 'X'. "代表名称ls_phone-contact-data-telephone = phone. " 电话APPEND ls_phone TO ls_vendors-central_data-address-communication-phone-phone.CLEAR ls_phone.ls_smtp-contact-data-e_mail = smtp. " 邮箱APPEND ls_smtp TO ls_vendors-central_data-address-communication-smtp-smtp.CLEAR ls_smtp.ls_vendors-central_data-address-postal-data-name = name. "名称ls_vendors-central_data-address-postal-data-name_2 name. "名称ls_vendors-central_data-address-postal-data-sort1 = sort1. "属性(SAP为搜索项 1)ls_vendors-central_data-address-postal-data-street = street. "街道/门牌号ls_vendors-central_data-address-postal-data-postl_cod1 = postl_cod1. "邮政编码ls_vendors-central_data-address-postal-data-city = city. "城市ls_vendors-central_data-address-postal-data-country = country. "国家ls_vendors-central_data-address-postal-data-region = region. "地区ls_vendors-central_data-address-postal-data-langu = '1'. "语言 ls_vendors-central_data-address-postal-datax-name = 'X'.ls_vendors-central_data-address-postal-datax-name_2 = 'X'.ls_vendors-central_data-address-postal-datax-sort1 = 'X'.ls_vendors-central_data-address-postal-datax-street = 'X'.ls_vendors-central_data-address-postal-datax-postl_cod1 = 'X'.ls_vendors-central_data-address-postal-datax-city = 'X'.ls_vendors-central_data-address-postal-datax-country = 'X'.ls_vendors-central_data-address-postal-datax-region = 'X'.ls_vendors-central_data-address-postal-datax-langu = 'X'.* 采购组织数据ls_purchasing-task = 'M'.ls_purchasing-data_key-ekorg = '1000'.ls_purchasing-data-waers = waers.ls_purchasing-data-verkf = verkf.ls_purchasing-data-telf1 = telf1.ls_purchasing-data-eikto = eikto.ls_purchasing-data-webre = 'X'.ls_purchasing-datax-waers = 'X'.ls_purchasing-datax-verkf = 'X'.ls_purchasing-datax-telf1 = 'X'.ls_purchasing-datax-webre = 'X'.ls_purchasing-datax-eikto = 'X'.IF requesttype = 'CREATE'.ls_functions-task = 'I'.ls_functions-data_key-parvw = 'BA'. ls_functions-data-defpa = ''.ls_functions-data-partner = lv_vendor.s_functions-datax-defpa = 'X'._functions-datax-partner = 'X'.APPEND ls_functions TO lt_functions. ls_functions-data_key-parvw = 'LF'.ls_functions-data-defpa = ''.ls_functions-data-partner = lv_vendor. ls_functions-datax-defpa = 'X'.ls_functions-datax-partner = 'X'.APPEND ls_functions TO lt_functions.ls_functions-data_key-parvw = 'RS'.ls_functions-data-defpa = ''.ls_functions-data-partner = lv_vendor.ls_functions-datax-defpa = 'X'.ls_functions-datax-partner = 'X'.APPEND ls_functions TO lt_functions.ls_purchasing-functions-functions = lt_functions.ENDIF.APPEND ls_purchasing TO ls_vendors-purchasing_data-purchasing. CLEAR ls_purchasing.APPEND ls_vendors TO lt_vendors.CLEAR ls_vendors.ls_main-vendors = lt_vendors.* 创建或者更新供应商CALL METHOD vmd_ei_api=>maintain_direct_input EXPORTINGis_master_data = ls_mainIMPORTINGes_master_data_correct = l1es_message_correct = l2es_master_data_defective = l3es_message_defective = l4.IF l4-is_error = ''.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTINGwait = 'X'.return_status = 'S'.IF requesttype = 'CREATE'.return_value = '供应商创建成功!'.ELSEIF requesttype = 'UPDATE'.return_value = '供应商更新成功!'.ENDIF.sapcode = lv_vendor.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.return_status = 'F'.CLEAR ls_message.READ TABLE l4-messages INTO ls_message WITH KEY type = 'E'. IF sy-subrc = 0.MESSAGE ID ls_message-idTYPE ls_message-typeNUMBER ls_message-numberWITH ls_message-message_v1ls_message-message_v2ls_message-message_v3ls_message-message_v4INTO return_value.ENDIF.ENDIF.6、READ_TEXT 读取长文本们需要填入的值是ID LANGUAGE NAME OBJECT 这几个值7、去除前导零地址:ZSDR00070DATA: G_NUMBER(14) TYPE C .*去除p_out的前导零CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTINGINPUT = G_NUMBERIMPORTINGOUTPUT = G_NUMBER.8、取流水号地址:ZSDR00070DATA: G_NUMBER(14) TYPE C .*&取流水号CALL FUNCTION 'NUMBER_GET_NEXT'EXPORTINGNR_RANGE_NR = 'SD' "这个就是维护的间隔号OBJECT = 'ZSD_KPSQ' "这个就是流水号对象 QUANTITY = '1'IMPORTINGNUMBER = G_NUMBER. "获得的流水号9、GET_GLOBALS_FROM_SLVC_FULLSCR修改ALV数据传到alv多所对应内表地址:ZSDR00070DATA: L_GRID TYPE REF TO CL_GUI_ALV_GRID.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGE_GRID = L_GRID.CALL METHOD L_GRID->CHECK_CHANGED_DATA.10、文件上传和下载地址:ZMMR0013010.1 下载PARAMETERS: P_FILE TYPE RLGRAP-FILENAME.CALL FUNCTION 'F4_FILENAME'EXPORTINGFIELD_NAME = 'P_FILE'IMPORTINGFILE_NAME = P_FILE.10.2 上传TYPES: BEGIN OF T_DATATAB,EBELN TYPE EBELN,END OF T_DATATAB.DATA: IT_DATATAB TYPE STANDARD TABLE OF T_DATATAB,WA_DATATAB TYPE T_DATATAB.DATA: IT_RAW TYPE TRUXS_T_TEXT_DATA.CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'EXPORTINGI_LINE_HEADER = 'X'I_TAB_RAW_DATA = IT_RAWI_FILENAME = P_FILETABLESI_TAB_CONVERTED_DATA = IT_DATATAB[]EXCEPTIONSCONVERSION_FAILED = 1OTHERS = 2.11、前缀补零函数:ZMM_GETMATERIELINVENTORYCALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' "前缀补零EXPORTINGinput = MATERIALIMPORTINGoutput = MATERIAL.。