博客首页
注册
建议与交流
排行榜
加入友情链接
宝宝相册的专门空间
推荐
投诉
搜索:
帮助
月影Rocky 的笔记
本博客已搬迁至:http://blog.csdn.net/rockwl2001
rockywang.cublog.cn
管理博客
发表文章
留言
收藏夹
博客圈
音乐
相册
文章
首页
关于作者
姓名: 职业: 年龄: 位置: 个性介绍:
||
<<
>>
||
我的分类
最新文章
·
关于SAP的一些概念
·
SPAM SAINT升级Patch/Add..
·
SAP DOI调用Excel例子
·
Component 0DAT (version..
·
ABAP中如何获得URL地址对..
最新留言
·
a abaper
听老白说你对WEB SERVICE比..
·
本站网友
博主,写个如何在SAP调用W..
最新评论
·
听老白说你对WEB SERVICE比..
最新收藏
统计信息
·
总访问量:2584
·
文章个数:12
·
评论条数:1
·
留言条数:2
·
网友推荐:
关于SAP的一些概念
SAP Business Suite <br /> 当前SAP公司的主力产品包,里面包含了mySAP ERP, mySAP CRM, mySAP SCM .... 几乎是SAP的所有东东。如果购买的是此种许可证,就意味着几乎可以用SAP的所有产品的功能--某些特定行业的特定引擎(Engine)除外。 <br /> <br /> mySAP ERP <br /> 主要就是以前的SAP R/3加上SAP最新的集成平台SAP Netweaver。 <br /> <br /> mySAP CRM <br /> 之所以叫mySAP CRM而不是SAP CRM,就是为了突出SAP的CRM产品是以客户为中心的、灵活可配置的……所以叫”my***“,mySAP CRM主要就是包括SAP的CRM产品功能包(Logic Box)再加上SAP最新的集成平台SAP Netweaver。 <br /> <br /> SAP Netweaver <br /> 是SAP 最新的集成应用平台,一方面SAP用这么一个平台来集成SAP与非SAP(Oracle, Siebel, ...)应用系统;另一方面SAP把一些各个系统都可以通用的功能放入此平台中,如SAP门户( SAP Portal)可以访问各种SAP应用系统(ERP, CRM...)及非SAP系统、SAP商务智能(SAP BI)可以对来自各种系统的数据进行分析…… <br /> <br /> mySAP.com <br /> 这是前几年SAP为了迎合网络风潮而给自己的产品包改的名字,它跟www.mySAP.com这个网站没有任何实质关...它就是现在的SAP Business Suite。 <br /> <br /> SAP R/3 <br /> 以前SAP公司的主力产品,包括大家非常熟悉的SD, MM, FI, CO, PP..等模块。但从今年起SAP已经不再单独出售R/3的许可证,代之以mySAP ERP。也就意味着客户无论选择SAP的何种产品(mySAP ERP, mySAP CRM...)都会得到SAP Netweaver,其中包括了SAP Portal 与SAP BW的使用许可。 <br /> <br /> SAP All-in One (SAP A1) <br /> 在SAP R/3的基础上,SAP做了一些预配置,然后按不同行业交给咨询合作伙伴,由他们再加一些预配置,然后以咨询合作伙伴的名义将加了预配置的系统销售给用户。内含mySAP CRM的部分功能。 <br /> <br /> SAP Business One (SAP B1) <br /> 在SAP收购的另一家公司的产品基础上改造而成,优点是价格低廉,并且由于数据结构相同可以无缝地将系统升级至SAP A1, SAP Business Suite。SAP B1中有CRM功能,但远不及mySAP CRM系统中的那么强大。 <br /> <br /> SAP Release版本之间的差异和关系: <br /> 版本4.6C以前是所谓传统的R3系统,建立在SAP Basis的基础上; <br /> <br /> 版本4.70以后,改为R3 Enterprise,最大的变化是SAP WEB AS取代了传统的Basis,核心业务功能模块也作了划分; <br /> <br /> R3 Enterprise之后改称为mySAP ERP2004,基础平台演变成SAP NetWeaver,并产生SAP ECC (ECC = ERP Central Component) ,作为Enterprise的替代,并集成了BW,SEM和ITS; <br /> <br /> 2005第4季度开始mySAP ERP2005的准备,最大的变化将是全面转向ESA体系(基于消息机制的企业应用体系),并引入了新的功能模块,比如PLM和SRM....
查看全文
发表于:2008-02-05 ┆
阅读(111)
┆
评论(0)
SPAM SAINT升级Patch/Addon失败了怎么办?
<p>昨天安装BI 3.5 Business Content 的Addon补丁包,升级前系统自检所有依赖的补丁包都已经安装,结果升到一半显示错误,错误提示是“<font face="Arial">GETWA_NOT_ASSIGNED</font>”,查了下资料,说要打SAP BW Patch 13补丁(怎么升级前不说清楚!)。</p> <p>于是下了BW Patch 13的文件下来,发现Saint/Spam被锁住了。提示:“OCS locked by user XXX with transaction SAINT”,并且在SAINT里面不能Reset那个安装任务,无奈,这下SAINT和SPAM都不能用了。</p> <p>记得sydongsun在他的一片博文中说过如何升级BI Addon(<a target="_blank" href="http://www.askguoyu.net/weblog/2007/09/sap_ecc60.html">详见这里</a>),里面详细说道如果碰到升级补丁、插件包发生错误后进退两难如何解决,用他的办法,在SE37中运行SPAM_RESET_STATUS,IV_FORCE设置为X,运行后,发现还是提示“OCS locked by user XXX with transaction SAINT”,于是从这个提示入手,Google了一下,终于找到解决方法:<br /> 原文如下:<br /> In Se37,Use the function module OCS_RESET_QUEUE -> Single Test <br /> with the parameters <br /> IV_TOOL=SAINT, IV_FORCE=X </p> <p>用这种方法,终于Reset了所有的OCS队列。</p> <p>还有人提出另外一种解决方案,如下所示,我没有试过,不知道是否可以,大意就是删掉PAT01、PAT03、PAT10三个表里的和那个Patch相关的数据即可:</p> <p>We were facing a problem in(Test Server) due to wrongly defined <br /> queu. Basis Patches 32 and 33 were supposed to be applied <br /> separately, but by mistake we defined a queue for Basis 32 to <br /> Basis 41 and HR26 to HR40. Due to this que was stuck in <br /> DDIC_IMPORT phase. <br /> <br /> We solved this problem by deleting entries with status ='?' in <br /> PAT01, PAT03 and PAT10 tables. <br /> This way we were able to delete the particular queue and spam was <br /> reset. This can be a last option to solve this problem..</p>...
查看全文
发表于:2008-01-25 ┆
阅读(134)
┆
评论(0)
SAP DOI调用Excel例子
DOI功能很强大,可以做到很多功能,而且可以使用VBA扩展新功能,可以做出如下效果:<br /> <img alt="DOI效果图" border="0" src="http://foto.yculblog.com/rocktech/DOI.jpg" /><br /> <br /> 一个简单的DOI模板代码如下:<br /> <br /> <p><font face="Arial">*&---------------------------------------------------------------------*<br /> *& Report Z_Rocky_TEST<br /> *&<br /> *&---------------------------------------------------------------------*<br /> *& Rocky Wang<br /> *& RockyTech (AT) 126.com<br /> *& Blog : RockTech.yculblog.com<br /> *&---------------------------------------------------------------------*</font></p> <p><font face="Arial">REPORT z_rocky_test.<br /> TABLES: makt.<br /> ***-----------------------------------***<br /> *** excel related declaring<br /> ***-----------------------------------***<br /> TYPE-POOLS: slis,vrm, sbdst, soi.<br /> CONSTANTS document_name(30) VALUE 'TEST'.<br /> CONSTANTS inplace VALUE 'X'.<br /> DATA: flag .</font></p> <p><font face="Arial">DATA: container TYPE REF TO cl_gui_custom_container,<br /> control TYPE REF TO i_oi_container_control,<br /> document TYPE REF TO i_oi_document_proxy,<br /> spreadsheet TYPE REF TO i_oi_spreadsheet,<br /> error TYPE REF TO i_oi_error,<br /> errors TYPE REF TO i_oi_error OCCURS 0 WITH HEADER LINE.</font></p> <p><font face="Arial">CONTROLS: exceldata TYPE TABLEVIEW USING SCREEN 0100.<br /> DATA: tablename(10), okcode(15),<br /> row(4), column(4), data(39).</font></p> <p><font face="Arial">* spreadsheet interface structures for Excel data input<br /> DATA: rangeitem TYPE soi_range_item.<br /> DATA: ranges TYPE soi_range_list.<br /> DATA: excel_input TYPE soi_generic_table.<br /> DATA: excel_input_wa TYPE soi_generic_item.<br /> DATA: initialized(1), retcode TYPE soi_ret_string.<br /> DATA: item_url(256), already_done, newname(40).<br /> DATA document_type(80).<br /> DATA: app TYPE vrm_id, applist TYPE vrm_values.<br /> DATA: excel(80) VALUE 'Excel.Sheet'.<br /> DATA: line_count TYPE i,<br /> column_count TYPE i.</font></p> <p><font face="Arial">DATA: ok_code TYPE sy-ucomm,<br /> save_ok TYPE sy-ucomm.</font></p> <p><font face="Arial">CLASS c_oi_errors DEFINITION LOAD.</font></p> <p><font face="Arial">DATA: BEGIN OF itab OCCURS 0.<br /> INCLUDE STRUCTURE makt.<br /> DATA: END OF itab.</font></p> <p><font face="Arial">SELECT-OPTIONS matnr FOR makt-matnr.</font></p> <p><font face="Arial">START-OF-SELECTION.<br /> PERFORM getdata.</font></p> <p><font face="Arial"> CALL SCREEN 100.</font></p> <font face="Arial"> <p><br /> *&---------------------------------------------------------------------*<br /> *& Form getdata<br /> *&---------------------------------------------------------------------*<br /> * text<br /> *----------------------------------------------------------------------*<br /> * --> p1 text<br /> * <-- p2 text<br /> *----------------------------------------------------------------------*<br /> FORM getdata .<br /> SELECT *<br /> FROM makt<br /> INTO TABLE itab<br /> WHERE makt~matnr IN matnr.<br /> ENDFORM. " getdata<br /> *&---------------------------------------------------------------------*<br /> *& Module STATUS_0100 OUTPUT<br /> *&---------------------------------------------------------------------*<br /> * text<br /> *----------------------------------------------------------------------*<br /> MODULE status_0100 OUTPUT.<br /> SET PF-STATUS 'SA1'.<br /> IF flag = space .<br /> PERFORM create_basic_objects USING '' '' '' '' document_name.<br /> PERFORM output_to_excel.<br /> ENDIF.<br /> ENDMODULE. "STATUS_0100 OUTPUT</p> <p>*&---------------------------------------------------------------------*<br /> *& Module USER_COMMAND_0100 INPUT<br /> *&---------------------------------------------------------------------*<br /> * text<br /> *----------------------------------------------------------------------*<br /> MODULE user_command_0100 INPUT.<br /> flag = 'X'.<br /> save_ok = ok_code.<br /> CLEAR ok_code.<br /> CASE save_ok.<br /> WHEN 'STOP' .<br /> IF NOT document IS INITIAL.<br /> CALL METHOD document->close_document.<br /> FREE document.<br /> ENDIF.<br /> IF NOT control IS INITIAL.<br /> CALL METHOD control->destroy_control.<br /> FREE control.<br /> ENDIF.<br /> LEAVE PROGRAM.<br /> WHEN 'BACK' .<br /> IF NOT document IS INITIAL.<br /> CALL METHOD document->close_document.<br /> FREE document.<br /> ENDIF.<br /> IF NOT control IS INITIAL.<br /> CALL METHOD control->destroy_control.<br /> FREE control.<br /> ENDIF.</p> <p> SET SCREEN 0. " quit the program<br /> "set screen 1000.<br /> ENDCASE.</p> <p>ENDMODULE. " USER_COMMAND_0100 INPUT<br /> *&---------------------------------------------------------------------*<br /> *& Form CREATE_BASIC_OBJECTS<br /> *&---------------------------------------------------------------------*<br /> * text<br /> *----------------------------------------------------------------------*<br /> * -->P_APP_NAME text<br /> * -->P_CLASSNAME text<br /> * -->P_CLASSTYPE text<br /> * -->P_OBJ_KEY text<br /> * -->P_DOCNAME text<br /> *----------------------------------------------------------------------*<br /> FORM create_basic_objects USING p_app_name<br /> p_classname<br /> p_classtype<br /> p_obj_key<br /> p_docname.</p> <p> CHECK initialized IS INITIAL.<br /> * first get the SAP DOI i_oi_container_control interface<br /> CALL METHOD<br /> c_oi_container_control_creator=>get_container_control<br /> IMPORTING<br /> control = control<br /> error = error.<br /> * check no errors occured<br /> CALL METHOD error->raise_message<br /> EXPORTING<br /> type = 'E'.<br /> CREATE OBJECT container<br /> EXPORTING container_name = 'CONTAINER'.<br /> DATA l_app_name(200).<br /> IF p_app_name IS INITIAL.<br /> l_app_name = 'TEST'.<br /> ELSE.<br /> l_app_name = p_app_name.<br /> ENDIF.<br /> CALL METHOD control->init_control<br /> EXPORTING<br /> r3_application_name = l_app_name<br /> inplace_enabled = inplace<br /> inplace_scroll_documents = 'X'<br /> parent = container<br /> register_on_close_event = 'X'<br /> register_on_custom_event = 'X'<br /> no_flush = 'X'<br /> IMPORTING<br /> error = errors.<br /> * save error object in collection<br /> APPEND errors.<br /> CLEAR item_url.<br /> DATA: bds_instance TYPE REF TO cl_bds_document_set.<br /> DATA: doc_signature TYPE sbdst_signature,<br /> wa_doc_signature LIKE LINE OF doc_signature,<br /> doc_components TYPE sbdst_components,<br /> doc_uris TYPE sbdst_uri,<br /> wa_doc_uris LIKE LINE OF doc_uris.<br /> <br /> *以下三个值为Tcode:OAOR里面新建模板文件的参数<br /> <br /> DATA: doc_classname TYPE sbdst_classname VALUE 'PICTURES',<br /> doc_classtype TYPE sbdst_classtype VALUE 'OT',<br /> doc_object_key TYPE sbdst_object_key VALUE 'ZEXCEL'.</p> <p> wa_doc_signature-prop_name = 'DESCRIPTION'.<br /> app = 'excel'.<br /> IF app = 'excel'.<br /> document_type = excel.<br /> wa_doc_signature-prop_value = p_docname.<br /> ELSE.<br /> ENDIF.<br /> APPEND wa_doc_signature TO doc_signature.<br /> CREATE OBJECT bds_instance.<br /> CALL METHOD bds_instance->get_info<br /> EXPORTING<br /> classname = doc_classname<br /> classtype = doc_classtype<br /> object_key = doc_object_key<br /> CHANGING<br /> components = doc_components<br /> signature = doc_signature.</p> <p> CALL METHOD bds_instance->get_with_url<br /> EXPORTING<br /> classname = doc_classname<br /> classtype = doc_classtype<br /> object_key = doc_object_key<br /> CHANGING<br /> uris = doc_uris<br /> signature = doc_signature.</p> <p> FREE bds_instance.</p> <p> READ TABLE doc_uris INTO wa_doc_uris INDEX 1.</p> <p> item_url = wa_doc_uris-uri.</p> <p>* ask the SAP DOI container for a i_oi_document_proxy for Excel<br /> CALL METHOD control->get_document_proxy<br /> EXPORTING<br /> document_type = 'Excel.Sheet'<br /> no_flush = 'X'<br /> IMPORTING<br /> document_proxy = document<br /> error = errors.<br /> APPEND errors.</p> <p>* open a document saved in business document service.<br /> CALL METHOD document->open_document<br /> EXPORTING<br /> open_inplace = inplace<br /> document_url = item_url.</p> <p> DATA: has TYPE i.<br /> CALL METHOD document->has_spreadsheet_interface<br /> EXPORTING<br /> no_flush = ''<br /> IMPORTING<br /> is_available = has<br /> error = errors.<br /> APPEND errors.</p> <p> CALL METHOD document->get_spreadsheet_interface<br /> EXPORTING<br /> no_flush = ' '<br /> IMPORTING<br /> sheet_interface = spreadsheet<br /> error = errors.<br /> APPEND errors.<br /> * Activate sheet 1<br /> CALL METHOD spreadsheet->select_sheet<br /> EXPORTING<br /> name = '表整理'<br /> * NO_FLUSH = ' '<br /> IMPORTING<br /> error = errors.<br /> * RETCODE =<br /> .<br /> APPEND errors.</p> <p> LOOP AT errors.<br /> CALL METHOD errors->raise_message<br /> EXPORTING<br /> type = 'E'.<br /> ENDLOOP.<br /> FREE errors.<br /> initialized = 'X'.<br /> ENDFORM. "CREATE_BASIC_OBJECTS</p> <p>*&---------------------------------------------------------------------*<br /> *& Form output_to_excel<br /> *&---------------------------------------------------------------------*<br /> * fill the EXCEL sheet<br /> *----------------------------------------------------------------------*<br /> FORM output_to_excel.<br /> DATA num TYPE i VALUE 1.<br /> LOOP AT itab.<br /> num = num + sy-tabix.<br /> PERFORM fill_cell USING num 1 itab-matnr.<br /> PERFORM fill_cell USING num 2 itab-spras.<br /> PERFORM fill_cell USING num 3 itab-maktx.<br /> PERFORM fill_cell USING num 4 itab-maktg.<br /> num = 1.<br /> ENDLOOP.<br /> ENDFORM. "output_to_excel</p> <p>*&---------------------------------------------------------------------*<br /> *& Form FILL_CELL<br /> *&---------------------------------------------------------------------*<br /> * text<br /> *----------------------------------------------------------------------*<br /> * -->I text<br /> * -->J text<br /> * -->VAL text<br /> *----------------------------------------------------------------------*<br /> FORM fill_cell USING i j val.<br /> DATA: columns_number TYPE i,<br /> rows_number TYPE i.</p> <p> columns_number = 1.<br /> rows_number = 1.</p> <p> CALL METHOD spreadsheet->insert_range_dim<br /> EXPORTING<br /> name = 'cell'<br /> no_flush = 'X'<br /> top = i<br /> left = j<br /> rows = rows_number<br /> columns = columns_number<br /> IMPORTING<br /> error = errors.<br /> APPEND errors.</p> <p> REFRESH: ranges, excel_input.<br /> rangeitem-name = 'cell'.<br /> rangeitem-columns = 1.<br /> rangeitem-rows = 1.<br /> APPEND rangeitem TO ranges.</p> <p> excel_input_wa-column = 1.<br /> excel_input_wa-row = 1.<br /> excel_input_wa-value = val.<br /> APPEND excel_input_wa TO excel_input.</p> <p>* set data<br /> CALL METHOD spreadsheet->set_ranges_data<br /> EXPORTING<br /> ranges = ranges<br /> contents = excel_input<br /> no_flush = 'X'<br /> IMPORTING<br /> error = errors.<br /> APPEND errors.</p> <p> CALL METHOD spreadsheet->fit_widest<br /> EXPORTING<br /> name = space<br /> no_flush = 'X'.</p> <p> REFRESH: ranges, excel_input.</p> <p>ENDFORM. "fill_cell</p> </font>...
查看全文
发表于:2008-01-22 ┆
阅读(136)
┆
评论(0)
Component 0DAT (version A) does not exist in the database
我在新安装好的BW服务器(BW3.5)上做了一个Query,运行时却发现出错,提示如下: <br /> Component 0DAT (version A) does not exist in the database <br /> <br /> 如下图所示: <br /> <img alt="Component 0DAT (version A) does not exist in the database " border="0" src="http://www.rockywang.net/pic/0dat1.jpg" /><br /> <br /> 看描述应该是是0DAT这个变量没有激活或者不存在。查了下资料说0DAT是Calendar Day(0CALDAY)的变量。 <br /> <br /> 一开始觉得可能是Business Content没有安装,于是到RSA1里面去找0DAT。在Business Content->Object Types->Query Elements->Variable->Select Objects 里面,找了半天,没有找到0DAT,可能我这个BW安装的有问题,SDN上有人说在这里有的,我到另一个BI 7.0系统里0DAT就在这里面,直接安装即可,可是我的BW 3.5 这里就是没0DAT这个变量。 <br /> <br /> 没办法,在Query Designer里面想自己建一个0DAT,却发现不能新建以0开头的变量。于是Google了一下,发现一个Notes就是讲这个的,Notes编号828033。Notes里面讲到: <br /> <br /> The variable 0DAT must be created in the system. <br /> 1) Switch transport/systemtype from CUSTOMER to SAP to access namespace <br /> starting with 0. <br /> 2) Create variable 0DAT as time variable via BEx query analyzer. <br /> <br /> 要改系统参数了!这不是要重启SAP了嘛,还好我这个SAP是个IDES,无所谓了,于是到RZ11里面查看transport/systemtype这个参数,默认是Customer,再进RZ10,Profile选当前实例的配置文件,再选中Extended maintenance,进去修改。新建一个参数transport/systemtype,值为SAP,检查后报错,说这个参数不能手工改…...郁闷了。 <br /> <br /> 没办法,既然在业务界面里面不能手工改,只能直接改服务器上的配置文件了。在RZ10里面选当前配置文件后,点Administration Data,再点Display进去后找到了配置文件的路径,于是远程桌面登录到IDES安装的系统,找到那个配置文件后,添加一句话: <br /> transport/systemtype = SAP <br /> <br /> 然后重启SAP服务器,再进RZ11里面查看,transport/systemtype参数的值变成SAP了 :)<br /> 在Query Designer里面新建一个0DAT,参照BI 7.0下0DAT的属性新建一个,具体属性如下: <br /> <br /> <img alt="" border="0" src="http://www.rockywang.net/pic/0dat2.jpg" /><br /> <br /> 有一点需要说明,Processing By 属性的SAP Exit 这个值是不会显示在下拉列表中供选择的,做成Customer Exit就可以了。(如果实在要做成SAP Exit,请继续看后文) <br /> <br /> 新建完后,记得要删掉在配置文件里面添加的那句 “transport/systemtype = SAP” 再重启服务器。 <br /> <br /> 后来上网有查了点资料,发现了个更简单的办法:Info Object使用的变量都是在RSZGLOBV这个表里面定义好的,如果要新建,直接把内容插入这个表里就好了…...就没必要改什么参数再重启SAP了(那个Notes是谁写的?!)。 <br /> <br /> 修改办法如下:进入RSZGLOBV这个表,添加下面选中的两行内容即可,没有显示的列均为默认参数,Processing Type选择4表示SAP Exit,3表示Customer Exit。 <br /> <br /> <img alt="" border="0" src="http://www.rockywang.net/pic/0dat3.jpg" /><br /> <br /> 至此,此问题完美解决。 <br /> <br /> 参考资料:<font face="Arial"><a href="https://www.sdn.sap.com/irj/sdn/thread?messageID=966023">https://www.sdn.sap.com/irj/sdn/thread?messageID=966023</a></font><br />...
查看全文
发表于:2008-01-06 ┆
阅读(105)
┆
评论(0)
ABAP中如何获得URL地址对应网页的HTML代码
最近有一个朋友问我,在ABAP中如何获取一个URL地址所对应网页HTML代码的内容。<br /> <br /> 在SAP R/3系统中有一个Function Module 叫 HTTP_GET ,使用该FM就能获得一个外网的URL内容<br /> <br /> 需要注意的是,<font face="Arial"> RFC_DESTINATION参数可以在SM59中定义,经常用的有SAPHTTPA和SAPHTTP。前者是从SAP服务器访问,后者是从客户端访问。如果SAP服务器不能访问外网,但是客户端可以,就要使用SAPHTTP。</font>...
查看全文
发表于:2007-11-06 ┆
阅读(140)
┆
评论(1)
SAP中和计量单位有关的表
<font face="Arial">SAP中和计量单位有关的表<br /> <br /> T006 计量单位 <br /> T006_OIB 计量单位,附加定义<br /> T006A 分配内部到语言相关单位<br /> (内部单位转换到外部贸易、技术单位用T006A表,比如要显示CAR则把数据库中的KAR在次表中转换)<br /> T006B 贸易分配到内部测量单位 <br /> ( 外部贸易单位和转换到内部单位就是用T006B表,比如 PC转到ST,CAR转到KAR等)<br /> <br /> T006C 外部技术到内部测量单位的分配<br /> T006D 尺寸<br /> T006D_OIB 附加维数<br /> T006E 计量单位系统(组件,映射)<br /> T006EE 计量单位系统(实用程序)<br /> T006ET 计量单位系统(使用程序 -> 文<br /> T006I 计量单位的 ISO 代码<br /> T006J ISO 测量文本单位码<br /> T006M 计量单位组<br /> T006T 维数文本</font>...
查看全文
发表于:2007-05-30 ┆
阅读(90)
┆
评论(0)
sap里部分函数说明
ABAP_DOCU_DOWNLOAD - Download ABAP documentationin HTML format. ARFC_GET_TID - will return the IP addressof the terminal in hex. BAL_* -All function modules used for SAP's application logging can be found here. BP_EVENT_RAISE -Trigger an event from ABAP/4 program BP_JOBLOG_READ -Fetch job log executions .........
查看全文
发表于:2007-05-16 ┆
阅读(95)
┆
评论(0)
SAP 中的增强
<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">sap的用户出口总共有三代: <br /> 1、第一代 <br /> sap提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求。这类增强都需要修改sap的标准代码。 <br /> 示例:USEREXIT.. in SAPMV45A <br /> <br /> 2、第二代 <br /> sap提供的是CUSTOMER-FUNCTION,它是通过SMOD和CMOD完成实现。 <br /> <br /> 3、第三代 <br /> sap提供的第三代的用户出口就是BADI,他的调用方式是CALL METHOD (instance),(相关的TCODE是SE18和SE19),可以通过EXIT_HANDLER这个单词查找BADI。 <br /> <br /> <strong><font size="4">对于第一代增强,可以用以下方法查找增强:</font></strong><br /> 打开欲增强的程序,点击工具栏上的“Display Object List”按钮,选择Subroutines,查找以“UserExit”开头的子程序,根据子程序前面的注释文档来查找用户出口<br /> <br /> <font size="4"><strong>对于第二代增强,可以用以下方法查找增强<br /> </strong></font><br /> 用户增强通常包括下面3类,顾名思义,就是增强SAP的可能没有提供的功能(通过后台配置也不能实现). <br /> 1.E Enhancement exits :就是常说User_exit (用户出口) <br /> 使用SE37搜索EXIT*的函数大都是做exit用的,通常里面预包含了一个Z开头 <br /> 的程序. SE16查询TFDIR(函数表)输入EXIT*也可. <br /> 2.C GUI codes( GUI接口增强) <br /> 3. S Subscreens (屏幕增强) <br /> Enhancement在表MODSAP可看到,而TFDIR字段 MAND(值为C表示此出口函数被激活).使用SMOD(CMOD)当然可激活exit function,有时候一时难以查询到相关Enhancement时可使用下面程序将出口函数激活. <br /> <br /> REPORT Zactexitfun . <br /> data ztfdir like tfdir . <br /> * select single * from tfdir into ztfdir <br /> * where FUNCNAME = <br /> * 'EXIT_SAPMM06E_013'. <br /> * ztfdir-MAND = 'C' . <br /> * update tfdir from ztfdir. <br /> * 将EXIT_SAPMM06E_013换成实际所需exit函数名 <br /> update tfdir set MAND = 'C'. <br /> where FUNcname = 'EXIT_SAPMM06E_013'. <br /> <br /> ***当然也可SE16:MODSAP表enhancement输入EXIT_SAPMM06E_013然后得到enhancement name MM06E005后使用SMOD测试激活exit函数. <br /> 增强相关函数和表格 <br /> Function: <br /> [1].DYNP_VALUES_READ <br /> [2]. MODX_ALL_ACTIVE_MENUENTRIES(菜单增强) <br /> [3].MODX_FUNCTION_ACTIVE_CHECK(出口函数增强) <br /> 由于读者可能接触user exit最多,除了附录光盘有个查找ZFINDEXIT的程序外(有些exit使用它并不能找到),另一个直接有效的方法就是使用这个函数,SE37设好断点后执行tcode如其有exit就会调用此函数. <br /> [4].MODX_MENUENTRY_ACTIVE_CHECK(菜单增强) <br /> [5].MODX_SUBSCREEN_ACTIVE_CHECK(屏幕增强) <br /> Table: <br /> [1]. TFDIR->function module table <br /> [2]. MODSAP->sap enhancement table <br /> [3]. TSDIR->Dynpro Areas CALL CUSTOMER SUBSCREEN(屏幕增强) <br /> [4]. CUATEXTS-> GUI Interface: Menu Texts Changed(GUI 菜单文本增强) <br /> <br /> ***注意,为了确保一个出口被真正应用,必须同时激活相关程序(SE38)和出口函数(SMOD|CMOD,反正就是要保证tfdir-mandt=’C’,用程序也可.) <br /> <br /> <br /> <font size="4"><strong>对于第三代增强,详见<br /> <font face="Arial"><a href="http://blog.csdn.net/opparts/archive/2005/08/17/456467.aspx">http://blog.csdn.net/opparts/archive/2005/08/17/456467.aspx</a></font><br /> </strong></font></p>...
查看全文
发表于:2007-05-15 ┆
阅读(128)
┆
评论(0)
如何删除 Outlook 中的重复邮件?
最近到旺旺集团做项目,所有的通知和文档都是通过Exchange服务器发送,于是我的邮件客户端从 Outlook Express 改到 Outlook 2003 但从 Outlook Express 导入邮件后 Outlook 又自作聪明地从 Pop3 邮件服务器下载了一遍所有的邮件,于是我的邮箱就混乱不堪,多出了几百封重复的邮件。本来想用邮件规则来删除重复的邮件,结果发现不行,上网查了查怎么删除 Outlook 中的重复邮件,原来有很多插件可以干这个事情:<br /> <br /> For Outlook<br /> <a target="_blank" href="http://www.vaita.com/odir.asp">Outlook Duplicate Items Remover 1.2</a> <br /> 英文版,我试了不错,不但可以删重复邮件,其他如会议、联系人、日程安排都能删除重复项,更关键的是这个软件是免费的。<br /> <br /> <a target="_blank" href="http://www.mapilab.com/outlook/duplicate_remover/">Duplicate Email Remover</a><br /> 英文版,收费软件,试了下可以自己定义比较规则,但未注册只能删除10封邮件<br /> <br /> <a target="_blank" href="http://www.mapilab.com/outlook/remove_duplicates/">Duplicates Remover for Outlook</a><br /> 英文版,收费软件,试了下可以自己定义比较规则,但未注册只能删除10封邮件,除了能删邮件还能删会议、联系人、日程安排等<br /> <br /> <a target="_blank" href="http://www.nomoredupes.com/default.aspx">NoMoreDupes for Outlook</a><br /> 英文版,收费软件,15天试用<br /> <br /> <a target="_blank" href="http://rc30.jp/~ando/RepMailDel110.lzh">RepMailDel110.lzh</a><br /> 免费,日文版,只能用于 Outlook 2003。虽然不能设置重复的判断条件,但缺省的判断比较确,而且比较删除的速度快。在中文环境下有些乱码,但功能正常。详细还可参看<a href="http://www.users.gr.jp/blogs/ando/archive/2005/03/23/10512.aspx">作者的Blog</a><br /> (使用方法:打开 Outlook 2003 ,“工具”菜单-〉“选项”子菜单-〉“其他”标签-〉“高级选项”按钮-〉“COM 加载项”按钮-〉“添加”按钮,然后选中下载解压后得到的DLL文件即可。安装成功后在“工具”菜单里会多出一个“重複メール削除”子菜单。)<br /> <br /> For Outlook Express<br /> <a target="_blank" href="http://www.mapilab.com/outlook/">Remove Duplicates from Outlook Express</a><br /> 英文版,收费软件,没试过<br /> <br /> <a target="_blank" href="http://www.52z.com/Down/17777.html">Delete Duplicates for Outlook Express</a><br /> 免费且有汉化版,试了下还可以,能简单的定义比较规则,不过速度有些慢<br />...
查看全文
发表于:2007-05-14 ┆
阅读(208)
┆
评论(0)
SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较 - MSSQL
SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值。 <br /> <br /> IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。<br /> @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。<br /> SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值<br /> <br /> SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。<br /> <br /> 例如,有两个表 T1 和 T2,在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行。此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。<br /> <br /> 假设 T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。<br /> <br /> @@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入 T2 中的值。<br /> <br /> SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。<br /> <br /> 而IDENT_CURRENT('T1') 和 IDENT_CURRENT('T2') 返回的值分别是这两个表最后自增的值。<br /> <br /> 有人做了实验:40条本地线程,40+40条远程线程同时并发测试,插入1200W行 ,得出的结论是: <br /> 1.在典型的级联应用中.不能用@@IDENTITY,在CII850,256M SD的机器上1W多行时就会并发冲突.在P42.8C,512M DDR上,才6000多行时就并发冲突. <br /> 2.SCOPE_IDENTITY()是绝对可靠的,可以用在存储过程中,连触发器也不用建,没并发冲突 <br /> <br /> 原文:<font face="Arial"><a href="http://blog.joycode.com/ghj/archive/2004/03/21/16745.aspx">http://blog.joycode.com/ghj/archive/2004/03/21/16745.aspx</a></font>...
查看全文
发表于:2007-04-29 ┆
阅读(101)
┆
评论(0)
内表行数统计方法
以下是统计内表行数常用的三种方法,如下: <br /> <br /> 1.LOOP AT it_itab. <br /> <br /> g_lines2 = g_lines2 + 1. <br /> <br /> ENDLOOP. <br /> <br /> 该方法是通过循环内部表自己累加行数。 <br /> <br /> 2.DESCRIBE TABLE it_itab LINES g_lines1 . 该语句通过获得内部表的属性,将内部表行数赋值给 g_lines1 , g_lines1 为I型变量。 <br /> <br /> 3. g_lines3 = lines( it_itab ). 使用函数来计算内部表行数。 <br /> <br /> 以上三种方法中,第一种方法不推荐使用,推荐使用后两种方法。 <br /> <br /> 代码示例:<br /> <br /> REPORT zmauricetest. <br /> <br /> TABLES vbak. <br /> DATA: g_lines1 TYPE i, <br /> g_lines2 TYPE i VALUE 0, <br /> g_lines3 TYPE i, <br /> g_date TYPE d VALUE '19970121', <br /> g_tabix LIKE sy-tabix. <br /> <br /> DATA it_tab LIKE vbak OCCURS 0 WITH HEADER LINE. <br /> <br /> SELECT * FROM vbak INTO TABLE it_tab. <br /> <br /> LOOP AT it_tab. <br /> g_tabix = sy-tabix. <br /> <br /> IF it_tab-audat <> g_date. <br /> DELETE it_tab INDEX g_tabix. <br /> CONTINUE. <br /> ENDIF. <br /> <br /> g_lines2 = g_lines2 + 1. <br /> WRITE:/ it_tab-vbeln,it_tab-audat. <br /> <br /> ENDLOOP. <br /> <br /> DESCRIBE TABLE it_tab LINES g_lines1. <br /> <br /> g_lines3 = LINES( it_tab ). <br /> <br /> WRITE :/ g_lines1,g_lines2,g_lines3. <br />...
查看全文
发表于:2007-04-27 ┆
阅读(93)
┆
评论(0)
用 ws_download 和 gui_download 输出中文文本
用 <font face="Arial">ws_download 和 gui_download </font>使用默认参数输出内表时,若内表中有中文则会显示乱码,此时应该设置Codepage参数,'8400' 表示 GB2312 代码页 '4100' 表示 UTF-8...
查看全文
发表于:2007-04-27 ┆
阅读(121)
┆
评论(0)
版权所有 ChinaUnix.net 页面生成时间:0.02265