Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
章概述了ABAP-SAP中用于開發(fā)業(yè)務(wù)應(yīng)用程序支持和開發(fā)的編程語言。
ABAP是一種在SAP ABAP運行時環(huán)境中運行的編程語言,由SAP創(chuàng)建并用于開發(fā)應(yīng)用程序,其中包括:
R / 3的所有應(yīng)用程序甚至其基礎(chǔ)系統(tǒng)的某些部分都是在ABAP中開發(fā)的。
ABAP是一種事件驅(qū)動的編程語言。用戶動作和系統(tǒng)事件控制應(yīng)用程序的執(zhí)行。
ABAP也稱為ABAP / 4。ABAP / 4中的“ 4”代表“第四代語言”或4GL。
SAP使用ABAP Workbench來開發(fā)標(biāo)準(zhǔn)和定制應(yīng)用程序軟件。ABAP工作臺還用于創(chuàng)建字典對象。它包含以下組件-
注意 -ABAP工作臺以前稱為ABAP / 4開發(fā)工作臺。
報告程序產(chǎn)生列表,可以分為經(jīng)典報告和交互式報告。
臨時查詢提供三種不同類型的報告-
用于訪問臨時查詢的交易代碼-
在最終用戶可以開始處理業(yè)務(wù)流程以進行分析和報告之前,必須先填充SAP數(shù)據(jù)庫。根據(jù)復(fù)雜度和要傳輸?shù)臄?shù)據(jù)量,在各個階段使用各種方法將數(shù)據(jù)傳輸?shù)较到y(tǒng)中。
數(shù)據(jù)可以從SAP傳輸?shù)絊AP或從SAP傳輸?shù)椒荢AP系統(tǒng)(舊版系統(tǒng))。數(shù)據(jù)也可以通過手動輸入進行傳輸。用于數(shù)據(jù)傳輸?shù)墓ぞ呷缦?
SAP生成各種文檔,例如采購訂單,銷售訂單,發(fā)票,工資單等。您可以在需要時打印這些文檔。下圖顯示了打印過程在SAP系統(tǒng)中的工作方式。
SAP系統(tǒng)需要不同類型的打印方法,例如-
用戶觸發(fā)打印過程后,打印請求將發(fā)送到后臺處理服務(wù)器,該服務(wù)器包含處理所需的對話框和后臺處理工作流程。
可以使用R / 3系統(tǒng)的功能以交互方式編寫程序。程序可以在線執(zhí)行,也可以在后臺執(zhí)行。還可以安排后臺作業(yè)以特定間隔運行。
BCO連接外部數(shù)據(jù)庫的筆記
事務(wù)代碼dbco連接外部數(shù)據(jù)庫,連接外部數(shù)據(jù)庫的數(shù)據(jù)庫
我現(xiàn)在連接的是oracle數(shù)據(jù)庫
dbco配置(自己測試的)
連接名,自己定義;dbms,數(shù)據(jù)庫連接的類型,不同數(shù)據(jù)庫對應(yīng)的不一樣的;
用戶名稱,連接的數(shù)據(jù)庫的用戶名稱;數(shù)據(jù)庫可令,連接的數(shù)據(jù)庫的密碼,后面是確定密碼;
連接信息,這里的比較重要,一般是通過basis那里獲得的,這個是要自己配置的,
在TNSNAMES.ORA這個文件下找到的,TESTOA.WORLD和我們上面的連接信息一樣
在sap應(yīng)用服務(wù)器端修改TNSNAMES.ORA文件,路徑:$ORACLE_HOME\NETWORK\ADMIN
先在SAP底層ORACLE數(shù)據(jù)庫編輯TNS文件,一般由BASIS配置完成.配置完成后我們可以用事務(wù)碼:AL11查看配置是否正確,路徑:DIR_ORAHOME->network->admin->tnsnames.ora查看對應(yīng)的TNS是否配置正確
TNSNAMES.ORA這個文件的詳細信息
# tnsnames.ora Network Configuration File: E:\usr\sap\IDE\SYS\profile\oracle\tnsnames.ora
# Generated by Oracle configuration tools.
################
# Filename......: tnsnames.ora
# Created.......: created by SAP AG, R/3 Rel. >=6.10
# Name..........:
# Date..........:
# @(#) $Id: //bc/700-1_REL/src/ins/SAPINST/impl/tpls/ora/ind/TNSNAMES.ORA#4 $
################
####紅色部分為手工加上去的,外部數(shù)據(jù)庫的ip地址和端口號,黑色系統(tǒng)默認產(chǎn)生的
TESTOA.WORLD=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.4.120)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=TESTOA)
)
)
IDE.WORLD=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(COMMUNITY=SAP.WORLD)(PROTOCOL=TCP)(HOST=tbides)(PORT=1527))
)
(CONNECT_DATA=
(SID=IDE)
(GLOBAL_NAME=IDE.WORLD)
)
)
EXTPROC_CONNECTION_DATA=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))
)
(CONNECT_DATA=
(SID=PLSExtProc)
(PRESENTATION=RO)
)
)
基本上dbco的配置已經(jīng)算完成了,剩下的就是我們abap拿手的寫代碼連接測試和訪問外部數(shù)據(jù)庫了!測試連接是否成功的事務(wù)代碼:st04m,測試連接的程序:ADBC_TEST_CONNECTION
自己寫的測試代碼,讀取外部數(shù)據(jù)表的數(shù)據(jù)
*&---------------------------------------------------------------------*
*& Report ZTEST_CONN
*&
*&---------------------------------------------------------------------*
*&create by augus 2012.06.29
*&test dbco
*&---------------------------------------------------------------------*
REPORT ztest_conn.
PARAMETERS:
con_name TYPE dbcon-con_name.
DATA: dbn(255) type c.
DATA: BEGIN OF wa, "結(jié)構(gòu)的字段名稱可以和表的不一樣
whir$fyzb_km(50) TYPE c,
whir$fyzb_je TYPE i,
whir$fyzb_zx(50) type c,
END OF wa.
data: c1 type i.
c1=200.
** 根據(jù)連接條件名,打開數(shù)據(jù)庫的連接
EXEC SQL.
CONNECT TO :con_name
ENDEXEC.
check sy-subrc=0.
**執(zhí)行本地化sql語句,whir$fyzb外部數(shù)據(jù)的表名和對應(yīng)的字段
EXEC SQL PERFORMING loop_output.
SELECT whir$fyzb_km, whir$fyzb_je, whir$fyzb_zx
INTO :wa
FROM whir$fyzb
WHERE whir$fyzb_je=:c1
ENDEXEC.
**關(guān)閉數(shù)據(jù)庫連接
EXEC SQL.
DISCONNECT :con_name
ENDEXEC.
uline.
write: / 'over'.
FORM loop_output.
WRITE: / wa-whir$fyzb_km, wa-whir$fyzb_je, wa-whir$fyzb_zx.
uline.
ENDFORM.
連接sqlserver數(shù)據(jù)庫
MSSQL_SERVER=192.168.8.92之間不能有空格,數(shù)據(jù)庫端服務(wù)器的ip地址或者是名稱
MSSQL_DBNAME=tb ,不能有空格,數(shù)據(jù)庫的名稱
中文亂碼
http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763105c8c3a4c07db3c678b85027fa3c215cc795b434465feb9233f515791d27c1156e50f0baaac6865377576e78cc8fe1d81eacf7e74d472296459db0144dc58fc895125b07dd009b8f14ef0bb8025e2ddc5a7a94323bd44730c97f1fb4d7060dd18f0033093b1ef4d022914ad9d35728b296028ef3430c7508a94&p=c4759a46d7c352ec0fbe9b74570dc6&user=baidu&fm=sc&query=SAP+oracle%CA%FD%BE%DD%BF%E2%D7%D6%B7%FB%BC%AF&qid=9bb5edf4041de375&p1=2
http://www.erp100.com/thread-237906-1-1.html
代碼示例:
*&---------------------------------------------------------------------*
*& Report ZMS_GET_GYLX
*&
*&---------------------------------------------------------------------*
*&create by augus 2012.07.02
*&獲取mes系統(tǒng)工藝路線表的數(shù)據(jù)
*&連接的是oracle數(shù)據(jù)庫
*&后臺執(zhí)行
*&---------------------------------------------------------------------*
report zms_get_gylx.
parameters:
con_name type dbcon-con_name.
data: dbn(255) type c.
data: ztab like table of zmes_gylx with header line.
data: wa_zmes_gylx type zmes_gylx.
data: zgyms type xstring."十六進制工藝路線描述
data: zh_zgyms(200) type c."中文工藝路線描述
data: c1 type i.
c1=200.
** 根據(jù)連接條件名,打開數(shù)據(jù)庫的連接
EXEC SQL.
CONNECT TO :con_name
ENDEXEC.
check sy-subrc=0.
**執(zhí)行本地化sql語句,ZMES_GYLX外部數(shù)據(jù)的表名和對應(yīng)的字段
********************調(diào)用子程序讀取數(shù)據(jù)庫********************
***utl_raw.cast_to_raw,oracle的一個函數(shù),通過轉(zhuǎn)化為十六進制,為了解決中文亂碼的問題
EXEC SQL PERFORMING loop_output.
SELECT ZGYLX, utl_raw.cast_to_raw(ZGYMS)
INTO :wa_ZMES_GYLX-ZGYLX, :zgyms
FROM ZMES_GYLX
ENDEXEC.
*************************************************************
**關(guān)閉數(shù)據(jù)庫連接
EXEC SQL.
DISCONNECT :con_name
ENDEXEC.
uline.
write: / 'over'.
*&---------------------------------------------------------------------*
*& Form loop_output
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form loop_output.
perform hex_to_utf8 using zgyms changing zh_zgyms.
* WRITE: / wa-whir$fyzb_km, wa-whir$fyzb_je, wa-whir$fyzb_zx.
* ULINE.
wa_zmes_gylx-zgyms=zh_zgyms.
insert into zmes_gylx values wa_zmes_gylx.
commit work.
endform. "loop_output
*&---------------------------------------------------------------------*
*& Form hex_to_utf8
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_HEX_SOURCE text
* -->P_RESULT text
*----------------------------------------------------------------------*
*****解決中文亂碼的問題,16進制編碼轉(zhuǎn)換
form hex_to_utf8 using p_hex_source type xsequence
changing p_result type simple.
data: cv type ref to cl_abap_conv_in_ce.
*****連接的數(shù)據(jù)的字符集是什么,就得用對應(yīng)的字符集來轉(zhuǎn)換
IF con_name='ZMES'."連接mes測試機數(shù)據(jù)庫
cv=cl_abap_conv_in_ce=>create( encoding='UTF-8' ).
ELSEIF con_name='ZMES01'."連接mes正式機數(shù)據(jù)庫
cv=cl_abap_conv_in_ce=>create( encoding='4102' )."endcoding可以在表TCP00里查看uft-16對應(yīng)4102
ENDIF.
TRY.
CALL METHOD cv->convert
EXPORTING
input=p_hex_source
IMPORTING
data=p_result.
CATCH cx_sy_conversion_codepage CX_SY_CODEPAGE_CONVERTER_INIT CX_PARAMETER_INVALID_TYPE."捕獲下異常
ENDTRY.
endform. "hex_to_utf8
8
文
在上一篇文章
《揭秘AGV物流機器人黑科技》
發(fā)表后,有讀者問我一個問題:“請問物聯(lián)網(wǎng)平臺下的EWM和TPS與AGV交互時那個是負責(zé)協(xié)議轉(zhuǎn)換的? 相關(guān)的通信協(xié)議和格式有哪些?”
我當(dāng)時就想說“This is a very good question”,因為我只知道海康使用的是TCP協(xié)議,但是EWM和AGV到底是怎么對接的,我也沒搞清楚。
本著為讀者服務(wù)的精神,我決定把這個事情弄明白。于是,我動用了自己三十年的積蓄人脈,終于找到了一位來自SAP中國研究院的高人——楊彥塵(Edwin)。
接下來,我會請這位同學(xué)出場,來向大家解釋一下SAP EWM和AGV機器人究竟是如何連接起來的。
正文
在工業(yè)4.0的浪潮下,SAP的EWM已經(jīng)變得越來越智能。如今AGV這個看起來萌萌噠的小伙伴也加入了EWM的朋友圈。
也有人叫我“鐵毛驢、鐵烏龜”
很多攻城獅都對EWM如何與AGV對接的問題感興趣,那么本文就來探討一下如何讓EWM和AGV做朋友吧。
首先,我們來探討以下三個名詞EWM,RCS,AGV。以及他們在集成場景下的角色。
先舉個栗子,某天你和心中的女神約飯,你打開點評軟件找到了合適的餐館,然后打開導(dǎo)航軟件,在志玲姐姐“向左轉(zhuǎn),向右轉(zhuǎn)”的提示音下,開車到達了目的地,愉快地增進了你們的友誼。
在以上場景中,EWM就好像是你的點評軟件,她會智能地根據(jù)出庫或者入庫的規(guī)則,推薦目標(biāo)BIN位(餐館),然后生成倉庫任務(wù)。
在傳統(tǒng)EWM的應(yīng)用場景下,這些任務(wù)會由倉庫的工人去執(zhí)行。但是在EWM和AGV集成的場景下,這些任務(wù)是由這些抗得了重擔(dān),鉆得了貨架的AGV執(zhí)行,這個時候只知道目標(biāo)BIN位AGV是一臉懵逼的,此時需要老司機RCS出場。
RCS(Robot Control System)就是以上場景中的導(dǎo)航軟件,通常會由AGV的供應(yīng)商提供。她就像倉庫中AGV的交通指揮官,是倉庫的塔臺。
RCS會知道AGV的位置在哪里,BIN位到BIN位之間的路徑有哪些,哪些路徑已經(jīng)比較擁堵,然后指揮AGV更有效率的完成倉庫任務(wù)。
敲黑板,EWM是負責(zé)倉庫任務(wù)的創(chuàng)建,RCS負責(zé)把倉庫任務(wù)委派給合適的AGV,然后指揮AGV完成倉庫任務(wù)并且向EWM報告完成情況。
通過以上解釋,聰明的同學(xué)已經(jīng)發(fā)現(xiàn)了,如果能解決EWM和RCS之間的通訊問題,那么EWM就能讓AGV歡快地執(zhí)行倉庫任務(wù)了。
通訊問題具體怎么解決呢?以下介紹三種姿勢。
第一種情況,假設(shè)你的合作伙伴能提供一個“靈活”的RCS,也就是說,具備利用Java或者C#,以及SAP的RFC庫進行一定程度的開發(fā)。
那么我們可以利用SAP提供的Connect subsystem功能,通過IDOC進行通信(SPRO→Extended Warehouse Management→Interfaces→Non-SAP Systems→Connect Subsystem)。
在這個場景下,EWM會將創(chuàng)建的倉庫任務(wù),通過消息類型/SCWM/WMTORD傳遞到RCS,在RCS指揮AGV完成任務(wù)之后,通過消息類型/SCWM/WMTOCO通知EWM,EWM再完成相關(guān)倉庫任務(wù)的確認。
想要了解更多,可以搜索SAP help portal上Interface Between EWM and Non-SAP Systems,傳送門
https://help.sap.com/viewer/search?q=Interface%20Between%20EWM%20and%20Non-SAP%20Systems&state=PRODUCTION&language=en-US&format=standard,html,pdf,others
這種做法利用了EWM的標(biāo)準(zhǔn)功能,并且能夠準(zhǔn)確實時地更新倉庫任務(wù)的狀態(tài)。如果你是AGV的供應(yīng)商,并且實現(xiàn)了以上接口,那么你就打開了SAP EWM客戶的大門,想想是不是有些小激動呢?
第二種情況,很不幸你遇到了一個“固執(zhí)”的RCS系統(tǒng),但幸運的是,RCS提供了基于Web Service的接口。
這個時候,我們可以通過開發(fā)接口程序,然后設(shè)置為定時任務(wù),將EWM新建立的倉庫任務(wù),通過ABAP Http Client調(diào)用Web Service的方式傳遞給RCS。
接著再讀取RCS完工的倉庫任務(wù)并且更新EWM的狀態(tài)。這種做法需要在EWM做一定程度的定制開發(fā),并且和特定的RCS系統(tǒng)緊耦合在一起,是一種折衷的做法。
第三種情況,某些場景對實時性的要求很高,需要有一種辦法,讓EWM跳過RCS,直接利用IoT的方式連接到AGV,并且指揮AGV完成倉庫任務(wù)。
這種方法就是SAP EWM MFS。MFS可以讓EWM通用TCP/IP的方式,直接連接到AGV的PLC芯片,聽上去是不是很Cool!不過礙于篇幅此處就不展開了。
有興趣的小伙伴可以參閱SAP help portal上關(guān)于 MFS的相關(guān)內(nèi)容,傳送門
https://help.sap.com/viewer/search?q=MFS&state=PRODUCTION&language=en-US&format=standard,html,pdf,others
謝謝各位能閱讀到這里!課堂總結(jié)啦。SAP EWM與AGV對接有間接和直接兩種模式。
SAP EWM可以通過IDOC或Web Service的方式與RCS通信,間接完成與AGV的集成。
另外也可以通過MFS + TCP/IP的方式直接與AGV集成。
希望這篇文章能夠讓大家多了解一些SAP EWM的小知識,與SAP一起,把倉庫管理變得越來越智能!
結(jié)語
不知道大家看完了以后有什么感覺?是不是被一堆專業(yè)詞匯IDOC,Web Service,IoT,調(diào)用,緊耦合。。。搞得有點迷糊。
對于大多數(shù)小伙伴來說,我們不需要去搞明白這些專業(yè)術(shù)語到底代表了什么意思,只需要了解系統(tǒng)運作的基本原理就足夠了,就像是SAP EWM有多種解決方案,可以根據(jù)不同的RCS/AGV的配置和實際需要使用的場景,精準(zhǔn)地提供EWM→RCS→AGV的無縫連接,讓物流機器人效率更高,倉庫車間的智能化增強,企業(yè)的供應(yīng)鏈敏捷性提升。
關(guān)于SAP EWM
SAP Extended Warehouse Management(擴展倉儲管理),搭載了物聯(lián)網(wǎng)技術(shù),在集成、管理機器人方面具有很大的優(yōu)勢。
它支持靈活可配置的出入庫策略,滿足不同類型貨品的多樣化庫存管理需求,支持用戶實現(xiàn)真正意義上的柔性化生產(chǎn)。
SAP EWM與ERP、MES等系統(tǒng)無縫對接,接收并執(zhí)行物流指令,可以做到生產(chǎn)與物流管理的系統(tǒng)化、一體化、透明化和智能化。
關(guān)于作者:
楊彥塵(Edwin Yang),高級研發(fā)工程師,SAP中國研究院。
再次感謝Edwin對本文做出的貢獻!
- END -
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。