技術日記

SAP MDG ABAP FIORI等々

from MDG -> SAP BTP Integration suite -> AWS S3

2022-02-27 17:07:52 | 日記
・MDGで登録されたBPがSAP BTP Integration suiteを通して、AWS S3バケットに保存されるまで

全体的なiFlowは以下。
SAP BTP Int略でXMLメッセージをよく使われているJSONに変更する処理を内装しておく。



S/4 HANAインスタンス立ち上げるのが面倒いから、Postmanでトリガーを切る。
Postmanでは202で成功コードが戻ってくる。



ファイル名はテストだから一旦Constantで。
実際使う場合はBodyから取ってくる?



全ての処理が終わり、JSONに変更されてS3に保存。




特記事項(壁にぶつかった場面)

・S3のAuth Header設定。以下を追加しないとAWSから401エラー

・Open Connectorは思ったより使いづらかった。groovy script(ISでサポートするスクリプト言語)でヘッダーをコーディングで
 追加してあげる必要あり。groovy scriptはJAVAと似ているのでJAVAが書けるなら問題なく使える。
・このリンク↓にあるAWS ADPATERはもう存在しない。2021年の記事だけどもうobsoleteされたのかな。。。
 AWSのAPI形式が頻繁に変わるのであれば、それに合わせてテンプレート化するの結構大変だと思う。だからか?
https://aws.amazon.com/jp/blogs/awsforsap/integrating-sap-systems-with-aws-services-using-sap-business-technology-platform/

MDGからSAP BTPのIntegration suiteへBPを複製して色々遊ぶ

2022-02-26 13:25:56 | 日記
ABAP開発したい!→ PJの調子を見ると「開発」というキーワードが出た途端に「それはちょっと。。。標準でなんとか!」
という流れが多い → でもI/Fはしょうがないので開発しましょうという風潮がある。

で、将来ABAPer目指してるものとして、I/F当たりも触っておきたいと思った。
そこで目を付けたのがSAP BTPのIntegration Suiteであった。

・トライアル版が有って、ただで触れる。
・クラウドSaaSなので、面倒インフラ作業がない
・SAP製品なのでMDGとの互換性があるのと、色々サードパーティーのConntectorも提供している

もちろん大変なこともあったが。。。

・クラウドだから、細かいエラーログが全然見れない
・Deployエラーが出ていたが、クラウド運用側で何かしてもらえるまで何もできなかった

とか。

とりあえず、
DRFトリガー MDG → BTPまでは成功!

以下のRecevierでTrialになっているのが、外部のBTP。


こっちはBTPから見た受信出来たメッセージ。



特記事項
・401エラーは認証エラー。 403エラーは認証成功→内部のロール権限エラー
・BusinessPartnerSUITEBulkReplicateRequest_Out / BusinessPartnerSUITEBulkReplicateRequest_In 
 どっちのサービスをSOAP Receiverに入れるかはMDGからの送信フローを把握してないと混乱しそう
・PostmanやSOAPUIでテストする場合は、ダウンしたXMLメッセージに
 <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:glob="http://sap.com/xi/SAPGlobal20/Global">
<soap:Header/>
<soap:Body>
.....
.....
.....
</soap:Body></soap:Envelope>
 のように追記してあげる必要がる
 

とりあえず今日はここまで!
りっぴーと散歩いくぞ。。。




MEANZSUB

2022-02-22 18:39:50 | 日記
MEANZSUBというDEでデータモデル拡張したら、
普段全然問題なかったんだけど、MDC->MDGの連携の際に以下のようなダンプが出た。



MEANZUSBをINT4に変更したら問題なし。
なにこれ、、、、とりあえずMEANZUSBは使用しないように。

BusinessPartnerの複製について整理

2022-02-19 16:16:57 | 日記
SAPで提供しているAPIはSOAP、ODATA二つ

ODATAは簡単にURIに入れるだけで使える。
'101'というBPをODATAで取得した場合。


Pull型だから、クライアントからS/4に要請して、「持っているBP全部くれ」見たいな要請をする。
で、その要請に対してXMLかJSONで渡す。

「全部」という言葉に引っかかるので、差分だけ取りたい場合は?
delta queryと言うものがあるらしい。

普通にOdataにqueryを投げるとGET_ENTITYSETが動いて、全件出しするんだけど
Delta Tokenをもって要請すると、GET_ENTITYSET_DELTAメッソドが動いて
該当するデータのみ渡すらしい。
らしいばっかw

 ※追加:中身みたけど、GET_ENTITYSET_DELTAにこういう記載が。。
  「Just for compatibility reasons - dispatching to get_entityset - should be overriden by anyone who wants to have proper delta support」→ えーーーー使いたいやつは自分で作って使ってくださいだと。。。?!



で、SOAPは、クライアントも何かしらしないといけない。
その何かが何なのかはさっぱり分からんがw

SOAPはクライアント作ってまたSSLが基本だから試すことも難しい。。。SOAPUI設置したけど
使い方も分からないし。。まずここからやってみようか。

で、便利だったのはODATA(REST API)だけど、なんでこれを標準にしてなかったのかな。