2010 年 03 月 09日, 星期二

调用bapi BAPI_ACC_DOCUMENT_POST业务事务使用限制范围

通过和华师傅交流 ,发现预制凭证不能使用上面的bapi来实现

调用bapi业务事务使用限制范围

* Sachkontenbuchung
WHEN 'RFBU'.

* Faktura: Debitorzeile Pflicht
WHEN 'SD00'.
CHECK gs_bapi_acchd-obj_type NE 'ACE'. "note 601778
IF acc_rec[] IS INITIAL AND
r_currency = 'X'.

PERFORM append_msg_to_return
USING 'E' "TYPE
'RW' "ID
'611' "NUMBER
'ACCOUNTRECEIVABLE' "MESSAGE_ONE
r_glvor "MESSAGE_TWO
'ACCOUNTRECEIVABLE' "PARAMETER
' ' "r_tabix "ROW
'BUS_ACT'. "FIELD
ENDIF.

* Warenbewegungen
WHEN 'RMWA' OR 'RMWE' OR 'RMWF' OR 'RMWI'
OR 'RMWL' OR 'RMWQ' OR 'RMWU'.

* Rechnungseingang: Kreditorzeile Pflicht
WHEN 'RMRP'.
IF acc_pay[] IS INITIAL AND
r_currency = 'X'.

PERFORM append_msg_to_return
USING 'E' "TYPE
'RW' "ID
'611' "NUMBER
'ACCOUNTPAYABLE' "MESSAGE_ONE
r_glvor "MESSAGE_TWO
'ACCOUNTPAYABLE' "PARAMETER
' ' "r_tabix "ROW
'BUS_ACT'. "FIELD
ENDIF.

* Geschäftsvorfall nicht unterstützt
WHEN OTHERS.
PERFORM append_msg_to_return
USING 'E' "TYPE
'RW' "ID
'613' "NUMBER
r_glvor "MESSAGE_ONE
'DOCUMENTHEADER' "MESSAGE_TWO
'DOCUMENTHEADER' "PARAMETER
' ' "r_tabix "ROW
'BUS_ACT'. "FIELD


ultraluck 发表于:2010.03.09 15:51 ::分类: ( sap学习 ) ::阅读:(17次) :: Permanent link :: 引用 (0)

Business Transaction 业务事务

业务事务,在做凭证导入时发现有个字段要必填,查找这个字段与科目对应关系发现这个是和事务码相关的

he data from the different SAP application areas is subdivided into transactions according to business views.

If an application calls up direct posting in accounting, data is transferred with an appropriate transaction. Depending on the transaction, you can process this transferred data in different ways (for example, with ledger selection, field movement).

也就是说,通过不同的module或者途径post到SAP-FI的document,通过此字段来区分。比如通过SD模块的billing,则此字段为SD00

那么我们如何知道各种各样的business transaction是什么意思呢?

可以通过T022T这个表查询到不同语言的解释。暂时我还不知道更好的办法。

 查看全文
ultraluck 发表于:2010.03.09 15:27 ::分类: ( sap学习 ) ::阅读:(19次) :: Permanent link :: 引用 (0)

2010 年 02 月 01日, 星期一

bdc,lsmw,bapi都没有找到

遇到一个很奇怪的问题,bdc,lsmw,bapi都没有找到,事务码是clw1,看标准程序发现录入屏幕是通过调用函数来实现的,结果不能使用bdc,lsmw,没有找到对应的bapi。
ultraluck 发表于:2010.02.01 11:08 ::分类: ( sap学习 ) ::阅读:(80次) :: Permanent link :: 引用 (0)

2009 年 08 月 12日, 星期三

SD--利用RVV05ivb更新SD的单据索引器 【转】

SD--利用RVV05ivb更新SD的单据索引器

 查看全文
ultraluck 发表于:2009.08.12 20:42 ::分类: ( sap学习 ) ::阅读:(78次) :: Permanent link :: 引用 (0)

SAP FTP相关

SAP FTP相关

SAP FTP相关
以下是SAP 标准FTP程序。
在使用标准 functions前,确保已经安装SAPFTP.EXE。请先使用程序:RSFTP005 进行SAPFTP 检查。

RSFTP001 - SAPFTP 版本检查
RSFTP002 - 执行 FTP 命令
RSFTP003 - 测试
RSFTP004 - FTP 复制
RSFTP005 - SAPFTP 检查
RSFTP006 - FTP 命令清单
RSFTP007 - TEST FB:FTP_SERVER_TO_R3 / FTP_R3_TO_SERVER 读取FTP数据到R3 / R3数据写入FTP。
RSFTP008 - TEST FB:FTP_CLIENT_TO_R3 / FTP_R3_TO_CLIENT 读取FTP数据到客户端 / 客户端数据写入FTP。

相关的 SAP function module: FTP*。
FTP_CONNECT 连接到FTP。
FTP_COMMAND 执行 FTP 命令。
FTP_DISCONNECT 断开FTP连接
FTP_R3_TO_SERVER 将内表数据写入FTP文件中。
FTP_SERVER_TO_R3 从FTP将文件读取到内表。

FTP程序大致流程为: FTP_CONNECT ,FTP_COMMAND ,FTP_DISCONNECT。
FTP_COMMAND 中输入标准的FTP命令。如:更改 FTP 目录 "cd dir", 更改本地目录 "lcd localdir",上传文件"put file"。

具体程序实现如下:

REPORT ZPM_IFSCADA MESSAGE-ID I4.


DATA:BEGIN OF SCADA OCCURS 0,
BDZ TYPE CHAR32,
DY TYPE CHAR8,
JG TYPE CHAR8,
JGMC TYPE CHAR64,
LNAME TYPE CHAR8,
VALUE TYPE CHAR30,
END OF SCADA.

DATA: BEGIN OF COMMANDS OCCURS 0,
CMD(100) TYPE C,
END OF COMMANDS.
DATA:HANDLE TYPE I.

DATA: BEGIN OF TAB OCCURS 100,
LINE(255),
END OF TAB.

DATA: BEGIN OF RESULT OCCURS 0,
LINE(200) TYPE C,
END OF RESULT.

DATA: W_80C(80) TYPE C,
W_PATH(80) TYPE C,
CNS_DIR(60) TYPE C .
DATA: COM(120) .
DATA: FTPFILE LIKE RLGRAP-FILENAME.

DATA:KEY TYPE I VALUE 26101957,
SLEN TYPE I.

DATA: ITABOUT(1200) TYPE C OCCURS 0 WITH HEADER LINE.
*FTP服务器设置
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
*服务器
PARAMETERS:P_HOST(16) TYPE C DEFAULT '192.168.1.10' LOWER CASE OBLIGATORY ,
*服务器文件路径
P_PATH LIKE RLGRAP-FILENAME LOWER CASE OBLIGATORY DEFAULT '/'. "'/realdata/'.
SELECTION-SCREEN END OF BLOCK BLK1.
*FTP服务器登录用户信息
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
PARAMETERS:P_USER(20) TYPE C LOWER CASE,
P_PASS(20) TYPE C LOWER CASE.
SELECTION-SCREEN END OF BLOCK BLK2.
*SAP服务器设置
SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-003.
*SAP服务器文件路径(临时存放文件)
PARAMETERS:S_PATH LIKE RLGRAP-FILENAME LOWER CASE OBLIGATORY
DEFAULT '/usr/sap/trans/public/scada/'.
SELECTION-SCREEN END OF BLOCK BLK3.

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PASS'.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

START-OF-SELECTION.

DEFINE UPLOAD_DATA_FROM_SAP.
CLEAR &2. REFRESH &2.
OPEN DATASET &1 FOR INPUT IN TEXT MODE ENCODING NON-UNICODE.

IF SY-SUBRC = 0.
DO.
READ DATASET &1 INTO &2.
IF SY-SUBRC <> 0.
EXIT.
ELSE.
APPEND &2.
CLEAR &2.
ENDIF.
ENDDO.
CLOSE DATASET &1.
ENDIF.
END-OF-DEFINITION.

PERFORM GET_FTP_FILE.
PERFORM FORMAT_DATA.
PERFORM WRITE_DATA.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form GET_FTP_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_FTP_FILE.
*&CMD1
CLEAR:COMMANDS.
REFRESH COMMANDS.
COMMANDS-CMD = 'ascii'.
APPEND COMMANDS.

*&CMD2 切换本地工作目录
CONCATENATE 'lcd' S_PATH INTO W_80C SEPARATED BY ' '.
COMMANDS-CMD = W_80C.
APPEND COMMANDS.
CLEAR W_80C.

*&CMD3 切换FTP服务器工作目录
CONCATENATE 'cd' P_PATH INTO W_80C SEPARATED BY ' ' .
COMMANDS-CMD = W_80C.
APPEND COMMANDS.
CLEAR W_80C.

*获取遥测数据
CONCATENATE 'get' 'zsmis_yc.txt' INTO W_80C SEPARATED BY ' ' .
COMMANDS-CMD = W_80C.
APPEND COMMANDS.
CLEAR W_80C.
*获取遥信数据
CONCATENATE 'get' 'zsmis_yx.txt' INTO W_80C SEPARATED BY ' ' .
COMMANDS-CMD = W_80C.
APPEND COMMANDS.
CLEAR W_80C.


SET EXTENDED CHECK OFF.
SLEN = STRLEN( P_PASS ).

*将密码转换成SAP内部码
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
SOURCE = P_PASS
SOURCELEN = SLEN
KEY = KEY
IMPORTING
DESTINATION = P_PASS.

CALL FUNCTION 'FTP_CONNECT'
EXPORTING
USER = P_USER
PASSWORD = P_PASS
HOST = P_HOST
RFC_DESTINATION = 'SAPFTPA'
IMPORTING
HANDLE = HANDLE.
IF HANDLE EQ 0.
MESSAGE I651 WITH '连接FTP服务器失败!'.
STOP.
ENDIF.

LOOP AT COMMANDS.
IF COMMANDS-CMD NE ' '.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
HANDLE = HANDLE
COMMAND = COMMANDS-CMD
TABLES
DATA = RESULT
EXCEPTIONS
COMMAND_ERROR = 1
TCPIP_ERROR = 2.

REFRESH RESULT.
ENDIF.
ENDLOOP.


CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
HANDLE = HANDLE.

REFRESH TAB.
CLEAR:CNS_DIR.
CNS_DIR = S_PATH.
CONCATENATE 'dir' CNS_DIR INTO COM SEPARATED BY SPACE.
SET BLANK LINES ON.
CALL 'SYSTEM' ID 'COMMAND' FIELD COM
ID 'TAB' FIELD TAB-*sys*.

* READ TABLE TAB INDEX 1.
* IF SY-SUBRC = 0.
* FTPFILE = TAB-LINE.
FTPFILE = 'zsmis_yc.txt'.
CLEAR:ITABOUT,CNS_DIR.
REFRESH:ITABOUT.
CONCATENATE S_PATH FTPFILE INTO CNS_DIR.

UPLOAD_DATA_FROM_SAP CNS_DIR ITABOUT.
CLOSE DATASET CNS_DIR.
DELETE DATASET CNS_DIR.
* ENDIF.
ENDFORM. "GET_FTP_FILE

*&---------------------------------------------------------------------*
*& Form FORMAT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FORMAT_DATA.
DATA: FM_NAME(1000) TYPE C.
CLEAR:SCADA.REFRESH:SCADA.
* LOOP AT ITABOUT INTO FM_NAME.
* SCADA-BDZ = FM_NAME+0(32).
* SCADA-DY = FM_NAME+33(8).
* SCADA-JG = FM_NAME+42(8).
* SCADA-JGMC = FM_NAME+51(64).
* SCADA-LNAME = FM_NAME+116(8).
* SCADA-VALUE = FM_NAME+125(30).
* APPEND SCADA.
* CLEAR SCADA.
* CLEAR FM_NAME.
* ENDLOOP.

LOOP AT ITABOUT INTO FM_NAME.
CONDENSE FM_NAME.
SPLIT FM_NAME AT SPACE INTO SCADA-BDZ SCADA-DY SCADA-JG SCADA-JGMC SCADA-LNAME SCADA-VALUE.
IF SY-SUBRC = 0.
SHIFT SCADA-DY BY 1 PLACES.
SHIFT SCADA-JG BY 1 PLACES.
SHIFT SCADA-JGMC BY 1 PLACES.
SHIFT SCADA-LNAME BY 1 PLACES.
SHIFT SCADA-VALUE BY 1 PLACES.
APPEND SCADA.
CLEAR SCADA.
ENDIF.
ENDLOOP.

ENDFORM. "GET_FTP_FILE
*&---------------------------------------------------------------------*
*& Form WRITE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM WRITE_DATA.
WRITE:/(32) '名称',(8) '等级',(8) '编号',(64) '间隔名称',(8) '量名',(30) '量值' .
ULINE.
LOOP AT ITABOUT.
WRITE:/ ITABOUT.
ENDLOOP.
ULINE.
LOOP AT SCADA.
WRITE:/(32) SCADA-BDZ,(8) SCADA-DY,(8) SCADA-JG,(64) SCADA-JGMC,(8) SCADA-LNAME,(30) SCADA-VALUE.
ENDLOOP.
ENDFORM. "WRITE_DATA


ultraluck 发表于:2009.07.12 18:54 ::分类: ( sap学习 ) ::阅读:(223次) :: 评论 (0) :: 引用 (0)

FTP 語系, 編碼, unicode

FTP 語系, 編碼, unicode

Tommy 碎碎念 : FTP 語系, 編碼, unicode

post by tommy @ 11 八月, 2006 10:42

這個世界上, 有許多不同的文化, 所以也有許多不同的文字. 而在電腦的發展上頭, 對於這些文字的處理, 不同的人有不同的處理方式. 所以, 外表看起來是一樣的字, 因為採用的編碼不同, 在電腦上頭就會出現不同的數字來表示. 反之, 在電腦上頭, 同樣的一組數字, 因為所使用的編碼不同, 在不同的編碼系統上頭, 會代表不同的字.

以我們所使用的繁體中文來說. 在一開始發展時, 就存在不同的編碼. 這些編碼都是用 2 個 bytes 來代表一個中文字. 這時就出現了前面所說的, 同樣的兩個 bytes, 在不同的編碼系統上頭, 各自代表不同的字. 這個情形雖然在相互競爭下, 最後幾乎只剩下 BIG5 編碼這一種還在世上存活. 但是, 就算在繁體中文裡頭, BIG5 取得的最後的勝利, 之前所說的情形就消失了嗎?

可惜, 這世界上, 並不是只有繁體中文一種文字, 還有簡體中文, 日文, 韓文等等系統, 也都是使用 2 個 bytes 來表示它們的文字. 所以, 同樣的一個數字, 你把它當成是繁體中文的編碼來看時, 是某個中文字, 把它當成簡體中文來看時, 又是另一個字. 在目前這樣交流頻繁的國際社會中, 此類編碼不同所造成的問題, 仍然無法解決. 就算能解決所有雙位元組編碼的問題, 在雙位元組編碼與單位元組編碼的系統之間, 仍有類似的衝突發生.

UNICODE 的出現, 就是為了解決這種各國編碼不同所造成的問題, 想要透過一種大家都可以接受的編碼, 來包含各國的文字, 如此, 大家都只要使用一種編碼, 再也沒有這類編碼衝突的問題了.

不 過… 這是一種全新的編碼, 所以… 等於要大家都放棄所有的編碼系統, 等到大家都使用 UNICODE 時, 才能真正的解決問題, 否則, 也不過就是多出一種編碼, 與舊有的一堆編碼仍然相互衝突著. 而且, 目前已經存在的各種文件, 仍有待轉換到新的編碼… 這個編碼系統的轉換, 並不是一個小事, 所以… 就算 UNICODE 已經出現了一段時間, 目前距離大一統的地步, 仍有很大的一段路要走.

這 類的情形, 在 Web 介面上頭, 目前的 browser 都可以很簡單的切換到不同的語系, 使用不同的編碼來看對應的網頁, 且在網頁的規格上頭, 網頁的作者也可以標明這個頁面所使用的編碼系統, 讓 browser 可以使用正確的編碼來觀看網頁, 所以編碼所造成的衝突就少了很多. 所以, 除了有必要在同一個頁面同時出現不同地方的文字, 否則, 使用每個地方特有的編碼, 一樣不會造成問題. 如果有需要同時出現不同地方的文字時, 就必須使用同時包含那些文字的編碼系統就可以. 以目前來說, 就是使用 UTF-8 編碼 (UTF-8 就 UNICODE 編碼的一種…. UNICODE 一樣也有很多編碼, UTF-8, UTF-16… 等等).

但是, 在 FTP 上頭, 就不像 Web 那麼簡單了.

因 為 FTP 的相關 RFC 上頭, 之前都沒有對編碼有所定義, 所以… 在 FTP Server 上頭使用 A 編碼, 那麼, 你的 FTP Client 也必須要使用 A 編碼才能看的懂那個檔名. 所以當你要連線到一個日文的 FTP server 時, 你就必須要在日文的環境下, 才能正常的看到並操作該 server 上頭相同編碼的日文檔名.

所以, 後來就有 RFC-2640 的出現, 提出了在 FTP 傳送檔名的過程中, 可以採用 UTF-8 編碼來傳送. 也就是不管 FTP server 原本用什麼編碼, 在傳送檔名到 FTP client 時, 要轉成 UTF-8, 來傳送. 所以 FTP client 收到的就是 UTF-8 編碼後的檔名. 同樣, 如果 FTP client 送指令給 server 時, 也要使用 UTF-8 編碼來傳送, server 收到後再轉成自己 local 使用的編碼, 來操作該檔案或路徑.

這樣子, 解決了 FTP 上頭編碼的問題了嗎? 可惜並沒有. 這個方法, 只有在 server/client 都使用 UNICODE 時, 才是完美的.

在沒有 RFC-2640 之前:

  • 只有雙方使用相同的編碼時, 才能正常使用.

有了 RFC-2640 之後, 在雙方都支援 RFC-2640 時, 至少多出下列幾種:

  • Server 不使用 UNICODE, Client 使用 UNICODE, 就能正常使用. (如果上傳檔名或目錄, 只能用可以轉換到 Server 所使用的編碼的文字)
  • Server 使用 UNICODE, 但 Client 不使用 UNICODE, 至少可以正常使用 Client 端所使用的編碼可以接受的檔名.
  • 雙方都使用 UNICODE, 則所有的操作都能正常使用.

舉例來說, 在沒有 RFC-2640 之前:

  • Server 如果使用 BIG5, 則, client 也要是 BIG5, 才能看的懂 server 的檔名.

雙方都支援 RFC-2640 時:

  • Server 使用 BIG5, Client 使用 UNICODE, 則 client 可以正常使用 server 上的檔案或路徑. 但是如果 client 上傳或建立一個有不存在於 BIG5 的文字的檔案或路徑時, 可能會造成 server 出現問題.
  • Server 使用 UNICODE, Client 使用 BIG5, 則, Client 看不懂 server 上頭那些無法轉換成 BIG5 的檔名. 只能操作那些可以轉換到 BIG5 的檔案. 至於上傳檔案或建立目錄, 並不會有任何問題, 因為 BIG5 -> UNICODE 的轉換一定可以成功.
  • 雙方都使用 UNICODE, 則不管檔名是那一國的文字, 都可以正常使用.

所以… 當你要抱怨你的 FTP 出現亂碼時, 先研究看看是那兒出現了問題了吧. 這並不是 server 或 client 單方面的問題, 這個問題, 雙方其實都有可能有問題.


PS1: 上述所謂在 Web 上的情形, 並非是完全沒有問題的. 沒有問題是指 Web 的內容而言, 如果是 URL 的路徑或檔案名稱來看, 同樣存在與 FTP 相同的問題. 也就是, 目前並沒有 (應該說我不知道) 一個規則, 用來傳送那些非英文的 URL. 如果 browser 是用 UTF-8 編碼來傳送那個 URL, 但是 Server 的環境並不是使用 UTF-8, 那麼就會發生找不到該檔案的問題. 反之亦同. 可以正常使用的情形下, 也只有在剛好 browser 與 server 都使用同來的編碼時, 才會正常. 所以… 如果沒有必要 (其實就算有必要, 也要想辦法避掉), 在 Web Server 上頭的路徑與檔名, 不要使用非英文的編碼. 以免造成找不到檔案的困擾. PS2: 之前有在推 IDN (國際網域名稱), 也就是類似 下午茶.公司 之類的名稱, 我並沒有研究這個是要用那一種編碼才算. 猜測應該也是 UTF-8 吧. 不過… 目前看來, 似乎只有中國大陸那邊有在使用的樣子, 一般人…. 打中文在網址上頭, 會覺得麻煩吧. 如果要找某組織, 通常也習慣透過 search engine 來查吧.

Tags:

 查看全文
ultraluck 发表于:2009.07.12 18:48 ::分类: ( sap学习 ) ::阅读:(154次) :: 评论 (0) :: 引用 (0)

2008 年 10 月 18日, 星期六

无法登录?MSN错误代码(error code)解决大全

80004005

  这是一个泛泛的错误代码,它意味着,“我知道出错了,但我不知道错误是什么”。

  第一步,我们可以试着重新注册MSN所需的dll文件来解决这个问题,你可以下载并运行这个批处理文件(我已经把它放到blog上了): http://dreamz.org/Files/ibmfans/register-messenger-dll-files.rar

  第二步,如果用了上面的方法还不行,就重新安装MSN Messenger。

  第三步,如果还不行,那么重新安装IE。

  如果还不行,就向微软申诉吧。

  80040111

  这个错误同样可以出现在windows media player上,而且,解决办法相同。这个问题通常是由于MSN Messenger找不到所需的DLL文件,这些DLL文件在windows的注册表中可能出现了丢失或错误。这个问题仍然可以用上面的那个批处理文件解 决。http://dreamz.org/Files/ibmfans/register-messenger-dll-files.rar。

  80048439

  这个问题通常是由于MSN服务器引起的,打开这个网页http://messenger.msn.com/Status.aspx。

  如果提示错误,那只有就等喽,等到MSN服务器恢复。

  80048820

  引起这个问题有以下几个原因:

  1、MSN服务器错误,还是象上面那样,打开这个网页http://messenger.msn.com/Status.aspx,看服务器是否正常。

  2、你的电脑的时间错误。双击屏幕右下角的时间,重新调一下你的电脑时间啦。

  3、如果重新调整时间后,错误仍然存在,那么就运行这个批处理文件,http://dreamz.org/Files/ibmfans/register-messenger-dll-files.rar。

  4、如果你有电脑中有Norton Internet Security这个软件,也会引起这个问题,最好把它卸载了,它的网络规则太严厉,经常引起各种各样的网络问题。

  5、如果把Norton Internet Security卸载了还不能解决问题,那就重新安装IE。

  8004882a

  这个问题还是由于MSN服务器引起的,打开这个网页http://messenger.msn.com/Status.aspx,看服务器是否正常。

  80048848

  一般来说,出现这个问题,是由于你的互联网连接错误。

  如果网络连接正常,那么检查一下防火墙,把防火墙先关掉,看看能不能解决问题。

  80048869

  这个问题,通常是由于你的IE浏览器在离线状态下。退出MSN Messenger,打开IE,把文件-脱机浏览勾掉。

  80070190、80070193、800701f7

  这几问题通常是由于代理服务器设置问题造成的。

  首先,确定一下http://messenger.msn.com/Status.aspx这个网页,看MSN服务器是否正常。

  如果MSN服务器正常,那么就需要确定一下你的代理服务器了。

  打开MSN Messenger的工具-选项-连接-高级设置,看一下这里的设置情况,另外,IE浏览器选项-连接-代理服务器的设置也要检查一下。

  80072745、8007274c

  把它俩归到一起有点不合适,不过80072745这个问题还没有明确的解释,这两个问题,通常是由于服务器连接超时,MSN服务器,或者你这边的服务器错误,都有可能。

  检查MSN服务器是否正常,到http://messenger.msn.com/Status.aspx。

  8007274d

  这个问题是由于你的访问被服务器拒绝了,解决方法同上。

  8007277b

  这个问题通常是由于上网内容过滤软件屏蔽了1863等端口造成的。

  如果你没有安装这样的软件,检查一下MSN Messenger的工具-选项-连接-高级设置,看一下这里的设置情况。

  80072ee6

  这个问题通常是由于找不到msxml3.dll文件而引起的,首先,运行这个批处理文件http://dreamz.org/Files/ibmfans/register-messenger-dll-files.rar

  然后,在开始-运行栏里输入regsvr32 msxml3.dll,并确定。

  80072ee7

  这是一个很常见的问题,概括起来讲,引起这个问题有三个原因:

  1、网络连接错误,所以,首先保证互联网连接正确。

  2、防火墙问题。关掉防火墙,看是否访问正常。

  3、代理服务器的设置问题。按照上面讲过的方法,检查代理服务器设置是否正确。

  80072efd

  以前专门发贴讲过,如果想简便些,在检查防火墙和代理器之后,可以运行http://dreamz.org/Files/ibmfans/register-messenger-dll-files.rar这个批处理文件,并重新安装IE。

  80072eff

  这个问题通常是代理服务器设置造成的,按上面讲过的方法检查代理服务器。如果你正在使用代理服务器,还要检查你的IP和MAC地址是否被代理服务器收受,以及用户名和密码是否正确。

  如果有可能,你也可以试试不用代理服务器,直接连接MSN服务器。

  80072f0d

  这个问题通常是由于MSN Messenger的安全部分没有正常工作。

  1、在开始-运行栏里输入regsvr32 softpub.dll initpki.dll并确定。

  2、如果上面的办法没有解决问题,你可以关闭MSN Messenger,然后用IE浏览器打开www.passport.net,点击登录,将出有一个认证窗口,接受认证,并重新运行MSN Messenger。

  3、如果还不行,打开IE浏览器internet选项-高级,看SSL 2.0和SSL 3.0是否都被选中。

  80072f19

  这个问题,可以试试在internet选项-高级,在安全项目下,取消检查服务器证书吊销(需要重新启动)。

  80072f78

  这个问题是由于服务器没有响应引起的,当然它可能是因为MSN服务器引起的,不过,更多的情况是由于代理服务器设置,或者由于spyware间谍软件通过一个间谍服务器改变你的连接路线造成的。如果你的代理服务器设置正确,就需要检查有没有间谍软件了。

  80090305

  这是一个不寻常的问题,这个问题现在没有明确的解决办法,可以试着重新安装IE浏览器。

  800b0001

  这是由于windows找不到MSN需要的DLL文件引起的,可以运行http://dreamz.org/Files/ibmfans/register-messenger-dll-files.rar这个批处理文件解决它。

  81000301

  首先检查一下MSN服务器的状态,如果正常,尝试以下方法,注意,这会删除你的MSN Messenger的自定义表情和图片。

  在windows 2000,xp和2003下,在开始-运行栏里输入%appdata%microsoft并确定,删除MSN Messenger文件夹。

  在windows 98或me下,在开始-运行栏里输入%windir%Application DataMicrosoft并确定,删除MSN Messenger文件夹。

  81000303

  这个问题,通常是由于你的messenger的用户名和密码错误引起的。

  你可以试着在hotmail和passport.net网站登录,如果还不行,可能是你的密码被盗。

  如果可以在上述两个网站登录,那么这个问题可能是你的MSN Messenger引起的,你可以在开始-运行栏里输入regsvr32 softpub.dll并确定。

  如果还没有解决,那么检查Internet选项-高级,看SSL 2.0和SSL 3.0是否都被选中。

  如果还不行,试着重新安装MSN Messenger,还不行?重新安装windows吧。

  81000306

  1、检查MSN服务器是否正常,http://messenger.msn.com/Status.aspx。

  2、检查防火墙。

  3、如果你在使用学校或公司的网络,问一下网管,是不是允许使用MSN Messenger。

  4、检查代理服务器,或者取消代理服务器。

  5、检查IE安全设置,检查Internet选项-高级,看SSL 2.0和SSL 3.0是否都被选中。

  81000314

  1、检查MSN服务器是否正常。

  2、如果MSN的服务器正常,那么,在开始-运行栏里输入regsvr32 softpub.dll并确定。

  81000359

  这无疑是服务器的认证问题,我们什么也做不了,向微软申诉吧。http://support.msn.com/eform.aspx? productKey=messenger&page=support_home_options_form_byemail&ct=eformts。

  81000362

  这是由于你的IE浏览器在离线状态下。退出MSN Messenger,打开IE,把文件-脱机浏览勾掉。

  81000370

  这个问题还是由于MSN Messenger的安全部分没有正确工作引起的。

  1、关闭MSN Messenger,然后用IE浏览器打开www.passport.net,点击登录,将出有一个认证窗口,接受认证,并重新运行MSN Messenger。

  2、如果还不行,打开IE浏览器internet选项-高级,看SSL 2.0和SSL 3.0是否都被选中。

  3、运行这个批处理文件http://dreamz.org/Files/ibmfans/register-messenger-dll-files.rar。

  81000377、81000378

  这是MSN服务器的问题,等它恢复吧。

  8100038d

  登录密码有无效字符。

  81000394

  登录密码为空,请填写登录密码。

  81000395

  MSN Messenger服务器问题,等着恢复吧。


ultraluck 发表于:2008.10.18 13:03 ::分类: ( sap学习 ) ::阅读:(129次) :: 评论 (0) :: 引用 (0)

2008 年 04 月 15日, 星期二

如何定义SAP Library (帮助文件)的路径?

如何定义SAP Library (帮助文件)的路径?

如何定义SAP Library (帮助文件)的路径?

-->

sapimg | 15 十一月, 2006 13:41

安装了一个SAP R/3系统后,如何使用户在按下F1键后,系统能找到SAP Library的帮助文件?即,如何定义SAP Library (帮助文件)的路径?

安装完毕SAP R/3后,只需将SAP Library帮助文件拷贝到一个目录,再用Tcode SR13定义一下即可,具体可参见以下图示:

1:将SAP Library拷贝至一个文件夹下

HelpFile_Path.jpg

2: 在Tcode SR13中指定存放SAP Library文件的路径

SR13.JPG

.

--> 查看全文
ultraluck 发表于:2008.04.15 16:08 ::分类: ( sap学习 ) ::阅读:(191次) :: Permanent link :: 引用 (0)

2008 年 03 月 22日, 星期六

SAP Control framework系列(19)

SAP Control framework系列(19) 6.2.5 测试结果如图: 6.2.6 更深探讨 我们把整个屏幕都分了,那么能不能我们只分割一个customer_container呢? 答案是当然可以,我们首先放一个customer container到屏幕上,然后创建custom container,然后在此基础上分割custom container. 创建屏幕: 添加代码: data: con type ref to cl_gui_custom_container. CREATE OBJECT con EXPORTING CONTAINER_NAME = 'BOBO' . create object splitter_h exporting parent = con rows = 1 columns = 2. 看看效果: 到此splitter control介绍完毕。
ultraluck 发表于:2008.03.22 20:58 ::分类: ( sap学习 ) ::阅读:(91次) :: Permanent link :: 引用 (0)

SAP Control framework系列(17)

SAP Control framework系列(17)

6.2.3 往已经分割好的container中添加texteditor

method add_control.

CREATE OBJECT editor_1

EXPORTING

PARENT = container_left .

CREATE OBJECT editor_2

EXPORTING

PARENT = container_top .

CREATE OBJECT editor_3

EXPORTING

PARENT = container_bottom .

endmethod.

 查看全文
ultraluck 发表于:2008.03.22 20:54 ::分类: ( sap学习 ) ::阅读:(95次) :: Permanent link :: 引用 (0)

