Maurice's blog - 因为专注,所以专业...
自我介绍
切换风格
订阅我的Blog
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
博客统计...
网站链接...
资源
===========================================================
search help for download directory path
===========================================================

在SELECTION-SCREEN中的源代碼
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_path LIKE rlgrap-filename DEFAULT 'C:'. " Download file path(On-Line)
SELECTION-SCREEN END OF BLOCK b1.


在AT SELECTION-SCREEN中的源代碼
***** F4 for search help for download directory path **************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
PERFORM get_download_path CHANGING p_path.

FORM get_download_path CHANGING p_file.
DATA: l_path TYPE string.
DATA: l_len TYPE i.

CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'Select Your Folder'
initial_folder = 'C:'
CHANGING
selected_folder = l_path
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
MOVE l_path TO p_file.
l_len = STRLEN( l_path ).
IF l_len > 3.
CONCATENATE p_file '' INTO p_file.
ENDIF.

ENDFORM. " download directory path


qiujun 发表于:2007.07.26 21:26 ::分类: ( ABAP ) ::阅读:(212次) :: 评论 (0) :: 引用 (0)
===========================================================
Upload excel file 到 INTERNAL TABLE 的方法
===========================================================

FORM upload_data .
DATA:w_tab LIKE it_excel.
DATA:lt_excel TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
DATA:l_tabix1 LIKE sy-tabix.

FIELD-SYMBOLS:<field> TYPE ANY.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 2
i_end_col = 16
i_end_row = 5000
TABLES
intern = lt_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE s398 WITH 'Error occurs when upload Excel file!'.
STOP.
ENDIF.

*&SORT lt_intern BY row col.
LOOP AT lt_excel.
AT NEW row.
l_tabix1 = sy-tabix.
ENDAT.

AT END OF row.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE w_tab TO <field>.
IF sy-subrc = 0.
READ TABLE lt_excel INDEX l_tabix1.
IF sy-subrc = 0 AND lt_excel-col = sy-index.
TRANSLATE lt_excel-value TO UPPER CASE.
<field> = lt_excel-value.
ADD 1 TO l_tabix1.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
APPEND w_tab TO it_excel.
CLEAR w_tab.
ENDAT.
ENDLOOP.
ENDFORM. " upload_data


qiujun 发表于:2007.07.23 15:58 ::分类: ( ABAP ) ::阅读:(348次) :: 评论 (0) :: 引用 (0)
===========================================================
中央台的公益广告
===========================================================
竹,竹有节,有千节,虽清瘦,却挺拔,风过不折,雨过不浊,千磨万击仍坚韧。君当如竹,坚韧不拔显气节。

兰,兰生空谷,清艳含娇,寂寞吐芬芳,不以色香自炫,不因无人不芳,岁岁生空谷,留得世人香。君当如兰,默默奉献显精神。

梅,遇寒而发,不肯结春缘。风霜助香味,寒雪显傲骨。君当如梅,自强不息。

菊,君当如菊,洁身自好,寒芳自赏。
qiujun 发表于:2007.07.22 12:20 ::分类: ( 杂事、开心事 ) ::阅读:(271次) :: 评论 (2) :: 引用 (0)
===========================================================
DATE 相關的Function
===========================================================

1、年月日相加減
Date +/- year/month/day (into the future/past)
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = l_date
days = '00'
months = p_month
signum = '-'
years = '00'
IMPORTING
calc_date = l_date.
date為輸入的日期,months要加或減的月份,也可以用days or years,signum為咚惴?..

2、得到本日是第幾周
Returns week for a date
*---> get week number
CALL FUNCTION 'DATE_GET_WEEK'
EXPORTING
date = in_budat
IMPORTING
week = l_week
EXCEPTIONS
date_invalid = 1
OTHERS = 2.

3、得到本周的第一天
Return first day for a week
*---> get first day of week
CALL FUNCTION 'WEEK_GET_FIRST_DAY'
EXPORTING
week = l_week
IMPORTING
date = it_week-week_dt
EXCEPTIONS
week_invalid = 1
OTHERS = 2.

4、得到本日是本星期的第幾天
CALL FUNCTION 'DAY_IN_WEEK'
EXPORTING
datum = p_date1
IMPORTING
wotnr = l_day.

