整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          SAP-編程語言(ABAP)

          SAP-編程語言(ABAP)

          章概述了ABAP-SAP中用于開發業務應用程序支持和開發的編程語言。

          ABAP(高級業務應用程序編程)

          ABAP是一種在SAP ABAP運行時環境中運行的編程語言,由SAP創建并用于開發應用程序,其中包括:

          • 報告書
          • 模塊池編程
          • 介面
          • 形式
          • 資料轉換
          • 用戶出口和BADI

          R / 3的所有應用程序甚至其基礎系統的某些部分都是在ABAP中開發的。

          ABAP是一種事件驅動的編程語言。用戶動作和系統事件控制應用程序的執行。

          ABAP也稱為ABAP / 4。ABAP / 4中的“ 4”代表“第四代語言”或4GL。

          ABAP工作臺

          SAP使用ABAP Workbench來開發標準和定制應用程序軟件。ABAP工作臺還用于創建字典對象。它包含以下組件-

          • ABAP編輯器用于維護程序。
          • ABAP詞典用于維護詞典對象。
          • 資源庫瀏覽器用于顯示包中組件的層次結構。
          • Menu Painter用于開發圖形用戶界面,包括菜單欄和工具欄。
          • Screen Painter用于維護在線程序的屏幕組件。
          • 資源庫信息系統包含有關開發和運行時對象的信息,例如數據模型,字典類型和表結構,程序和函數。
          • 測試和分析工具,例如語法檢查和調試器。
          • Function Builder,它允許創建和維護功能組和功能模塊。
          • Data Modeler,一種支持圖形建模的工具。
          • Workbench Organizer,用于維護多個開發項目并管理其分布。

          注意 -ABAP工作臺以前稱為ABAP / 4開發工作臺。

          報告中

          報告程序產生列表,可以分為經典報告和交互式報告。

          • 經典報告不允許用戶進行交互;因此,基本列表包含大量信息,用戶必須經常對這些信息進行排序以查找相關數據。
          • 交互式報告允許用戶進行交互;因此,用戶可以通過選擇相關數據并請求更多信息來生成基本列表的輔助詳細列表。
          • SAP查詢或即席查詢或InfoSet查詢是一種工具,允許最終用戶根據需求根據SAP系統中不同的輸入和輸出參數來設計不同的查詢。這是人力資源模塊中主要用于從關系數據庫中提取數據的報告工具之一。InfoSet Query適合在SAP R / 3系統的所有區域中進行報告。

          臨時查詢提供三種不同類型的報告-

          • 基本列表 -簡單報告。
          • 統計 -具有統計功能(例如平均值,百分比等)的報告。
          • 排名列表 -用于分析報告。

          用于訪問臨時查詢的交易代碼-

          • SQ01-維護查詢
          • SQ02-顯示信息集
          • SQ03-維護用戶組

          數據輸入

          在最終用戶可以開始處理業務流程以進行分析和報告之前,必須先填充SAP數據庫。根據復雜度和要傳輸的數據量,在各個階段使用各種方法將數據傳輸到系統中。

          數據可以從SAP傳輸到SAP或從SAP傳輸到非SAP系統(舊版系統)。數據也可以通過手動輸入進行傳輸。用于數據傳輸的工具如下-

          • BDC(批處理數據通信)
          • IDOC(中間文件)
          • LSMW(舊版系統遷移工作臺)
          • 通過上傳保存數據的.txt或Excel文件進??行接口
          • 使用交易代碼手動輸入數據

          列印

          SAP生成各種文檔,例如采購訂單,銷售訂單,發票,工資單等。您可以在需要時打印這些文檔。下圖顯示了打印過程在SAP系統中的工作方式。

          SAP系統需要不同類型的打印方法,例如-

          • 本地印刷
          • 遠程打印(網絡)
          • 前端打印(Windows的SAP GUI)
          • 前端打印(用于HTML的SAP GUI)


          用戶觸發打印過程后,打印請求將發送到后臺處理服務器,該服務器包含處理所需的對話框和后臺處理工作流程。

          通用編程

          可以使用R / 3系統的功能以交互方式編寫程序。程序可以在線執行,也可以在后臺執行。還可以安排后臺作業以特定間隔運行。


          • 模塊池編程(或在線編程)涉及創建模塊池(ABAP模塊的集合)和一個或多個屏幕。屏幕處理器在程序執行期間調用模塊。
          • 批輸入處理用于確保將數據安全地傳輸到SAP系統中。此過程是自動的,受保護的數據傳輸到SAP系統,該系統使用SAP事務來驗證填充SAP數據庫的數據。
          • ABAP包含符合CPI-C標準(公共程序接口-通信)的語句。這些用于對通信程序進行編程。
          • ABAP可以讀寫順序數據集。

          BCO連接外部數據庫的筆記

          事務代碼dbco連接外部數據庫,連接外部數據庫的數據庫

          我現在連接的是oracle數據庫

          dbco配置(自己測試的)

          連接名,自己定義;dbms,數據庫連接的類型,不同數據庫對應的不一樣的;

          用戶名稱,連接的數據庫的用戶名稱;數據庫可令,連接的數據庫的密碼,后面是確定密碼;

          連接信息,這里的比較重要,一般是通過basis那里獲得的,這個是要自己配置的,

          在TNSNAMES.ORA這個文件下找到的,TESTOA.WORLD和我們上面的連接信息一樣

          在sap應用服務器端修改TNSNAMES.ORA文件,路徑:$ORACLE_HOME\NETWORK\ADMIN


          先在SAP底層ORACLE數據庫編輯TNS文件,一般由BASIS配置完成.配置完成后我們可以用事務碼:AL11查看配置是否正確,路徑:DIR_ORAHOME->network->admin->tnsnames.ora查看對應的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 $

          ################

          ####紅色部分為手工加上去的,外部數據庫的ip地址和端口號,黑色系統默認產生的

          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的配置已經算完成了,剩下的就是我們abap拿手的寫代碼連接測試和訪問外部數據庫了!測試連接是否成功的事務代碼:st04m,測試連接的程序:ADBC_TEST_CONNECTION

          自己寫的測試代碼,讀取外部數據表的數據

          *&---------------------------------------------------------------------*

          *& 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, "結構的字段名稱可以和表的不一樣

          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.

          ** 根據連接條件名,打開數據庫的連接

          EXEC SQL.

          CONNECT TO :con_name

          ENDEXEC.



          check sy-subrc=0.

          **執行本地化sql語句,whir$fyzb外部數據的表名和對應的字段

          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.


          **關閉數據庫連接

          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數據庫

          MSSQL_SERVER=192.168.8.92之間不能有空格,數據庫端服務器的ip地址或者是名稱

          MSSQL_DBNAME=tb ,不能有空格,數據庫的名稱

          中文亂碼

          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系統工藝路線表的數據

          *&連接的是oracle數據庫

          *&后臺執行

          *&---------------------------------------------------------------------*


          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.

          ** 根據連接條件名,打開數據庫的連接

          EXEC SQL.

          CONNECT TO :con_name

          ENDEXEC.



          check sy-subrc=0.

          **執行本地化sql語句,ZMES_GYLX外部數據的表名和對應的字段

          ********************調用子程序讀取數據庫********************

          ***utl_raw.cast_to_raw,oracle的一個函數,通過轉化為十六進制,為了解決中文亂碼的問題

          EXEC SQL PERFORMING loop_output.

          SELECT ZGYLX, utl_raw.cast_to_raw(ZGYMS)

          INTO :wa_ZMES_GYLX-ZGYLX, :zgyms

          FROM ZMES_GYLX

          ENDEXEC.

          *************************************************************



          **關閉數據庫連接

          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進制編碼轉換

          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.

          *****連接的數據的字符集是什么,就得用對應的字符集來轉換

          IF con_name='ZMES'."連接mes測試機數據庫

          cv=cl_abap_conv_in_ce=>create( encoding='UTF-8' ).

          ELSEIF con_name='ZMES01'."連接mes正式機數據庫

          cv=cl_abap_conv_in_ce=>create( encoding='4102' )."endcoding可以在表TCP00里查看uft-16對應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物流機器人黑科技》

          發表后,有讀者問我一個問題:“請問物聯網平臺下的EWM和TPS與AGV交互時那個是負責協議轉換的? 相關的通信協議和格式有哪些?”

          我當時就想說“This is a very good question”,因為我只知道海康使用的是TCP協議,但是EWM和AGV到底是怎么對接的,我也沒搞清楚。

          本著為讀者服務的精神,我決定把這個事情弄明白。于是,我動用了自己三十年的積蓄人脈,終于找到了一位來自SAP中國研究院的高人——楊彥塵(Edwin)

          接下來,我會請這位同學出場,來向大家解釋一下SAP EWM和AGV機器人究竟是如何連接起來的。

          正文

          在工業4.0的浪潮下,SAP的EWM已經變得越來越智能。如今AGV這個看起來萌萌噠的小伙伴也加入了EWM的朋友圈。

          也有人叫我“鐵毛驢、鐵烏龜”

          很多攻城獅都對EWM如何與AGV對接的問題感興趣,那么本文就來探討一下如何讓EWM和AGV做朋友吧。

          首先,我們來探討以下三個名詞EWM,RCS,AGV。以及他們在集成場景下的角色。

          先舉個栗子,某天你和心中的女神約飯,你打開點評軟件找到了合適的餐館,然后打開導航軟件,在志玲姐姐“向左轉,向右轉”的提示音下,開車到達了目的地,愉快地增進了你們的友誼。

          在以上場景中,EWM就好像是你的點評軟件,她會智能地根據出庫或者入庫的規則,推薦目標BIN位(餐館),然后生成倉庫任務。

          在傳統EWM的應用場景下,這些任務會由倉庫的工人去執行。但是在EWM和AGV集成的場景下,這些任務是由這些抗得了重擔,鉆得了貨架的AGV執行,這個時候只知道目標BIN位AGV是一臉懵逼的,此時需要老司機RCS出場。

          RCS(Robot Control System)就是以上場景中的導航軟件,通常會由AGV的供應商提供。她就像倉庫中AGV的交通指揮官,是倉庫的塔臺。

          RCS會知道AGV的位置在哪里,BIN位到BIN位之間的路徑有哪些,哪些路徑已經比較擁堵,然后指揮AGV更有效率的完成倉庫任務。

          敲黑板,EWM是負責倉庫任務的創建,RCS負責把倉庫任務委派給合適的AGV,然后指揮AGV完成倉庫任務并且向EWM報告完成情況。

          通過以上解釋,聰明的同學已經發現了,如果能解決EWM和RCS之間的通訊問題,那么EWM就能讓AGV歡快地執行倉庫任務了。

          通訊問題具體怎么解決呢?以下介紹三種姿勢。

          第一種情況,假設你的合作伙伴能提供一個“靈活”的RCS,也就是說,具備利用Java或者C#,以及SAP的RFC庫進行一定程度的開發。

          那么我們可以利用SAP提供的Connect subsystem功能,通過IDOC進行通信(SPRO→Extended Warehouse Management→Interfaces→Non-SAP Systems→Connect Subsystem)。

          在這個場景下,EWM會將創建的倉庫任務,通過消息類型/SCWM/WMTORD傳遞到RCS,在RCS指揮AGV完成任務之后,通過消息類型/SCWM/WMTOCO通知EWM,EWM再完成相關倉庫任務的確認。

          想要了解更多,可以搜索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的標準功能,并且能夠準確實時地更新倉庫任務的狀態。如果你是AGV的供應商,并且實現了以上接口,那么你就打開了SAP EWM客戶的大門,想想是不是有些小激動呢?

          第二種情況,很不幸你遇到了一個“固執”的RCS系統,但幸運的是,RCS提供了基于Web Service的接口。

          這個時候,我們可以通過開發接口程序,然后設置為定時任務,將EWM新建立的倉庫任務,通過ABAP Http Client調用Web Service的方式傳遞給RCS。

          接著再讀取RCS完工的倉庫任務并且更新EWM的狀態。這種做法需要在EWM做一定程度的定制開發,并且和特定的RCS系統緊耦合在一起,是一種折衷的做法。

          第三種情況,某些場景對實時性的要求很高,需要有一種辦法,讓EWM跳過RCS,直接利用IoT的方式連接到AGV,并且指揮AGV完成倉庫任務。

          這種方法就是SAP EWM MFS。MFS可以讓EWM通用TCP/IP的方式,直接連接到AGV的PLC芯片,聽上去是不是很Cool!不過礙于篇幅此處就不展開了。

          有興趣的小伙伴可以參閱SAP help portal上關于 MFS的相關內容,傳送門

          https://help.sap.com/viewer/search?q=MFS&state=PRODUCTION&language=en-US&format=standard,html,pdf,others

          謝謝各位能閱讀到這里!課堂總結啦。SAP EWM與AGV對接有間接和直接兩種模式。

          SAP EWM可以通過IDOC或Web Service的方式與RCS通信,間接完成與AGV的集成。

          另外也可以通過MFS + TCP/IP的方式直接與AGV集成。

          希望這篇文章能夠讓大家多了解一些SAP EWM的小知識,與SAP一起,把倉庫管理變得越來越智能!

          結語

          不知道大家看完了以后有什么感覺?是不是被一堆專業詞匯IDOC,Web Service,IoT,調用,緊耦合。。。搞得有點迷糊。

          對于大多數小伙伴來說,我們不需要去搞明白這些專業術語到底代表了什么意思,只需要了解系統運作的基本原理就足夠了,就像是SAP EWM有多種解決方案,可以根據不同的RCS/AGV的配置和實際需要使用的場景,精準地提供EWM→RCS→AGV的無縫連接,讓物流機器人效率更高,倉庫車間的智能化增強,企業的供應鏈敏捷性提升。

          關于SAP EWM

          SAP Extended Warehouse Management(擴展倉儲管理),搭載了物聯網技術,在集成、管理機器人方面具有很大的優勢。

          它支持靈活可配置的出入庫策略,滿足不同類型貨品的多樣化庫存管理需求,支持用戶實現真正意義上的柔性化生產。

          SAP EWM與ERP、MES等系統無縫對接,接收并執行物流指令,可以做到生產與物流管理的系統化、一體化、透明化和智能化。

          關于作者:

          楊彥塵(Edwin Yang),高級研發工程師,SAP中國研究院。

          再次感謝Edwin對本文做出的貢獻!

          - END -


          主站蜘蛛池模板: 国语精品一区二区三区| 亚无码乱人伦一区二区| 国产在线精品一区二区中文| www.亚洲一区| 人妻AV中文字幕一区二区三区 | 一区二区不卡在线| 国产凹凸在线一区二区| 动漫精品专区一区二区三区不卡| 一区二区亚洲精品精华液| 麻豆AV一区二区三区久久| 人妻夜夜爽天天爽一区| 无码喷水一区二区浪潮AV| 久久国产视频一区| 日本一区二区不卡视频 | 色窝窝无码一区二区三区| 国产天堂在线一区二区三区| 内射白浆一区二区在线观看| 日本无卡码免费一区二区三区| 国产拳头交一区二区| 蜜臀AV一区二区| 无码av中文一区二区三区桃花岛| 日本一区二区三区在线观看 | 精品亚洲av无码一区二区柚蜜| 亚洲视频在线一区| 精品国产一区二区三区久久久狼| 亚欧在线精品免费观看一区 | 亚无码乱人伦一区二区| 国产香蕉一区二区精品视频| 性色A码一区二区三区天美传媒 | 国产成人精品视频一区| 无码人妻一区二区三区av| 无码人妻一区二区三区av| 亚洲av永久无码一区二区三区| 国产高清一区二区三区| 精品不卡一区二区| 人妖在线精品一区二区三区| 国产精品第一区揄拍| 日本国产一区二区三区在线观看 | 国产午夜精品一区二区三区嫩草 | 国产精品成人一区二区| 香蕉一区二区三区观|