SAP Control framework系列(16)

SAP Control framework系列(16)

6.2 小例子

我们就以前面介绍的texteditor来举例,在一个container中添加3texteditor

6.2.1 创建屏幕,定义一下ok_code就可以了

6.2.2 定义类以及方法

首先初始化屏幕

*创建第一个splitter,水平分割初始化的cl_gui_container

create object splitter_h

exporting parent = cl_gui_container=>screen0

rows = 1

columns = 2.

* 设置边框

CALL METHOD splitter_h->SET_BORDER

EXPORTING

BORDER = 'X' 有边框的

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

others = 3

.

* 设置模式

CALL METHOD splitter_h->SET_COLUMN_MODE

EXPORTING

MODE = 0

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

others = 3

.

* 设置属性

CALL METHOD splitter_h->SET_COLUMN_SASH

EXPORTING

ID = 1

TYPE = splitter_h->TYPE_MOVABLE

VALUE = 0

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

others = 3

.

*设置列的宽度

CALL METHOD splitter_h->SET_COLUMN_WIDTH

EXPORTING

ID = 1

WIDTH = 300

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

others = 3

.

* 取得分开后的两个container

container_left = splitter_h->get_container( row = 1 column = 1 ).

container_right = splitter_h->get_container( row = 1 column = 2 ).

* 然后分割右边的container

create object splitter_v

exporting parent = container_right

rows = 2

columns = 1.

CALL METHOD splitter_v->SET_BORDER

EXPORTING

BORDER = 'X'

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

others = 3 .

CALL METHOD splitter_v->SET_row_MODE

EXPORTING

MODE = splitter_v->mode_absolute

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

others = 3 .

CALL METHOD splitter_v->SET_row_height

EXPORTING

ID = 1

height = 150

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

others = 3 .

* 取得分割右边container后的两个container

container_top = splitter_v->get_container( row = 1 column = 1 ).

container_bottom = splitter_v->get_container( row = 2 column = 1 ).

endmethod.


ultraluck 发表于:2008.03.22 20:50 ::分类: ( sap学习 ) ::阅读:(106次) :: Permanent link :: 引用 (0)

SAP Control framework系列(15)

SAP Control framework系列(15)

1. CL_GUI_SPLITTER_CONTAINER

这个类相对就简单太多了,主要功能就是container的拆分。

6.1首先我们先看看它的几个常用的方法:

CONSTRUCTOR:构造方法

主要参数:

PARENT -- Parent Container

ROWS –需要显示多少行,举例,你想把container分成上下两个部分,那么rows = 2

COLUMNS – 需要分成多少列

接下来主要是一些settergetter方法

SET_BORDER 设置边框的格式,space:不设置 ‘X’:设置

效果如图:

Space:

500)this.width=500;" border="0" />

‘X’:

500)this.width=500;" border="0" />

SET_ROW_HEIGHT GET_ROW_HEIGHT 用来设置行的高度

SET_COLUMN_WIDTH - GET_COLUMN_WIDTH 设置列的宽度

SET_ROW_MODE - GET_ROW_MODE 设置行的模式

SET_COLUMN_MODE - GET_COLUMN_MODE 设置列的模式

下面这四个方法原理一样,主要设置splitter的属性,例如能不能移动等等

SET_ROW_SASH - GET_ROW_SASH

SET_COLUMN_SASH - GET_COLUMN_SASH


ultraluck 发表于:2008.03.22 20:49 ::分类: ( sap学习 ) ::阅读:(70次) :: Permanent link :: 引用 (0)

SAP Control framework系列(14)转

SAP Control framework系列(14)

定义数据:

data:

fline type i,

tline type i,

fpos type i,

tpos type i,

gfline type i,

gtline type i,

gfpos type i,

gtpos type i.

处理ok_code:

when 'SSP'.

CALL METHOD text_editor->SET_SELECTION_POS

EXPORTING

FROM_LINE = fline

FROM_POS = fpos

TO_LINE = tline

TO_POS = tpos

EXCEPTIONS

ERROR_CNTL_CALL_METHOD = 1

others = 2

.

when 'GSP'.

CALL METHOD text_editor->GET_SELECTION_POS

IMPORTING

FROM_LINE = gfline

FROM_POS = gfpos

TO_LINE = gtline

TO_POS = gtpos

EXCEPTIONS

ERROR_CNTL_CALL_METHOD = 1

others = 2

.

5.5.3 SET_READONLY_MODE

这个方法设置text editor为只读模式,你在创建好text editor之后调用就可以。

CALL METHOD TEXT_EDITOR->SET_READONLY_MODE

EXPORTING

READONLY_MODE = 1 “0:可以修改 1:只读

EXCEPTIONS

ERROR_CNTL_CALL_METHOD = 1

INVALID_PARAMETER = 2

others = 3 .

1.1 总结

因为text editor比较简单,而且使用的不是很频繁,所以就不多介绍,估计这些也就够用了。


ultraluck 发表于:2008.03.22 20:46 ::分类: ( sap学习 ) ::阅读:(67次) :: Permanent link :: 引用 (0)

Function_ALSM_EXCEL_TO_INTERNAL_TABLE

Function_ALSM_EXCEL_TO_INTERNAL_TABLE

ALSM_EXCEL_TO_INTERNAL_TABLE

这个函数用来取excel文件中制定的某一个cell的值比较有用,不过要注意excel文件不要太大,不然速度会比较慢。

下面是例子程序,excel文件中内容如下:

1

2

3

4

5

6

7

8

9

10

2

3

4

5

6

7

8

9

10

11

3

4

5

6

7

8

9

10

11

12

4

5

6

7

8

9

10

11

12

13

5

6

7

8

9

10

11

12

13

14

6

7

8

9

10

11

12

13

14

15

7

8

9

10

11

12

13

14

15

16

8

9

10

11

12

13

14

15

16

17

9

10

11

12

13

14

15

16

17

18

10

11

12

13

14

15

16

17

18

19

下面是例子程序:

REPORT ZTESTXU .

* Define corresponding internal table

data: itab like ALSMEX_TABLINE occurs 0 with header line.

* Call the function

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = 'd:1.xls'

I_BEGIN_COL = 1

I_BEGIN_ROW = 1

I_END_COL = 10

I_END_ROW = 10

TABLES

INTERN = itab

EXCEPTIONS

INCONSISTENT_PARAMETERS = 1

UPLOAD_OLE = 2

OTHERS = 3

.

*Write result to list

IF SY-SUBRC = 0.

loop at itab.

write: / itab-row,itab-col,itab-value.

endloop.

ENDIF.

希望对大家有点帮助。


ultraluck 发表于:2008.03.22 16:32 ::分类: ( sap学习 ) ::阅读:(98次) :: Permanent link :: 引用 (0)

SAP Control framework系列(13)转

定义OK_CODE处理

when 'IMP'.

if call_meth_ref is initial.

create object call_meth_ref.

call method call_meth_ref->load_text.

else.

call method call_meth_ref->load_text.

endif.

when 'GRE'.

if call_meth_ref is initial.

create object call_meth_ref.

call method call_meth_ref->load_events.

else.

call method call_meth_ref->load_events.

endif.

5.5.2 GET_SELECTION_POSSET_SELECTION_POS

定义屏幕字段:


ultraluck 发表于:2008.03.22 16:21 ::分类: ( sap学习 ) ::阅读:(52次) :: Permanent link :: 引用 (0)

SAP Control framework系列(12) 转

SAP Control framework系列(12)

1.1 更多的方法和事件

我们上面用到了几个方法,分别是:

SET_TEXT_AS_R3TABLE:这个方法把内表中的数据发送到text control

SET_TEXT_AS_STREAM: 这个基本和SET_TEXT_AS_R3TABLE差不多

SET_REGISTERED_EVENTS:注册事件

下面我们再介绍几个常用的方法:

5.5.1 GET_REGISTERED_EVENTS

参数:

EVENTS Type CNTL_SIMPLE_EVENTS

这个方法从CL_GUI_CONTROL继承而来,没有重新定义,作用是得到当前已经注册的事件,小例子如下:

定义数据:

data:

rg_events type CNTL_SIMPLE_EVENTS.

定义方法:

class call_meth definition.

public section.

types:

begin of t_texttab,

line(255) type c,

end of t_texttab.

data:

i_texttab type table of t_texttab.

data:

rg_events type CNTL_SIMPLE_EVENTS.

methods:

load_text,

load_events.

private section.

data:

indicator type c.

methods:

add_data importing ind type c.

endclass.

class call_meth implementation.

method add_data.

data: begin of rtab,

e_name(50) type c,

e_type(20) type c,

end of rtab.

data: itab like table of rtab.

data: r_event type CNTL_SIMPLE_EVENT.

case ind.

when '1'.

* Create internal table with texts

APPEND 'This a method that fills the TextEdit control'

TO i_texttab.

APPEND 'with a text.' TO i_texttab.

DO 10 TIMES.

APPEND 'hallo world !' TO i_texttab.

ENDDO.

when '2'.

call method text_editor->GET_REGISTERED_EVENTS

importing events = rg_events.

loop at rg_events into r_event.

case r_event-eventid.

when -601.

rtab-e_name = 'EVENT_DOUBLE_CLICK'.

when 2.

when 0.

when 1.

when 5.

when 6.

when 3.

rtab-e_name = 'EVENT_F1'.

when others.

endcase.

if r_event-appl_event = space.

rtab-e_type = 'System Event'.

else.

rtab-e_type = 'Application Event'.

endif.

append rtab to itab.

endloop.

call method text_editor->SET_TEXT_AS_STREAM

exporting TEXT = itab.

when others.

endcase.

endmethod.

method load_text.

call method add_data exporting ind = '1'.

* Load TextEdit control with texts

CALL METHOD text_editor->set_text_as_r3table

EXPORTING table = i_texttab.

IF sy-subrc > 0.

* Display an error message

EXIT.

ENDIF.

* All methods that operates on controls are transferred to the frontend

* by a RFC calls. the method FLUSH is used to determine when this is don

CALL METHOD cl_gui_cfw=>flush.

IF sy-subrc > 0.

* Display an error message

ENDIF.

endmethod.

method load_events.

call method add_data exporting ind = '2'.

call method cl_gui_cfw=>flush.

endmethod.

endclass.


ultraluck 发表于:2008.03.22 16:19 ::分类: ( sap学习 ) ::阅读:(86次) :: Permanent link :: 引用 (0)

SAP Control framework系列(11) 转

SAP Control framework系列(11)

3).调用flush方法,同步

* All methods that operates on controls are transferred to the frontend

* by a RFC calls. the method FLUSH is used

CALL METHOD cl_gui_cfw=>flush.

IF sy-subrc > 0.

* Display an error message

ENDIF.

4).ok_code的处理的时候调用call_met->load_text

when 'IMP'.

create object call_meth_ref.

call method call_meth_ref->load_text.

5).测试结果:

点击import之后:

注意:因为每次调用的时候都会创建call_meth对象,所以会重新添加记录到内表,这样就避免了每次都要clear内表。


ultraluck 发表于:2008.03.22 16:18 ::分类: ( sap学习 ) ::阅读:(76次) :: Permanent link :: 引用 (0)

SAP Control framework系列(10)转

SAP Control framework系列(10)

1.1.1 如何调用方法

我们以set_text_as_r3table为例介绍一下具体的步骤:

1).在前面的例子的屏幕上放置一个按钮,名字IMPORT,OK_CODE:IMP

500)this.width=500;" border="0" />

2).定义一个call_meth类,里面包含load_text方法

class call_meth definition.

public section.

types:

begin of t_texttab,

line(255) type c,

end of t_texttab.

data:

i_texttab type table of t_texttab.

methods:

load_text.

private section.

methods:

add_data.

endclass.

class call_meth implementation.

method add_data.

* Create internal table with texts

APPEND 'This a method that fills the TextEdit control' TO i_texttab.

APPEND 'with a text.' TO i_texttab.

DO 10 TIMES.

APPEND 'hallo world !' TO i_texttab.

ENDDO.

endmethod.

method load_text.

Call method add_data.

* Load TextEdit control with texts

CALL METHOD text_editor->set_text_as_r3table

EXPORTING table = i_texttab.

IF sy-subrc > 0.

* Display an error message

EXIT.

ENDIF.

endmethod.

endclass.


ultraluck 发表于:2008.03.22 16:16 ::分类: ( sap学习 ) ::阅读:(75次) :: Permanent link :: 引用 (0)

SAP Control framework系列(09)转

SAP Control framework系列(09)

1.1.1 System event

基本上和application event差不多,只需要注意以下几点:

1).appl_event = space

2).不需要cl_gui_cfw=>Dispatch

3).需要重新设置ok_code

      call method cl_gui_cfw=>set_new_ok_code
        exporting new_code = 'XXX'.

4).需要重新处理新设置的OK_CODE

CASE OK_CODE.

WHEN ‘XXX’.

……

ENDCASE.

1.2 调用方法

1.2.1 可调用常用方法列表

SET_REGISTERED_EVENTS

注册事件

CONSTRUCTOR

创建对象的时候调用

DELETE_TEXT

删除所有文本

EMPTY_UNDO_BUFFER

清空UNDO缓存

FIND_AND_REPLACE

查找替换

FIND_AND_SELECT_TEXT

查找

GET_LINE_TEXT

取得某行的文本

GET_SELECTED_TEXT_AS_R3TABLE

把选择的文本放到内表中

GET_SELECTED_TEXT_AS_STREAM

get selected text as stream

GET_SELECTION_INDEXES

get absolute character indexes of selection

GET_SELECTION_POS

获得选择文本的位置

GET_TEXT_AS_R3TABLE

把文本放到内表

GET_TEXT_AS_STREAM

get whole text as stream from control (incl. "r" and "n")

GO_TO_LINE

跳到某一884C

HIGHLIGHT_LINES

高亮显示设定的行

HIGHLIGHT_SELECTION

把选择的文本高亮显示

INDENT_LINES

定义缩进的行

INDENT_SELECTION

对所选内容缩进

MAKE_SELECTION_VISIBLE

OPEN_LOCAL_FILE

打开本地文件,一般已经集成在toolbar里面了

PROTECT_LINES

set protect mode for a range of lines

PROTECT_SELECTION

set protect mode for selection

REGISTER_EVENT_CONTEXT_MENU

registration for event context menu

REGISTER_EVENT_DBLCLICK

registration for event double-click

REGISTER_EVENT_F1

registration for event key F1 pressed

REGISTER_EVENT_F4

registration for event key F4 pressed

REGISTER_EVENT_FILEDROP

egistration for event file dropped

REPLACE_ALL

replace all

SAVE_AS_LOCAL_FILE

save as local file

SELECT_LINES

select area of lines, not necessarily within visible part

SET_AUTOINDENT_MODE

set auto indent behavior on or off

SET_COMMENTS_STRING

set string which indicates the whole line is a comment

SET_FILEDROP_MODE

set file drop mode of TextEdit control

SET_FIRST_VISIBLE_LINE

SET_HIGHLIGHT_COMMENTS_MODE

SET_READONLY_MODE

set TextEdit control 'read only' flag true or flase

SET_SPACES_ON_INDENT

set number of spaces to use for indenting and unindenting

SET_SELECTION_POS

set text selection within control

SET_SELECTION_POS_IN_LINE

set selection to a certain line and position

SET_SELECTION_INDEXES

set selection using character indexes

SET_STATUS_TEXT

set status text in status bar of control

SET_TOOLBAR_MODE

set toolbar visibility of TextEdit control

SET_WORDBREAK_PROCEDURE

set wordbreak procedure

SET_WORDWRAP_BEHAVIOR

set wordwrap behavior of TextEdit control

UNINDENT_LINES

unindent a range of lines

UNINDENT_SELECTION

unindent selected text area

SET_NAVIGATE_ON_DBLCLICK

set navigate on double-click mode of TextEdit control

COMMENT_LINES

change a range of lines into comments

COMMENT_SELECTION

change a selected number of lines into comments

UNCOMMENT_LINES

uncomment a range of lines

UNCOMMENT_SELECTION

uncomment a selceted number of lines

DISPLAY_CONTEXT_MENU

display context menu

REGISTER_EVENT

event registration

UNREGISTER_EVENT

event registration

REGISTER_DRAGDROP

register at control framework for drag & drop


ultraluck 发表于:2008.03.22 16:14 ::分类: ( sap学习 ) ::阅读:(146次) :: Permanent link :: 引用 (0)

SAP Control framework系列(08)转

SAP Control framework系列(08)

4).在创建text editor之后注册事件

* Link the event handler method to the event and the

* TextEdit control

* 注意,因为是静态方法,所以用=>

SET HANDLER lcl_event_handler=>catch_dbclick FOR text_editor.

* Register the event in the internal table i_events

wa_events-eventid = cl_gui_textedit=>event_double_click.

wa_events-appl_event = 'X'. "This is an application event

append wa_events to i_events.

* Pass the table to the TextEdit control using method

* set_registred_events

call method text_editor->set_registered_events

exporting events = i_events.

5).测试程序效果

500)this.width=500;" border="0" />

双击之后:

500)this.width=500;" border="0" />


ultraluck 发表于:2008.03.22 16:12 ::分类: ( sap学习 ) ::阅读:(71次) :: Permanent link :: 引用 (0)

SAP Control framework系列(07)转

SAP Control framework系列(07)

3).定义event handler

class lcl_event_handler definition.

public section.

class-methods:

catch_dbclick for event dblclick

of cl_gui_textedit importing sender.

endclass.

class lcl_event_handler implementation.

method catch_dbclick.

event_type = 'Event dbclick Raised!'.

endmethod.

endclass.

Note:该如何确定control里面都有什么事件呢?常用的event列表如下:

DBLCLICK

double click

F1

F1 pressed

F4

F4 pressed

CONTEXT_MENU

Context Menu requested (by pressing right mouse)

CONTEXT_MENU_SELECTED

Context Menu item selected

ON_DROP

drop occured

ON_DRAG

drag occured

ON_DROP_COMPLETE

complete drag and drop operation


ultraluck 发表于:2008.03.22 16:10 ::分类: ( sap学习 ) ::阅读:(80次) :: Permanent link :: 引用 (0)

SAP Control framework系列(06) 转

SAP Control framework系列(06)

5.2.5 定义数据类型

data:

custom_container type ref to cl_gui_custom_container,

text_editor type ref to cl_gui_textedit.

5.2.6 pbo中创建containertext editor

CREATE OBJECT CUSTOM_CONTAINER

EXPORTING

CONTAINER_NAME = 'BOBO'

CREATE OBJECT TEXT_EDITOR

EXPORTING

WORDWRAP_MODE = 1

PARENT = custom_container

1.1 事件处理

1.1.1 Application event

1).在前面定义的屏幕上加一个输出字段,以显示事件类型

2).定义事件所需要的结构以及内表

* Internal table for events that should be registred

i_events TYPE cntl_simple_events,

* Structure for oneline of the table

wa_events TYPE cntl_simple_event.


ultraluck 发表于:2008.03.22 16:08 ::分类: ( sap学习 ) ::阅读:(64次) :: Permanent link :: 引用 (0)

SAP Control framework系列(05)

SAP Control framework系列(05)

1.1 步骤

5.2.1 定义一个屏幕100

500)this.width=500;" border="0" />

5.2.2 100上放一个container,名字为bobo

500)this.width=500;" border="0" />

5.2.3 设置一个pf-status,定义一个退出function key

500)this.width=500;" border="0" />

5.2.4 添加一个ok_code

500)this.width=500;" border="0" />


ultraluck 发表于:2008.03.22 16:07 ::分类: ( sap学习 ) ::阅读:(74次) :: Permanent link :: 引用 (0)

SAP Control framework系列(04) 转

SAP Control framework系列(04)

5. CL_GUI_TEXTEDIT

5.1 Constructor

5.1.1 Text Editor

我们首先考虑如何创建texteditor,所有首先要知道的是constructor方法。

看其参数列表:

MAX_NUMBER_CHARS 能够插入的最大字符数,可选

STYLE

WORDWRAP_MODE 换行模式 可选

“0:不换行 1:在边界换行 2:在固定位置换行

WORDWRAP_POSITION “换行位置,只有WORDWRAP_MODE=2时有效 可选

WORDWRAP_TO_LINEBREAK_MODE “

FILEDROP_MODE

PARENT 必输 container

LIFETIME “一般不用 可选

NAME 名字 可选

5.1.2 Custom Container

参数:

PARENT “如果你想container里面包含container,那么这个参数就有用了

CONTAINER_NAME “名字 必输

STYLE “风格 可选

REPID “使用该container的程序

DYNNR “使用该constainer的屏幕

 查看全文
ultraluck 发表于:2008.03.22 16:04 ::分类: ( sap学习 ) ::阅读:(91次) :: Permanent link :: 引用 (0)

SAP Control framework系列(03)转

SAP Control framework系列(03)

4. 关于事件

4.1两种类型:

Application event

System event

4.2关于application event使用步骤

-定义数据类型

it_events TYPE cntl_simple_events,

wa_event TYPE cntl_simple_event.

-添加事件

wa_event-eventid = cl_gui_textedit=>event_double_click.
wa_event-appl_event = ‘X’. “Application event
append wa_event to it_events.

-dispatch

CALL METHOD cl_gui_cfw=>dispatch.

4.3 关于system event使用步骤

-定义数据类型

go_event_handler TYPE REF TO cls_event_handler,

gi_events TYPE cntl_simple_events,

g_event TYPE cntl_simple_event.

-定义并且实施event handler

CLASS cls_event_handler DEFINITION.

PUBLIC SECTION.

METHODS:

on_function_selected

FOR EVENT function_selected OF cl_gui_toolbar

IMPORTING fcode,

ENDCLASS.

CLASS cls_event_handler IMPLEMENTATION.

METHOD on_function_selected.

……

ENDMETHOD.

ENDCLASS.

-添加事件

       g_event-eventid         = <system-events>.
 g_event-appl_event   = space.    "This is an system event
APPEND g_event TO gi_events.

-注册事件

         CALL METHOD go_toolbar->set_registered_events

EXPORTING events = gi_events.

-创建event handler

CREATE OBJECT go_event_handler.

-设置event handler

         SET HANDLER go_event_handler->on_function_selected
           FOR go_toolbar.

ultraluck 发表于:2008.03.22 16:02 ::分类: ( sap学习 ) ::阅读:(79次) :: Permanent link :: 引用 (0)

SAP Control framework系列(02)转

SAP Control framework系列(02)

1. CL_GUI_CONTROL

这个就是我们主要要使用的超类了,先看一下它的子类:

CL_GUI_CONTROL

|_ CL_ALV_TREE_BASE

|_ CL_GUI_ALV_TREE

|_ CL_GUI_ALV_TREE_SIMPLE

|_ CL_GUI_PS_ALV_TREE_SIMPLE

|_ CL_GUI_ALV_GRID_BASE

|_ CL_GUI_ALV_GRID

|_ CL_ALV_DD_LISTBOX

|_ CL_FTR_GUI_ENTRY_ALV

|_ CL_HRPAYNA_GUI_ALV_GRID

|_ CL_CALENDAR_CONTROL_SCHEDULE

|_ CL_GUI_BARCHART

|_ CL_GUI_CALENDAR

|_ CL_GUI_CONTAINER

|_ CL_GUI_CUSTOM_CONTAINER

|_ CL_GUI_DIALOGBOX_CONTAINER

|_ CL_GUI_DOCKING_CONTAINER

|_ CL_GUI_EASY_SPLITTER_CONTAINER

|_ CL_GUI_GOS_CONTAINER

|_ CL_GUI_SPLITTER_CONTAINER

|_ CL_GUI_HTML_VIEWER

|_ CL_BFW_HTML_VIEWER_POC

|_ CL_GUI_PDF_VIEWER

|_ CL_GUI_PICTURE

|_ CL_GFW_GP_PRES_WEB

|_ CL_GUI_TEXTEDIT

|_ CL_GUI_TOOLBAR

|_ CL_TREE_CONTROL_BASE

|_ CL_GUI_SIMPLE_TREE

|_ CL_ITEM_TREE_CONTROL

|_ CL_GUI_COLUMN_TREE

|_ CL_GFW_COLUMN_TREE

|_ CL_HU_COLUMN_TREE

|_ CL_GUI_LIST_TREE


ultraluck 发表于:2008.03.22 15:59 ::分类: ( sap学习 ) ::阅读:(140次) :: Permanent link :: 引用 (0)