5、Check 轉入日期是否正確
Date plausibility check
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = it_excel-redat
EXCEPTIONS
plausibility_check_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
it_err-ecode = '10'.
it_err-evalue = it_excel-redat.
it_err-ereason = 'Release Date is not valid'.
APPEND it_err.
endif.


qiujun 发表于:2007.07.19 15:06 ::分类: ( ABAP ) ::阅读:(294次) :: 评论 (1) :: 引用 (0)
===========================================================
要成为SAP顾问的要点[转]
===========================================================
作为一个高级SAP 咨询顾问,你必须了解SAP 的内部交叉功能性,因为SAP 是一个集成的软件包和ERP 。你可以主要关注SD 、MM 和FI 模块。然而,你必须熟悉其他模块,如PP 和HR/角色,因为SAP和其他模块有交叉功能性。如果你想成为应用咨询顾问,我建议你研究一下SAP内部的经营流程。你可以通过“经营导航”来开始。然后,学习IMG(客户化SAP)。你应该能定制SD、MM和FI模块。然后学习AB AP课程用于编程,因为要用它们来进行数据转换/接口操作(BDC)、数据字典、编写报告以及对话编程。如果你是一位EDI专家,可以学习IDOC/EDI和ALE课程。为了处理EDI还要学习经营工作流。因特网能够非常好地支持SD和MM 。如果你想要成为一个基础咨询顾问,就应学习BASIS课程,并熟悉系统管理、修正传递系统(工作台组织者)、安全/认证、CCMS以及ORACLE/ INFORMIX/SQL 服务器。应该熟悉R/3 的实例参数和所有的数据库、Windows NT 和UNIX核心参数。你还应该学习如何做性能分析和调试。

1、首先要有SAP的环境,IDES很好,没有装一套。
2、有SAP的顾问教材,有很多例题答案,学习很实用,
3、有SAP的帮助文档,这个一定要。
4、SAP的顾问教材里面的例题是IDES的环境,按顾问教材上说在IDES中一定能做对
 查看全文
qiujun 发表于:2007.07.19 14:55 ::分类: ( SAP Overview ) ::阅读:(1269次) :: 评论 (5) :: 引用 (0)
===========================================================
内表(internal table)和工作区(work area)的区别
===========================================================

ABAP/4的Internal Table如同其他语言的数组结构,在操作上可以有复制,删除,新增等功能,可以存很多条记录,并且ABAP的这种用法,对行数没什么限制。
WORK AREA就是其他语言的结构,象自定义的一个类型一样,但一旦创建一个Internal Table之后,WORK AREA就成了外界跟Intertal Table的交流口,每条记录的进入和取出都得通过它。并且在清除它们的时候要分开来清除。

要用 MODIFY 语句更改行 ,请使用:
语法
MODIFY <itab> [FROM <wa>] [INDEX <idx>].
FROM 选项中指定 的工作区域 <wa> 代替 <itab> 中的行。如 果表格有表 头行,可以 忽略 FROM 选项。这样 ,表格工作 区域就代替 行。
如果使用 INDEX 选项,则新 行代替索引 为 <idx> 的现有行。 如果替换成 功,则将 SY-SUBRC 设置为0。 如果内表包 含的行少于 <idx>, 则不更改任 何行并且 SY-SUBRC 包含4。
如果使用没 有 INDEX 选项的 MODIFY 语句,则系 统只能在 LOOP - ENDLOOP 块中通过更 改当前行( 例如由 SY-TABIX 返回其索引 的行)来处 理它。
modify 是用来更新内表的!


qiujun 发表于:2007.07.19 14:52 ::分类: ( ABAP ) ::阅读:(642次) :: 评论 (1) :: 引用 (0)
===========================================================
簡單的RCF Function
===========================================================

作用:輸入SO和SO的日期得到SO的相關數據後,把數據轉入內表...

TABLES項IT_SODATA LIKE ZSDTEST_MAURICE 接數據到內表ZSDTEST_MAURICE為StructureS_VBELN like TVARVCS_ERDAT like TVARVC

EXCEPTIONS項
NODATAFOUND There are no data fount
NODATE Not date

程式代碼:

 查看全文

