購買伝票登録 API (PurchaseOrderPayPostController)¶
購買伝票を登録するためには、PurchaseOrderPayPostController クラスの持つ各メソッドを利用する必要があります。引数、戻り値についての詳細な情報は、API リストを参照してください。また、購買伝票登録用 BAPI(BAPI_PO_CREATE1)の項目すべてにおいて登録が可能です。
各メソッドの説明¶
コンストラクタ / メソッド名 説明 PurchaseOrderPayPostController コンストラクタ(引数無し) setStrParam 構造型の各項目に値を設定する。第一引数に structure 名、第二引数に項目名、第三引数に値を設定する。setTblParam テーブル型の各項目に値を設定する。第1引数にテーブル名、第2引数に項目名、第3引数に値、第4引数にレコード番号を設定する。executeBapi 上記のsetメソッドで設定した値を、接続先の SAP に登録する。登録に失敗した場合、登録処理はロールバックされる。getPoNumber 伝票登録後の購買伝票番号を取得する。 getDocumentHeader 伝票登録後の伝票ヘッダの結果を取得する。 getExportHeader 伝票登録後の貿易管理ヘッダの結果を取得する。 getExtensionList 伝票登録後の得意先拡張項目の結果を取得する。 getAllVersionsList 伝票登録後の全バージョンの結果を取得する。 getPurchaseShippingList 伝票登録後の出荷データの結果を取得する。 getPurchaseShippingExpList 伝票登録後の出荷データエクスポートの結果を取得する。 getPurchaseComponentsList 伝票登録後のコンポーネントの結果を取得する。
サンプルプログラム¶
//■伝票番号 var strPo_number; //■ヘッダデータ var strCompCode; var strDocType; var strStatus; var strCreateDate; var strCreateBy; var strVendor; var strPmnttrms; var strPurchOrg; var strPurGroup; var strCurrency; var strDocDate; var strPoRelInd; var strRelStatus; //■貿易管理ヘッダ var strTransportMode; var strTcustoms; //■伝票明細 var itemList; var itemCount; //■拡張得意先項目一覧 var extensionList; var extensionCount; //■全バージョン一覧 var allVersionList; var allVersionCount; function init(request) { var objCon; var objResult; var header; var expoHeader; //インスタンス生成 //伝票ヘッダstructureの各項目に値を設定 objCon = new PurchaseOrderPayPostController(); // 説明1 //伝票ヘッダの structure の各項目に値を設定 // 説明2 objCon.setStrParam("PurchaseHeaderPost","COMP_CODE","1000"); objCon.setStrParam("PurchaseHeaderPost","DOC_TYPE","NB"); objCon.setStrParam("PurchaseHeaderPost","VENDOR","0000100011"); objCon.setStrParam("PurchaseHeaderPost","PMNTTRMS","1000"); objCon.setStrParam("PurchaseHeaderPost","PURCH_ORG","1200"); objCon.setStrParam("PurchaseHeaderPost","PUR_GROUP","001"); objCon.setStrParam("PurchaseHeaderPost","CURRENCY","JPY"); //仕入先住所structureの各項目に値を設定 objCon.setStrParam("VendorAddress","REGION","埼玉県"); objCon.setStrParam("VendorAddress","POSTL_COD1","3650039"); objCon.setStrParam("VendorAddress","CITY","鴻巣市1-5-31"); objCon.setStrParam("VendorAddress","COUNTRY","JP"); objCon.setStrParam("VendorAddress","TEL1_NUMBR","048-539-6790"); objCon.setStrParam("VendorAddress","FAX_NUMBER","048-539-6790"); //明細tableの各項目に値を設定 // 説明3 //1明細 objCon.setTblParam("PurchaseItemPost","PO_ITEM","00010",1); // objCon.setTblParam("PurchaseItemPost","SHORT_TEXT","",1); objCon.setTblParam("PurchaseItemPost","MATERIAL","000000000000000057",1); objCon.setTblParam("PurchaseItemPost","PLANT","1220",1); objCon.setTblParam("PurchaseItemPost","STGE_LOC","1112",1); objCon.setTblParam("PurchaseItemPost","TRACKINGNO","追跡番号",1); objCon.setTblParam("PurchaseItemPost","MATL_GROUP","01",1); objCon.setTblParam("PurchaseItemPost","QUANTITY","300",1); objCon.setTblParam("PurchaseItemPost","PO_UNIT","ST",1); objCon.setTblParam("PurchaseItemPost","NET_PRICE","30000",1); objCon.setTblParam("PurchaseItemPost","PRICE_UNIT","1",1); objCon.setTblParam("PurchaseItemPost","TAX_CODE","V1",1); objCon.setTblParam("PurchaseItemPost","NO_MORE_GR","",1); objCon.setTblParam("PurchaseItemPost","ACCTASSCAT","K",1); objCon.setTblParam("PurchaseItemPost","DISTRIB","",1); objCon.setTblParam("PurchaseItemPost","GR_IND","X",1); objCon.setTblParam("PurchaseItemPost","IR_IND","",1); objCon.setTblParam("PurchaseItemPost","GR_BASEDIV","",1); objCon.setTblParam("PurchaseItemPost","PREQ_NAME","api登録",1); //2明細 objCon.setTblParam("PurchaseItemPost","PO_ITEM","00020",2); objCon.setTblParam("PurchaseItemPost","SHORT_TEXT","プリンタ1",2); objCon.setTblParam("PurchaseItemPost","MATERIAL","000000000000000039",2); objCon.setTblParam("PurchaseItemPost","PLANT","1220",2); objCon.setTblParam("PurchaseItemPost","STGE_LOC","1112",2); objCon.setTblParam("PurchaseItemPost","TRACKINGNO","1Group",2); objCon.setTblParam("PurchaseItemPost","MATL_GROUP","01",2); objCon.setTblParam("PurchaseItemPost","QUANTITY","2",2); objCon.setTblParam("PurchaseItemPost","PO_UNIT","ST",2); objCon.setTblParam("PurchaseItemPost","NET_PRICE","10000",2); objCon.setTblParam("PurchaseItemPost","PRICE_UNIT","1",2); objCon.setTblParam("PurchaseItemPost","TAX_CODE","V1",2); objCon.setTblParam("PurchaseItemPost","ACCTASSCAT","K",2); objCon.setTblParam("PurchaseItemPost","GR_IND","X",2); //納入日程tableの各項目に値を設定 objCon.setTblParam("PurchaseSchedule","PO_ITEM","00010",1); objCon.setTblParam("PurchaseSchedule","SCHED_LINE","0001",1); objCon.setTblParam("PurchaseSchedule","DEL_DATCAT_EXT","D",1); objCon.setTblParam("PurchaseSchedule","PO_ITEM","00020",2); objCon.setTblParam("PurchaseSchedule","SCHED_LINE","0001",2); objCon.setTblParam("PurchaseSchedule","DEL_DATCAT_EXT","D",2); //勘定設定tableの各項目に値を設定 objCon.setTblParam("PurchaseAccount","PO_ITEM","00010",1); objCon.setTblParam("PurchaseAccount","SERIAL_NO","01",1); objCon.setTblParam("PurchaseAccount","QUANTITY","100",1); objCon.setTblParam("PurchaseAccount","GL_ACCOUNT","0000826700",1); objCon.setTblParam("PurchaseAccount","COSTCENTER","1210000000",1); objCon.setTblParam("PurchaseAccount","PO_ITEM","00020",2); objCon.setTblParam("PurchaseAccount","SERIAL_NO","01",2); objCon.setTblParam("PurchaseAccount","QUANTITY","2",2); objCon.setTblParam("PurchaseAccount","GL_ACCOUNT","0000826700",2); objCon.setTblParam("PurchaseAccount","COSTCENTER","1210000000",2); //明細テキストtableの各項目に値を設定 objCon.setTblParam("ItemText","PO_ITEM","00010",1); objCon.setTblParam("ItemText","TEXT_ID","F01",1); objCon.setTblParam("ItemText","TEXT_LINE","APIテキスト1明細",1); objCon.setTblParam("ItemText","PO_ITEM","00020",2); objCon.setTblParam("ItemText","TEXT_ID","F01",2); objCon.setTblParam("ItemText","TEXT_LINE","APIテキスト2明細",2); //会計伝票の登録 objResult = objCon.executeBapi(); // 説明4 //要素[ERR_CODE]に何らかの値がセットされている場合 if (objResult["ERR_CODE"] != null) { //エラーメッセージ出力 Debug.browse(objResult); } //オブジェクトを取得 //伝票番号 strPo_number = objCon.getPoNumber(); // 説明5 //伝票ヘッダ header = objCon.getDocumentHeader(); // 説明6 strCompCode = header.COMP_CODE; strDocType = header.DOC_TYPE; strStatus = header.STATUS; strCreateDate = header.CREAT_DATE; strCreateBy = header.CREATED_BY; strVendor = header.VENDOR; strPmnttrms = header.PMNTTRMS; strPurchOrg = header.PURCH_ORG; strPurGroup = header.PUR_GROUP; strCurrency = header.CURRENCY; strDocDate = header.DOC_DATE; strPoRelInd = header.PO_REL_IND; strRelStatus = header.REL_STATUS; //貿易管理ヘッダ expoHeader = objCon.getExportHeader(); strTransportMode = expoHeader.TRANSPORT_MODE; strTcustoms = expoHeader.CUSTOMS; //伝票明細 itemList = objCon.getPurchaseItemPostList(); itemCount = itemList.length; //拡張得意先項目 extensionList = objCon.getExtensionList(); // 説明7 extensionCount = extensionList.length; //全バージョン allVersionList = objCon.getAllVersionsList(); allVersionCount = allVersionList.length; }
購買伝票登録 API のインスタンス生成(説明1)
PurchaseOrderPayPostController クラスのインスタンスを生成します。引数は不要です。インスタンスを生成すると、購買伝票登録 BAPI(BAPI_PO_CREATE1)のimport型のimport、structure、tableパラメータに値を設定することができます。
-
structure の各項目に値を設定(説明2)
structure パラメータの項目に値を設定する場合は、setStrParam メソッドを使用します。第一引数の structure 名称は固定値になっています。後述のとおりに名称を設定して下さい。第二引数の項目名称は SAP の各属性の項目名称を設定してください。structure 名称、項目名称は英字の大文字、小文字は厳密に区別されます。第三引数に値を設定します。購買伝票登録 BAPI(BAPI_PO_CREATE1)の import 型の structure パラメータには変更ツールバーが存在しますが、各項目に値を設定することにより、購買伝票登録 API の内部で変更ツールバーの各項目にフラグを設定します。table の各項目に値を設定(説明3)
table パラメータの項目に値を設定する場合は、setTblParam メソッドを使用します。第一引数の table 名称は固定値になっています。後述のとおりに名称を設定して下さい。第二引数の項目名称は SAPの各属性の項目名称を設定してください。table 名称、項目名称は英字の大文字、小文字は厳密に区別されます。第三引数に値、第四引数にレコード番号を設定します。購買伝票登録 BAPI(BAPI_PO_CREATE1)のimport型の table パラメータには変更ツールバーが存在しますが、各項目に値を設定することにより、購買伝票登録 API の内部で変更ツールバーの各項目にフラグを設定します。SAP structure セットする固有名称 POHEADER(伝票ヘッダ) PurchaseOrderPayPost POADDRVENDOR(仕入先住所) VendorAddress POEXPIMPHEADER(貿易管理:ヘッダデータ) ExportHeader VERSIONS(バージョン管理) Versions 購買伝票の登録(説明4)
PurchaseOrderPayPostControllerクラスのexecuteBapiメソッドを実行すると、各項目にセットされた値がSAP上に購買伝票データとして登録されます。登録が成功した場合には、購買伝票登録APIの内部で自動的にcommit処理が実行されます。登録に失敗した場合には、自動的にrollback処理が実行されます。成功・失敗の基準は、購買伝票登録用BAPI(BAPI_PO_CREATE1)の実行後にRETURNパラメータのTYPE値を取得して、S(正常終了)、空文字以外が1つでも存在するかどうかです。1つでも存在する場合は、rollbackが自動的に実行されます。SAP table セットする固有名称 POITEM(明細データ) PurchaseItemPost POADDRDELIVERY(入荷伝票のアドレス) DeliveryAddress POSCHEDULE(納入日程) PurchaseSchedule POACCOUNT(勘定設定項目) PurchaseAccount POACCOUNTPROFITSEGMENT 入出庫予定イベントオブジェクト ProfitSegment POCONDHEADER(条件 (ヘッダ) ) CondHeader POCOND(条件 (明細) ) CondItem POLIMITS(外注サービス:制限) Limits POCONTRACTLIMITS(外注サービス:基本契約制限) ContractLimits POSERVICES(外注サービス:サービス行) ContractService POSRVACCESSVALUES(外注サービス:サービス行の勘定設定) ContractServiceAccount POSERVICESTEXT(外注サービス:サービステキスト (長) ) ContractServiceText EXTENSIONIN(得意先独自の項目) Extension POEXPIMPITEM(貿易管理:明細データ) ExportItem POTEXTHEADER(ヘッダテキスト) HeaderText POTEXTITEM(明細テキスト) ItemText POPARTNER(取引先) Partner POSHIPPING(在庫転送オーダーの 出荷データ) PurchaseShipping POSHIPPINGEXP(出荷データのエクスポート) PurchaseShippingExp POCOMPONENTS(コンポーネントの BAPI 構造) PurchaseComponents 購買伝票番号を取得(説明5)
PurchaseOrderPayPostControllerクラスのgetPoNumberメソッドを使用すると、登録された購買伝票の伝票番号を取得することが可能です。
-
structureデータを取得(説明6)
伝票ヘッダ、貿易管理ヘッダについては、PurchaseOrderPayPostControllerクラスのexecuteメソッドを実行すると購買伝票登録APIの内部で自動的に登録結果を取得します。伝票ヘッダはgetDocumentHeaderメソッド、貿易管理ヘッダはgetExportHeaderメソッドで取得が可能です。その他のstructureについては、入力設定した項目について取得が可能です。項目の値を取得するには、KEYにSAPの各属性の項目名称を設定してください。
-
tableデータを取得(説明7)
得意先独自の項目、全バージョン、出荷データのエクスポートについては、PurchaseOrderPayPostControllerクラスのexecuteメソッドを実行すると購買伝票登録APIの内部で自動的に登録結果を取得します。得意先独自の項目はgetExtensionListメソッド、全バージョンはgetAllVersionsListメソッド、出荷データのエクスポートはgetPurchaseShippingExpListメソッドで取得が可能です。その他のtableについては、入力設定した項目について取得が可能です。項目の値を取得するには、KEYにSAPの各属性の項目名称を設定してください。サンプルプログラム実行結果では、全バージョンの登録結果が取得されていますが、理解しやすいようにSAPのカスタマイズにより、バージョン管理をしている為です。SAP標準では該当データが存在しません。その他のstructure、tableデータについても、SAP標準ではデータが取得できない場合があります。