S / 4Hana Cloudでカスタムビジネスオブジェクトを作成しました。
カスタムオブジェクト
次に、メタデータを取得し、最後にJavaプロジェクトに追加します。
次に、テーブルを読み取り、いくつかのフィールドを後続のロジックに使用する必要があります。
この方法でテーブルを取得します。
cockpitSetupList = new DefaultCscCockpitSetupService().getAllCSCCOCKPIT_SETUP()
.orderBy(CSCCOCKPIT_SETUP.COCKPIT_TYPE, Order.ASC)
.execute();
フィールドの値を読み取りたいので、それをループして、次のようにフィールド値を読み取ります。
for (CSCCOCKPIT_SETUP cockpitsetup : allCockpitSetup) {
// read all the product for the sales Organization sent from cockpit setup
String salesOrganizationInString =
String.valueOf(cockpitsetup.SALES_ORGANIZATION);
allProductsPerSalesOrganization = products.getAllProductSalesPerSalesOrganization(salesOrganizationInString);
しかし、それはフィールドの値を与えませんが、次のようなものです:
"com.sunstar.vdm.namespaces.csccockpitsetup.field.CSCCOCKPIT_SETUPField@d6ba2449"
たとえば、ホワイトリストに登録されたAPIを使用することで、APIの各フィールドにゲッターがあります。
カスタムVDMオブジェクトにゲッターメソッドが表示されない理由を教えてください。
備考:追加のカスタムオブジェクトを2つ作成しましたが、いずれもゲッターを提供しません。
メタデータファイルの追加:[文字数制限に削除] POMファイルの追加:
<dependencies>
<dependency>
<groupId>com.sap.cloud.s4hana.cloudplatform</groupId>
<artifactId>scp-neo</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.s4hana</groupId>
<artifactId>s4hana-all</artifactId>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sap.cloud</groupId>
<artifactId>neo-javaee7-wp-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.0.RELEASE</version>
</dependency>
<!-- commented out to get VDM getters -->
<!-- <dependency>-->
<!-- <groupId>org.projectlombok</groupId>-->
<!-- <artifactId>lombok</artifactId>-->
<!-- <scope>provided</scope>-->
<!-- </dependency>-->
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>1.1.2</version>
</dependency>
<!-- custom VDM-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<!-- custom VDM -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
また、生成されたメソッドのリスト:メソッド BR、Pietro
メタデータに基づいてVDMを生成するためにジェネレーターを使用したと思います。可能であれば、メタデータを共有してください。
上記を前提として、使用しようとしているフィールドは、データを保持することを意図しておらず、意図もしていません。これは、ODataリクエストを構築するときに使用されるため、選択およびフィルター操作で使用されます。
データにアクセスするには、エンティティタイプのゲッターが実際に必要です。生成されたコードでアノテーションlombok
を使用するので、プロジェクトに依存関係を必ず含めてください。@Data
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
コードをローカルで生成したところ、エンティティに注釈が存在することがわかりました。したがって、ゲッターが存在する必要があります。小さなプロジェクトをセットアップし、次のコードをコンパイルします。
final CSCCOCKPIT_SETUP setup = new CSCCOCKPIT_SETUP();
final String salesOrganization = setup.getSalesOrganization();
IDEにメソッドが表示されない場合は、リンターおよびオートコンプリートが正しく機能するために、ロンボクプラグインをインストールまたは有効にする必要がある場合があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加