qiujun 发表于:2007.07.18 11:31 ::分类: ( ABAP ) ::阅读:(385次) :: 评论 (0) :: 引用 (0)
===========================================================
Find User-exit and BADIs
===========================================================

REPORT z_barry_find_exit_badi NO STANDARD PAGE HEADING .
TABLES:tstc,tadir,modsapt,modact,trdir,tfdir,enlfdir,sxs_attrt,tstct.
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.
PARAMETERS : p_tcode LIKE tstc-tcode,
p_pgmna LIKE tstc-pgmna .
DATA wa_tadir TYPE tadir.

START-OF-SELECTION.
IF NOT p_tcode IS INITIAL.
SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.
ELSEIF NOT p_pgmna IS INITIAL.
tstc-pgmna = p_pgmna.
ENDIF.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'PROG'
AND obj_name = tstc-pgmna.
MOVE : tadir-devclass TO v_devclass.
IF sy-subrc NE 0.
SELECT SINGLE * FROM trdir
WHERE name = tstc-pgmna.
IF trdir-subc EQ 'F'.
SELECT SINGLE * FROM tfdir
WHERE pname = tstc-pgmna.
SELECT SINGLE * FROM enlfdir
WHERE funcname = tfdir-funcname.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name EQ enlfdir-area.
MOVE : tadir-devclass TO v_devclass.
ENDIF.
ENDIF.

 查看全文
qiujun 发表于:2007.07.11 20:54 ::分类: ( ABAP ) ::阅读:(347次) :: 评论 (0) :: 引用 (0)
===========================================================
女友升级为老婆的时候发生的BUG
===========================================================

亲爱的技术支持:

我急需您的帮助。我最近将“女朋友7.0”升级到“妻子1.0”,发现这个新程序意外地启动了孩子生产程序,而且占用了大量的空间和珍贵的资源。这在产品的使用手册中没有提到。此外“妻子1.0”自动将自己安装到其他的所有的程序中,它随系统同时启动,监控整个系统的状态。“男人夜出2.5”和“高尔夫5.3”无法再运行,一旦运行该程序系统即行崩溃。试图运行“周日足球6.3”经常失败,而“周六购物7.1”却代之运行。看来我无法保留“妻子1.0”,因为它和我喜欢运行的任何程序都不相容。我打算回到“女朋友7.0”,可是这个程序又无法卸载。

请您帮帮我吧!

回信:

亲爱的用户:

这是个很普通的问题,产生于你对基本原理的不了解。

很多的男人将“女朋友7.0”升级到“妻子1.0”,以为“妻子1.0”是一个“实用与娱乐程序”。然而“妻子1.0”却是个操作系统,是被设计用来运行所有程序的。你不可能清除“妻子1.0”,也不可能回到“女朋友7.0”,因为“妻子1.0”的设计中不具有这个功能,无论是卸载、删除或是清除已经安装在系统中的这些程序文件,都是不可能的。

有些人曾试图安装“女朋友8.0”或者“妻子2.0”,结果是产生了更多的问题(参见手册中的赡养费/孩子的养育/律师费用)。我安装过“妻子1.0”,我建议你保持现在的安装状态,妥善解决遇到的困难。

当任何错误或问题出现的时候,不论你认为是什么原因引起的,你必须运行“C:\我道歉”程序,并且避免使用“退出键”。必要时可能需要运行“C:\我道歉”多次,希望最终能使*作系统恢复到初始状态。

“妻子1.0”虽然是一个需要高保养的程序,但同时对人可能是非常有益的。充分地利用它,需要买些额外的软件比如“鲜花2.0”和“巧克力5.0”。

不要在任何情况下安装“秘书(短裙版)”,因为“妻子1.0”不支持这种程序,而且系统多数时候肯定会崩溃。

建议使用外挂"情人2.05"版本,可同时运行但不保证稳定性。


qiujun 发表于:2007.07.07 09:40 ::分类: ( 杂事、开心事 ) ::阅读:(737次) :: 评论 (1) :: 引用 (0)
===========================================================
BAPI的简单实现步骤
===========================================================

一,创建Function Module

1,在SM11,创建需要的structure

2,在SE80,建Function group

3,在SE37,创建Function Module

Note:一个Function Group只能包含一个BAPI;参数传值;必须有有一个BAPIRETURN类型的EXPORT参数

二,封装