SAP Control framework系列[转(01)

Control framework主要包含两个组件:

1. CL_GUI_CFW:

这个类里面主要包含一些静态方法(Static method.

主要组件:

Dispatch:

此方法可以触发application event,如果不调用这个方法,application event会在PAI处理结束后自动调用。

Flush:

此方法用于同步automation queue

Get_living_dynpro_controls:

返回所有active customer control

Set_new_ok_code:

设置一个新的Function code.该方法只能用于system eventhandler方法,以此可以触发PAI处理,然后我们可以对新的ok_code进行处理。

Get_current_event:

获得当前事件。

2. CL_GUI_OBJECT:

子类:CL_GUI_CONTROL

作用:我觉得最主要的功能是提供一个抽象的接口,里面的方法很少使用。


ultraluck 发表于:2008.03.22 15:48 ::分类: ( sap学习 ) ::阅读:(74次) :: Permanent link :: 引用 (0)

2008 年 01 月 28日, 星期一

SAP XML输出文件保存到本地

SAP XML输出文件保存到本地

SAP XML输出文件保存到本地


*----------------------------------------------------------------------*
* Report ZPRUEBA_MML_13 *
* Export an internal table to XML document *
* NO BORRAR ESTE CODIGO *
*----------------------------------------------------------------------*
REPORT ZPRUEBA_MML_13.
*----------------------------------------------------------------------*
* PANTALLA SELECCION *
PARAMETERS: GK_RUTA TYPE RLGRAP-FILENAME.
* PANTALLA SELECCION *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* TYPE TURNOS *
TYPES: BEGIN OF TURNOS,
LU LIKE T552A-TPR01,
MA LIKE T552A-TPR01,
MI LIKE T552A-TPR01,
JU LIKE T552A-TPR01,
VI LIKE T552A-TPR01,
SA LIKE T552A-TPR01,
DO LIKE T552A-TPR01,
END OF TURNOS.
* TYPE TURNOS *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* TYPE SOCIO *
TYPES: BEGIN OF SOCIO,
NUMERO LIKE PERNR-PERNR,
REPOSICION LIKE PA0050-ZAUVE,
NOMBRE LIKE PA0002-VORNA,
TURNOS TYPE TURNOS,
END OF SOCIO.
* TYPE SOCIO *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* ESTRUCTURA ACCESOS *
DATA: BEGIN OF ACCESOS OCCURS 0,
SOCIO TYPE SOCIO,
END OF ACCESOS.
* ESTRUCTURA ACCESOS *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* START OF SELECTION *
START-OF-SELECTION.
PERFORM LLENA_ACCESOS.
PERFORM DESCARGA_XML.
END-OF-SELECTION.
* END OF SELECTION *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* FORM LLENA_ACCESOS *
FORM LLENA_ACCESOS.
REFRESH ACCESOS.
CLEAR ACCESOS.
MOVE: '45050' TO ACCESOS-SOCIO-NUMERO,
'MOISES MORENO' TO ACCESOS-SOCIO-NOMBRE,
'0' TO ACCESOS-SOCIO-REPOSICION,
'T1' TO ACCESOS-SOCIO-TURNOS-LU,
'T2' TO ACCESOS-SOCIO-TURNOS-MA,
'T3' TO ACCESOS-SOCIO-TURNOS-MI,
'T4' TO ACCESOS-SOCIO-TURNOS-JU,
'T5' TO ACCESOS-SOCIO-TURNOS-VI,
'T6' TO ACCESOS-SOCIO-TURNOS-SA,
'T7' TO ACCESOS-SOCIO-TURNOS-DO.
APPEND ACCESOS.
CLEAR ACCESOS.
MOVE: '45051' TO ACCESOS-SOCIO-NUMERO,
'RUTH PEÑA' TO ACCESOS-SOCIO-NOMBRE,
'0' TO ACCESOS-SOCIO-REPOSICION,
'T1' TO ACCESOS-SOCIO-TURNOS-LU,
'T2' TO ACCESOS-SOCIO-TURNOS-MA,
'T3' TO ACCESOS-SOCIO-TURNOS-MI,
'T4' TO ACCESOS-SOCIO-TURNOS-JU,
'T5' TO ACCESOS-SOCIO-TURNOS-VI,
'T6' TO ACCESOS-SOCIO-TURNOS-SA,
'T7' TO ACCESOS-SOCIO-TURNOS-DO.
APPEND ACCESOS.
ENDFORM.
* FORM LLENA_ACCESOS *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* FORM DESCARGA_XML *
FORM DESCARGA_XML.
DATA: L_DOM TYPE REF TO IF_IXML_ELEMENT,
M_DOCUMENT TYPE REF TO IF_IXML_DOCUMENT,
G_IXML TYPE REF TO IF_IXML,
W_STRING TYPE XSTRING,
W_SIZE TYPE I,
W_RESULT TYPE I,
W_LINE TYPE STRING,
IT_XML TYPE DCXMLLINES,
S_XML LIKE LINE OF IT_XML,
W_RC LIKE SY-SUBRC.

DATA: XML TYPE DCXMLLINES.
DATA: RC TYPE SY-SUBRC,
BEGIN OF XML_TAB OCCURS 0,
D LIKE LINE OF XML,
END OF XML_TAB.

CLASS CL_IXML DEFINITION LOAD.
G_IXML = CL_IXML=>CREATE( ).
CHECK NOT G_IXML IS INITIAL.
M_DOCUMENT = G_IXML->CREATE_DOCUMENT( ).
CHECK NOT M_DOCUMENT IS INITIAL.
WRITE: / 'Converting DATA TO DOM 1:'.
CALL FUNCTION 'SDIXML_DATA_TO_DOM'
EXPORTING
NAME = 'ACCESOS'
DATAOBJECT = ACCESOS[]
IMPORTING
DATA_AS_DOM = L_DOM
CHANGING
DOCUMENT = M_DOCUMENT
EXCEPTIONS
ILLEGAL_NAME = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WRITE 'Ok'.
ELSE.
WRITE: 'Err =',
SY-SUBRC.
ENDIF.
CHECK NOT L_DOM IS INITIAL.
W_RC = M_DOCUMENT->APPEND_CHILD( NEW_CHILD = L_DOM ).
IF W_RC IS INITIAL.
WRITE 'Ok'.
ELSE.
WRITE: 'Err =',
W_RC.
ENDIF.
CALL FUNCTION 'SDIXML_DOM_TO_XML'
EXPORTING
DOCUMENT = M_DOCUMENT
IMPORTING
XML_AS_STRING = W_STRING
SIZE = W_SIZE
TABLES
XML_AS_TABLE = IT_XML
EXCEPTIONS
NO_DOCUMENT = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WRITE 'Ok'.
ELSE.
WRITE: 'Err =',
SY-SUBRC.
ENDIF.
LOOP AT IT_XML INTO XML_TAB-D.
APPEND XML_TAB.
ENDLOOP.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = W_SIZE
FILENAME = GK_RUTA
FILETYPE = 'BIN'
TABLES
DATA_TAB = XML_TAB
EXCEPTIONS
OTHERS = 10.
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.
* FORM DESCARGA_XML


ultraluck 发表于:2008.01.28 14:48 ::分类: ( sap学习 ) ::阅读:(152次) :: Permanent link :: 引用 (0)

2008 年 01 月 27日, 星期日

ABAP学习笔记之五-报表的事件 [翱翔云天 ]

一, 首先介绍一下ABAP的程序的类型:

Program type(程序类型)

Introductory statement(类型描述)

1

REPORT(报表)

M

PROGRAM(屏幕程序)

F

FUNCTION-POOL(函数组)

K

CLASS-POOL(类组)

J

CLASS-POOL(接口组)

T

TYPE-POOL(类型池)

二, 下面介绍报表中用到的事件以及作用:

1. LOAD-OF-PROGRAM:程序开始执行时候自动调用

这个事件在SUBMITCALL TRANSACTIONPERFORM等执行的时候系统会自动调用这个事件。所以无需声明即可。

2. INITIALIZATION

1.只能用于报表程序

2.在选择屏幕出现之前执行,如果用逻辑数据库的话,这个是唯一能够修改选择屏幕初始值的地方。

3.通常的用法是在这里给选择屏幕中的字段赋值。

3. AT SELECTION-SCREEN

1.其实就像一个FORM,所以在这个事件里声明的变量都是局部变量。

2.根据SY-UCOMM这个系统变量可以判断用户的命令

3.在这个事件里响应的是屏幕上选择条件中的事件,例如CHECKBOX的选择与否,RADIOBUTTON的选择,LISTBOX的选择等等。所以分为以下几个方面:

1. ... ON psel :在PARAMETER变化是触发的事件

2. ... ON END OF sel SELECT-OPTION触发的事件

3. ... ON VALUE-REQUEST FOR psel_low_high :选择的帮助(F4)

4. ... ON HELP-REQUEST FOR psel_low_high :选择的帮助(F1)

5. ... ON RADIOBUTTON GROUP radi :单选按钮事件

6. ... ON BLOCK block :框架的触发事件

7. ... OUTPUT :响应屏幕上的事件,修改选择屏幕的唯一方法

4. START-OF-SELECTION

报表程序必须执行的事件,在进入第二屏幕之前触发。

5. GET

获得逻辑数据库的值。前提是必须首先声明逻辑数据库。

6. END-OF-SELECTION

第二屏幕显示完毕,结束处理。

7. MODULE

这个是当你调用自己定义的屏幕时,响应屏幕事件的方法。

8. ENDMODULE

9. CHECK

只对逻辑数据库使用,检查是否取得数据。

10. REJECT

同样只对逻辑数据库使用,退出。

11. STOP

结束一个处理块。

12. RETURN

返回一个处理块。

三, 附加说明:

1. SET PF-STATUS

基本语法格式:SET PF-STATUS pfstat.

扩展:

1. ... EXCLUDING f oder ... EXCLUDING itab

2. ... IMMEDIATELY

3. ... OF PROGRAM progname

这个是设置屏幕菜单,命令行等的命令,详细地信息我会在后面关于菜单设计的时候说明。

2. SET TITLEBAR

设置屏幕标题,在屏幕显示之前调用


ultraluck 发表于:2008.01.27 10:43 ::分类: ( sap学习 ) ::阅读:(159次) :: Permanent link :: 引用 (0)

2008 年 01 月 25日, 星期五

SAP顾问心得[ 转]

SAP顾问心得

顾问的就是IT USER,随后是KEY USER,再其次是END USER,从某个网站的统计资料可以看到,FICO顾问中,IT背景和财务背景的各占一半。

二.如何成为一名SAP顾问:
1. 可以推理得出,最容易成为顾问的还是IT USER,因为通常IT USER对SAP的技术知识以及相关业务知识,项目实施过程都有所了解,所以应聘为一名初级顾问应该很容易。对于一些对SAP很感兴趣的KEY
USER,由于有着丰富的业务知识,对SAP系统前台业务的较多的理解,相对来讲也容易成为一名初级顾问,END USER就很差了。作为END USER,要花费相当大的努力最好先成为一名KEY USER,转为顾问才会轻松些。很多大公司实施SAP后,人员流动非常之快,IT USER和KEY USER的流动率很高,新招的人很难原来就做过KEY USER或者IT USER的,对SAP感兴趣的END USER,这时可以试试。
2.没有任何基础,如果接受了SAP顾问学院的培训并获得PA证书,也很容易应聘成为顾问;SAP顾问学院的学费极其高昂,通常是企业出资培训,可以想象此种培训背后的违约协议将是如何严格,并且不见得培训后一定会获得此证书。还有其他各种培训公司对学员的培训,但这种培训如果有项目实习,那将会更好,但没有哪个公司敢保证对学员的项目实习机会,即使有,费用绝对高昂。
3.没有任何基础,也没有获得什么PA证书,想成为一名SAP顾问,可以想象就更难了。我想跟大家强调的就是这种情况下如何成为一名SAP 顾问。经过了这个课程的培训,感觉上即使SAP应用的水平再差,如果能把我们课堂练习的那些内容作过去,SAP 的前台操作应该没有问题的,和不懂SAP的人相比你们已经很懂,如果稍加练习,然后应聘为一个企业的KEY USER, 绝对不成问题的,好一点的可以直接到一些顾问公司去应聘,当然不要挑选顶尖的公司,那需要你有更多其他方面的实力。
如今的企业在招聘KEY USER的时候,似乎条件很高,但我相信你只需告诉他们你已经有某公司的KEY USER经验一年以上,而且在面试的时候,他们从前台操作及SAP的概念上无法难倒你,你成为一名KEY USER的可能性很大,做一名SAP的KEY USER实际上是很舒服的,甚至有很多顾问最终都选择了做企业的KEY USER. 当你成为一名KEY USER并且在企业内部也做过实施的话,你就完全具备出来做顾问的条件了,剩下的只是你如何对你所想去的顾问公司表现你对SAP的理解了。
对于几位从事ABAP的学员,我建议你们以ABAP顾问的身份进入顾问公司,然后在项目中和模块顾问学习,我所在的公司的ABAP顾问很多都是通过这种方式转变为模块顾问的,还有就是,如果能够精通ABAP并且了解SAP业务模块,此种水平的ABAP也很值钱的哟!
成为一名SAP顾问的途径很多,但前提是你非常渴望在这一行发展,我们常说:有志者事竟成,是的,我非常相信这句话,想做,就能做到。而且我绝对相信,咱们这些学员中肯定会有几人很快走上顾问这行的,要知道,大家的起点曾经是一样!

三. 如何成为一名优秀的FICO 顾问:
FICO顾问在几乎所有SAP项目中都要有所参与,并且与几乎所有模块都有所关联,个人认为,FICO顾问的发展潜力是很大的。
1. FICO的特点:
PP是几乎每个项目都不一样,所以做起来又苦又累,而FICO几乎每个项目都差不多,FI没有那么多的灵活性,一切都要按照符合会计制度的方式来设置,操作。CO灵活性很大,但是正是这种灵活性,让顾问有更多的可发挥的空间,也正是客户所感知的价值所在。关于FICO,几乎没有什么可以争论的问题,FI的做法永远都很标准,CO的灵活通常是超过客户的期望的。
2.作为一个FICO顾问,首先是其他模块顾问的财务指导,其他模块的业务流程涉及到财务的部分,财务可以最终决定取舍,毕竟,财务是外部要求,很难变通,如果一项后勤的操作的财务影响不符合会计制度,毫无疑问要取消掉.所以很多时候后勤顾问(PP,MM,SD)提出的新流程都要征求财务顾问的意见,这就需要财务顾问对SAP后勤知识有一定的了解,
3.作为一个FICO顾问,只跟客户讲SAP是不够的,要与财务经理在业务上进行沟通,客户有些时候对SAP的某种操作提出质疑,我们要从财务原理的角度上去解释;了解客户需求需要顾问有一定基础的财务知识,在项目中,如果让客户方感觉出顾问不懂财务,权威性一旦遭到质疑,那接下来项目一定会做的很辛苦。
4.从财务部分延伸出去的SEM以及EIS,BW都是信息系统发展的方向,掌握了财务部分,你会更清晰的理解一个企业运作的原理和目标。
从以上可以得知,要想做好财务顾问,财务知识,一些常见的SAP后勤模块的知识一定要有的,所以,你需要下的功夫很多哟。这所有的一切,不过是成为一名优秀的FICO顾问所应该具备的,要想做到这一点,还需要态度和努力。
大家能够见到的顾问形形色色,仅仅很精通SAP某模块知识和优秀的或者说资深的顾问完全是两回事情;SAP模块知识掌握的多少,SAP整体知识的掌握,项目实施经验,客户沟通技巧,对待工作的热情和态度……,如果你想成为一名优秀的顾问,在这些方面都要做得很好才可以哟!
四.SAP顾问行业的生活状态:
1.
做好吃苦的准备;是否能吃得了这份辛苦:顾问收入高,但也超级辛苦,华尔街投资顾问以及大公司的咨询顾问动不动就连续三四天平均每天只睡三四个小时的工作,还好,SAP顾问远没有那么辛苦,除了上线阶段外,平时为项目的事情也就加班到八九点钟,但问题是,SAP的博大精深大家一定有所耳闻,从业者对其欲罢不能,尤其是初涉此行业的人,都是把几乎所有的业余时间都用在了系统操练上,越搞感觉不懂的越多,上瘾呀,所以很难罢手,怎不辛苦!?
2.
要承担巨大的压力:你肯定会经历这个环节,客户的需求很多,而有的你根本就不知道SAP是否能够实现,从他人那里也找不到帮助,所以要自己测试,自己不懂,但不能跟客户讲你不懂,你要读大量的文档,要去在短时间内把一个不熟悉的东西变成自己非常熟悉的。
3.
凡事靠自己:不要寄希望公司会给你什么帮助,也不要寄希望别人会给你什么主要的帮助,没有谁会耐心地给你讲解SAP内部的种种关联,你对其他资深顾问提出的问题应该以寻求确认的方式去问,比如你可以问:
A..某种特别的需求可不可以在系统中实现?
B. 通过某种方式可不可以实现某种功能,有什么潜在的风险?
C. 通常某种需求在系统中是不是这样实现的?
D.没有相关的文档(配置文档,操作手册)发来瞧瞧?
这样的问题让别人在回答你的问题的时候,根据经验很容易做答,
大家时间都宝贵,你需要从他那里获得确认你的某些想法的信息,而不是让他详细地告诉你如何如何去做,所以也就需要你在准备问题的时候自己要多下功夫思考和阅读一定的资料。而且只有这样,你的功力长的才会很快,因为有些时候,依赖过多也会形成习惯的。
4.
经常出差:很少会有项目就在我们所在的城市进行,因此,出差是家常便饭,如果是附近省份或者省内项目,每周回家不成问题,如果是较远地区需要乘坐飞机,好一点的公司会允许两周一次公费往返,很多公司甚至一个月允许一次公费往返。
所以大家可以想一想,这样的生活状态是否是你所能人忍受的,你喜欢这么做,还是因为收入高你宁愿这么做?一定要从自己的现实状况去考虑一下!我见过有的顾问因为作这一行,老婆离婚,女友分手的,还有的人父母年迈需要照料,长期出差难以承受的,总之,要先权衡一下,一旦是那样的生活状态,自己是否可以承受。

五.FICO顾问在各阶段的任务。
通常来讲,不论采用什么样的项目实施方法论,整体的项目实施过程基本上是一样的,我在课堂上曾给大家做过一定的解释,那就是项目实施的五个阶段:项目准备,蓝图设计,系统实现,上线准备,系统切换及上线支持。下面我分别介绍各个阶段对FICO来讲的任务有哪些:
1. 项目准备:
这个阶段通常来讲算是项目前期工作的一个总结,以项目启动大会为结束标志,它包括了项目计划,项目章程,组织结构,人员职责,项目工作环境等等的设定,这个时候,顾问甚至还没有完全进入项目,通常开项目启动大会的时候,顾问到场出席即可。
2. 蓝图设计:
这个阶段主要完成客户未来流程的设计,作为FICO顾问,你要做的事情主要有如下几点:
A. 概念培训:对KEY USER和IT USER进行SAP FICO OVERVIEW的一个培训,此培训通常基于IDES系统,主要让客户掌握SAP的基本概念,对SAP的操作和运行方式有个基本的了解。
B. 现状调研:对总帐,应收,应付,固定资产,成本计划以及核算等财务子职能的现状进行调查,详细了解客户各方面的需求,这个阶段顾问间要经常沟通,从而可以更全面地掌握客户需求。
C. 蓝图设计:对比现有流程与SAP标准流程间的差距,通常财务流程较为标准,对于特殊需求,特别考虑一下即可。这个阶段的顾问要写出蓝图文档,也是客户与顾问冲突最大的阶段,成功的关键是引导客户需求,降低客户对项目不切实际的期望等等。
这个阶段对初级顾问来讲,极其痛苦,你不得不在业余花费大量的时间去准备好多未知的东西,让客户相信你,只有充分的准备,而这些需要大量的精力投入。
3. 系统实现:
此阶段要将蓝图设计中涉及到的流程,在SAP系统里给予实现,更多的是技术方面的工作,也就是系统配置,配置结束后要进行顾问内部的测试,将基本流程测试无问题后进行单元测试和集成测试,单元测试过程是IT USER和KEY USER掌握SAP详细功能的起点,针对本业务范围内的所有业务场景进行功能测试, 单元测试文档由KEY USER准备出来,记录测试过程及结果,这个文档也是接下来用户培训阶段培训手册的蓝本。此阶段顾问要着重解决KEY USER提出的各种业务流程在系统中如何表现的问题,也是对KEY USER进行SAP操作培训的最重要的一个步骤。单元测试结束后将进行集成测试,集成测试可先在两两模块之间进行,先解决小范围集成遇到的各种问题,然后再进行大范围的集成,涉及到企业日常运作的主要场景,从销售预测,销售订单,生产计划,采购,库存,生产,销售,收款等等业务循环各阶段的操作的进行,凭证的显示查询,单据的流转等等。此部分内容主要由KEY USER 来进行;本阶段你要负责的事情:
A. 配置系统并和其他模块顾问进行内部测试。
B. 与KEY USER一起进行单元测试,并负责解决测试中出现的各种问题
C. 培训KEY USER和IT USER基本业务流程操作
D. KEY USER 进行集成测试,负责解释后勤业务部门提出的疑问,并解决接口问题
E. 权限角色的设定(通常有模板,此模板我也给过大家一份)
F. 客户需求的各种单据表格的开发测试(和ABAP沟通)
4. 上线准备:
此阶段要做的主要工作是上线数据的准备以及最终用户的培训工作,数据可分静态数据和动态数据,静态数据也可称为主数据,如客户,供应商,物料等等,动态数据为业务产生的数据,如客户余额,物料库存数量等等,对FICO顾问来说,要准备的静态数据无非是总账科目,客户,供应商要对应的统驭科目,银行信息,还有就是物料的价格信息,而动态数据无非是各种类型账户的科目余额,这个阶段作为FICO顾问你需要做的事情是:
A. 提供数据准备的模板给关键用户,负责解释模板各字段含义
B. 检查数据准备的质量
C. KEY USER对END USER进行最终培训,顾问要负责支持
D. 此阶段仍旧会有客户特定需求的配置,改动等等
E. 系统上线数据切换策略(我曾经给过大家的DATA CONVERSION STRATEGY)
5. 系统切换以及上线支持:
此阶段实现数据从原有系统到新系统的导入,对于后勤业务来说,物料主数据必须首先导入系统,然后是BOM,
ROUNTING, 已经下达尚未收货的采购订单,生产订单,尚未交货的销售订单等等,对于财务部分,最最重要的是将总账和明细账对平:
A. 导入上线时刻财务数据到新系统:对于总账存货科目余额,一定要和所有物料价值明细对平,允许的差异记录到材料成本差异账户,总帐的固定资产余额要与固定资产明细对平,应收应付预收预付总帐科目要与客户供应商余额明晰对平。通常用CATT就可搞定。
B. 运行成本估算,从系统内产生物料的标准价,从而后勤物料移动,成本信息准确反映。
C. 上线后的日清操作:上线后要对所有从后勤业务产生的财务凭证进行检查,从而保证后勤业务和财务的正确集成。一旦发现错误操作,当天发生的,当天解决,财务尤其需要关注的是仓库的收发料操作,错误的物料价格,错误使用的移动类型,常常对财务产生较大的影响,而且此种类型的错误一定要进行纠正,必要时可采取一些奖惩措施。
D. 上线后月结支持:通常SAP系统上线第一个月的月结需要财务顾问现场指导,而且在月结时候暴露出来的一些业务问题要进行纠正。
E. 上线后的其他支持:系统上线后两周左右,顾问撤离客户公司,以后的大部分支持是通过电话,EMAIL,VPN远程连接来解决的。END USER的问题传递给KEY USER和IT USER, IT USER作为企业内部顾问将逐渐取代FICO顾问的角色,他们再将自己无法解决的问题传递给顾问,顾问解决不了的再向SAP发送MESSAGE,
请求SAP的全球支持,就是这样一个帮助链条保证SAP系统的正常运行。

六.结语:
这段文字开始起笔于4月17日,结束于5月3日上海飞往吉隆坡的飞机上,按理说这点东西完全可以一气呵成,可忙碌的工作让我很少有心情去写,可我还是希望把自己了解的一点关于SAP顾问的东西让大家一起来分享。希望对各位能有所帮助。
我相信有些同学还在犹豫:自己是否去做顾问?做了顾问的前途是什么?而我一直认为,人一生只要能够认真做好一件事情,实属不易,而企业IT应用这一块的市场一直在发展,所以,想做什么不要犹豫,年轻的时候做什么都有道理,关键是要利用好自己的时间,珍惜每一天,让每一天都过得有意义,你的付出终有回报,相信自己才会成功!
让自己变得足够专业,这个世界真的会属于你!我在努力,希望我们能一起努力!
谢谢! RainbowBirthday cakeRainbow

 查看全文
ultraluck 发表于:2008.01.25 12:56 ::分类: ( sap学习 ) ::阅读:(262次) :: Permanent link :: 引用 (0)

SAP iDoc config sample //只是收集的例子,并没有搞清楚

SAP iDoc config sample //只是收集的例子,并没有搞清楚

SAP iDoc config sample
1.SPRO->Basis Components->Application Link Enabling(ALE)->Sending Logical Systems-¨¤and Receiving system>Define Logical System
Log.System: SAPDEV100
Name: CML SAP 61.144.248.136 client 100

2.SPRO->Basis Components->Application Link Enabling(ALE)->Sending and Receiving system->Logical Systems->Assign Client to Logical System
Choose client 100 and click details
逻辑系统: SAPDEV100

3.SM59->TCP/IP 连接->SAPBC->网关
网间主机名: 61.144.248.136
网关服务: sapgw00
4.BC->SAP->SAP Servers->Add Server
System Name: CMLTEST
Login Defaults User: PRE06
Password:
Client: 100
Language: Server Logon
Application Server: 61.144.248.136
System Number: 00
5.BC->SAP->SAP Servers->CMLTEST->Listeners->Add Listeners
Program ID: SAPBC
Gateway Server: 61.144.248.136
Gateway Service: sapgw00
6.SM59->TCP/IP->连接->SAPBC->测试连接
7.WE21->事务性->RFC->Create
生成端口名稱
端口: A000000001
描述: SAP BC test
RFC 目标系统: SAPBC
处理代码: ORDE ORDERS 创建销售订单
8.WE20->伙伴类型->LI->Create
合作伙伴编号: 90004 联合饼干有限公
伙伴类型: LI 供应商
Typ: US 用户
代理人: PRE06 Su Jack
语言: ZH 中文
9.WE20->伙伴类型->LI->90004->出站参数->Create
合作伙伴编号: 90004 联合饼干(中国)有限公司
伙伴类型: LI 供应商
伙伴功能: GS 产品供应商
消息类型: ORDERS 购买订单 / 订单
消息代码:
消息功能:
外向选项
接收方端口: A000000001 事务性 RFC
SAP BC test
包大小: 1
基本类型: ORDERS05 购买/销售
消息控制
应用程序: EF 采购订单
消息类型: NEU 采购订单
过程代码: ME10 ORDERS: 采购订单
10. SPRO->物料管理->採購->消息->輸出控制->信息類型->定議採購訂單的消息
類型->维护 PO 消息类型->NEU採購訂單->合作伙伴功能->Create
应用 EF 采购订单
输出类型 NEU 采购订单
媒介 EDI
功能 GS 产品供应商
11. MN04
类型 NEU 采购订单
采购输出确定: 采购组织/EDI的供应商
采购组织 1001 招商局物流
供應商 90004
伙伴口 VN
媒介 6
時間 4
語言 ZH
Client: 202
Logical Systems: SDQ202
RFC destination: SDQ202
Port : A000000002


ultraluck 发表于:2008.01.25 11:36 ::分类: ( sap学习 ) ::阅读:(241次) :: Permanent link :: 引用 (0)

通过事务码查找所在菜单路径

通过事务码查找所在菜单路径

REPORT ZMENUtoPATH .
************************************************************************
* This program displays the menu path for a transaction. If the user
* clicks on the transaction line, it displays the transaction's start
* screen. It is useful when working with the profile generator, because
* it is much faster than extracting a menu branch and finding a
* transaction code in it. To run this program, the user menu has to be
* generated.
************************************************************************
INCLUDE <ICON>.
TABLES: SMENSAPNEW, SMENSAPT, TSTC.

DATA: BEGIN OF ITAB OCCURS 10.
INCLUDE STRUCTURE SMENSAPNEW.
DATA: END OF ITAB.
DATA: BEGIN OF STACK OCCURS 10,
ID(5) TYPE N,
END OF STACK.
DATA: I TYPE I.
DATA: TEXT LIKE TSTCT-TCODE.
PARAMETERS: TRANS LIKE TSTC-TCODE.

* Get the ID of the Transaction
SELECT * FROM SMENSAPNEW WHERE REPORT = TRANS AND CUSTOMIZED = 'S'.
MOVE-CORRESPONDING SMENSAPNEW TO ITAB.
APPEND ITAB.
ENDSELECT.
* If transaction is not in SMENSAPNEW
IF SY-SUBRC <> 0.
* WRITE AT /TRANS COLOR 5.
WRITE: /(80) 'Main Menu' COLOR 2.
SKIP.
WRITE: /'Not in the profile generator''s table'.
EXIT.
ENDIF.

* Get the parent ID that links to the root with the fewest levels
SORT ITAB BY MENU_LEVEL.
READ TABLE ITAB INDEX 1.
STACK = ITAB-OBJECT_ID.
APPEND STACK.
STACK = ITAB-PARENT_ID.
APPEND STACK.

* Search for the Grandparents...
DO.
CLEAR ITAB.
REFRESH ITAB.
SELECT * FROM SMENSAPNEW WHERE OBJECT_ID = STACK-ID AND
CUSTOMIZED = 'S'.
MOVE-CORRESPONDING SMENSAPNEW TO ITAB.
APPEND ITAB.
ENDSELECT.
SORT ITAB BY MENU_LEVEL.
READ TABLE ITAB INDEX 1.
IF ITAB-PARENT_ID = '00001'.
EXIT.
ENDIF.
STACK = ITAB-PARENT_ID.
APPEND STACK.
ENDDO.

SELECT SINGLE TTEXT INTO TEXT FROM TSTCT WHERE TCODE = TRANS
AND SPRSL = 'EN'.

* Display the result
FORMAT HOTSPOT ON.
WRITE: /(80) ICON_DISPLAY_MORE AS ICON,TEXT COLOR 3.
HIDE TRANS.
CLEAR TRANS.
WRITE: ICON_GIS_PAN AS ICON,
'<<<< Click on line to go to the transaction'.
FORMAT HOTSPOT OFF.
SKIP.
WRITE: /(80) 'Main Menu' COLOR 2.
SORT STACK.
LOOP AT STACK.
I = I + 3.
SELECT SINGLE * FROM SMENSAPT WHERE SPRAS = 'E'
AND OBJECT_ID = STACK-ID.
WRITE: at /I icon_incoming_object as icon,
(80) SMENSAPT-TEXT COLOR 2.
ENDLOOP.
SKIP 10.
FORMAT COLOR 4.
WRITE: /80 text-001 right-justified.

* Display the transaction when the user clicks on trans.
AT LINE-SELECTION.
IF NOT TRANS IS INITIAL.
SELECT SINGLE * FROM TSTC WHERE TCODE = TRANS.
CALL TRANSACTION TRANS.
ENDIF.
CLEAR TRANS.


ultraluck 发表于:2008.01.25 10:35 ::分类: ( sap学习 ) ::阅读:(123次) :: Permanent link :: 引用 (0)

2008 年 01 月 24日, 星期四

EDI ALE BAPI RFC IDOC等的关系

均和interface有关。
sap的idoc文件替代了edi文件的作用。
ale是一种通讯的模式。
bapi,一种函数,sap提供一大堆,用于主要的业务流程的处理
rfc,一种函数,用于与外部程序调用

应该说RFC是其它内容的基础,它是一个Function module,可以被远程调用。而BAPI本身就是一
个RFC,但它被作为BO的Interface,作用更进一步,除了BAPI文档中提到的内容外,还可以作为
ALE/IDOC的开发基础。
ALE是R/3系统之间的应用层数据交换,至于用什么,就看具体配置了,比如可以用IDOC,同步/
异步BAPI,甚至用EDI。非SAP系统无法用ALE来实现。
至于数据传输的方式,可以是IDOC(底层是用RFC来实际的),也可以是EDI,所以说IDOC/EDI实
际上是数据的载体。

IDOC: 只是数据描述, 尚需用BAPI 或别的程序.常用于重复和大量数据输入输出.
RFC (remote function call): 呼叫别的系统的程序. 适用于实时 (synchron)联系.
BAPI: SAP 提供的标准接口程序. 可用于输入IDOC, 或者由别的系统通过RFC呼叫使用.


ultraluck 发表于:2008.01.24 17:37 ::分类: ( sap学习 ) ::阅读:(113次) :: Permanent link :: 引用 (0)

bapi ale

为bapi生成ale接口事务码:bdbg


ultraluck 发表于:2008.01.24 16:29 ::分类: ( sap学习 ) ::阅读:(86次) :: Permanent link :: 引用 (0)

bapi 定义BAPI 参数间的层次


定义BAPI 参数间的层次

当BAPI 的表参数之间存在层级依赖关系时,这些层 级必须明确定义以便允许参数过滤。

例如:

一个物料主数据的BAPI,会包含工厂数据和相应仓库数据的 表。工厂数据的表通过WERKS 键字段引用了仓库数据的表。 在仓库数据和工场数据之间就存在层级依赖:如果做为参数 过滤的结果,物料没有复制出工厂001,则工厂001 的仓库 数据也就不应该被复制。

层级依赖用字段参考在BAPI 表的参数之间定义。这 些参考必须在创建BAPI-ALE 接口之前创建,这些信 息与接口一起被生成。可以使用事务码BDBP 来定义 层级依赖。
ultraluck 发表于:2008.01.24 16:03 ::分类: ( sap学习 ) ::阅读:(92次) :: Permanent link :: 引用 (0)

SAP R/3 接口技术剖析

SAP R/3 接口技术剖析

作为目前ERP市场上最为领先的应用系统之一,一直以来,SAP R/3在提供API应用编程接口和接口工具方面也同样领先于其它ERP厂商。ALE/IDocs是SAP公司为SAP R/3 R4.6C版本所提供的接口机制,目前应用最为广泛。在 R4.0以后的版本中,又添加了技术上先进的BAPI。本文作为系列介绍之一,对ALE/IDocs, BAPI以及其它可用的整合方式进行介绍。

1、ALE/IDocs是什么?

ALE 是Application Link and Enabling的缩写,是SAP专门为SAP与SAP之间所设计的整合中间件。IDocs是中介文本 (Intermediate DOCument) 的缩写,是SAP提供的系统整合专用的数据/消息格式。ALE在SAP 3.0版本开始就作为SAP整个应用体系的一部分,为分布式数据交换提供了可靠安全的通讯机制。ALE的设计,原本作为两个SAP流程之间的一种消息传递服务(Messaging Service) ,使SAP与SAP的业务流程之间企业数据能够有效的交换,为两个独立的SAP之间提供了的系统整合服务。不过,随着应用的发展,ALE/IDocs接口机制也已然成为与其它非SAP系统的标准的整合方式。 2、ALE/IDocs的消息发送接收过程

ALE的设计结构可以分为三层,即应用层,数据/消息分配层和通讯层。通讯层是SAP整合机制的基础,它利用远程功能呼叫RFC(Remote Function Call) 调用SAP系统的功能模块。

数据/消息分配层,主要提供三个关键服务:

  • 按数据分配模型决定数据接收者。

  • 消息的过滤和转换。
  • 数据/消息的压缩,以提高传递效率。

应用层直接与SAP系统接口,生成或从其它系统接收含有路由信息的消息文本IDocs,包括消息接收者的姓名,要求发送的类型以及对消息进行处理的规则。

ALE的机制代替了原来的SAP所提供的批数据通讯BDC(Batch Data Communication) 方式。顾名思义,BDC为系统之间提供了简单的数据批处理服务,还不能作为一种中间件技术,它没有提供系统之间进行无缝整合所要求的纠错功能、系统管理和其它安全措施。总得说来,应用SAP的ALE机制进行SAP与SAP或非SAP系统整合有以下几个好处:

  • ALE技术不受SAP版本升级的影响,它提供了版本向后兼容性。ALE定义于SAP应用层,与SAP的逻辑层相对独立,整个ALE中间件独立于发送和接收系统。
  • ALE消息设计逻辑保证消息的“一次且只有一次”的消息传递。ALE采用“存储-发送”技术确保消息即使系统发生故障或接收方没有准备接收时也可以达到目的地。这样就保证接收方不至于收到重复消息。
  • ALE也提供了IDocs管理功能。主要有文本缩减、文本版本控制以及文本数据过滤。三种控制机制使得SAP开发人员可以根据实际需要对IDocs文本在运行中进行动态处理。
  • ALE提供了系统管理功能,允许对ALE系统进行启动/复位/恢复等系统操作,为开发人员提供了进一步的管理控制。

IDoc 几乎可以传带任何SAP应用的数据,是一种“外围”定义格式,与SAP的应用数据定义不直接相关。IDocs已经广泛应用于早期的SAP-EDI的数据交换,因而它的设计有点类似于EDI的标准,即EDIFACT标准。

IDocs是以字符基础的,因而是可读的。它有三种纪录类型,即:

  • 控制纪录-含文本信息,如IDoc类型,发送/接收方信息以及文本标识。
  • 数据纪录-含管理和实际数据部分。
  • 状态纪录-用来追踪文本传递各点的状态,如状态码,系统时间,错误标识等。

下面对ALE/IDocs在系统整合过程中消息的实际传递进行介绍。

让我们首先看发送过程。 3、BAPI简介

一个发送过程由事件触发,文本生成,数据打包以及交由传输媒介传递这四个步骤组成,具体如下:

  • 应用系统事件触发

系统目标(Objects) 的状态变化,用户自主活动或其它数据库特定变化等可以启动数据表的触发程序,从而进行数据传递的初始化工作,如数据准备。

  • 生成主IDoc文本(Master)

按标准格式生成主IDoc文件,包含所有可以传递数据(不分接收者)

  • 生成通讯Idoc

从主IDoc中生成只与特定接收者有关的文本,通讯文本是主文本的子数据集(Subset)

  • Idoc 发送

利用异步通讯方式将一定版本的IDoc传递到接收方。

下面,让我们看接收过程。

接收过程始于SAP系统从外部收到IDoc文本。接收过程的优点在于,接收方既可以是SAP系统,也可以是第三方系统,这也是SAP与第三方进行有效整合的基础。接收过程由以下三个步骤组成:

  • 存储Idoc-将文本存储于数据库,并进行语法校验
  • 邮件处理程序读取Idoc--一个专门设计的IDoc处理程序读取IDoc并产生SAP或其它系统所需的系统消息。多个程序可以同时运行。
  • 生成系统文本--处理程序进一步生成系统文本供系统使用,并将结果信息存于Idoc d的状态纪录中。

BAPI是Business Application Programming Interface的缩写, 是SAP为3.0版本以上提供的基于企业目标(Business Object) 技术的接口应用界面。SAP在3.0版本以上采用了Object-oriented技术,逻辑定义了SAP R/3系统的所有功能目标,并且将所有的目标(Objects) 和BAPIs存储于企业目标库BOR(Business Objects Repository). SAP R/3 企业目标的目标类型(Object Type) 相当于目标设计语言中类(Class) 的概念,其定义结构由以下几部分组成:

  • 基本数据--所有目标类的通用属性,如目标标识和默认方法(Method) 。
  • 接口界面--目标的方法(Method), 事件(Event), 特征(Attributes) 。
  • 键(Key Fields)--供BOR中目标检索使用
  • 方法(Methods)-- 对目标进行所要求的各种操作。
  • 特征(Attibutes)-- 描述目标特征。
  • 事件(Events)-- 触发以改变目标状态。

    4、应用SAP-DCOM接口

    SAP于1998首次提供SAP-DCOM接口,以满足各种桌面应用开发的要求。利用DCOM连接端口,开发人员可以利用VB, C++,以DCOM目标方式访问SAP数据。在Web应用上,可以用VBScript, JavaScript 以DHTML方式页面访问,也可以用ASP访问数据。

    另外,利用DCOM也可以间接访问SAP的企业目标库BOR。上面提到的BAPI是SAP系统上专用的,在实际应用上不如DCOM来得广泛。DCOM端口主要有两个技术模块组成,一个是管理模块,另一个模块生成SAP BO的DCOM 代理组件(Proxy Components),生成的DCOM组件存放于C++。代理组件有以下属性:

    • Client-要访问的R/3客户系统

    • UserID-R/3用户

    • Password-用户密码

    • Language-系统语言

    • Destination-预先定义的目标名称

    另外,每个组件具有以下方法:

    • PutSeesionInfo()—设定系统一次调用的目标参数

    • AdviceRfcGuiSink()—用于需要SAPGUI或dubugging的场合。

    • CommitWork()-用于数据更新,无implicit commit的场合。

    • InitKeys()-DCOM目标键初始化

    • DimAs()-返回Microsoft ADO(Advanced Data Object) 纪录集(支持游标控制)。

    • 其它从R/3 BO定义中继承的方法。

    总起说来,SAP R/3 作为一个相对灵活的ERP系统,利用上述的各种整合技术能够实现SAP系统之间以及SAP 与其它系统之间的数据/过程的整合。当然,一个应用系统的高度客户化导致了系统整合的难度。随着系统功能的增加,多种可供采用的整合技术也就显得很有必要。对于SAP R/3用户来说,正确选择适用的整合技术是实现成功系统整合的关键。

利用BAPI,开发人员可以实现对BOR进行实时访问,从而实现应用系统(SAP-SAP)之间在数据/逻辑层上的有效整合。


ultraluck 发表于:2008.01.24 15:56 ::分类: ( sap学习 ) ::阅读:(186次) :: Permanent link :: 引用 (0)

如何修改 SAP 登录界面的文字(事务码SE61) [转]

我们使用 SAP 的时候,经常会觉得登录那个界面太简单了,诺大一个屏幕上,只有左面那个角落放了客户端、用户、口令、语言这几个输入框,其他地方都空荡荡的。
而安装过 miniSAP 后会发现,除了左面那些输入框外,系统右边的空白处多了一些说明文字:

客户端:800
用户名:ddic
密码:19920706

这是怎么出来的呢?我们一般的 SAP 系统是不是也能显示一些自己的说明文字呢?

回答是肯定的,SAP 以比较贴近技术人员的方式给出了维护登录界面说明文字的方法。所谓比较贴近技术人员的方式,就是说 SAP 的用户友好性实在太差了……

当然,SAP 是很值得尊重的,至少它想到了这些很细节的问题,虽然没有专门开发一个称为“系统设置”的功能,不过毕竟用系统的通用功能为我们提供了相应操作的可能性。下面就来详细说说。

方法很简单,只需要用下面几个步骤就行了。

首先:输入事务码 SE61,或者通过菜单“Tools -> ABAP Workbench -> Utilities -> Documentation”(中文系统“工具 -> ABAP 工作台 -> 实用程序 -> 文档”。我用的是 ECC5,其他版本的菜单路径可能略有不同)打开文档维护的初始界面。

然后:填写下列必要参数
Document Class(文档类):选择 General Text(常规文本),选择时的 ID 为“TX”。
Language(语言):这里需要一定注意,语言必须选择登录页面显示的语言,而不是用户个人设置里面指定的登录后使用的语言。这个语言是 BASIS 在系统参数里面设置的。如果语言不对,界面上就无法显示。
Name(名称):填写“ZLOGIN_SCREEN_INFO”,必须是这个名字,不能变。

然后:根据实际情况按“Create(创建)”或“Change(更改)”按钮——反正如果没有创建过按了更改或创建过后按了创建都会有相应的错误提示,不会搞错的——来编辑文档。

接下来:有可能会遇到一个问题,编辑界面是一个 RichTextFormat 窗口,就是跟 Windows 自带的写字板一样,这个界面可以为文本添加很多格式,但是缺点是,这些格式没法用在我们的登录界面上。有兴趣的朋友可以自己试试看会出现什么结果。我们只需要一个纯文本的编辑器,怎么办?当然有办法!到菜单里面找,“Goto -> Change Editor”(中文系统“转到 -> 修改编辑器”),就可以在 RTF 编辑器和纯文本编辑器之间切换了。

按照 SAP Notes 205487 的说明,文本最多 16 行,每行 45 个等宽字符,而根据我的实践,可以输入无数(反正我回车到手酸了也没到头,已经超过 1000 行了)行文本,登录屏幕上最多显示到第 17 行。每行最多可以输入 72 个英文字符或 36 个中文字符,以及它们的任意组合(70个英文+1个汉字……),而在屏幕上显示的文字则根据系统所使用字符集的不同而变化,由于在这个文本里面用的不是等宽字体,一般来说,英文能够显示 52 个字符,而中文能显示 30 个半。SAP 还是很体贴的,如果字符数量超过显示宽度,则鼠标移动到相应行的时候,会出来一个小提示栏,显示完整的一行文本。
改变字符集的方法是,在登录界面上按“Alt + F2”或者系统工具栏最右面那个图标下的“字符集”来选择,不过每种语言只能使用自己的字符集,否则就会显示乱码。

罗嗦了这么多,总算可以保存了。不过不要忘记了 SAP 中经常需要激活才能使用的基本原则,文档对象也是需要激活的。保存激活时会要求选择开发类,如果不需要把登录文本传输给其他系统,就指定为本地对象,否则的话,选择合适的开发类。如果用了开发类,则还需要指定传输请求号。都指定以后,这个登录界面的文字就会显示出来。

附加一个说明,在每行的开头,可以用字段符号指定一个小图标,而这时就很有意思了,原来无法完全显示的文字行就会不受宽度限制,完整的显示出来。用@<CODE>@来指定图标,其中<CODE>是两个字符的图标代码,字符范围是数字和字母,例如:00、01、……、09、0A、0B、……、0Z、10、……一直排下去,有好几百个。
可以用 SE38 运行程序 RSTXICON 来查看所有图标。

需要说明的是,事务码 SE61 的功能不这么简单,它可以维护整个系统里中各种各样的文档,修改登录界面文字只是其中很小的一个应用,更多功能都需要各位自己去发掘了。


ultraluck 发表于:2008.01.24 15:40 ::分类: ( sap学习 ) ::阅读:(86次) :: 评论 (0) :: 引用 (0)

2008 年 01 月 15日, 星期二

sap 更新锁定及解锁

使用函数:FUNCTION 'VIEW_ENQUEUE'

锁定所有对应的透明表

使用函数解FUNCTION 'DEQUEUE_ALL'

所有的透明表

查看数据更新错误情况:使用事务码:sm13

人工处理错误


ultraluck 发表于:2008.01.15 15:53 ::分类: ( sap学习 ) ::阅读:(171次) :: Permanent link :: 引用 (0)

abap--如何获取sap标准表的相关的锁(lock) [转]

最近经常有abap问关于锁的问题,我特此收集了一些资料,供大家参考,也请大家指正。

1.sap锁的概念sap为了同步同时多个用户操作同一数据,防止数据出现不一致性而采用了锁机制。一般 sap会在操作数据前设置锁,防止第二个用户进行修改操作,当操作结束后系统在释放锁。

2.SAP锁的类型
Exclusive lock

The locked data can be read or processed by one user only. A request for another exclusive lock or for a shared lock is rejected.

Shared lock

Several users can read the same data at the same time, but as soon as a user edits the data, a second user can no longer access this data. Requests for further shared locks are accepted, even if they are issued by different users, but exclusive locks are rejected.

Exclusive but not cumulative lock

Exclusive locks can be requested by the same transaction more than once and handled successively, but an exclusive but not cumulative lock can only be requested once by a given transaction. All other lock requests are rejected.

3.相关TCODE
SE11

4.相关表
DD25L:组合标题(方式,MC目标,锁定目标)(纪录了锁主表)
DD25T:
DD26S:视图的基本表和外来码关系(纪录了所有和锁相关的表)
DD27S:合计(视图,MC对象,锁定对象)字段

5.相关函数
RS_DD_ENQU_EDIT
RS_DD_ENQU_ADD

6.获取表相关锁的列表程序
REPORT ZRFI0090 LINE-COUNT 70
LINE-SIZE 255
NO STANDARD PAGE HEADING.
type-pools: slis.
tables: DD02L,dd26s.
data: begin of g_tab occurs 10,
TABNAME like dd26s-TABNAME,
VIEWNAME type dd26s-VIEWNAME,
ename like EMFIN-FBEMFIN,
dname like EMFIN-FBEMFIN,
end of g_tab.
data g_fcat type slis_t_fieldcat_alv.
data: g_fieldcat type slis_fieldcat_alv.
select-options s_table for dd02l-TABNAME default 'VBAK'.

end-of-selection.
select dd26s~TABNAME dd25l~VIEWNAME
INTO CORRESPONDING FIELDS OF TABLE g_tab
from dd26s
inner join dd25l
on dd26s~VIEWNAME = dd25l~VIEWNAME
and dd25l~AGGTYPE = 'E'
where TABNAME in s_table.
loop at g_tab.
concatenate 'ENQUEUE_' g_tab-VIEWNAME into g_tab-ename.
concatenate 'DEQUEUE_' g_tab-VIEWNAME into g_tab-dname.
modify g_tab.
endloop.

call function 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = 'ZTEST4'
I_INTERNAL_TABNAME = 'G_TAB'
i_inclname = 'ZTEST4'
CHANGING
ct_fieldcat = g_fcat.

g_fieldcat-fieldname = 'ENAME'.
g_fieldcat-seltext_s = '加锁函数名'.
append g_fieldcat to g_fcat.

g_fieldcat-fieldname = 'DNAME'.
g_fieldcat-seltext_s = '解锁函数名'.
append g_fieldcat to g_fcat.

call function 'REUSE_ALV_GRID_DISPLAY'
exporting
* i_callback_program = repname
* i_callback_user_command = g_user_command
* i_structure_name = 'INV'
* is_layout = layout
it_fieldcat = g_fcat
* is_variant = g_variant
* it_events = events[]
* i_callback_pf_status_set = 'F01_ALV_EVENT_PF_STATUS_SET'
tables
t_outtab = g_tab.

7.通过断点找程序所用到的锁
用se38打开程序LSENAF01,并定位到send_enqueue子过程,在该过程中的任一语句设置断点。完成断点设置后,则去执行标准tcode,系统就会在程序调用锁时自动停止在断点处,这时你就可以通过调用堆栈获取加锁函数(ENQUEUE_XXXXXX),其中"XXXXXX"就是锁名称,你就可以通过SE11查看锁信息。

8.有多个表的锁的样例
锁:EMEKKOE
  主表:EKKO-->E 专用累积
  从表:EKPO-->E 专用累积
  参数:

 查看全文
ultraluck 发表于:2008.01.15 15:32 ::分类: ( sap学习 ) ::阅读:(150次) :: Permanent link :: 引用 (0)

2008 年 01 月 13日, 星期日

upload multiple excel sheet to internal table

upload multiple excel sheet to internal table
概述:SAP系统提供了一个上传excel文件到sap 的函数 ALSM_EXCEL_TO_INTERNAL_TABLE,但是该函数只能上传一个sheet到内表中。本方法是扩展了该函数,使其可以上传多个sheet到内表。
代码如下:
function z_alsm_excel_to_internal_table .
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(FILENAME) LIKE RLGRAP-FILENAME
*" VALUE(I_BEGIN_COL) TYPE I
*" VALUE(I_BEGIN_ROW) TYPE I
*" VALUE(I_END_COL) TYPE I
*" VALUE(I_END_ROW) TYPE I
*" TABLES
*" INTERN STRUCTURE ALSMEX_TABLINE
*" EXCEPTIONS
*" INCONSISTENT_PARAMETERS
*" UPLOAD_OLE
*"----------------------------------------------------------------------

 data: excel_tab type ty_t_sender.
 data: ld_separator type c.
 data: application type ole2_object,
 workbook type ole2_object,
 range type ole2_object,
 worksheet type ole2_object.
 data: h_cell type ole2_object,
 h_cell1 type ole2_object.
 data:
 ld_rc type i.
* Rückgabewert der Methode "clipboard_export "

* Makro für Fehlerbehandlung der Methods
 define m_message.
 case sy-subrc.
 when 0.
 when 1.
 message id sy-msgid type sy-msgty number sy-msgno
 with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
 when others. raise upload_ole.
 endcase.
 end-of-definition.


* check parameters
 if i_begin_row > i_end_row. raise inconsistent_parameters. endif.
 if i_begin_col > i_end_col. raise inconsistent_parameters. endif.

* Get TAB-sign for separation of fields
 class cl_abap_char_utilities definition load.
 ld_separator = cl_abap_char_utilities=>horizontal_tab.

* open file in Excel
 if application-header = space or application-handle = -1.
 create object application 'Excel.Application'.
 m_message.
 endif.
 call method of application 'Workbooks' = workbook.
 m_message.
 call method of workbook 'Open' exporting #1 = filename.
 m_message.
* set property of application 'Visible' = 1.
* m_message.
* get property of application 'ACTIVESHEET' = worksheet.
* m_message.
*---------------------------------------------------
 call method of application 'WORKSHEETS' = worksheet
 exporting
 #1 = z_shname.

 call method of worksheet 'ACTIVATE'.
*---------------------------------------------------
* mark whole spread sheet
 call method of worksheet 'Cells' = h_cell
 exporting #1 = i_begin_row #2 = i_begin_col.
 m_message.
 call method of worksheet 'Cells' = h_cell1
 exporting #1 = i_end_row #2 = i_end_col.
 m_message.

 call method of worksheet 'RANGE' = range
 exporting #1 = h_cell #2 = h_cell1.
 m_message.
 call method of range 'SELECT'.
 m_message.

* copy marked area (whole spread sheet) into Clippboard
 call method of range 'COPY'.
 m_message.

* read clipboard into ABAP
 call method cl_gui_frontend_services=>clipboard_import
 importing
 data = excel_tab
 exceptions
 cntl_error = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
 others = 4
 .
 if sy-subrc <> 0.
 message a037(alsmex).
 endif.

 perform separated_to_intern_convert tables excel_tab intern
 using ld_separator.

* clear clipboard
 refresh excel_tab.
 call method cl_gui_frontend_services=>clipboard_export
 importing
 data = excel_tab
 changing
 rc = ld_rc
 exceptions
 cntl_error = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
 others = 4
 .

* quit Excel and free ABAP Object - unfortunately, this does not kill
* the Excel process
 call method of application 'QUIT'.
 m_message.

* >>>>> Begin of change note 575877
* to kill the Excel process it's necessary to free all used objects
 free object h_cell. m_message.
 free object h_cell1. m_message.
 free object range. m_message.
 free object worksheet. m_message.
 free object workbook. m_message.
 free object application. m_message.
* <<<<< End of change note 575877
endfunction.
ultraluck 发表于:2008.01.13 23:13 ::分类: ( sap学习 ) ::阅读:(230次) :: Permanent link :: 引用 (0)

利用BAPI上传物料主数据

本方法是利用BAPI:BAPI_MATERIAL_SAVEDATA 来上传物料。
 按照SAP物料主数据视图进行切割上传文件,将待上传的主数据分别放在多个文件进行上传。
源代码如下:

TABLES : mara,mbew,marc,mard,mvke,marm.
DATA f_file LIKE rlgrap-filename.
CONSTANTS c(1) VALUE 'X' .
DATA : result LIKE sy-subrc .
DATA : view_n TYPE string.
CONSTANTS :
 f_basic LIKE rlgrap-filename VALUE 'MM_IM_Basic.txt',
 f_plant LIKE rlgrap-filename VALUE 'MM_IM_Plant.txt',
 f_sales LIKE rlgrap-filename VALUE 'MM_IM_Sales.txt',
 f_storage LIKE rlgrap-filename VALUE 'MM_IM_Storage.txt',
 f_valuation LIKE rlgrap-filename VALUE 'MM_IM_Valuation.txt',
 f_uom LIKE rlgrap-filename VALUE 'MM_IM_UOM.txt',
 f_tax LIKE rlgrap-filename VALUE 'MM_IM_Tax.txt',
 f_classification LIKE rlgrap-filename
 VALUE 'MM_IM_CLASSIFICATION.txt'.
DATA: bapi_head LIKE bapimathead,
 bapi_makt LIKE bapi_makt, "Material Description
 bapi_mara1 LIKE bapi_mara, "Client Data
 bapi_marax LIKE bapi_marax,
 bapi_mvke1 LIKE bapi_mvke, "Sales view
 bapi_mvkex1 LIKE bapi_mvkex,
 bapi_marc1 LIKE bapi_marc, "Plant View
 bapi_marcx1 LIKE bapi_marcx,
 bapi_mbew1 LIKE bapi_mbew, "Accounting View
 bapi_mbewx1 LIKE bapi_mbewx,
 bapi_mpgd1 LIKE bapi_mpgd, "Planning view
 bapi_mpgdx1 LIKE bapi_mpgdx,
 bapi_mard1 LIKE bapi_mard, "Storage location
 bapi_mardx1 LIKE bapi_mardx,
 bapi_return LIKE bapiret2, "Return Parameter
 bapi_return1 LIKE bapireturn1.
DATA : longtext(130) TYPE c .
*material descriptions.
DATA: BEGIN OF int_makt OCCURS 100.
 INCLUDE STRUCTURE bapi_makt.
DATA: END OF int_makt.
*units of measure .
DATA: BEGIN OF int_marm OCCURS 100.
 INCLUDE STRUCTURE bapi_marm.
DATA: END OF int_marm.
*information on updata for units of measue
DATA: BEGIN OF int_marmx OCCURS 100.
 INCLUDE STRUCTURE bapi_marmx.
DATA: END OF int_marmx.
*international acticle numbers
DATA: BEGIN OF int_mean OCCURS 100.
 INCLUDE STRUCTURE bapi_mean.
DATA: END OF int_mean.
*long text
DATA: BEGIN OF int_mltx OCCURS 100.
 INCLUDE STRUCTURE bapi_mltx.
DATA: END OF int_mltx.
*Tax classification
DATA: BEGIN OF int_mlan OCCURS 100.
 INCLUDE STRUCTURE bapi_mlan.
DATA: END OF int_mlan.
* Classification view
DATA : BEGIN OF return_line OCCURS 10.
 INCLUDE STRUCTURE bapiret2.
DATA : END OF return_line.

DATA : BEGIN OF alloc_values_num OCCURS 10.
 INCLUDE STRUCTURE bapi1003_alloc_values_num.
DATA : END OF alloc_values_num.

DATA : BEGIN OF alloc_values_char OCCURS 10.
 INCLUDE STRUCTURE bapi1003_alloc_values_char.
DATA : END OF alloc_values_char.

DATA : BEGIN OF alloc_values_curr OCCURS 10.
 INCLUDE STRUCTURE bapi1003_alloc_values_curr.
DATA : END OF alloc_values_curr.
* DEFINE COLUMNS FOR INTERAL TABEL .
DATA: BEGIN OF int_mat_base OCCURS 100,
* Initial Screen
 industrysector(1) ,
 materialtype(4) ,
* Basic Data 1
 description(38) ,
 longtext1(130) ,
 longtext2(130) ,
 baseunitofmeasure(3) ,
 externalmaterialgroup(18) ,
 materialgroup(9) ,
 division(2) ,
 producthierarchy(18) ,
 oldmaterialnumber(18) ,
 formappingprodhieritdept(18) ,
 xplantmatlstatus(2) ,
 basicvalidfrom(10) ,
 itemcategorygroup(4) ,
 grossweight(13) ,
 netweight(13) ,
 weightunit(3) ,
 volume(13) ,
 volumeunit(3) ,
 sizedimensions(32) ,
 packingmaterial(4) ,
 skueanupc(18) ,
 skueanupclength(13) ,
 skueanupcwidth(13) ,
 skueanupcheight(13) ,
 eancategory(2) ,
 unitofdimension(3) ,
 materialnumber(18) ,
 END OF int_mat_base.

DATA: BEGIN OF int_mat_plant OCCURS 100,
* Key fields

 plant(4) ,
* Purchasing
 purchasinggroup(3) ,
 plantspecificmaterialstatus(2) ,
 automaticpurchaseorderallowed(1) ,
 purchasingvaluekey(4) ,
 purgrprocessingtime(3) ,
 oldmodelnumber(18) ,
 primarystoragebin(20) , "update by manual
 secondarystoragebin(20) , " update by manual
* MRP1
 mrpcontroller(3) ,
 mrpgroup(4) ,
 mrptype(2) ,
 lotsize(2) ,
 reorderpoint(13) ,
 minimumlotsize(13) ,
 maximumlotsize(13) ,
 fixedlotsize(13) ,
 assemblyscrapinpercent(10) ,
* MRP2
 procurementtype(1) ,
 specialprocurementkey(2) ,
 planneddeliverytime(3) ,
 inhouseproduction(3) ,
 mrpgrprocessingtime(3) ,
 schedulemarginkey(3) ,
 issuestoragelocation(4) ,
 proposedsupplyarea(10) ,
 backflush(1) ,
 safetystock(13) ,
 minimumsafetystock(13) ,
* MRP3
 periodindicator(1) ,
 strategygroup(2) ,
 consumptionmode(1) ,
 fwdconsumptionper(3) ,
 bwdconsumptionper(3) ,
 mrpavailabilitycheck(2) ,
 totreplleadtime(3) ,
 planningplant(4) , "for mpgd
 planningmaterial(18) , "for mpgd
 convfactorfplngmaterial(10), "for mpgd
* MPR4
 individualandcollreqmts(1) ,
 componentscrapinpercent(10) ,
 discontinuationindicator(1) ,
 effectiveoutdate(10) ,
 followupmaterial(18) ,
 repetitivemfgallowed(1) ,
 repetitivemanufacturingprofile(4) ,

* Work scheduling
 productionscheduler(3) ,
 setupandteardowntime(10) ,
 interoperationtime(10) ,
 processingtime(10) ,
 basequantity(13) ,

*Sales: General/Plant
 saleavailabilitycheck(2) ,
 transgroup(4) ,
 loadinggroup(4) ,
 materialgrouppackagingmaterial(4) ,
 profitcenter(10) ,
 commimpcodeno(17) ,
 productionschedulerprofile(6),
 roundingprofile(4),
 roundingvalue(13),
 materialnumber(18) ,
 END OF int_mat_plant.

* DEFINE SALES VIEW DATA.
DATA : BEGIN OF int_mat_sales OCCURS 100,
*Sales: Sales Org. 1

 salesorg(4) ,
 distrchannel(2) ,
 minorderqty(13) ,
 mindelyqty(13) ,
 deliveryunit(13) ,
 salesunit(4) ,
 xdistributionchainstatus(2) ,
 salevalidfrom1(10) ,
 dchainspecificstatus(2) ,
 salevalidfrom2(10) ,
 cashdiscountindicator(1) ,
*Sales: Sales Org. 2
 matstatgroup(1) ,
 rebategroup(2) ,
 acctassigngroup(2) ,
 genitemcateggroup(4) ,
 itemcatgroup(4) ,
 materialgroup1(3),
 materialgroup2(3),
 materialgroup3(3),
 materialgroup4(3),
 materialgroup5(3),
 materialnumber(18) ,

 END OF int_mat_sales.

DATA : BEGIN OF int_mat_storage OCCURS 100,

 plant(4) ,
* General Plant Data / Storage 1
 plantstoragelocation(4),
 unitofissue(3) ,
 storagebin(10),
 materialnumber(18) ,
 END OF int_mat_storage.

DATA : BEGIN OF int_mat_uom OCCURS 100,


* Unit of Mesaure Conversion
 innerconversiontosku(5) ,
 innercartonunit(3) ,
 innercartoneanupc(18) ,
 innercartonlength(13) ,
 innercartonwidth(13) ,
 innercartonheight(13) ,
 innercartoneancategory(2) ,
 innerunitofdimension(3) ,
 innervolume(13) ,
 innervolumeofunit(3) ,
 innergrossweight(13) ,
 innerweightunit(3) ,
 outerconversiontosku(5) ,
 outercartonunit(3) ,
 outercartoneanupc(18) ,
 outercartonlength(13) ,
 outercartonwidth(13) ,
 outercartonheight(13) ,
 outercartoneancategory(2) ,
 outerunitofdimension(3) ,
 outervolume(13) ,
 outervolumeofunit(3) ,
 outergrossweight(13) ,
 outerweightunit(3) ,
 materialnumber(18) ,
 END OF int_mat_uom.

DATA : BEGIN OF int_mat_tax OCCURS 100,
 salesorg(4) ,
 distrchannel(2) ,
 country(3) ,
 category(4) ,
 tax1classification(1) ,
 materialnumber(18) ,
 END OF int_mat_tax.

DATA : BEGIN OF int_mat_valuation OCCURS 100,

 plant(4) ,
*Accounting 1
 valuationcategory1(1) ,
 valuationclass1(4) ,
 pricecontrol1(1) ,
 priceunit(5) ,
 standardprice1(11) ,
 movingaverageprice1(11) ,
*Accounting 1 (Prime)
 valuationcategory2(1) ,
 valuationclass2(4) ,
 pricecontrol2(1) ,
 standardprice2(11) ,
 movingaverageprice2(11) ,
*Accounting 1 (Grade B)
 valuationcategory3(1) ,
 valuationclass3(4) ,
 pricecontrol3(1) ,
 standardprice3(11) ,
 movingaverageprice3(11) ,
*Accounting 1 (Zero value)
 valuationcategory4(1) ,
 valuationclass4(4) ,
 pricecontrol4(1) ,
 standardprice4(11) ,
 movingaverageprice4(11) ,
*Accounting 2
 taxprice1(11) ,
 commercialprice1(11) ,
* Cost Estimate 1
 matlcostqtystruc(1) ,
 origingroup(4) ,
 materialorigin(1) ,
 costingoverheadgroup(10) ,
 variancekey(6) ,
 lotsizeforproductcosting(13) ,
 materialnumber(18) ,


 END OF int_mat_valuation.
* classification
DATA : BEGIN OF int_mat_classification OCCURS 100,
 objectkey LIKE bapi1003_key-object,
 descprition LIKE bapi1003_alloc_values_char-charact_descr,
 uom LIKE bapi1003_alloc_values_num-unit_from,
 classtype LIKE bapi1003_key-classtype,
 classnum LIKE bapi1003_key-classnum,
 charactername LIKE bapi1003_alloc_values_char-charact,
 charactervalue LIKE bapi1003_alloc_values_char-value_char,
 END OF int_mat_classification.
* START-OF-SCREEN.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001 NO
INTERVALS .
PARAMETERS: f_dir LIKE rlgrap-filename DEFAULT 'C:DATA'
 MEMORY ID f_dir VISIBLE LENGTH 20 OBLIGATORY .
SELECTION-SCREEN END OF BLOCK blk1.


SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002 NO
INTERVALS .
PARAMETERS:

 create RADIOBUTTON GROUP rad2 ,
 modify RADIOBUTTON GROUP rad2 .

SELECTION-SCREEN END OF BLOCK blk2.

SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-003 NO
INTERVALS .
PARAMETERS:
 basic RADIOBUTTON GROUP rad1,
 plant RADIOBUTTON GROUP rad1,
 sale RADIOBUTTON GROUP rad1,
 tax RADIOBUTTON GROUP rad1,
 storage RADIOBUTTON GROUP rad1,
 m_valu RADIOBUTTON GROUP rad1,
 classifi RADIOBUTTON GROUP rad1,
 uom RADIOBUTTON GROUP rad1,
 all RADIOBUTTON GROUP rad1.
SELECTION-SCREEN END OF BLOCK blk3.

* END-OF-SCREEN.

**************** program logic begin ****************************

IF basic = 'X' .
 result = 0 .
 PERFORM save_basic_data.
ENDIF.
IF plant = 'X' .
 result = 0 .
 PERFORM save_plant_data.
ENDIF.
IF sale = 'X' .
 result = 0 .
 PERFORM save_sales_data.
ENDIF.
IF storage = 'X' .
 result = 0 .
 PERFORM save_storage_data.
ENDIF.
IF uom = 'X' .
 result = 0 .
 PERFORM save_uom_data.
ENDIF.
IF tax = 'X' .
 result = 0 .
 PERFORM save_tax_data.
ENDIF.
IF m_valu = 'X' .
 result = 0 .
 PERFORM save_valuation_data.
ENDIF.
IF classifi = 'X' .
 result = 0 .
 IF modify = c .
 PERFORM change_classification_data.
 ELSE.
 PERFORM create_classification_data.
 ENDIF.
ENDIF.



IF all = c .

 f_file = space .
 PERFORM save_basic_data.

 IF result = 0 .
 f_file = space .
 PERFORM save_plant_data.
 ENDIF.
 IF result = 0 .
 f_file = space .
 PERFORM save_sales_data.
 ENDIF.
 IF result = 0 .
 f_file = space .
 PERFORM save_storage_data.
 ENDIF.
 IF result = 0 .
 f_file = space .
 PERFORM save_tax_data.
 ENDIF.
 IF result = 0 .
 f_file = space .
 PERFORM save_valuation_data.
 ENDIF.
 IF result = 0 .
 IF create = c .
 f_file = space .
 PERFORM create_classification_data.
 ELSE.
 PERFORM change_classification_data.
 ENDIF.
 ENDIF.
 IF result = 0 .
 f_file = space .
 PERFORM save_uom_data.
 ENDIF.
ENDIF.

*&--------------------------------------------------------------------*
*& Form SAVE_BASIC_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM save_basic_data.
 result = 0 .
 PERFORM upload_basic_file .
 IF result = 0 .
 PERFORM update_basic_data .
 ENDIF.
ENDFORM. "SAVE_BASIC_DATA
*&--------------------------------------------------------------------*
*& Form SAVE_PLANT_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM save_plant_data.
 result = 0 .
 PERFORM upload_plant_file .
 IF result = 0 .
 PERFORM update_plant_data .
 ENDIF.
ENDFORM. "SAVE_PLANT_DATA
*&--------------------------------------------------------------------*
*& Form SAVE_Sales_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM save_sales_data.
 result = 0 .
 PERFORM upload_sales_file .
 IF result = 0 .
 PERFORM update_sales_data .
 ENDIF.
ENDFORM. "SAVE_Sales_DATA
*&--------------------------------------------------------------------*
*& Form SAVE_Storage_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM save_storage_data.
 result = 0 .
 PERFORM upload_storage_file .
 IF result = 0 .
 PERFORM update_storage_data .
 ENDIF.
ENDFORM. "SAVE_Storage_DATA
*&--------------------------------------------------------------------*
*& Form SAVE_UOM_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM save_uom_data.
 result = 0 .
 PERFORM upload_uom_file .
 IF result = 0 .
 PERFORM update_uom_data .
 ENDIF.
ENDFORM. "SAVE_UOM_DATA

*&--------------------------------------------------------------------*
*& Form SAVE_TAX_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM save_tax_data.
 result = 0 .
 PERFORM upload_tax_file .
 IF result = 0 .
 PERFORM update_tax_data .
 ENDIF.
ENDFORM. "SAVE_TAX_DATA
*&--------------------------------------------------------------------*
*& Form SAVE_VALUATION_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM save_valuation_data.
 result = 0 .
 PERFORM upload_valuation_file .
 IF result = 0 .
 PERFORM update_valuation_data .
 ENDIF.
ENDFORM. "SAVE_VALUATION_DATA

*&--------------------------------------------------------------------*
*& Form UPDATE_VALUATION_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM update_valuation_data .

 DATA : price TYPE p DECIMALS 2 .
 LOOP AT int_mat_valuation .
 IF int_mat_valuation-materialnumber = space .
 DELETE int_mat_valuation INDEX sy-tabix.
 ENDIF.
 ENDLOOP.
 LOOP AT int_mat_valuation.
* header
 bapi_head-material = int_mat_valuation-materialnumber.
 bapi_head-account_view = 'X'.
 bapi_head-cost_view = 'X'.
*Accounting view
* Accounting 2
 bapi_mbew1-commprice1 = int_mat_valuation-commercialprice1.
 bapi_mbew1-taxprice_1 = int_mat_valuation-taxprice1.

 IF bapi_mbew1-commprice1 <> space.
 bapi_mbewx1-commprice1 = 'X'.
 ENDIF.
 IF bapi_mbew1-taxprice_1 <> space.
 bapi_mbewx1-taxprice_1 = 'X'.
 ENDIF.
* Cost Estimate 1
 bapi_mbew1-qty_struct = int_mat_valuation-matlcostqtystruc.
 bapi_mbew1-orig_group = int_mat_valuation-origingroup.
 bapi_mbew1-orig_mat = int_mat_valuation-materialorigin.
 bapi_mbew1-overhead_grp = int_mat_valuation-costingoverheadgroup.

 IF bapi_mbew1-qty_struct <> space.
 bapi_mbewx1-qty_struct = 'X'.
 ENDIF.
 IF bapi_mbew1-orig_group <> space.
 bapi_mbewx1-orig_group = 'X'.
 ENDIF.
 IF bapi_mbew1-orig_mat <> space.
 bapi_mbewx1-orig_mat = 'X'.
 ENDIF.
 IF bapi_mbew1-overhead_grp <> space.
 bapi_mbewx1-overhead_grp = 'X'.
 ENDIF.

 bapi_marc1-plant = int_mat_valuation-plant.
 bapi_marc1-variance_key = int_mat_valuation-variancekey.
 bapi_marc1-lot_size = int_mat_valuation-lotsizeforproductcosting
 .
 bapi_marcx1-plant = int_mat_valuation-plant.

 IF bapi_marc1-variance_key <> space.
 bapi_marcx1-variance_key = 'X' .
 ENDIF.
 IF bapi_marc1-lot_size <> space.
 bapi_marcx1-lot_size = 'X' .
 ENDIF.



* Accounting view -1default -2PRIME -3GRADE B -4Zero value.
*---------------------------------------------------------------------
* note : if first create the valuation type of space was fail,system *
* print error message : "first create the valuation-type- *
* independent data" *
*----------------------------------------------------------------------

* Accounting 1 - default

 bapi_mbew1-val_area = int_mat_valuation-plant.
 bapi_mbew1-val_cat = int_mat_valuation-valuationcategory1.
 bapi_mbew1-val_class = int_mat_valuation-valuationclass1.
 bapi_mbew1-price_ctrl = int_mat_valuation-pricecontrol1.
 bapi_mbew1-price_unit = int_mat_valuation-priceunit.
 price = int_mat_valuation-standardprice1.
 bapi_mbew1-std_price = price.
 price = int_mat_valuation-movingaverageprice1.
 bapi_mbew1-moving_pr = price.
 bapi_mbew1-val_type = space .
 bapi_mbewx1-val_type = space .

 bapi_mbewx1-val_area = int_mat_valuation-plant.
 IF bapi_mbew1-val_cat <> space.
 bapi_mbewx1-val_cat = 'X'.
 ENDIF.
 IF bapi_mbew1-val_class <> space.
 bapi_mbewx1-val_class = 'X'.
 ENDIF.
 IF bapi_mbew1-price_ctrl <> space.
 bapi_mbewx1-price_ctrl = 'X'.
 ENDIF.
 IF bapi_mbew1-price_unit <> space.
 bapi_mbewx1-price_unit = 'X'.
 ENDIF.
 IF bapi_mbew1-std_price <> space.
 bapi_mbewx1-std_price = 'X'.
 ENDIF.
 IF bapi_mbew1-moving_pr <> space.
 bapi_mbewx1-moving_pr = 'X'.
 ENDIF.
 PERFORM whether_exist_valuation USING int_mat_valuation-materialnumber
 int_mat_valuation-plant
 space.
 IF sy-subrc = 4 AND create = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 1 AND modify = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 0 AND modify = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 1 AND create = 'X'.
 bapi_return-type = 'S'.
 ENDIF.
 IF bapi_return-type = 'S'.
 CLEAR bapi_return-type.
* Accounting 1 - prime
 bapi_mbew1-val_cat = int_mat_valuation-valuationcategory2.
 bapi_mbew1-val_class = int_mat_valuation-valuationclass2.
 bapi_mbew1-price_ctrl = int_mat_valuation-pricecontrol2.
 price = int_mat_valuation-standardprice2.
 bapi_mbew1-std_price = price.
 price = int_mat_valuation-movingaverageprice2.
 bapi_mbew1-moving_pr = price.
 bapi_mbew1-val_type = 'PRIME' .
 bapi_mbewx1-val_type = 'PRIME' .

 bapi_mbewx1-val_area = int_mat_valuation-plant.
 IF bapi_mbew1-val_cat <> space.
 bapi_mbewx1-val_cat = 'X'.
 ENDIF.
 IF bapi_mbew1-val_class <> space.
 bapi_mbewx1-val_class = 'X'.
 ENDIF.
 IF bapi_mbew1-price_ctrl <> space.
 bapi_mbewx1-price_ctrl = 'X'.
 ENDIF.
 IF bapi_mbew1-std_price <> space.
 bapi_mbewx1-std_price = 'X'.
 ENDIF.
 IF bapi_mbew1-moving_pr <> space.
 bapi_mbewx1-moving_pr = 'X'.
 ENDIF.
 IF bapi_mbew1-price_ctrl <> space .
 PERFORM whether_exist_valuation USING int_mat_valuation-materialnumber
 int_mat_valuation-plant
 'PRIME'.
 IF sy-subrc = 4 AND create = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 1 AND modify = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 0 AND modify = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 1 AND create = 'X'.
 bapi_return-type = 'S'.
 ENDIF.
 ENDIF.
 IF bapi_return-type = 'S'.
 CLEAR bapi_return-type.
* Accounting 1 -grade b
 bapi_mbew1-val_cat = int_mat_valuation-valuationcategory3.
 bapi_mbew1-val_class = int_mat_valuation-valuationclass3.
 bapi_mbew1-price_ctrl = int_mat_valuation-pricecontrol3.
 price = int_mat_valuation-standardprice3.
 bapi_mbew1-std_price = price.
 price = int_mat_valuation-movingaverageprice3.
 bapi_mbew1-moving_pr = price.
 bapi_mbew1-val_type = 'GRADE B' .
 bapi_mbewx1-val_type = 'GRADE B' .

 bapi_mbewx1-val_area = int_mat_valuation-plant.
 IF bapi_mbew1-val_cat <> space.
 bapi_mbewx1-val_cat = 'X'.
 ENDIF.
 IF bapi_mbew1-val_class <> space.
 bapi_mbewx1-val_class = 'X'.
 ENDIF.
 IF bapi_mbew1-price_ctrl <> space.
 bapi_mbewx1-price_ctrl = 'X'.
 ENDIF.
 IF bapi_mbew1-std_price <> space.
 bapi_mbewx1-std_price = 'X'.
 ENDIF.
 IF bapi_mbew1-moving_pr <> space.
 bapi_mbewx1-moving_pr = 'X'.
 ENDIF.

 IF bapi_mbew1-price_ctrl <> space .
 PERFORM whether_exist_valuation USING int_mat_valuation-materialnumber
 int_mat_valuation-plant
 'GRADE B'.
 IF sy-subrc = 4 AND create = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 1 AND modify = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 0 AND modify = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 1 AND create = 'X'.
 bapi_return-type = 'S'.
 ENDIF.
 ENDIF.
 IF bapi_return-type = 'S'.
 CLEAR bapi_return-type.
* Accounting 1 - zero value.
 bapi_mbew1-val_cat = int_mat_valuation-valuationcategory4.
 bapi_mbew1-val_class = int_mat_valuation-valuationclass4.
 bapi_mbew1-price_ctrl = int_mat_valuation-pricecontrol4.
 price = int_mat_valuation-standardprice4.
 bapi_mbew1-std_price = price.
 price = int_mat_valuation-movingaverageprice4.
 bapi_mbew1-moving_pr = price.
 bapi_mbew1-val_type = 'ZERO VALUE' .
 bapi_mbewx1-val_type = 'ZERO VALUE' .

 bapi_mbewx1-val_area = int_mat_valuation-plant.
 IF bapi_mbew1-val_cat <> space.
 bapi_mbewx1-val_cat = 'X'.
 ENDIF.
 IF bapi_mbew1-val_class <> space.
 bapi_mbewx1-val_class = 'X'.
 ENDIF.
 IF bapi_mbew1-price_ctrl <> space.
 bapi_mbewx1-price_ctrl = 'X'.
 ENDIF.
 IF bapi_mbew1-std_price <> space.
 bapi_mbewx1-std_price = 'X'.
 ENDIF.
 IF bapi_mbew1-moving_pr <> space.
 bapi_mbewx1-moving_pr = 'X'.
 ENDIF.
 IF bapi_mbew1-price_ctrl <> space .
 PERFORM whether_exist_valuation USING int_mat_valuation-materialnumber
 int_mat_valuation-plant
 'ZERO VALUE'.
 IF sy-subrc = 4 AND create = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 1 AND modify = 'X'.
 PERFORM save_accounting.
 ELSEIF sy-subrc = 0 AND modify = 'X'.
 PERFORM save_accounting.
 ENDIF.

 ENDIF.

 ENDIF . "GRADE B SUCCESS
 ENDIF . "PRIME SUCCESS
 ENDIF . " DEFAULT SUCCESS.


 ENDLOOP.
 WRITE : / 'upload valuation view complete'.

ENDFORM . "UPDATE_VALUATION_DATA

*&--------------------------------------------------------------------*
*& Form UPDATE_TAX_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM update_tax_data.
 LOOP AT int_mat_tax .
 IF int_mat_tax-materialnumber = space .
 DELETE int_mat_tax INDEX sy-tabix.
 ENDIF.
 ENDLOOP.
 LOOP AT int_mat_tax.
* header
 bapi_head-material = int_mat_tax-materialnumber.

 bapi_mvke1-sales_org = int_mat_tax-salesorg.
 bapi_mvke1-distr_chan = int_mat_tax-distrchannel.
 bapi_mvkex1-sales_org = int_mat_tax-salesorg.
 bapi_mvkex1-distr_chan = int_mat_tax-distrchannel.

* Tax Classification
 REFRESH int_mlan.
 int_mlan-depcountry = int_mat_tax-country.
 int_mlan-tax_type_1 = int_mat_tax-category.
 int_mlan-taxclass_1 = int_mat_tax-tax1classification.
 APPEND int_mlan.
 CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
 EXPORTING
 headdata = bapi_head
* CLIENTDATA = BAPI_MARA1
* CLIENTDATAX = BAPI_MARAX
* PLANTDATA = BAPI_MARC1
* PLANTDATAX = BAPI_MARCX1
* PLANNINGDATA = BAPI_MPGD1
* PLANNINGDATAX = BAPI_MPGDX1
* VALUATIONDATA = BAPI_MBEW1
* VALUATIONDATAX = BAPI_MBEWX1
 salesdata = bapi_mvke1
 salesdatax = bapi_mvkex1
* STORAGELOCATIONDATA = BAPI_MARD1
* STORAGELOCATIONDATAX = BAPI_MARDX1
 IMPORTING
 return = bapi_return
 TABLES
* MATERIALDESCRIPTION = INT_MAKT.
* UNITSOFMEASURE = INT_MARM
* UNITSOFMEASUREX = INT_MARMX.
* MATERIALLONGTEXT = INT_MLTX .
 taxclassifications = int_mlan.

 IF bapi_return-type = 'E'.
 FORMAT COLOR COL_GROUP.
 WRITE : / bapi_return-message,
 / int_mat_tax-materialnumber,' upload unsucessfully!'.
 ENDIF.

 IF bapi_return-type = 'S'.
 FORMAT COLOR COL_KEY .
 WRITE : / int_mat_tax-materialnumber,' upload sucessfully'.
 ENDIF.
 ENDLOOP.
 WRITE : / 'upload tax view complete'.
ENDFORM. "UPDATE_TAX_DATA

*&--------------------------------------------------------------------*
*& Form UPDATE_UOM_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM update_uom_data .
 LOOP AT int_mat_uom .
 IF int_mat_uom-materialnumber = space .
 DELETE int_mat_uom INDEX sy-tabix.
 ENDIF.
 ENDLOOP.
 LOOP AT int_mat_uom.
 perform whether_exist_uom using int_mat_uom-materialnumber.
 if sy-subrc = 1 .
 continue .
 endif.
* header
 bapi_head-material = int_mat_uom-materialnumber.
* Inner carton unit of measure
 int_marm-alt_unit = int_mat_uom-innercartonunit .
 int_marm-numerator = int_mat_uom-innerconversiontosku .
 int_marm-gross_wt = int_mat_uom-innergrossweight .
 int_marm-unit_of_wt = int_mat_uom-innerweightunit .
 int_marm-volume = int_mat_uom-innervolume .
 int_marm-volumeunit = int_mat_uom-innervolumeofunit .
 int_marm-ean_upc = int_mat_uom-innercartoneanupc .
 int_marm-ean_cat = int_mat_uom-innercartoneancategory .
 int_marm-length = int_mat_uom-innercartonlength .
 int_marm-width = int_mat_uom-innercartonwidth .
 int_marm-height = int_mat_uom-innercartonheight .
 int_marm-unit_dim = int_mat_uom-innerunitofdimension .
 APPEND int_marm.
 int_marmx-alt_unit = int_mat_uom-innercartonunit .
 IF int_marm-numerator <> space .
 int_marmx-numerator = 'X' .
 ENDIF.
 IF int_marm-gross_wt <> space .
 int_marmx-gross_wt = 'X' .
 ENDIF.
 IF int_marm-unit_of_wt <> space .
 int_marmx-unit_of_wt = 'X' .
 ENDIF.
 IF int_marm-volume <> space .
 int_marmx-volume = 'X' .
 ENDIF.
 IF int_marm-volumeunit <> space .
 int_marmx-volumeunit = 'X' .
 ENDIF.
 IF int_marm-ean_upc <> space .
 int_marmx-ean_upc = 'X' .
 ENDIF.
 IF int_marm-ean_cat <> space .
 int_marmx-ean_cat = 'X' .
 ENDIF.
 IF int_marm-length <> space .
 int_marmx-length = 'X' .
 ENDIF.
 IF int_marm-width <> space .
 int_marmx-width = 'X' .
 ENDIF.
 IF int_marm-height <> space .
 int_marmx-height = 'X' .
 ENDIF.
 IF int_marm-unit_dim <> space .
 int_marmx-unit_dim = 'X' .
 ENDIF.
 APPEND int_marmx.
* Outer carton unit of measure
 int_marm-alt_unit = int_mat_uom-outercartonunit .
 int_marm-numerator = int_mat_uom-outerconversiontosku .
 int_marm-gross_wt = int_mat_uom-outergrossweight .
 int_marm-unit_of_wt = int_mat_uom-outerweightunit .
 int_marm-volume = int_mat_uom-outervolume .
 int_marm-volumeunit = int_mat_uom-outervolumeofunit .
 int_marm-ean_upc = int_mat_uom-outercartoneanupc .
 int_marm-ean_cat = int_mat_uom-outercartoneancategory .
 int_marm-length = int_mat_uom-outercartonlength .
 int_marm-width = int_mat_uom-outercartonwidth .
 int_marm-height = int_mat_uom-outercartonheight .
 int_marm-unit_dim = int_mat_uom-outerunitofdimension .
 APPEND int_marm.
 int_marmx-alt_unit = int_mat_uom-outercartonunit .

 IF int_marm-numerator <> space .
 int_marmx-numerator = 'X' .
 ENDIF.
 IF int_marm-gross_wt <> space .
 int_marmx-gross_wt = 'X' .
 ENDIF.
 IF int_marm-unit_of_wt <> space .
 int_marmx-unit_of_wt = 'X' .
 ENDIF.
 IF int_marm-volume <> space .
 int_marmx-volume = 'X' .
 ENDIF.
 IF int_marm-volumeunit <> space .
 int_marmx-volumeunit = 'X' .
 ENDIF.
 IF int_marm-ean_upc <> space .
 int_marmx-ean_upc = 'X' .
 ENDIF.
 IF int_marm-ean_cat <> space .
 int_marmx-ean_cat = 'X' .
 ENDIF.
 IF int_marm-length <> space .
 int_marmx-length = 'X' .
 ENDIF.
 IF int_marm-width <> space .
 int_marmx-width = 'X' .
 ENDIF.
 IF int_marm-height <> space .
 int_marmx-height = 'X' .
 ENDIF.
 IF int_marm-unit_dim <> space .
 int_marmx-unit_dim = 'X' .
 ENDIF.

 APPEND int_marmx.

 CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
 EXPORTING
 headdata = bapi_head
 IMPORTING
 return = bapi_return
 TABLES
 unitsofmeasure = int_marm
 unitsofmeasurex = int_marmx.

 IF bapi_return-type = 'E'.
 FORMAT COLOR COL_GROUP.
 WRITE : / bapi_return-message,
 / int_mat_uom-materialnumber,' upload unsucessfully!'.
 ENDIF.

 IF bapi_return-type = 'S'.
 FORMAT COLOR COL_KEY .
 WRITE : / int_mat_uom-materialnumber,' upload sucessfully'.
 ENDIF.
 ENDLOOP.
 WRITE : / 'upload UOM view complete '.
ENDFORM . "UPDATE_UOM_DATA
*&--------------------------------------------------------------------*
*& Form UPDATE_Storage_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM update_storage_data .
 LOOP AT int_mat_storage .
 IF int_mat_storage-materialnumber = space .
 DELETE int_mat_storage INDEX sy-tabix.
 ENDIF.
 ENDLOOP.
 LOOP AT int_mat_storage .
 TRANSLATE int_mat_storage-materialnumber TO UPPER CASE.
 PERFORM whether_exist_storage USING int_mat_storage-materialnumber
 int_mat_storage-plant
 int_mat_storage-plantstoragelocation.
 IF sy-subrc = 1 .
 CONTINUE.
 ENDIF.
* header
 bapi_head-material = int_mat_storage-materialnumber.
 bapi_head-storage_view = 'X'.

* General Plant Data / Storage 1

 bapi_mard1-plant = int_mat_storage-plant.
 bapi_mard1-stge_loc = int_mat_storage-plantstoragelocation.
 bapi_mard1-stge_bin = int_mat_storage-storagebin.

 bapi_mardx1-plant = int_mat_storage-plant.
 bapi_mardx1-stge_loc = int_mat_storage-plantstoragelocation.
 IF bapi_mard1-stge_bin <> space.
 bapi_mardx1-stge_bin = 'X'.
 ENDIF.

* General Plant Data / Storage 2
 bapi_marc1-plant = int_mat_storage-plant.
 bapi_marc1-issue_unit = int_mat_storage-unitofissue.
 bapi_marcx1-plant = int_mat_storage-plant.
 IF bapi_marc1-issue_unit <> space.
 bapi_marcx1-issue_unit = 'X'.
 ENDIF.
* the relationship between base unit and unit of issue.
 REFRESH int_marm.
 REFRESH int_marmx.
 int_marm-alt_unit = int_mat_storage-unitofissue.
 int_marm-numerator = '1'.
 APPEND int_marm.
 int_marmx-alt_unit = int_mat_storage-unitofissue.
 int_marmx-numerator = 'X'.
 APPEND int_marmx.



 CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
 EXPORTING
 headdata = bapi_head
 plantdata = bapi_marc1
 plantdatax = bapi_marcx1
 storagelocationdata = bapi_mard1
 storagelocationdatax = bapi_mardx1
 IMPORTING
 return = bapi_return
 TABLES
* MATERIALDESCRIPTION = INT_MAKT.
 unitsofmeasure = int_marm
 unitsofmeasurex = int_marmx.
* MATERIALLONGTEXT = INT_MLTX .
* TAXCLASSIFICATIONS = INT_MLAN.

 IF bapi_return-type = 'E'.
 FORMAT COLOR COL_GROUP.
 WRITE : / bapi_return-message,
 / int_mat_storage-materialnumber,' upload unsucessfully!'.
 ENDIF.

 IF bapi_return-type = 'S'.
 FORMAT COLOR COL_KEY .
 WRITE : / int_mat_storage-materialnumber,' upload sucessfully'.
 ENDIF.

 ENDLOOP.
 WRITE : / 'upload storage view complete'.
ENDFORM. "UPDATE_Storage_DATA
*&--------------------------------------------------------------------*
*& Form UPDATE_Sales_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM update_sales_data .
 LOOP AT int_mat_sales .
 IF int_mat_sales-materialnumber = space .
 DELETE int_mat_sales INDEX sy-tabix.
 ENDIF.
 ENDLOOP.
 LOOP AT int_mat_sales.
 TRANSLATE int_mat_sales-materialnumber TO UPPER CASE.
 PERFORM whether_exist_sales USING int_mat_sales-materialnumber
 int_mat_sales-salesorg
 int_mat_sales-distrchannel.
 IF sy-subrc = 1 .
 CONTINUE.
 ENDIF.
* Header
 bapi_head-material = int_mat_sales-materialnumber.
 bapi_head-sales_view = 'X'.
* Sales view
* Sales Org.1
 bapi_mvke1-sales_org = int_mat_sales-salesorg.
 bapi_mvke1-distr_chan = int_mat_sales-distrchannel.
 bapi_mvke1-min_order = int_mat_sales-minorderqty.
 bapi_mvke1-min_dely = int_mat_sales-mindelyqty.
 bapi_mvke1-dely_unit = int_mat_sales-deliveryunit.
 bapi_mvke1-sales_unit = int_mat_sales-salesunit .
 bapi_mvke1-cash_disc = int_mat_sales-cashdiscountindicator.
 bapi_mvke1-valid_from = int_mat_sales-salevalidfrom2.
 bapi_mvke1-sal_status = int_mat_sales-dchainspecificstatus.

 bapi_mara1-sal_status = int_mat_sales-xdistributionchainstatus.
 bapi_mara1-svalidfrom = int_mat_sales-salevalidfrom1.

 IF bapi_mara1-sal_status <> space.
 bapi_marax-sal_status = 'X'.
 ENDIF .
 IF bapi_mara1-svalidfrom <> space.
 bapi_marax-svalidfrom = 'X'.
 ENDIF.
* the relationship between base unit and sales unit
 IF int_mat_sales-salesunit NE space .
 REFRESH int_marm.
 REFRESH int_marmx.
 int_marm-alt_unit = int_mat_sales-salesunit.
 int_marm-numerator = '1'.
 APPEND int_marm.
 int_marmx-alt_unit = int_mat_sales-salesunit.
 int_marmx-numerator = 'X'.
 APPEND int_marmx.
 ENDIF.
* Sales Org.2
 bapi_mvke1-matl_stats = int_mat_sales-matstatgroup .
 bapi_mvke1-rebate_grp = int_mat_sales-rebategroup.
 bapi_mvke1-acct_assgt = int_mat_sales-acctassigngroup.
 bapi_mara1-item_cat = int_mat_sales-genitemcateggroup.
 bapi_mvke1-item_cat = int_mat_sales-itemcatgroup.
 bapi_mvke1-matl_grp_1 = int_mat_sales-materialgroup1.
 bapi_mvke1-matl_grp_2 = int_mat_sales-materialgroup2.
 bapi_mvke1-matl_grp_3 = int_mat_sales-materialgroup3.
 bapi_mvke1-matl_grp_4 = int_mat_sales-materialgroup4.
 bapi_mvke1-matl_grp_5 = int_mat_sales-materialgroup5.

 bapi_mvkex1-sales_org = int_mat_sales-salesorg.
 bapi_mvkex1-distr_chan = int_mat_sales-distrchannel.

 IF bapi_mvke1-sal_status <> space.
 bapi_mvkex1-sal_status = 'X' .
 ENDIF.
 IF bapi_mvke1-min_order <> space.
 bapi_mvkex1-min_order = 'X' .
 ENDIF.
 IF bapi_mvke1-min_dely <> space.
 bapi_mvkex1-min_dely = 'X' .
 ENDIF.
 IF bapi_mvke1-dely_unit <> space.
 bapi_mvkex1-dely_unit = 'X' .
 ENDIF.
 IF bapi_mvke1-valid_from <> space.
 bapi_mvkex1-valid_from = 'X' .
 ENDIF.
 IF bapi_mvke1-sales_unit <> space.
 bapi_mvkex1-sales_unit = 'X' .
 ENDIF.
 IF bapi_mvke1-cash_disc <> space.
 bapi_mvkex1-cash_disc = 'X' .
 ENDIF.
 IF bapi_mvke1-valid_from <> space.
 bapi_mvkex1-valid_from = 'X' .
 ENDIF.
 IF bapi_mvke1-sal_status <> space.
 bapi_mvkex1-sal_status = 'X' .
 ENDIF.
 IF bapi_mvke1-matl_stats <> space.
 bapi_mvkex1-matl_stats = 'X' .
 ENDIF.
 IF bapi_mvke1-rebate_grp <> space.
 bapi_mvkex1-rebate_grp = 'X' .
 ENDIF.
 IF bapi_mvke1-acct_assgt <> space.
 bapi_mvkex1-acct_assgt = 'X' .
 ENDIF.
 IF bapi_mara1-item_cat <> space.
 bapi_marax-item_cat = 'X' .
 ENDIF.
 IF bapi_mvke1-item_cat <> space.
 bapi_mvkex1-item_cat = 'X' .
 ENDIF.
 IF bapi_mvke1-matl_grp_1 <> space.
 bapi_mvkex1-matl_grp_1 = 'X' .
 ENDIF.
 IF bapi_mvke1-matl_grp_2 <> space.
 bapi_mvkex1-matl_grp_2 = 'X' .
 ENDIF.
 IF bapi_mvke1-matl_grp_3 <> space.
 bapi_mvkex1-matl_grp_3 = 'X' .
 ENDIF.
 IF bapi_mvke1-matl_grp_4 <> space.
 bapi_mvkex1-matl_grp_4 = 'X' .
 ENDIF.
 IF bapi_mvke1-matl_grp_5 <> space.
 bapi_mvkex1-matl_grp_5 = 'X' .
 ENDIF.

 CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
 EXPORTING
 headdata = bapi_head
 clientdata = bapi_mara1
 clientdatax = bapi_marax
 salesdata = bapi_mvke1
 salesdatax = bapi_mvkex1
 IMPORTING
 return = bapi_return
 TABLES
 unitsofmeasure = int_marm
 unitsofmeasurex = int_marmx.

 IF bapi_return-type = 'E'.
 FORMAT COLOR COL_GROUP.
 WRITE : / bapi_return-message,
 / int_mat_sales-materialnumber,' upload unsucessfully!'.
 ENDIF.

 IF bapi_return-type = 'S'.
 FORMAT COLOR COL_KEY .
 WRITE : / int_mat_sales-materialnumber,' upload sucessfully'.
 ENDIF.

 ENDLOOP.
 WRITE : / 'upload sales view complete'.
ENDFORM . "UPDATE_Sales_DATA
*&--------------------------------------------------------------------*
*& Form UPDATE_BASIC_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM update_basic_data .
 view_n = 'basic'.
 LOOP AT int_mat_base .
 IF int_mat_base-materialnumber = space .
 DELETE int_mat_base INDEX sy-tabix.
 ENDIF.
 ENDLOOP.
* SET THE VALUE FROM INTERAL TABEL TO BAPI
 LOOP AT int_mat_base.
 TRANSLATE int_mat_base-materialnumber TO UPPER CASE.
 PERFORM whether_exist_basic USING int_mat_base-materialnumber .
 IF sy-subrc = 1 .
 CONTINUE.
 ENDIF.
* Header
 bapi_head-material = int_mat_base-materialnumber.
 bapi_head-ind_sector = int_mat_base-industrysector.
 bapi_head-matl_type = int_mat_base-materialtype.
 bapi_head-basic_view = 'X'.

* Material Description
 REFRESH int_makt.
 int_makt-langu = sy-langu. " SET THE DEFAULT LAN.
 int_makt-matl_desc = int_mat_base-description.
 APPEND int_makt.

* Long text
 REFRESH int_mltx.
 int_mltx-applobject = 'MATERIAL'.
 int_mltx-text_name = int_mat_base-materialnumber.
 int_mltx-text_id = 'GRUN'.
 int_mltx-langu = sy-langu.
 int_mltx-text_line = int_mat_base-longtext1.
 APPEND int_mltx.
 int_mltx-applobject = 'MATERIAL'.
 int_mltx-text_name = int_mat_base-materialnumber.
 int_mltx-text_id = 'GRUN'.
 int_mltx-langu = sy-langu.
 int_mltx-text_line = int_mat_base-longtext2.
 APPEND int_mltx.
* Client Data - Basic
 bapi_mara1-matl_group = int_mat_base-materialgroup.
 bapi_mara1-base_uom = int_mat_base-baseunitofmeasure.
 bapi_mara1-unit_of_wt = int_mat_base-weightunit.
 bapi_mara1-division = int_mat_base-division.
 bapi_mara1-net_weight = int_mat_base-netweight.
 bapi_mara1-size_dim = int_mat_base-sizedimensions.
 bapi_mara1-mat_grp_sm = int_mat_base-packingmaterial.
 bapi_mara1-extmatlgrp = int_mat_base-externalmaterialgroup.
 bapi_mara1-prod_hier = int_mat_base-producthierarchy.
 bapi_mara1-old_mat_no = int_mat_base-oldmaterialnumber.
 bapi_mara1-item_cat = int_mat_base-itemcategorygroup.
 bapi_mara1-pur_status = int_mat_base-xplantmatlstatus.
 bapi_mara1-pvalidfrom = int_mat_base-basicvalidfrom .
 IF bapi_mara1-matl_group <> space .
 bapi_marax-matl_group = 'X'.
 ENDIF.
 IF bapi_mara1-base_uom <> space .
 bapi_marax-base_uom = 'X'.
 ENDIF.
 IF bapi_mara1-unit_of_wt <> space .
 bapi_marax-unit_of_wt = 'X'.
 ENDIF.
 IF bapi_mara1-division <> space .
 bapi_marax-division = 'X'.
 ENDIF.
 IF bapi_mara1-net_weight <> space .
 bapi_marax-net_weight = 'X'.
 ENDIF.
 IF bapi_mara1-size_dim <> space .
 bapi_marax-size_dim = 'X'.
 ENDIF.
 IF bapi_mara1-mat_grp_sm <> space .
 bapi_marax-mat_grp_sm = 'X'.
 ENDIF.
 IF bapi_mara1-extmatlgrp <> space .
 bapi_marax-extmatlgrp = 'X'.
 ENDIF.
 IF bapi_mara1-prod_hier <> space .
 bapi_marax-prod_hier = 'X'.
 ENDIF.
 IF bapi_mara1-old_mat_no <> space .
 bapi_marax-old_mat_no = 'X'.
 ENDIF.
 IF bapi_mara1-item_cat <> space .
 bapi_marax-item_cat = 'X'.
 ENDIF.
 IF bapi_mara1-pur_status <> space .
 bapi_marax-pur_status = 'X'.
 ENDIF.
 IF bapi_mara1-pvalidfrom <> space .
 bapi_marax-pvalidfrom = 'X'.
 ENDIF.

 REFRESH int_marm .
 REFRESH int_marmx.
 int_marm-alt_unit = int_mat_base-baseunitofmeasure.
 int_marm-volume = int_mat_base-volume.
 int_marm-volumeunit = int_mat_base-volumeunit.
 int_marm-gross_wt = int_mat_base-grossweight.
 int_marm-ean_upc = int_mat_base-skueanupc.
 int_marm-ean_cat = int_mat_base-eancategory.
 int_marm-length = int_mat_base-skueanupclength.
 int_marm-width = int_mat_base-skueanupcwidth.
 int_marm-height = int_mat_base-skueanupcheight.
 int_marm-unit_dim = int_mat_base-unitofdimension.
 int_marm-unit_of_wt = int_mat_base-weightunit.
 APPEND int_marm.

 int_marmx-alt_unit = int_mat_base-baseunitofmeasure.

 IF int_marm-volume <> space .
 int_marmx-volume = 'X'.
 ENDIF.
 IF int_marm-volumeunit <> space .
 int_marmx-volumeunit = 'X'.
 ENDIF.
 IF int_marm-gross_wt <> space .
 int_marmx-gross_wt = 'X' .
 ENDIF.
 IF int_marm-ean_upc <> space .
 int_marmx-ean_upc = 'X' .
 ENDIF.
 IF int_marm-ean_cat <> space .
 int_marmx-ean_cat = 'X' .
 ENDIF.
 IF int_marm-length <> space .
 int_marmx-length = 'X' .
 ENDIF.
 IF int_marm-width <> space .
 int_marmx-width = 'X' .
 ENDIF.
 IF int_marm-height <> space .
 int_marmx-height = 'X' .
 ENDIF.
 IF int_marm-unit_dim <> space .
 int_marmx-unit_dim = 'X' .
 ENDIF.
 IF int_marm-unit_of_wt <> space .
 int_marmx-unit_of_wt = 'X'.
 ENDIF.
 APPEND int_marmx.

 CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
 EXPORTING
 headdata = bapi_head
 clientdata = bapi_mara1
 clientdatax = bapi_marax
* PLANTDATA = BAPI_MARC1
* PLANTDATAX = BAPI_MARCX1
* PLANNINGDATA = BAPI_MPGD1
* PLANNINGDATAX = BAPI_MPGDX1
* VALUATIONDATA = BAPI_MBEW1
* VALUATIONDATAX = BAPI_MBEWX1
* SALESDATA = BAPI_MVKE1
* SALESDATAX = BAPI_MVKEX1
* STORAGELOCATIONDATA = BAPI_MARD1
* STORAGELOCATIONDATAX = BAPI_MARDX1
 IMPORTING
 return = bapi_return
 TABLES
 materialdescription = int_makt
 unitsofmeasure = int_marm
 unitsofmeasurex = int_marmx
 materiallongtext = int_mltx .

 IF bapi_return-type = 'E'.
 FORMAT COLOR COL_GROUP.
 WRITE : / bapi_return-message+0(90),
 / bapi_return-message+90(90),
 / int_mat_base-materialnumber,' upload unsucessfully!'.
 ENDIF.

 IF bapi_return-type = 'S'.
 FORMAT COLOR COL_KEY .
 WRITE : / int_mat_base-materialnumber,' upload sucessfully'.
 ENDIF.
 ENDLOOP.
 WRITE : / 'upload basic view complete'.
ENDFORM. "UPDATE_BASIC_DATA

*&--------------------------------------------------------------------*
*& Form UPDATE_PLANT_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM update_plant_data .
 view_n = 'plant'.
 LOOP AT int_mat_plant .
 IF int_mat_plant-materialnumber = space .
 DELETE int_mat_plant INDEX sy-tabix.
 ENDIF.
 ENDLOOP.
 LOOP AT int_mat_plant.
 TRANSLATE int_mat_plant-materialnumber TO UPPER CASE.
 PERFORM whether_exist_plant USING int_mat_plant-materialnumber int_mat_plant-plant.
 IF sy-subrc = 1 .
 CONTINUE.
 ENDIF.
* Header
 bapi_head-material = int_mat_plant-materialnumber .
 bapi_head-purchase_view = 'X'.
 bapi_head-mrp_view = 'X'.
 bapi_head-work_sched_view = 'X'.
* Plant - Purchasing
 bapi_marc1-plant = int_mat_plant-plant.
 bapi_marc1-pur_group = int_mat_plant-purchasinggroup.
 bapi_marc1-auto_p_ord = int_mat_plant-automaticpurchaseorderallowed.
 bapi_marc1-pur_status = int_mat_plant-plantspecificmaterialstatus.
 bapi_marc1-gr_pr_time = int_mat_plant-purgrprocessingtime.
 bapi_mara1-pur_valkey = int_mat_plant-purchasingvaluekey.

 bapi_marcx1-plant = int_mat_plant-plant.
 IF bapi_marc1-pur_group <> space .
 bapi_marcx1-pur_group = 'X' .
 ENDIF.
 IF bapi_marc1-auto_p_ord <> space .
 bapi_marcx1-auto_p_ord = 'X' .
 ENDIF.
 IF bapi_marc1-pur_status <> space .
 bapi_marcx1-pur_status = 'X' .
 ENDIF.
 IF bapi_marc1-gr_pr_time <> space .
 bapi_marcx1-gr_pr_time = 'X' .
 ENDIF.
 IF bapi_mara1-pur_valkey <> space .
 bapi_marax-pur_valkey = 'X' .
 ENDIF.
* MRP view
* MRP 1
 bapi_marc1-mrp_type = int_mat_plant-mrptype.
 bapi_marc1-mrp_ctrler = int_mat_plant-mrpcontroller.
 bapi_marc1-mrp_group = int_mat_plant-mrpgroup.
 bapi_marc1-lotsizekey = int_mat_plant-lotsize.
 bapi_marc1-reorder_pt = int_mat_plant-reorderpoint.
 bapi_marc1-minlotsize = int_mat_plant-minimumlotsize.
 bapi_marc1-maxlotsize = int_mat_plant-maximumlotsize.
 bapi_marc1-fixed_lot = int_mat_plant-fixedlotsize.
 bapi_marc1-assy_scrap = int_mat_plant-assemblyscrapinpercent.
 bapi_marc1-round_prof = int_mat_plant-roundingprofile.
 bapi_marc1-round_val = int_mat_plant-roundingvalue.

 IF bapi_marc1-mrp_type <> space .
 bapi_marcx1-mrp_type = 'X' .
 ENDIF.
 IF bapi_marc1-mrp_ctrler <> space.
 bapi_marcx1-mrp_ctrler = 'X' .
 ENDIF.
 IF bapi_marc1-lotsizekey <> space.
 bapi_marcx1-lotsizekey = 'X' .
 ENDIF.
 IF bapi_marc1-reorder_pt <> space.
 bapi_marcx1-reorder_pt = 'X' .
 ENDIF.
 IF bapi_marc1-minlotsize <> space.
 bapi_marcx1-minlotsize = 'X' .
 ENDIF.
 IF bapi_marc1-maxlotsize <> space.
 bapi_marcx1-maxlotsize = 'X' .
 ENDIF.
 IF bapi_marc1-fixed_lot <> space.
 bapi_marcx1-fixed_lot = 'X' .
 ENDIF.
 IF bapi_marc1-assy_scrap <> space.
 bapi_marcx1-assy_scrap = 'X' .
 ENDIF.
 IF bapi_marc1-round_prof <> space.
 bapi_marcx1-round_prof = 'X' .
 ENDIF.
 IF bapi_marc1-round_val <> space.
 bapi_marcx1-round_val = 'X' .
 ENDIF.
* MRP view
* MRP 2
 bapi_marc1-proc_type = int_mat_plant-procurementtype.
 bapi_marc1-spproctype = int_mat_plant-specialprocurementkey.
 bapi_marc1-plnd_delry = int_mat_plant-planneddeliverytime.
 bapi_marc1-inhseprodt = int_mat_plant-inhouseproduction.
 bapi_marc1-gr_pr_time = int_mat_plant-purgrprocessingtime.
 bapi_marc1-iss_st_loc = int_mat_plant-issuestoragelocation.
 bapi_marc1-supply_area = int_mat_plant-proposedsupplyarea .
 bapi_marc1-backflush = int_mat_plant-backflush.
 bapi_marc1-safety_stk = int_mat_plant-safetystock.
 bapi_marc1-min_safety_stk = int_mat_plant-minimumsafetystock.
 bapi_marc1-sm_key = int_mat_plant-schedulemarginkey.

 IF bapi_marc1-proc_type <> space.
 bapi_marcx1-proc_type = 'X' .
 ENDIF.
 IF bapi_marc1-spproctype <> space.
 bapi_marcx1-spproctype = 'X' .
 ENDIF.
 IF bapi_marc1-plnd_delry <> space.
 bapi_marcx1-plnd_delry = 'X' .
 ENDIF.
 IF bapi_marc1-inhseprodt <> space.
 bapi_marcx1-inhseprodt = 'X' .
 ENDIF.
 IF bapi_marc1-gr_pr_time <> space.
 bapi_marcx1-gr_pr_time = 'X' .
 ENDIF.
 IF bapi_marc1-iss_st_loc <> space.
 bapi_marcx1-iss_st_loc = 'X' .
 ENDIF.
 IF bapi_marc1-supply_area <> space.
 bapi_marcx1-supply_area = 'X' .
 ENDIF.
 IF bapi_marc1-backflush <> space.
 bapi_marcx1-backflush = 'X' .
 ENDIF.
 IF bapi_marc1-safety_stk <> space.
 bapi_marcx1-safety_stk = 'X' .
 ENDIF.
 IF bapi_marc1-min_safety_stk <> space.
 bapi_marcx1-min_safety_stk = 'X' .
 ENDIF.
 IF bapi_marc1-sm_key <> space.
 bapi_marcx1-sm_key = 'X' .
 ENDIF.
* MRP view
* MRP 3
 bapi_marc1-availcheck = int_mat_plant-mrpavailabilitycheck.
 bapi_marc1-period_ind = int_mat_plant-periodindicator.
 bapi_marc1-plan_strgp = int_mat_plant-strategygroup.
 bapi_marc1-consummode = int_mat_plant-consumptionmode.
 bapi_marc1-fwd_cons = int_mat_plant-fwdconsumptionper.
 bapi_marc1-bwd_cons = int_mat_plant-bwdconsumptionper.
 bapi_marc1-replentime = int_mat_plant-totreplleadtime.

 IF bapi_marc1-availcheck <> space.
 bapi_marcx1-availcheck = 'X' .
 ENDIF.
 IF bapi_marc1-period_ind <> space.
 bapi_marcx1-period_ind = 'X' .
 ENDIF.
 IF bapi_marc1-plan_strgp <> space.
 bapi_marcx1-plan_strgp = 'X' .
 ENDIF.
 IF bapi_marc1-consummode <> space.
 bapi_marcx1-consummode = 'X' .
 ENDIF.
 IF bapi_marc1-fwd_cons <> space.
 bapi_marcx1-fwd_cons = 'X' .

ultraluck 发表于:2008.01.13 22:57 ::分类: ( sap学习 ) ::阅读:(212次) :: Permanent link :: 引用 (0)

2008 年 01 月 11日, 星期五

在创建BAPI 的时候,必须考虑以下要点:

在创建BAPI 的时候,必须考虑以下要点:


BAPI 不能有任何屏幕输出。

BAPI 不能引起程序中止(A 类型的消息)。

必须为客户增强提供BADI。

BAPI 中不能使用COMMIT WORK 命令。

总是使用更新任务来执行数据库更改。

为了便于映射,事务码BDBS 生成函数模块来执行内部和外 部结构的映射。


ultraluck 发表于:2008.01.11 15:33 ::分类: ( sap学习 ) ::阅读:(106次) :: Permanent link :: 引用 (0)

在bapi中数量金额转换

金额和数量的转换(1)

在R/3 系统中,金额数量字段只有在伴随有金额代码 的时候才有用,只有这样数额的小数点才会正确设置。 金额代码字段必须指派给每个金额数量字段。例如, 在数据库中2 日元会在CURR 数据类型字段中存储成 0.02。

在BAPI 中使用金额数量字段时,需要遵守下列方针:

在接口中一定不能使用数据类型CURR 做为参数和字段。

所有金额数量的参数和字段都必须使用域BAPICURR。

在金额数量字段的小数点位置必须正确转换。例如,10.12 必 须格式化成10.12 而不能是1012。

所有金额和测量数据必须在正确位置点小数点,因为BAPI 总 是使用标准的逗号数量格式

要转换金额数量时,使用函数 模块:BAPI_CURRENCY_CONV_TO_EXTERNAL 和 BAPI_CURRENCY_CONV_TO_INTERNAL

所有日期字段的数据元素必须是YYYYMMDD 的格式。

数据结构中的单独字段最多250 个字节,这样才可以从BAPI 生成异步通讯的IDoc。


ultraluck 发表于:2008.01.11 14:51 ::分类: ( sap学习 ) ::阅读:(147次) :: Permanent link :: 引用 (0)

2008 年 01 月 10日, 星期四

SAP学习笔记

整理:Jims of 肥肥世家

Abstract


Chapter 1. Basis

1.1. SAP服务器安装

SAP服务器的安装随着系统平台和数据库的不同而有所不同。

1.1.1. SAP 4.6D + Windows 2003 + MS SQL Server 2000 SP2

所需软件:

  • 导入中文包

    1. 用STMS事务码创建传输域,在打开的界面内填上适当的描述信息后,直接按保存退出即可。

    2. 用SMLT事务码进入语言管理界面,点击左上角的“Language”添加中文语言项目。在该界面只需选项两个选项,在Language选项中选择“Chinese”,在Supplementation language选项中选择“English”。最后按保存退出。

    3. 展开新增加的Chinese项目,点击项目旁第二个象个小盒子的图标,进入语言导入操作界面。第一个图标有个小“i”,点击它会显示新增项目的一些信息,第三个图标有个小“+”号,点击进入导入附加语言界面。在语言导入界面的path栏填上中文语言包的地址,按“find”按钮即可找到中文包,并会在下面的 “Available packages”里显示出来。先选中列出的语言包,接着把右边的“Start on instance”选上,并在下面找出需安装中文包的SAP服务器实例名,点击“Execute”按钮

    4. 返回上一级页面,在“Imported packages”下会增加一个语言包,在该包旁边有四个小图标,点击第四个鞋形的小图标,设置开始时间和实例后就可开始导入了。导入时间较长,请耐心等待。在导入进行中,你也可用传输日志功能(transport logs)显示导入的状态。完成导入后语言包会有绿灯显示,没导入前是灰色的。

    5. 修改g:usrsapC11sysprofileC11_DVEBMGS00_<hostname>参数文件,这里的<hostname>是你的主机名。增加修改以下内容:

      zcsa/installed_languages = 1E
      zcsa/system_language = 1
      insall/codepage/appl_server = 8400

      修改完成后要重新启动实例。

      [Note]
      参数文件也可在sap系统里进行管理,我们建议采用这种管理方式。用T-code rz10进入profile创建窗口,填上参数文件名,再按import把g:usrsapC11sysprofile C11_DVEBMGS00_<hostname>参数文件导入,存盘退出即可。以后就可在SAP系统内部修改参数了,但它的信息还是保存在操作系统的文件中,而且它会保留参数修改的历史信息,如参数由什么用户在什么时候修改了,原值是什么,方便管理员追查系统故障原因。
    6. 进入T-code SE38,运行RSCPINST和RSCP0004程序,设置系统中语言相关的表,运行RSCP0001程序可检查语言包信息。退出重新登录就可以了。

1.2. 安装SAPGUI for the Java Environment

SAPGUI用以连接SAP服务器,使用SAP系统。Java版的SAPGUI能跨平台使用中,下面介绍在Linux平台下的安装方法。

  • ftp://ftp.sap.com/pub/sapgui/java/下载最新的的软件包,软件包名根据平台不同而不同,类似于PlatinGUI-<platform>-<version>.jar。如果是Linux平台的,应该是PlatinGUI-Linux-630r8.jar。

  • 正确安装Java Runtime Environment 1.3.1 or 1.4.2 or 1.5。安装方法这里就不细讲了,你可参考我的debian学习笔记里有关Java运行环境安装章节的内容。

  • 运行以下命令开始安装SAPGUI:

    debian~:# java -jar PlatinGUI-Linux-630r8.jar

    安装完成后,在根目录下会生成SAPGUI目录,程序就安装在这里。

  • 在使用SAPGUI之前,需要配置两个环境变量:

    export PLATIN_JAVA=/usr/bin/java
    export PLATIN_JAVA_VER=1.5.0_01-b08
  • 命令行方式登录:进入/root/SAPGUI/6.30rev8/bin目录,运行以下命令来连接SAP服务器:

    debian~:#./guistart /H/sap_server_name/S/3200 

    用真实的SAP服务器名代替命令行中的sap_server_name字串。这种方式可用以快速测试SAP服务器连接,但如果在工作环境下每次都要这样输入就不适合了。所以还提供一种图形化的登录窗口。

  • 窗口方式登录:这种方式和Windows平台下的登录方式一样。运行的命令是/root/SAPGUI/6.30rev8/bin目录下的guilogon 命令。运行该命令后,会出现一个登录窗口,选择Options/Preferences菜单可设置SAPGUI的一些配置,如可视风格、编辑风格等。如果要新增一个连接,可在登录窗口中按“New”按钮来添加一个连接。填上Description信息后,选择Advanced标签,选中use expert configuration选项,在下面的输入栏内输入连接字串“conn=/H/sap_server_name/S/3200”。最后按“Save” 保存设置。在登录窗口双击刚才增加的连接就可以连接SAP服务器。我们在这里选择的配置参数会自动存放在~/platin.ini文件中。其实我们也可直接用文本编辑器来修改~/platin.ini文件来配置连接。

下面介绍一种利用Web服务器集中布署 SAPGUI客户端的方式,除了能在客户端本地安装运行外,SAPGUI for the Java Environment还能布署在Web服务器上,使SAPGUI能内嵌在浏览器上来运行。这样我们就可实现客户端配置参数的集中布署,方便管理。但在客户端还是要先安装一个SAPGUI for the Java Environment的客户端程序,不能完全脱离本机程序。这种布署方式对Web服务器没有什么特殊的要求,只要提供能正常访问的Web路径就可以了,浏览器也只需支持Java Plugin即可。安装方法也很简单,只要在Web器上创建一个路径,再用解压工具把PlatinGUI-Linux-630r8.jar解压到该目录。在这个目录中有一个demo.htm文件,这是一个示例文件,我们只要按自已的要求在该文件中修改下面这段内容即可,再客户端通过浏览器访问该文件就可以连接到我们的SAP服务器上了。

// user configurable part starts here

var pluginurl = '';
var scriptable = 'false';
var codebase = '.';
var jnlp = 'platin.jnlp';
var keepalive = 'true';
var frog = 'true';
var trace = '';
var tracefile = '';
var connectionData = 'conn=/H/sap_server_name/S/3200'; #只要修改这里就可以了

// user configurable part ends here
[Note]
在SAPGUI的安装目录,有一个doc文件夹,里面有一个配置手册,里面有如何使和配置SAPGUI的详细指引,请在安装和配置SAPGUI前仔细阅读。

1.3. client copy

在SAP 服务器安装时,默认设置了三个client,分别是000,001和066。这些client是SAP的标准client,它们包含了client的一些初始数据。client 000是SAP的一个参考client,里面有所有的SAP表和一些可修改的示例记录。它包含以下的设置:

  • 每上表都有一些默认值,这些表是与组织无关的。

  • 示例的组织单元。

  • 没有应用数据,包括主数据和运作数据,不能使用该client于实际的生产过程。

  • 有一套定置的配置。

在开始配置系统时,请以client 000为源拷贝一个新的client。在没有应用数据的情况下,一个client需占用150M--200M的数据库空间。我们以000这个client为模板,拷贝生成一个新的client。具体操作是:

  • 首先,用scc4事务码创建一个client。配置client的参数,注意保护级别要选级别0,没有限制。配置好后存盘退出。

  • 注销,以“sap*”为用户名,“pass”为密码登录新创建的client。运行sccl进地本地client copy。配置client copy参数,Selected profile栏选“SAP_ALL”Source client和Source client user masters都选000。

  • 在client copy前,最好先进行测试运行。把Test run选项勾上,再按Schedule as background job设置后台工作计划。也就是把工作提交到后台运行。一般设置为立即运行。用scc3事务码可查看后台工作的进度。如果正常完成,没有出错,我们就可重复前面的动作,并取消Test run选项正式运行。

  • 成功拷贝后就可用000 client的用户名和密码登录新的client了。为什么是用client 000的用户名和密码呢?这是因为我们把client 000中除文档外的所有数据都拷贝过来了,包括用户数据。

[Note]
记住第一时间更改默认用户的密码。作为一个合格的系统管理员,这是必须要牢记的。

1.4. IMG

Implementation Guide(IMG)是SAP系统的配置工具,它可按你公司的要求配置SAP系统以适合你公司的要求。有三种类型的IMG,分别是:

  • SAP Reference IMG,可在这里配置SAP系统的所有功能。

  • Project IMGs,它基于Rrference IMG,可为某个项目进行单独配置,比如我们可建立一个FI的Project IMGs,方便配置。

  • Project view IMGs,在Project IMGs里的Project views里设置,在Project IMGs里再建立一个视图,把一些配置选项添加到该视图里。通过这样一层层的分工,就可把Reference IMG里的配置分配给不同的人员进行维护。

我们可为不同版本的SAP系统建立IMG,如4.0x,4.5x。这种IMG叫做版本相关IMG。通过“help”--“Release notes”菜单可显示各个SAP发布版的区别。

我们可用事务码“spro”来进入SAP Reference IMG。使用“spro_admin”进入project IMGs。

1.5. 创建一个新的用户

完成client创建和拷贝后,在开始正式工作之前,请创建一个全新的用户。用这个用户进行工作。默认ddic和sap*用户不要用于实际的业务。创建用户的过程很简单,只要以su01事务码进入用户维护屏幕。在用户栏填上新增的用户名,按新建按钮创建。输入相关的参数,关键是设置角色和参数文件,如果是管理员,可设的角色为“SAP_ALL_RESTRICTED”,参数文件设为“SAP_ALL”。角色名和参数文件是一对的,参数文件是控制具体权限设置的文件。角色和参数文件也可不在这里指定,可在设置角色时设置。

1.6. 创建一个新的角色

1.7. 设置SAPGUI自动LogOut功能

当客户端长时间没有使用时,为了不占用SAP服务器的资源,我们可以设置当客户端在一段时间没有进行操作时自动退出SAP系统。设置步骤如下:

  • 用Tcode rz10打开参数配置窗口,选择你当前的实例参数文件,再选扩展编辑,按修改按钮进入扩展参数编辑窗口中。

  • 按参数创建按钮,创建一个名为“rdisp/gui_auto_logout”的参数,参数值输入“600”,代表如果客户10分种(600秒)没有进行操作,则会自动退出SAP系统。

  • 按退出保存设置。在rz10窗口按保存把参数传送到系统的参数文件中。重启SAP实例,使配置参数生效。

[Note]
我们还可用rz11来设置当前正在运行的实例的一些参数,但用这种方法设置的参数只会影响当前运行的实例,一旦重启实例,参数就会失效。

1.8. 利用scat进行数据导入

在系统上线或进行测试时,都需导入大量的主数据。在SAP中有多种方法可批量地导入大量数据,这里介绍利用scat进行数据导入的方法。下同以导入统计指标数据为例进行详细说明。

  • 用scat事务码进入计算机辅助测试工具屏幕,在测试情况栏内新建一个测试项。该测试项的名称要以z开头,如ztest。输入完名称后,按工具栏上最左边的“TCD”按钮开始记录事务。

  • 首先在弹出窗口内输入需记录的事务代码kk01,按回车,进入统计指标维护界面。

  • 接下来按维护统计指标的操作输入统计指标编码、统计指标名和计量单位,最后按保存完成事务记录,返回scat事务界面。

  • 在scat事务界面按保存,弹出选择开发类界面,选“本地对象”,完成ztest测试项目的创建。

  • 返回scat的初始屏幕,这时,在测试事件列表中应该有一个你刚创建的测试项目。选中它,按工具栏的“更改”按钮,接着双击功能表里的kk01项,接着再双击“SAPLOKSK”项,这时会打开输入统计指标编码窗口,并且光标会停留在编码栏内,接着点击工具栏的“insert import parameter”按钮,创建一个&STAGR参数。接着按工具栏下一页,使当标停留在名称栏,和上面一样,点击工具栏的“insert import parameter”按钮,创建&BEZEI参数。接着光标会自动移到计量单栏,同理,生成&MSEHI参数。按返回按钮回到上一屏幕,接着按保存完成参数创建。

  • 返回初始屏幕,在选中ztest测试项目的情况下,选择菜单的“转到”--“变式”--“输出缺省”,生成一个ztest.txt文件。

  • 打开ztest.txt文件,内容如下:

    [变量标识]       [变式文本]       STAGR        BEZEI        MSEHI
    --> Parameter texts 统计指标 名称 统计关键数单位
    --> 默认数值 Y02 y02 H
    *** Changes to the default values displayed above not effective

    增加需导入的数据后的格式如下:

    [变量标识]       [变式文本]       STAGR        BEZEI        MSEHI
    --> Parameter texts 统计指标 名称 统计关键数单位
    --> 默认数值 Y02 y02 H
    *** Changes to the default values displayed above not effective
    Y03 y03 H
    Y04 y04 H

    Y03和Y04是需导入的统计指标,文件中的空格全部是用tab分隔的。

  • 整理好导入数据的格式后,就可进行数据导入了。进入scat事务,运行ztest测试项目,变式选择“自文件外部的”,选择整理好的ztest.txt文件。处理方式可选择“前台”或“后台”,第一次最好选择前台方式,这样方便除错。最后按工具栏的运行按钮即可。

1.9. 配置个人信息

在操作SAP系统时,经常要输入一些参数,如成本控制范围、公司代码、工厂等。如果每次打开界面都要输入是不是很烦,可不可以让系统自动记住这些固定的参数呢?答案是肯定的,通过配置个人信息即可让每个用户记住这些参数。现以设置成本控制范围代码CA00为例说明一下具体操作方法。

选择“系统”--“用户参数文件”--“个人数据”,进入个人参数配置界面。在这里,addree标签可设置用户名、地址、电话等个人信息;defaults标签栏可设置开始菜单、登录语言、小数点表示方法等;parameters标签就可设置默认输入的参数值。在parameters栏里选择一个参数代码,如 CAC是成本控制范围,在value里填入值CA00。存盘退出。重新登录后,凡是在界面中要输入CA00的地方都会自动被填上CA00。

另外,在一些输入参数的界面会有一个存盘按钮可把参数直接保存为默认值或用户默认值,效果与上面的配置一样。

在需输入成本控制范围的界面,通过菜单“扩展”--“设置成本中心范围”可覆盖默认的CA00值。

1.10. 知识点

  • sap luw表示一个原子业务过程,与数据库的原子事务处理类似。数据库的luw是针对提交的事务,而sap的luw是针对提交的业务处理。它的设计主要是要保证提交业务数据的一致性。

1.11. 事务码

  • SLICENSE or SLIC

    激活SAP license。

  • SE16

    显示SAP数据表

  • SE38

    运行ABAP程序

  • SHDB

    跟踪一个事务码所操作的SAP表名

  • RZ10

    配置SAP参数文件,修改完成后需重启实例。

  • RZ11

    修改运行中实例的参数,修改完马上生效,不用重启实例。重启实例,参数修改失效。

  • SICK

    SAP系统一致性检查。

  • STMS

    创建传输管理系统

  • SMLT

    导入语言包

  • SGEN

    编译SAP对象,使客户在访问SAP对象时不用编译,提高服务器的响应速度。

  • SM02

    创建系统消息。创建时需填上消息正文,还有服务器名和客户名,当客户栏不填或填“*”号时,保存后就可把该消息马上发给所有登录的用户,当其它用户新登录系统时也会显示。

  • SM04

    显示在线用户会话

  • SM12

    显示与解锁由用户锁定的表

  • SM21

    显示系统日志

  • SM50

    显示工作进程

  • SM51

    显示SAP实例

  • SM59

    维护RFC

  • SPAM

    支持包管理工具

  • SCC4

    建立一个client(集团)

  • SCCL

    client本地复制

  • SCC3

    显示client复制日志

  • SCAT

    记录事务和函数功能,可进行数据批量导入。

Chapter 2. FI

2.1. 知识点

  • 科目表位于公司代码(company code)之上,集团(client)之下。科目表的科目在总帐的主数据中维护。

  • 在SAP中的科目没有1,2,3级科目的分法,全部是一级科目。科目代码长度为8位,在报表层次,会根据科目代码的前4位编码汇集成一个科目显示。

  • 统驭科目不用来直接记帐,它是由应收模块、应付模块和固定资产模块直接过帐的。

  • 总帐科目的录入需遵循“有借必有贷,借贷必相等”的原则。借贷两边都需同时录入。对于应收、应付的发票录入,则单边即可。系统会自动根据所选的客户或供应商生成双边分录。

  • SAP的凭证类别基本分为收、付、转三类,和传统的会计凭证分类一样。

    • SA,总帐凭证。(转帐凭证)

    • KA,供应商凭证。(付款凭证)

    • KR,应付供应商凭证。(付款凭证)

    • KG,供应商转来的经字发票,SAP称为贷方凭证。(付款凭证)

    • KZ,付款给供应商的凭证。(付款凭证)

    • DA,顾客凭证。(收款凭证)

    • DR,开具发票给顾客的凭证。(收款凭证)

    • DG,开具红字发票给顾客的凭证。(收款凭证)

    • DZ,向顾客收款的凭证。(收款凭证)

    • AA,与固定资产相关的凭证。

  • 特殊总帐标记有A,B,C,D四种,分别对应预收帐款,应收票据,预收款请求和担保。

2.2. 事务码

Chapter 3. CO

3.1. 知识点

  • 一个成本控制范围下可包含一个公司代码,也可包含多个公司代码。

  • 成本流和成本对象是管理会计的基本概念。成本流描述企业内部的价值流,像是穿梭在企业中的河道。而成本对象则像是一个个湖泊,起来收集成本的作用。

  • 管理会计凭证记录了什么性质的成本(多数为损益)从哪里流向哪里。它也借用了财务会计中的“借/贷”的概念。如:

    借:成本的流入
    贷:成本的流出

    管理会计凭证不像财务会计凭证那样借贷必相等。当管理会计凭证的借贷方都是成本对象时,借贷才会相等。

  • 成本要素是用来描述管理会计中成本流本质的一个概念。成本要素分两大类,一类是初级成本要素,对应财务会计中的损益类科目。另一类是次级成本要素,可用来描述管理会计内部各成本对象间成本流转时的成本性质。也就是说可以把同类的损益类科目设置成一个次级成本要素,以便归集费用进行分摊到各部门。

  • 生产订单状态

    TECO 技术实现
    REL 已释放
    CRTD 建立
    PCNF 部分确认
    DLV 交货
    GMPS 已过帐的货物移动
    MANC 未检查物料可用性
    NTUP 日期未更新
    PCC 使用的生产成本归集器
    PRC 预花费
    SETC 结算规则维护

3.2. 事务码

  • KS01

    创建成本中心

  • KSH1

    创建成本中心组

  • KA01

    创建初级成本要素,需对应科目表中的损益类科目

  • KA06

    创建次级成本要素

  • KP26

    输入成本中心的标准作业量

  • KP06

    输入成本中心的标准费用

  • KSPI

    计算标准作业价格

  • KSU5

    建立和执行费用分摊循环

  • KB31N

    输入分摊指数

  • CK11N

    计算成品的标准成本

  • CK24

    标记并发布物料的标准成本

  • KKAX

    计算在产品

  • MFN1、CON2

    实际作业价格重估

  • KOB1

    查看成本信息

  • KKS2

    计算差异

  • KO88

    结算定单

  • OKP1

    CO开关帐

Chapter 4. 专业术语表

  • chart of accounts-----科目表

  • fiscal year-----会计年度

  • document-----凭证

  • posting priods-----过帐期间

  • activity type-----作业类型

  • overhead-----间接费用

  • credit-----贷方


ultraluck 发表于:2008.01.10 10:31 ::分类: ( sap学习 ) ::阅读:(156次) :: Permanent link :: 引用 (0)

SAP学习笔记

整理:Jims of 肥肥世家

Abstract


Chapter 1. Basis

1.1. SAP服务器安装

SAP服务器的安装随着系统平台和数据库的不同而有所不同。

1.1.1. SAP 4.6D + Windows 2003 + MS SQL Server 2000 SP2

所需软件:

  • 导入中文包

    1. 用STMS事务码创建传输域,在打开的界面内填上适当的描述信息后,直接按保存退出即可。

    2. 用SMLT事务码进入语言管理界面,点击左上角的“Language”添加中文语言项目。在该界面只需选项两个选项,在Language选项中选择“Chinese”,在Supplementation language选项中选择“English”。最后按保存退出。

    3. 展开新增加的Chinese项目,点击项目旁第二个象个小盒子的图标,进入语言导入操作界面。第一个图标有个小“i”,点击它会显示新增项目的一些信息,第三个图标有个小“+”号,点击进入导入附加语言界面。在语言导入界面的path栏填上中文语言包的地址,按“find”按钮即可找到中文包,并会在下面的 “Available packages”里显示出来。先选中列出的语言包,接着把右边的“Start on instance”选上,并在下面找出需安装中文包的SAP服务器实例名,点击“Execute”按钮

    4. 返回上一级页面,在“Imported packages”下会增加一个语言包,在该包旁边有四个小图标,点击第四个鞋形的小图标,设置开始时间和实例后就可开始导入了。导入时间较长,请耐心等待。在导入进行中,你也可用传输日志功能(transport logs)显示导入的状态。完成导入后语言包会有绿灯显示,没导入前是灰色的。

    5. 修改g:usrsapC11sysprofileC11_DVEBMGS00_<hostname>参数文件,这里的<hostname>是你的主机名。增加修改以下内容:

      zcsa/installed_languages = 1E
      zcsa/system_language = 1
      insall/codepage/appl_server = 8400

      修改完成后要重新启动实例。

      [Note]
      参数文件也可在sap系统里进行管理,我们建议采用这种管理方式。用T-code rz10进入profile创建窗口,填上参数文件名,再按import把g:usrsapC11sysprofile C11_DVEBMGS00_<hostname>参数文件导入,存盘退出即可。以后就可在SAP系统内部修改参数了,但它的信息还是保存在操作系统的文件中,而且它会保留参数修改的历史信息,如参数由什么用户在什么时候修改了,原值是什么,方便管理员追查系统故障原因。
    6. 进入T-code SE38,运行RSCPINST和RSCP0004程序,设置系统中语言相关的表,运行RSCP0001程序可检查语言包信息。退出重新登录就可以了。

1.2. 安装SAPGUI for the Java Environment

SAPGUI用以连接SAP服务器,使用SAP系统。Java版的SAPGUI能跨平台使用中,下面介绍在Linux平台下的安装方法。

  • ftp://ftp.sap.com/pub/sapgui/java/下载最新的的软件包,软件包名根据平台不同而不同,类似于PlatinGUI-<platform>-<version>.jar。如果是Linux平台的,应该是PlatinGUI-Linux-630r8.jar。

  • 正确安装Java Runtime Environment 1.3.1 or 1.4.2 or 1.5。安装方法这里就不细讲了,你可参考我的debian学习笔记里有关Java运行环境安装章节的内容。

  • 运行以下命令开始安装SAPGUI:

    debian~:# java -jar PlatinGUI-Linux-630r8.jar

    安装完成后,在根目录下会生成SAPGUI目录,程序就安装在这里。

  • 在使用SAPGUI之前,需要配置两个环境变量:

    export PLATIN_JAVA=/usr/bin/java
    export PLATIN_JAVA_VER=1.5.0_01-b08
  • 命令行方式登录:进入/root/SAPGUI/6.30rev8/bin目录,运行以下命令来连接SAP服务器:

    debian~:#./guistart /H/sap_server_name/S/3200 

    用真实的SAP服务器名代替命令行中的sap_server_name字串。这种方式可用以快速测试SAP服务器连接,但如果在工作环境下每次都要这样输入就不适合了。所以还提供一种图形化的登录窗口。

  • 窗口方式登录:这种方式和Windows平台下的登录方式一样。运行的命令是/root/SAPGUI/6.30rev8/bin目录下的guilogon 命令。运行该命令后,会出现一个登录窗口,选择Options/Preferences菜单可设置SAPGUI的一些配置,如可视风格、编辑风格等。如果要新增一个连接,可在登录窗口中按“New”按钮来添加一个连接。填上Description信息后,选择Advanced标签,选中use expert configuration选项,在下面的输入栏内输入连接字串“conn=/H/sap_server_name/S/3200”。最后按“Save” 保存设置。在登录窗口双击刚才增加的连接就可以连接SAP服务器。我们在这里选择的配置参数会自动存放在~/platin.ini文件中。其实我们也可直接用文本编辑器来修改~/platin.ini文件来配置连接。

下面介绍一种利用Web服务器集中布署 SAPGUI客户端的方式,除了能在客户端本地安装运行外,SAPGUI for the Java Environment还能布署在Web服务器上,使SAPGUI能内嵌在浏览器上来运行。这样我们就可实现客户端配置参数的集中布署,方便管理。但在客户端还是要先安装一个SAPGUI for the Java Environment的客户端程序,不能完全脱离本机程序。这种布署方式对Web服务器没有什么特殊的要求,只要提供能正常访问的Web路径就可以了,浏览器也只需支持Java Plugin即可。安装方法也很简单,只要在Web器上创建一个路径,再用解压工具把PlatinGUI-Linux-630r8.jar解压到该目录。在这个目录中有一个demo.htm文件,这是一个示例文件,我们只要按自已的要求在该文件中修改下面这段内容即可,再客户端通过浏览器访问该文件就可以连接到我们的SAP服务器上了。

// user configurable part starts here

var pluginurl = '';
var scriptable = 'false';
var codebase = '.';
var jnlp = 'platin.jnlp';
var keepalive = 'true';
var frog = 'true';
var trace = '';
var tracefile = '';
var connectionData = 'conn=/H/sap_server_name/S/3200'; #只要修改这里就可以了

// user configurable part ends here
[Note]
在SAPGUI的安装目录,有一个doc文件夹,里面有一个配置手册,里面有如何使和配置SAPGUI的详细指引,请在安装和配置SAPGUI前仔细阅读。

1.3. client copy

在SAP 服务器安装时,默认设置了三个client,分别是000,001和066。这些client是SAP的标准client,它们包含了client的一些初始数据。client 000是SAP的一个参考client,里面有所有的SAP表和一些可修改的示例记录。它包含以下的设置:

  • 每上表都有一些默认值,这些表是与组织无关的。

  • 示例的组织单元。

  • 没有应用数据,包括主数据和运作数据,不能使用该client于实际的生产过程。

  • 有一套定置的配置。

在开始配置系统时,请以client 000为源拷贝一个新的client。在没有应用数据的情况下,一个client需占用150M--200M的数据库空间。我们以000这个client为模板,拷贝生成一个新的client。具体操作是:

  • 首先,用scc4事务码创建一个client。配置client的参数,注意保护级别要选级别0,没有限制。配置好后存盘退出。

  • 注销,以“sap*”为用户名,“pass”为密码登录新创建的client。运行sccl进地本地client copy。配置client copy参数,Selected profile栏选“SAP_ALL”Source client和Source client user masters都选000。

  • 在client copy前,最好先进行测试运行。把Test run选项勾上,再按Schedule as background job设置后台工作计划。也就是把工作提交到后台运行。一般设置为立即运行。用scc3事务码可查看后台工作的进度。如果正常完成,没有出错,我们就可重复前面的动作,并取消Test run选项正式运行。

  • 成功拷贝后就可用000 client的用户名和密码登录新的client了。为什么是用client 000的用户名和密码呢?这是因为我们把client 000中除文档外的所有数据都拷贝过来了,包括用户数据。

[Note]
记住第一时间更改默认用户的密码。作为一个合格的系统管理员,这是必须要牢记的。

1.4. IMG

Implementation Guide(IMG)是SAP系统的配置工具,它可按你公司的要求配置SAP系统以适合你公司的要求。有三种类型的IMG,分别是:

  • SAP Reference IMG,可在这里配置SAP系统的所有功能。

  • Project IMGs,它基于Rrference IMG,可为某个项目进行单独配置,比如我们可建立一个FI的Project IMGs,方便配置。

  • Project view IMGs,在Project IMGs里的Project views里设置,在Project IMGs里再建立一个视图,把一些配置选项添加到该视图里。通过这样一层层的分工,就可把Reference IMG里的配置分配给不同的人员进行维护。

我们可为不同版本的SAP系统建立IMG,如4.0x,4.5x。这种IMG叫做版本相关IMG。通过“help”--“Release notes”菜单可显示各个SAP发布版的区别。

我们可用事务码“spro”来进入SAP Reference IMG。使用“spro_admin”进入project IMGs。

1.5. 创建一个新的用户

完成client创建和拷贝后,在开始正式工作之前,请创建一个全新的用户。用这个用户进行工作。默认ddic和sap*用户不要用于实际的业务。创建用户的过程很简单,只要以su01事务码进入用户维护屏幕。在用户栏填上新增的用户名,按新建按钮创建。输入相关的参数,关键是设置角色和参数文件,如果是管理员,可设的角色为“SAP_ALL_RESTRICTED”,参数文件设为“SAP_ALL”。角色名和参数文件是一对的,参数文件是控制具体权限设置的文件。角色和参数文件也可不在这里指定,可在设置角色时设置。

1.6. 创建一个新的角色

1.7. 设置SAPGUI自动LogOut功能

当客户端长时间没有使用时,为了不占用SAP服务器的资源,我们可以设置当客户端在一段时间没有进行操作时自动退出SAP系统。设置步骤如下:

  • 用Tcode rz10打开参数配置窗口,选择你当前的实例参数文件,再选扩展编辑,按修改按钮进入扩展参数编辑窗口中。

  • 按参数创建按钮,创建一个名为“rdisp/gui_auto_logout”的参数,参数值输入“600”,代表如果客户10分种(600秒)没有进行操作,则会自动退出SAP系统。

  • 按退出保存设置。在rz10窗口按保存把参数传送到系统的参数文件中。重启SAP实例,使配置参数生效。

[Note]
我们还可用rz11来设置当前正在运行的实例的一些参数,但用这种方法设置的参数只会影响当前运行的实例,一旦重启实例,参数就会失效。

1.8. 利用scat进行数据导入

在系统上线或进行测试时,都需导入大量的主数据。在SAP中有多种方法可批量地导入大量数据,这里介绍利用scat进行数据导入的方法。下同以导入统计指标数据为例进行详细说明。

  • 用scat事务码进入计算机辅助测试工具屏幕,在测试情况栏内新建一个测试项。该测试项的名称要以z开头,如ztest。输入完名称后,按工具栏上最左边的“TCD”按钮开始记录事务。

  • 首先在弹出窗口内输入需记录的事务代码kk01,按回车,进入统计指标维护界面。

  • 接下来按维护统计指标的操作输入统计指标编码、统计指标名和计量单位,最后按保存完成事务记录,返回scat事务界面。

  • 在scat事务界面按保存,弹出选择开发类界面,选“本地对象”,完成ztest测试项目的创建。

  • 返回scat的初始屏幕,这时,在测试事件列表中应该有一个你刚创建的测试项目。选中它,按工具栏的“更改”按钮,接着双击功能表里的kk01项,接着再双击“SAPLOKSK”项,这时会打开输入统计指标编码窗口,并且光标会停留在编码栏内,接着点击工具栏的“insert import parameter”按钮,创建一个&STAGR参数。接着按工具栏下一页,使当标停留在名称栏,和上面一样,点击工具栏的“insert import parameter”按钮,创建&BEZEI参数。接着光标会自动移到计量单栏,同理,生成&MSEHI参数。按返回按钮回到上一屏幕,接着按保存完成参数创建。

  • 返回初始屏幕,在选中ztest测试项目的情况下,选择菜单的“转到”--“变式”--“输出缺省”,生成一个ztest.txt文件。

  • 打开ztest.txt文件,内容如下:

    [变量标识]       [变式文本]       STAGR        BEZEI        MSEHI
    --> Parameter texts 统计指标 名称 统计关键数单位
    --> 默认数值 Y02 y02 H
    *** Changes to the default values displayed above not effective

    增加需导入的数据后的格式如下:

    [变量标识]       [变式文本]       STAGR        BEZEI        MSEHI
    --> Parameter texts 统计指标 名称 统计关键数单位
    --> 默认数值 Y02 y02 H
    *** Changes to the default values displayed above not effective
    Y03 y03 H
    Y04 y04 H

    Y03和Y04是需导入的统计指标,文件中的空格全部是用tab分隔的。

  • 整理好导入数据的格式后,就可进行数据导入了。进入scat事务,运行ztest测试项目,变式选择“自文件外部的”,选择整理好的ztest.txt文件。处理方式可选择“前台”或“后台”,第一次最好选择前台方式,这样方便除错。最后按工具栏的运行按钮即可。

1.9. 配置个人信息

在操作SAP系统时,经常要输入一些参数,如成本控制范围、公司代码、工厂等。如果每次打开界面都要输入是不是很烦,可不可以让系统自动记住这些固定的参数呢?答案是肯定的,通过配置个人信息即可让每个用户记住这些参数。现以设置成本控制范围代码CA00为例说明一下具体操作方法。

选择“系统”--“用户参数文件”--“个人数据”,进入个人参数配置界面。在这里,addree标签可设置用户名、地址、电话等个人信息;defaults标签栏可设置开始菜单、登录语言、小数点表示方法等;parameters标签就可设置默认输入的参数值。在parameters栏里选择一个参数代码,如 CAC是成本控制范围,在value里填入值CA00。存盘退出。重新登录后,凡是在界面中要输入CA00的地方都会自动被填上CA00。

另外,在一些输入参数的界面会有一个存盘按钮可把参数直接保存为默认值或用户默认值,效果与上面的配置一样。

在需输入成本控制范围的界面,通过菜单“扩展”--“设置成本中心范围”可覆盖默认的CA00值。

1.10. 知识点

  • sap luw表示一个原子业务过程,与数据库的原子事务处理类似。数据库的luw是针对提交的事务,而sap的luw是针对提交的业务处理。它的设计主要是要保证提交业务数据的一致性。

1.11. 事务码

  • SLICENSE or SLIC

    激活SAP license。

  • SE16

    显示SAP数据表

  • SE38

    运行ABAP程序

  • SHDB

    跟踪一个事务码所操作的SAP表名

  • RZ10

    配置SAP参数文件,修改完成后需重启实例。

  • RZ11

    修改运行中实例的参数,修改完马上生效,不用重启实例。重启实例,参数修改失效。

  • SICK

    SAP系统一致性检查。

  • STMS

    创建传输管理系统

  • SMLT

    导入语言包

  • SGEN

    编译SAP对象,使客户在访问SAP对象时不用编译,提高服务器的响应速度。

  • SM02

    创建系统消息。创建时需填上消息正文,还有服务器名和客户名,当客户栏不填或填“*”号时,保存后就可把该消息马上发给所有登录的用户,当其它用户新登录系统时也会显示。

  • SM04

    显示在线用户会话

  • SM12

    显示与解锁由用户锁定的表

  • SM21

    显示系统日志

  • SM50

    显示工作进程

  • SM51

    显示SAP实例

  • SM59

    维护RFC

  • SPAM

    支持包管理工具

  • SCC4

    建立一个client(集团)

  • SCCL

    client本地复制

  • SCC3

    显示client复制日志

  • SCAT

    记录事务和函数功能,可进行数据批量导入。

Chapter 2. FI

2.1. 知识点

  • 科目表位于公司代码(company code)之上,集团(client)之下。科目表的科目在总帐的主数据中维护。

  • 在SAP中的科目没有1,2,3级科目的分法,全部是一级科目。科目代码长度为8位,在报表层次,会根据科目代码的前4位编码汇集成一个科目显示。

  • 统驭科目不用来直接记帐,它是由应收模块、应付模块和固定资产模块直接过帐的。

  • 总帐科目的录入需遵循“有借必有贷,借贷必相等”的原则。借贷两边都需同时录入。对于应收、应付的发票录入,则单边即可。系统会自动根据所选的客户或供应商生成双边分录。

  • SAP的凭证类别基本分为收、付、转三类,和传统的会计凭证分类一样。

    • SA,总帐凭证。(转帐凭证)

    • KA,供应商凭证。(付款凭证)

    • KR,应付供应商凭证。(付款凭证)

    • KG,供应商转来的经字发票,SAP称为贷方凭证。(付款凭证)

    • KZ,付款给供应商的凭证。(付款凭证)

    • DA,顾客凭证。(收款凭证)

    • DR,开具发票给顾客的凭证。(收款凭证)

    • DG,开具红字发票给顾客的凭证。(收款凭证)

    • DZ,向顾客收款的凭证。(收款凭证)

    • AA,与固定资产相关的凭证。

  • 特殊总帐标记有A,B,C,D四种,分别对应预收帐款,应收票据,预收款请求和担保。

2.2. 事务码

Chapter 3. CO

3.1. 知识点

  • 一个成本控制范围下可包含一个公司代码,也可包含多个公司代码。

  • 成本流和成本对象是管理会计的基本概念。成本流描述企业内部的价值流,像是穿梭在企业中的河道。而成本对象则像是一个个湖泊,起来收集成本的作用。

  • 管理会计凭证记录了什么性质的成本(多数为损益)从哪里流向哪里。它也借用了财务会计中的“借/贷”的概念。如:

    借:成本的流入
    贷:成本的流出

    管理会计凭证不像财务会计凭证那样借贷必相等。当管理会计凭证的借贷方都是成本对象时,借贷才会相等。

  • 成本要素是用来描述管理会计中成本流本质的一个概念。成本要素分两大类,一类是初级成本要素,对应财务会计中的损益类科目。另一类是次级成本要素,可用来描述管理会计内部各成本对象间成本流转时的成本性质。也就是说可以把同类的损益类科目设置成一个次级成本要素,以便归集费用进行分摊到各部门。

  • 生产订单状态

    TECO 技术实现
    REL 已释放
    CRTD 建立
    PCNF 部分确认
    DLV 交货
    GMPS 已过帐的货物移动
    MANC 未检查物料可用性
    NTUP 日期未更新
    PCC 使用的生产成本归集器
    PRC 预花费
    SETC 结算规则维护

3.2. 事务码

  • KS01

    创建成本中心

  • KSH1

    创建成本中心组

  • KA01

    创建初级成本要素,需对应科目表中的损益类科目

  • KA06

    创建次级成本要素

  • KP26

    输入成本中心的标准作业量

  • KP06

    输入成本中心的标准费用

  • KSPI

    计算标准作业价格

  • KSU5

    建立和执行费用分摊循环

  • KB31N

    输入分摊指数

  • CK11N

    计算成品的标准成本

  • CK24

    标记并发布物料的标准成本

  • KKAX

    计算在产品

  • MFN1、CON2

    实际作业价格重估

  • KOB1

    查看成本信息

  • KKS2

    计算差异

  • KO88

    结算定单

  • OKP1

    CO开关帐

Chapter 4. 专业术语表

  • chart of accounts-----科目表

  • fiscal year-----会计年度

  • document-----凭证

  • posting priods-----过帐期间

  • activity type-----作业类型

  • overhead-----间接费用

  • credit-----贷方


ultraluck 发表于:2008.01.10 10:31 ::分类: ( sap学习 ) ::阅读:(123次) :: Permanent link :: 引用 (0)

SAP LUW and DB LUW [转]

SAP LUW and DB LUM
-(SAP Logic Unit Work)

-LUM Concept
SAP System Use LUW Concept and Related handling mechanism To Maintain Apllication Database table's Data Consistent.
In SAP System,Two Data Consistent status's Time Interval Called LUW.
Every LUW need a Commit or Roolback Set End Flag.
If Use Commit Set End Flag,So will do all update.and Use Roolback Cancel all database table data update.However,Between In Old consistent status X and new consistent status Y, If have a link or step happening error then must cancel all operation,Rollback to X Status.

DATABASE UPDATE

open SQL和native SQL

我们平时用的select * from *等等都是open SQL,优点是可以使用buffer、可以嵌入ABAP中并且不需要指定数据库,因此它也就无法使用数据库提供的特定的函数;而native SQL需要在SQL语句前后加上EXEC SQLENDEXEC,系统执行native SQL时会绕过数据库接口,因此不会使用缓冲区(buffer)中的表,所以对于缓冲区中的表,不能使用native SQL,否则会造成数据的不一致。

SAP LUW

SAP logical unit of work(LUW)是一个逻辑单位,我们把需要完成的工作分成一个个独立的单元(LUW),每个单元包含若干操作,这些操作要么完全执行,要么完全不执行(all-or-nothing principle)。

DATABASE LUW

DATABASE LUW是指在三层体系架构中离数据库最近的数据库提交单位。这是一个比SAP LUW更小的单位。Dialog中的下列几个事件有可能触发会自动出发数据库的提交:

* When the system sends a new screen

* When the system sends a dialog message

* When you make a remote function call (RFC)

* When you use the CALL TRANSACTION or SUBMIT statement.

sap luw表示一个原子业务过程,与数据库的原子事务处理类似。数据库的luw是针对提交的事务,而sap的luw是针对提交的业务处理。它的设计主要是要保证提交业务数据的一致性。


事务和工作逻辑单元

在用来开发BAPI 的事务模型上下文中,一个事务表 示一个过程步骤或者一个工作逻辑单元(LUW)。一 个R/3 LUW 是包含在一个更新数据库事务内的所有步 骤。

ACID 的原则应用于事务模型,意味着事务是:

原子的:当一个事务被调用,数据库操作或者完全执行或者 完全不执行。所有相关数据或者全部在数据库中更改或者完 全不变。

一致的:如果事务被多次调用,每个调用都有相同的结果。 导入的数据都不会间接影响结果。

独立的:在两个事务间不能有功能性依赖,一个事务绝对不 能影响其他事务。

持久的:修改不能被反转,事务不能被取消。


ultraluck 发表于:2008.01.10 10:19 ::分类: ( sap学习 ) ::阅读:(339次) :: Permanent link :: 引用 (0)

2008 年 01 月 09日, 星期三

SAP BW 抛砖引玉

SAP BW 抛砖引玉

SAP BW是mySAP 商务智能(BI)的集成化组件之一,为SAP数据和非SAP数据的采集、存储、分析和管理提供一个集成的,面向商务的平台。它可以智能化地管理整个企业管理信息系统的海量数据信息并从中挖掘出最有价值的信息,以向企业管理者提供强有力的决策支持,从而使企业对市场反应更灵敏快捷,整个企业也更具有生命力和竞争力,而SAP BW(Business Information Warehouse)是其中最为成功地系统之一,它也被认为是可以满足用户需求数据仓库系统中功能最强的一个,满足 SAP和非 SAP系统的整合,丰富的数据转换工具,强大的Staging mechanisms,易于使用的前台报表,整合的Web报表,以及通过不同的工具将数据转换到非SAP系统中... ...这些都使得BW成为独特的,可满足不同用户需求的数据仓库系统。

SAP BW灿烂的就业前景分析
近年来企业模型转变,大型企业在不断的购置和合并中转为国际化(Globalization),所以有相当多大的企业的电脑系统趋向于分布式控制(decentralized),传统的Transaction Base的电脑系统不能再有效地提供市场竞争极其需要的数据分析(Data Analysis)和支持决策(Support Decision Making)等重要功能。

一个能支持决策的Environment必须有以下的特点:
Store significant history
Summerized Data
Data Procurement from different transaction applications
Provide effective query based on restructured de-normalized data
Significant speed and fast report divelopment

传统上SAP的Functional包括:FI/CO,MM/PP/SD,HR等,这些模块是其核心,而且有了很长的历史,从业人员需要有较长的工作经验。目前比较流行的新模块有 BW,EP,CRM等。基中 BW就是的数据仓库部分,也是业界普遍承认最为领先的模块之一。 SAP BW 使信息分析员和决策者都可以迅速获得来自不同系统的信息, 设计精良高度集成化的数据仓库解决方案,也被认为是可以满足用户需求的数据仓库系统中功能最强的一个。SAP BW是一个有高功能及设计完整的数据库,它可以接收来自不同系统的数据,包括 SAP R/3的Master和Transaction Data,非SAP(Non SAP)的外来数据,如Flat File,Info Provider 和Database,SAP BW拥有完善的Data Transfer 和Data Staging Mechanism,快速和自动的Data loading和Job Scheduling系统操作简易的Query Builder,以及非常实用的Report Presentation(In table format or in graphic mode)。更通过内置的Web Application Designer,SAP BW报表可以accessed through Internet /Intranet or Web Mobile,以满足用户不同方面的需要。

SAP为配合市场及用户的需要,将R/3的报表和分析功能转移到 BW,随着用户对于整个企业来自不同系统模块的各种信息整合的需求在不断的增长,绝大多数已经安装了SAOR/3的公司会很快实施 SAP BW。另外, SAP也在开发功能强大的界面和新技术,以便整合以外的系统及数据存取工具,世界权威组织 AMR research公司预测到2006年, ERP市场将会从2003年的210亿增长至310亿。

在SAP这个领域内工作的人员一般工作稳定,收入丰厚,而且近几年来几乎未受到经济衰退的影响,工作机会一直很多。 BW是 SAP一个相当新的产品, 与其他传统的模块比,在市场上还有很大的发展空间。SAP就业市场上对 BW的需求会很高,但现在真正有 BW实践经验的人很少,拥有 SAP BW证书无疑将会使你在就业市场上更具有竞争力,目前全职的 BW技术人员年收入在8万至12万之间, 而独立的咨询顾问更高达时薪为。

目前,市场急需的SAP BW 工作职位共有4种:

BW Architect() : 负责全面数据及系统的设计以及所有BW项目的整合。审核管理符合业务需求分析的开发标准以及企业级 BW系统模型。

BW Administrator( : 负责BW整体形能的监控,调试和优化。审核数据模型和系统框架。对系统产生的信息,状态和事件采取适当的行动。核查用户权限。审阅及安装OSS notes。协调BW系统升级和测试。质量检控。

BW ETL(Extraction, Transformation, Loading) developer () : 设计,开发,实现数据仓库方案及数据转换。具体包括:设计数据转换方法,编程实现转换,从不同的数据源读取数据并上载,业务分析以及 BW scheduled job成功/失败的监控。

BW Report Developer () : 开发Queries, Reports, Charts 和Reporting variables。 使用VBA设计BEx report。设计开发infoProviders。开发Web报表。进行数据分析及业务分析.

ultraluck 发表于:2008.01.09 11:01 ::分类: ( sap学习 ) ::阅读:(125次) :: Permanent link :: 引用 (0)

如何修改 SAP 登录界面的文字(事务码SE61)

如何修改 SAP 登录界面的文字(事务码SE61)

我们使用 SAP 的时候,经常会觉得登录那个界面太简单了,诺大一个屏幕上,只有左面那个角落放了客户端、用户、口令、语言这几个输入框,其他地方都空荡荡的。
而安装过 miniSAP 后会发现,除了左面那些输入框外,系统右边的空白处多了一些说明文字:
客户端:800
用户名:ddic
密码:19920706

这是怎么出来的呢?我们一般的 SAP 系统是不是也能显示一些自己的说明文字呢?

回答是肯定的,SAP 以比较贴近技术人员的方式给出了维护登录界面说明文字的方法。所谓比较贴近技术人员的方式,就是说 SAP 的用户友好性实在太差了……

当然,SAP 是很值得尊重的,至少它想到了这些很细节的问题,虽然没有专门开发一个称为“系统设置”的功能,不过毕竟用系统的通用功能为我们提供了相应操作的可能性。下面就来详细说说。

方法很简单,只需要用下面几个步骤就行了。

首先:输入事务码 SE61,或者通过菜单“Tools -> ABAP Workbench -> Utilities -> Documentation”(中文系统“工具 -> ABAP 工作台 -> 实用程序 -> 文档”。我用的是 ECC5,其他版本的菜单路径可能略有不同)打开文档维护的初始界面。

然后:填写下列必要参数
Document Class(文档类):选择 General Text(常规文本),选择时的 ID 为“TX”。
Language(语言):这里需要一定注意,语言必须选择登录页面显示的语言,而不是用户个人设置里面指定的登录后使用的语言。这个语言是 BASIS 在系统参数里面设置的。如果语言不对,界面上就无法显示。
Name(名称):填写“ZLOGIN_SCREEN_INFO”,必须是这个名字,不能变。

然后:根据实际情况按“Create(创建)”或“Change(更改)”按钮——反正如果没有创建过按了更改或创建过后按了创建都会有相应的错误提示,不会搞错的——来编辑文档。

接下来:有可能会遇到一个问题,编辑界面是一个 RichTextFormat 窗口,就是跟 Windows 自带的写字板一样,这个界面可以为文本添加很多格式,但是缺点是,这些格式没法用在我们的登录界面上。有兴趣的朋友可以自己试试看会出现什么结果。我们只需要一个纯文本的编辑器,怎么办?当然有办法!到菜单里面找,“Goto -> Change Editor”(中文系统“转到 -> 修改编辑器”),就可以在 RTF 编辑器和纯文本编辑器之间切换了。

按照 SAP Notes 205487 的说明,文本最多 16 行,每行 45 个等宽字符,而根据我的实践,可以输入无数(反正我回车到手酸了也没到头,已经超过 1000 行了)行文本,登录屏幕上最多显示到第 17 行。每行最多可以输入 72 个英文字符或 36 个中文字符,以及它们的任意组合(70个英文+1个汉字……),而在屏幕上显示的文字则根据系统所使用字符集的不同而变化,由于在这个文本里面用的不是等宽字体,一般来说,英文能够显示 52 个字符,而中文能显示 30 个半。SAP 还是很体贴的,如果字符数量超过显示宽度,则鼠标移动到相应行的时候,会出来一个小提示栏,显示完整的一行文本。
改变字符集的方法是,在登录界面上按“Alt + F2”或者系统工具栏最右面那个图标下的“字符集”来选择,不过每种语言只能使用自己的字符集,否则就会显示乱码。

罗嗦了这么多,总算可以保存了。不过不要忘记了 SAP 中经常需要激活才能使用的基本原则,文档对象也是需要激活的。保存激活时会要求选择开发类,如果不需要把登录文本传输给其他系统,就指定为本地对象,否则的话,选择合适的开发类。如果用了开发类,则还需要指定传输请求号。都指定以后,这个登录界面的文字就会显示出来。

附加一个说明,在每行的开头,可以用字段符号指定一个小图标,而这时就很有意思了,原来无法完全显示的文字行就会不受宽度限制,完整的显示出来。用@<CODE>@来指定图标,其中<CODE>是两个字符的图标代码,字符范围是数字和字母,例如:00、01、……、09、0A、0B、……、0Z、10、……一直排下去,有好几百个。
可以用 SE38 运行程序 RSTXICON 来查看所有图标。

需要说明的是,事务码 SE61 的功能不这么简单,它可以维护整个系统里中各种各样的文档,修改登录界面文字只是其中很小的一个应用,更多功能都需要各位自己去发掘了。


ultraluck 发表于:2008.01.09 11:00 ::分类: ( sap学习 ) ::阅读:(114次) :: Permanent link :: 引用 (0)

给SAP系统安装联机帮助(事务码SR13)

给SAP系统安装联机帮助(事务码SR13)

新安装好的SAP系统,联机帮助是不能用的,通过菜单中的“帮助-应用程序帮助” 和“帮助-SAP库”都打不开任何帮助页面。这并不是因为SAPgui安装不完整,而是因为SAP的帮助系统本身就不包含在GUI中,而是需要单独配置的功能。

使用事务码SR13,打开“更改视图"管理:显示SAP库"”功能。可以看到里面有四个选项卡,我们只需要使用其中第二个——PlainHtmlHttp,这是通过Web服务器访问SAP帮助的方法。

由于SAP的官方网站提供了联机帮助站点 http://help.sap.com ,我们可以直接通过连接这个站点来访问联机帮助。

点“新条目”按钮,下面的内容栏就可以填写了,按照下面规则填写:

变式:任意的唯一名字
平台:WN32
区域:IWBHELP
服务器名称:help.sap.com,SAP的官方帮助站点
路径:根据你的SAP版本,在 http://help.sap.com 里面找,我用的是ECC5,所以路径为 saphelp_erp2004/helpdata
语言:EN,因为SAP只提供了英语和德语,我们只好选英语了。
缺省值:勾上,这就是缺省的联机帮助设置。

然后保存即可。

再用菜单中的“帮助-应用程序帮助”看看,可以定位到当前操作的帮助页面了!


ultraluck 发表于:2008.01.09 10:59 ::分类: ( sap学习 ) ::阅读:(113次) :: Permanent link :: 引用 (0)

如何修改 SAP 登录后的背景图片(事务码 SMW0,SM30)

如何修改 SAP 登录后的背景图片(事务码 SMW0,SM30)

SAPgui 提供了丰富的界面风格设定功能,跟 Windows 桌面主题一样,可以任意设定自己喜欢的颜色风格。不过美中不足,它的背景图片却比较单调,天天看惯了正式系统的蔚蓝水池或者 IDES 系统的小小图标,是不是想换个图片看看呢?下面就教你如何更换系统登录后的背景图片,比如换成公司的 Logo 或者平面广告等。

第一步是上传我们自己的图片。

首先:用事务码 SMW0 或者通过菜单“Tools -> Web Development -> Web Repository”(中文系统“工具 -> Web 开发 -> Web 资源库”),打开 Web 资源库管理功能。

然后:选择Binary Data(二进制数据),然后回车或执行。接下来再按执行。也可以连续按两次键盘上的“F8”键。这样就打开了 Web 资源库中的对象列表。

然后:上传图片,点击应用工具栏的“Create(创建)”按钮或按键盘 F5 键,打开对象属性输入框,输入对象名字(名字必须遵守 SAP 的知识库对象命名规范,用 Y 或 Z 开头;另外,由于系统允许上传任何类型的文件,为了便于以后使用,对象名字最好包含对文件类型的说明,比如在最后加上扩展名)和描述信息,然后点左下角的“Import(导入)”按钮。接下来就是选择本机图片,点击“打开”按钮上传文件。

然后会要求选择上传对象的开发类,如果需要传输给其他服务器,就选择一个开发类,如果仅需要在本机使用,使用本地对象就可以了。

上传成功后会自动在对象列表中新增一个条目,说明我们的图片已经上传到服务器上,可以使用了。

第二步,把刚才上传的图片设置为登录首页的背景。

首先,用事务码 SM30 打开表视图维护功能。我没有找到相应的菜单路径,如果你知道,请告诉我。

然后,输入表名 SSM_CUST,这是 SAP 提供的修改登录后主界面的设置表。然后点击“Maintain(维护)”,这时会出现一个提示,说明它是个跨 Client 的表,就是说对它所做的修改会应用于所有 Client。

我们看到了 SSM_CUST 表的内容,有很多条目,跟我们设置背景图片相关的有三条记录,分别是:HIDE_START_IMAGE、RESIZE_IMAGE、START_IMAGE,下面一一介绍。
HIDE_START_IMAGE,值为“YES”表示登录后不显示背景图片,“NO”表示登录后显示背景图片,我们这里当然要填“NO”。
RESIZE_IMAGE,值为“YES”表示自动缩放图片以适应窗口大小,“NO”表示图片尺寸保持原始值不变。如果图片以横竖线条为主,建议使用“NO”,因为系统自动缩放能力很差,变形严重。而如果图片较大或者是照片的话,用“YES”比较好。
START_IMAGE,就填入我们刚才第一步所建立的对象名字。

接下来保存一下就可以了,会要求挂一个请求号,只管挂上就行了。

再打开个新窗口看看,刚才上传的图片是不是已经出现了?

 查看全文
ultraluck 发表于:2008.01.09 10:58 ::分类: ( sap学习 ) ::阅读:(110次) :: Permanent link :: 引用 (0)

2007 年 08 月 18日, 星期六

UltraEdit的上百种语法高亮文件下载

UltraEdit的上百种语法高亮文件下载 官方地址:ftp://ultraedit.com/wf/ 查看全文
ultraluck 发表于:2007.08.18 18:34 ::分类: ( sap学习 ) ::阅读:(135次) :: 评论 (0) :: 引用 (0)

2007 年 08 月 10日, 星期五

SAP的异机恢复 转

是HPUX的 SAP+Oracle9i
1,安装操作系统
2,备份软件安装
3,创建用户和组
4,恢复SAP的软件
5,恢复数据
6,修改主机名
7,ok

恢复SAP的软件,怎么做的
使用brrestore


ultraluck 发表于:2007.08.10 16:36 ::分类: ( sap学习 ) ::阅读:(80次) :: 评论 (0) :: 引用 (0)

2007 年 07 月 27日, 星期五

Transfer data to a system file

Transfer data to a system file 查看全文
ultraluck 发表于:2007.07.27 15:17 ::分类: ( sap学习 ) ::阅读:(116次) :: 评论 (0) :: 引用 (0)

File Upload with ws_upload

File Upload with ws_upload 查看全文
ultraluck 发表于:2007.07.27 15:07 ::分类: ( sap学习 ) ::阅读:(180次) :: 评论 (0) :: 引用 (0)

2007 年 05 月 31日, 星期四

SAP课程表

共 480 门常见课程。

客户化培训
根据具体客户的项目实施需要, SAP 既可为特定客户量身定做课程内容,又可灵活安排培训时间及培训地点,最大限度地照顾到客户具体项目实施地具体需求。同时在培训实施过程中,会基于 多年来对多家 SAP 客户的项目培训经验 ,动态地帮助客户调整培训重点,从而保证和加速项目实施的进程。
§ 针对于特定客户的特定项目时间和项目范围
§ 灵活选择培训地点
§ 根据客户需要裁剪课程内容
§ 提前预定相关资源

标准培训
标准培训主要是基于SAP 标准的课程架构 ,定期在SAP 的培训中心面向广大SAP 客户开设公开课。培训过程中会应用SAP 标准的教材内容,使用向德国预定的相应专业SAP 培训系统来讲授相关课程。
SAP 北京和上海的培训中心提前一个季度向所有SAP 在中国的客户发放培训需求调查表,基于客户的回馈来安排并公布下一季度培训时间表。SAP 所有在华客户及合作伙伴可根据自身情况选择适合的培训。
SAP 专业产品培训的课程架构划分本着由浅入深的原则共分三级:
一级课程 Level-1
针对于整个 SAP 产品做概览性介绍。借助于对管理流程中相关业务模式的流程介绍引入 SAP R/3 的基本产品理念,使参加者对于 R/3 系统的功能,对客户的服务支持,实施构架和 SAP 专用术语有一个总体了解。除此之外,学习者还可以充分理解不同业务领域如何在 SAP 系统中实现相关数据的共享和集成 。
二级课程 Level-2
二级课程是针对于 SAP 产品在某一特定的业务领域的概览性功能介绍。便于具体业务部门的相关人员初步了解与自己业务相对应的 SAP 产品功能。尤其是对关键用户及部门负责人在项目准备阶段定义项目范围及目标,会有很大的帮助。
三级课程 Level-3
三级课程是针对于某一特定的业务领域,做 SAP产品的相关功能详解,帮助项目小组成员获得专业的系统配置技巧。这些课程主要适用于咨询顾问及企业内部的技术骨干。

顾问学院
以集中强化的方式使学员对某一特定模块的功能有一个系统全面的认识,从而掌握某一模块的基本系统配置技能。此课程内容结束后,学员可以根据需要参加连到德国的认证考试,考试通过可得到由 SAP 德国总部颁发的认证咨询顾问资格证书。
目前在 SAP中国已举办过的顾问学院课程有: FI&CO、 MM、 PP、 SD、 ABAP、 BASIS、 BW、CRM、NetWeaver等等

SAP ECC5.0(Level1-2)标准课件表
AC010 mySAP Financials Overview to Financial Accounting and Reporting
AC020 mySAP Financials Investment Management
AC030 mySAP Financials Treasury Overview
AC040 mySAP Financials Cost Management and Controlling
AC200 mySAP Financials Financial Accounting Customizing I
AC201 mySAP Financials Payment and Dunning Program
AC205 mySAP Financials Financial Closing
AC220 mySAP Financials Special Purpose Ledger
AC240 mySAP Financials EC-CS: Consilidation Functions
AC260 mySAP Financials Special Financial Functionality
AC270 mySAP Financials Travel Management - Travel Expenses
AC275 mySAP Financials Travel Management - Travel Planning
AC280 mySAP Financials Reporting in FI
AC290 mySAP Financials Real Estate Management
AC295 mySAP Financials Real Estate Management
AC305 mySAP Financials Asset Accounting
AC350 mySAP Financials System Configuration for IM
AC410 mySAP Financials Cost Center Accounting
AC412 mySAP Financials Cost Center Accounting Ext. Functions
AC415 mySAP Financials Internal Orders
AC420 mySAP Financials Activity-Based Costing
AC505 mySAP Financials Product Cost Planning
AC510 mySAP Financials Cost Object Controlling for Products
AC515 mySAP Financials Cost Object Contr. for Sales Orders
AC530 mySAP Financials Actual Costing/Material Ledger
AC605 mySAP Financials Profitability Analysis
AC610 mySAP Financials Profit Center Accounting
AC615 mySAP Financials EIS 1: Reporting
AC620 mySAP Financials EIS 2: Setup System
AC625 mySAP Financials EIS 3: Business Planning
AC650 mySAP Financials Transfer Prices
AC660 mySAP Financials EC-CS: Consolidation Functions
AC665 mySAP Financials EC-CS: Integrated Consolidation
AC690 mySAP Financials Schedule Manager
AC700 mySAP Financials Funds Management: processes,organization and configuration
AC720 mySAP Financials Funds and Position Management
AC805 mySAP Financials Cash Management
AC810 mySAP Financials Treasury Management Basics
AC815 mySAP Financials Loans
AC816 mySAP Financials Loans CFM
AC820 mySAP Financials Securities Management
AC825 mySAP Financials Money Market CFM
AC830 mySAP Financials Market Risk Management
AC900 mySAP Financials R/3 for auditors
ADM100 NetWeaver (mySAP Techno mySAP Technology Administration
ADM102 NetWeaver (mySAP Techno SAP Web AS Administration II
ADM105 NetWeaver (mySAP Techno Advanced SAP System Administration
ADM106 NetWeaver (mySAP Techno Advanced SAP System Monitoring
ADM110 NetWeaver SAP R/3 Enterprise Installation
ADM130 NetWeaver (mySAP Techno E-Commerce Administration
ADM325 NetWeaver (mySAP Techno Software Logistics
ADM326 NetWeaver Enterprise Upgrade
ADM355 NetWeaver (mySAP Techno APO System Administration
ADM505 NetWeaver Database Administration Oracle
ADM515 NetWeaver Database Administration SAP DB
ADM520 NetWeaver (mySAP Techno Database Administration MS SQL Server
ADM535 NetWeaver (mySAP Techno Database Administration DB2 UDB
ADM555 NetWeaver (mySAP Techno LiveCacheAdministration
ADM940 NetWeaver Authorization Concept
ADM950 NetWeaver Secure SAP System Management
ADM960 NetWeaver (mySAP Techno Security in SAP System Environments
AP010 mySAP SCM SAP APO Overview
AP205 mySAP SCM Basic Data Integration
AP210 mySAP SCM Demand Planning
AP215 mySAP SCM Supply Network Planning
AP220 mySAP SCM Production Planning/Detailed Scheduling
AP230 mySAP SCM Global ATP
ASAP90 ASAP Project Management & Leadership
ASAP91 NetWeaver (mySAP Techno SAP Implementation
ASAP92 NetWeaver (mySAP Techno Tools in Detail
ASAP93 Global SAP Implementation
ASAP94 NetWeaver (mySAP Techno Advanced Customizing Tools
BC095 NetWeaver (mySAP Techno Business Integration Technology
BC305 NetWeaver (mySAP Techno Advanced R/3 System Administration
BC310 NetWeaver (mySAP Techno TCC: Windows NT/Oracle
BC314 NetWeaver (mySAP Techno TCC: Windows NT/MS SQL Server
BC315 NetWeaver (mySAP Techno Workload Analysis
BC317 NetWeaver (mySAP Techno 4.6C TCC (NT/UNIX/DB2)
BC325 NetWeaver (mySAP Techno Software Logistics
BC326 NetWeaver (mySAP Techno R/3 Upgrade
BC330 NetWeaver (mySAP Techno E-Commerce Technical Admin.
BC350 mySAP Enterprise Portal TCC (Workplace)
BC355 NetWeaver (mySAP Techno APO System Administration
BC360 NetWeaver (mySAP Techno TCC : Unix (Linux)/Oracle
BC361 NetWeaver (mySAP Techno 4.6C TCC (Unix/Informix)
BC370 NetWeaver (mySAP Techno 4.6C TCC (IBM/400)
BC390 NetWeaver (mySAP Techno 4.6C TCC (IBM/390)
BC400 NetWeaver (mySAP Techno ABAP Workbench: Foundation
BC401 NetWeaver (mySAP Techno ABAP Objects
BC402 NetWeaver (mySAP Techno ABAP Programming Technique
BC404 NetWeaver (mySAP Techno ABAP Objects: introduction to OOP
BC405 NetWeaver (mySAP Techno Techniques of List Processing
BC406 NetWeaver (mySAP Techno Advanced Techniques of List Processing
BC407 NetWeaver (mySAP Techno Reporting with the InfoSet Query & QuickViewer
BC410 NetWeaver (mySAP Techno Programming User Dialogs
BC412 NetWeaver (mySAP Techno EnjoySAP Controls
BC414 NetWeaver (mySAP Techno Programming Database Updates
BC415 NetWeaver (mySAP Techno Remote Function Calls in ABAP
BC417 NetWeaver (mySAP Techno BAPI Dev f. Accessing SAP
BC420 NetWeaver (mySAP Techno Data Transfer
BC425 NetWeaver (mySAP Techno Enhancements and Modification
BC430 NetWeaver (mySAP Techno ABAP Dictionary
BC440 NetWeaver Developing Internet Application Components
BC460 NetWeaver (mySAP Techno SAPscript
BC470 NetWeaver (mySAP Techno Form Printing with SAPSmart Forms
BC490 NetWeaver (mySAP Techno ABAP Performance Tuning
BC505 NetWeaver (mySAP Techno Database Administration Oracle
BC511 NetWeaver Database Administration Informix Dynamic Server UNIX/NT
BC515 NetWeaver (mySAP Techno Database Administration SAPDB
BC520 NetWeaver (mySAP Techno Database Administration MS SQL Server
BC525 NetWeaver (mySAP Techno Database Administration DB2/400
BC535 NetWeaver (mySAP Techno Database Administration DB2 UDB
BC555 NetWeaver (mySAP Techno Live CacheAdministration
BC600 NetWeaver (mySAP Techno Workflow - Introduction
BC601 NetWeaver (mySAP Techno Workflow - Build and Use
BC610 NetWeaver (mySAP Techno Workflow - Programming
BC615 NetWeaver (mySAP Techno SAP ArchiveLink
BC619 NetWeaver (mySAP Techno ALE Technology
BC620 NetWeaver (mySAP Techno SAP IDoc Interface Technology
BC621 NetWeaver (mySAP Techno SAP IDoc Interface Development
BC635 NetWeaver (mySAP Techno SAP Business Connector
BC660 NetWeaver (mySAP Techno Data Archiving
BC670 NetWeaver (mySAP Techno ADK – Retrieval Programming
BC680 NetWeaver (mySAP Techno Data Retention Tool (DART)
BC940 R/3 Security Guide
BIT100 NetWeaver (mySAP Techno Business Integration Technology
BIT300 NetWeaver (mySAP Techno ALE Technology
BIT320 NetWeaver (mySAP Techno Integration Technology EDI
BIT350 NetWeaver (mySAP Techno ALE Enhancement
BIT450 NetWeaver SAP Exchange Infrastructure Development
BIT525 NetWeaver (mySAP Techno Programming with BAPI in VB
BIT526 NetWeaver (mySAP Techno Programming with BAPI in Java
BIT528 NetWeaver (mySAP Techno .NET Connector Programming
BIT530 NetWeaver (mySAP Techno SAP Business Connector Introduction
BIT531 NetWeaver (mySAP Techno SAP Business Connector Integration
BIT600 NetWeaver (mySAP Techno SAP WebFlow
BIT601 NetWeaver (mySAP Techno SAP WebFlow - Build and Use
BIT603 NetWeaver (mySAP Techno Definition&Web Szenarios Available
BIT610 NetWeaver (mySAP Techno SAP WebFlow - Programming
BIT614 NetWeaver (mySAP Techno SAP Document Management - Overview
BIT615 NetWeaver (mySAP Techno SAP ArchiveLink
BIT660 NetWeaver Data Archiving
BIT670 NetWeaver Programing Display Functions
BW200 mySAP BI SAP BW - Overview
BW205 mySAP BI SAP BW - Reporting
BW207 mySAP BI SAP BW - Reporting Management
BW209 mySAP BI SAP BW - Web Reporting
BW210 mySAP BI SAP BW – Warehouse Management
BW220 mySAP BI SAP BW – SAP R/3 Extraction
BW257 mySAP BI BW ConfigSplit into BW205/207
BW305 mySAP BI SAP BW - Reporting & Analysis
BW310 mySAP BI SAP BW – Data Warehousing
BW315 mySAP BI SAP BW – Reporting Management
BW330 mySAP BI SAP BW – BW Modelling
BW340 mySAP BI SAP BW – Data Staging
BW350 mySAP BI SAP BW – Components Extraction
BW360 mySAP BI SAP BW – BW Performance & Admin.
BW365 mySAP BI SAP BW – BW Authorization
CA080 mySAP PLM Project Management
CA210 mySAP EDI Interface
CA410 Data Migration from R/2 to R/3
CA500 mySAP HR Cross Application Time Sheet
CA550 mySAP Financials Inflation Accounting
CA610 NetWeaver (mySAP Techno CATT
CA705 mySAP Financials Report Painter/Report Writer Basics
CA710 mySAP Financials Advanced Functions of the Report Writer
CA800 mySAP PLM Project Management - Structures
CA820 mySAP PLM Project Management - Logistics
CA830 mySAP PLM Project Management - Accounting
CA840 mySAP PLM Project Management - Reporting
CA925 NetWeaver (mySAP Techno BAPI-based development in VB
CA926 NetWeaver (mySAP Techno BAPI-based development in java
CA940 NetWeaver (mySAP Techno SAP R/3 Authorization Concept
CA960 Customizing and Transport Management
CA990 mySAP Financials Euro conversion
CFM030 mySAP Financials CFM - Overview
CFM810 mySAP Financials Basic Functions in CFM
CFM820 mySAP Financials Securities Management
CFM825 mySAP Financials Money Market CFM
CFM835 mySAP Financials Credit Risk Analyzer
CFM840 mySAP Financials In-House Cash
CR010 mySAP CRM CRM Overview
CR100 mySAP CRM CRM Basics
CR200 mySAP CRM Mobile Sales
CR205 mySAP CRM Mobile Sales & Mobile Service
CR210 mySAP CRM Mobile Services
CR215 mySAP CRM Mobile Sales Basics
CR220 mySAP CRM Internet Pricing & Configurator
CR225 mySAP CRM SAP IPC Basics
CR235 mySAP CRM CRM Pricing
CR245 mySAP CRM SAP IPC Product Configuration
CR310 mySAP CRM Mobile Application Studio: Basics
CR320 mySAP CRM Mobile Appl. Studio: Advanced
CR400 mySAP CRM Interaction Center in CRM
CR500 mySAP CRM CRM Middleware Overview
CR510 Mobile Sales / Mobile Service CRM Middleware
CR540 mySAP CRM CRM MW for Mobile Scenarios
CR550 mySAP CRM Enhancing the CRM Middleware
CR590 mySAP CRM BDT - Business Data Toolset
CR600 mySAP CRM Marketing Planning&Campaign Mngmt.
CR700 mySAP CRM CRM Service
CR750 mySAP CRM Tele Sales & Tele Marketing
CR800 mySAP CRM CRM Internet Sales
CR850 mySAP CRM Internet Sales R/3 Edition
CR900 mySAP CRM Analytical CRM
CT205 mySAP SRM Requisite Catalog - Install
CT210 mySAP SRM Requisite Catalog- Config.& Maint.
D20BW mySAP BI BW Delta 2.0
D20EPR mySAP SRM EBP 1.0 to 2.0 Delta Workshop
D30BW mySAP BI SAP BW Delta 3.0
D30EPR mySAP SRM EBP Delta 1.0 to 3.0
D346AA mySAP Financials Delta 3.x - 4.6C in Asset Accounting
D346AW NetWeaver (mySAP Techno ABAP Workbench Delta Course 3.x to 4.6C
D346BC NetWeaver (mySAP Techno Basis Changes in 4.6 from 3.x
D346CS mySAP PLM CS 3.x to 4.6 Delta
D346FI mySAP Financials Delta 3.x - 4.6C Financial Accounting
D346LE mySAP SCM 3.x to 4.6 Delta for Logistics Execution
D346MM mySAP SCM 3.x to 4.6C Materials Management
D346OM mySAP Financials Delta 3.x/4.6 Overhead Cost Controlling
D346PA mySAP Financials Delta 3.x/4.6 Profitability Management
D346PC mySAP Financials Delta 3.x/4.6 Product Cost Controlling
D346PD mySAP PLM Delta 3.1 - 4.6 in PLM
D346PI mySAP SCM Prozess Manufacturing Delta 3.x for 4.6
D346PM mySAP PLM Delta 3.1 - 4.6 Plant Maintenance
D346PP mySAP SCM Delta Production Orders 3.x to 4.6B
D346PS mySAP PLM Delta Project System
D346SD mySAP SCM 3.x to 4.6 SD Delta
D346WF NetWeaver (mySAP Techno Delta SAP Business Workflow 3.x to 4.6
D446AW NetWeaver (mySAP Techno Delta ABAP Workbench 4.0 to 4.6B
D446BC NetWeaver (mySAP Techno Delta R/3 Basis Administration 4.0-4.6B
D446PM mySAP PLM Delta 4.0 - 4.6C Plant Maintenance
D45QM mySAP PLM Delta 4.5 in QM
D46CHR mySAP HR Delta 4.6C in Human Resources
D46EHR mySAP HR Delta SAP R/3 Enterprise in HR
D46HR mySAP HR Human Resources 4.6
D46PS mySAP PLM Delta 4.6 PS
D46QM mySAP PLM Delta 4.5 - 4.6C in QM
D47PM mySAP PLM Delta SAP R/3 Enterprise in PM/CS
D47PS mySAP PLM Delta PS 4.6-Enterprise
D47QM mySAP PLM Delta SAP Enterprise QM
D620AW NetWeaver (mySAP Techno Delta AW 4.6C-WebAS 6.20
DERPAA mySAP Financials Delta SAP R/3 Enterprise AA
DERPFA mySAP SCM Delta SAP R/3 Enterprise in PO
DERPFI mySAP Financials Delta SAP R/3 Enterprise in FI
DERPHR mySAP HR Delta SAP R/3 Enterprise in HR
DERPLD mySAP PLM Delta SAP R/3 Enterprise LDM
DERPMM mySAP SCM Delta SAP R/3 Enterprise in MM
DERPOM mySAP Financials Delta SAP R/3 Enterprise OM
DERPPA mySAP Financials Delta SAP R/3 Enterprise in PA
DERPPC mySAP Financials Delta SAP R/3 Enterprise in PC
DERPPL mySAP SCM Delta SAP R/3 Enterprise in PP
DERPPM mySAP PLM Delta SAP R/3 Enterprise in PM/CS
DERPPS mySAP PLM Delta SAP R/3 Enterprise in PS
DERPQM mySAP PLM Delta SAP R/3 Enterprise in QM
DERPRM mySAP SCM Delta SAP R/3 Enterprise in RM
DERPSP mySAP SCM Delta SAP R/3 Enterprise in SP
EP100 mySAP Enterprise Portal Managing Enterprise Portal Content
EP300 mySAP Enterprise Portal Knowledge Management
EPR210 mySAP SRM Enterprise Buyer Professional
EPR240 mySAP SRM Catalog & Content Management
FS100 mySAP Financials CFM - Overview
FS110 mySAP Financials Basic Functions CFM
FS111 mySAP Financials Securities
FS112 mySAP Financials Money Market CFM
FS120 mySAP Financials In-House Cash CFM
FS200 mySAP Financial Services mySAP Banking Overview
FS210 mySAP Financials Loans
FS220 mySAP Financials Credit Risk Analyzer
FS230 mySAP Financial Services BCA
FS240 mySAP Financial Services Profit Analyzer
FS250 mySAP Financial Services Market Risk Analyzer
FS251 mySAP Financial Services Asset Liability Management
FS310 mySAP Financial FS-CD Collections and Disbursements
HR050 mySAP HR Human Resources Essentials
HR051 mySAP HR Human Resources Essentials 1
HR052 mySAP HR Human Resources Essentials 2
HR053 mySAP HR Human Resources Essentials 3
HR100 mySAP HR Essentials of Human Resources
HR110 mySAP HR Essentials of Payroll
HR120 mySAP HR Essentials of Personnel Development
HR250 mySAP HR Employee Self-Service
HR305 mySAP HR Configuration of Master Data
HR306 mySAP HR Configuration of Time Recording
HR307 mySAP HR Configuration of HR System
HR308 mySAP HR Time Managers Workplace
HR310 mySAP HR Time Evaluation With Clock Times
HR311 mySAP HR Time Evaluation Without Clock Times
HR315 mySAP HR Recruitment
HR325 mySAP HR Benefits Administration
HR350 mySAP HR Programming in HR
HR390 mySAP HR Introduction to Payroll
HR400 mySAP HR Payroll Configuration
HR490 mySAP HR Incentive Wages
HR505 mySAP HR Organizational Management
HR506 mySAP HR Advanced Organizational Management
HR510 mySAP HR Personnel Development
HR515 mySAP HR Training and Event Management
HR520 mySAP HR Shift Planning
HR530 mySAP HR Technical Topics in HR
HR540 mySAP HR Compensation Management
HR580 mySAP HR Reporting in Human Resources
HR940 mySAP HR Authorizations in HR
IAU210 mySAP Automotive SAP Automotive: Supplier
IAU240 mySAP Automotive mySAP Automotive: JIT Processes
IBA010 SAP Banking Overview
IBA315 Market Risk Analyzer for Banks
IBA325 Default Risk Limitation
IBA815 mySAP Financials Loans
IRT100 mySAP Retail mySAP Retail Process Overview
IRT310 mySAP Retail Retail Master Data
IRT320 mySAP Retail Pricing and Promotions
IRT330 mySAP Retail Requirements Planning/ Purchasing
IRT340 mySAP Retail Supply Chain Execution
IRT350 mySAP Retail Merchandise & Assortment Planning
IRT360 mySAP Retail Store Connection
IRT370 mySAP Retail SAP Retail Store
ITS050 NetWeaver (mySAP Techno SAP ITS: Foundations
ITS070 NetWeaver (mySAP Techno SAP ITS: Administration
ITS100 NetWeaver (mySAP Techno Developing EasyWebTransactions
ITS110 NetWeaver (mySAP Techno SAP ITS: Flow Logic
ITS150 NetWeaver (mySAP Techno SAP ITS: Corporate Identity Design
IUT110 mySAP Utilities Introduction to IS-U/CCS
IUT210 mySAP Utilities Master Data and Basic Functions
IUT220 mySAP Utilities Device Management
IUT221 mySAP Utilities Work Management
IUT225 mySAP Utilities Energy Data Management
IUT230 mySAP Utilities Billing and Invoicing
IUT235 mySAP Utilities Real-Time-Pricing
IUT240 mySAP Utilities Contract Accounts Receivable and Payable
IUT250