1,在SWO1,建Object Type

2,把Function Module作为一个Method加入,utilities->API Methods->Add Method

3,release Object和Module。使在BAPI Browser 中可以看到。也就是外部能够调用。

三,调用

1,如在另一系统中用ABAP调用,先在SM59中建RFC联到有BAPI的R/3,(ZGOGO)

在SE38的程序中调用,Call Function "ZBAPIXXXXX" DESTINATION ZGOGO EXPORTING ...

2,如用JAVA调用

引入包;(不一定要用IBM的)

import com.sap.rfc.*;

import com.sap.rfc.exception.*;

import com.ibm.sap.bapi.*;

import com.ibm.sap.bapi.generated.*;

建立连接;调用。。。(See CALL_BAPI.java)


qiujun 发表于:2007.07.07 08:44 ::分类: ( ABAP ) ::阅读:(718次) :: 评论 (0) :: 引用 (0)
===========================================================
SAP常用BAPI函数
===========================================================

BAPI_ALE_MODEL_GET
BAPI_BARCODE_SENDLIST
BAPI_ANSWER_READMULTIPLE
BAPI_APPCOMP_READMULTIPLE
BAPI_PROCDIA_READMULTIPLE
BAPI_PROCDIA_WRITEMULTIPLE
BAPI_DIAVAR_READMULTIPLE
BAPI_DIAVAR_WRITEMULTIPLE
BAPI_PROCEVENT_READMULTIPLE
BAPI_PROCEVENT_WRITEMULTIPLE
BAPI_HIERFILT_READMULTIPLE
BAPI_HIERFILT_WRITEMULTIPLE
BAPI_PROCFUNCT_READMULTIPLE
BAPI_PROCFUNCT_WRITEMULTIPLE
BAPI_PROCGROUP_READMULTIPLE
BAPI_PROCGROUP_WRITEMULTIPLE
BAPI_PROCCOMP_READMULTIPLE
BAPI_PROCVAR_READMULTIPLE
BAPI_CUSPRO_WRITESCOPE
BAPI_QUESTION_READMULTIPLE
BAPI_HIERSTRUCT_READMULTIPLE
BAPI_HIERSTRUCT_WRITEMULTIPLE
BAPI_CLASS_CHANGE
BAPI_CLASS_CREATE
BAPI_CLASS_DELETE
BAPI_CLASS_EXISTENCECHECK
BAPI_CLASS_GET_CHARACTERISTICS
BAPI_CLASS_GET_CLASSIFICATIONS
BAPI_CLASS_GETDETAIL
BAPI_CLASS_GETLIST
BAPI_CLASS_GETSTATUS

 查看全文
qiujun 发表于:2007.07.07 08:43 ::分类: ( ABAP ) ::阅读:(980次) :: 评论 (0) :: 引用 (0)
===========================================================
SAP NetWeaver集成化技术平台解决方案
===========================================================

一、方案产生背景

面对日益复杂的企业网络、日新月异的市场动态,商务需求与商务目标不断变化,企业需要能快速适应变化的技术平台,可与其他技术实现互操作,建立灵活的新型业务流程,在全面集成企业内、外部所有资源的同时还必须有效控制总体拥有成本。SAP能够通过企业服务体系(Enterprise Services Architecture)和SAP NetWeaver,为企业的资产带来杠杆效益,使企业轻松适应变化,迅速成长,并保持低成本。

二、SAP NetWeaver解决方案介绍

世界领先的集成化技术平台SAP NetWeaver,可以帮助企业跨越技术和机构组织的界限,实现人员、信息和业务流程的集成,其设计实现了与Microsoft.NET、Sun 的J2EE 和IBM WebSphere 的全面互操作,并通过这些技术得到进一步扩展。SAP NetWeaver 是mySAP Business Suite 和SAP xAPPs 的技术基础,确保最高的可靠性、安全性和可扩展性,可以支持企业的关键业务流程正常运行。这种基于Web 的业务平台提供了一整套全面而且紧密集成的功能,通过预先配置的商业内容,降低对定制集成的需求及总体拥有成本(TCO)。

 查看全文
qiujun 发表于:2007.07.02 23:50 ::分类: ( SAP Overview ) ::阅读:(289次) :: 评论 (0) :: 引用 (0)