diff --git a/.abapgit.xml b/.abapgit.xml
new file mode 100644
index 0000000..1e91166
--- /dev/null
+++ b/.abapgit.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ E
+ /src/
+ FULL
+
+ - /.gitignore
+ - /LICENSE
+ - /README.md
+ - /package.json
+ - /.travis.yml
+ - /.gitlab-ci.yml
+ - /abaplint.json
+ - /azure-pipelines.yml
+
+
+
+
diff --git a/src/c554eb5ef0901725ac6c0d6b8f601aht.sush.xml b/src/c554eb5ef0901725ac6c0d6b8f601aht.sush.xml
new file mode 100644
index 0000000..1cdf2cd
--- /dev/null
+++ b/src/c554eb5ef0901725ac6c0d6b8f601aht.sush.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ C554EB5EF0901725AC6C0D6B8F601A
+ HT
+ R3TR G4BA ZHS_UI_SIMPLE_PARTNER_O4
+ ZHS_SOFTWAREHEROES
+ 5
+
+
+
+ C554EB5EF0901725AC6C0D6B8F601A
+ HT
+
+ X
+
+
+
+ -
+
+ Start Authorization Check for TADIR Objects
+ AAAB
+ X
+ S_PROFGEN_START_AUTH
+ BC-SEC-AUT-CHK
+ Check
+ Check
+ No
+ 3
+ Okay
+ @08@
+
+
+
+
+
diff --git a/src/package.devc.xml b/src/package.devc.xml
new file mode 100644
index 0000000..b99814c
--- /dev/null
+++ b/src/package.devc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Software Heroes
+ E
+ E
+
+
+
+
diff --git a/src/zbp_hs_i_rappartner.clas.abap b/src/zbp_hs_i_rappartner.clas.abap
new file mode 100644
index 0000000..2bed4bf
--- /dev/null
+++ b/src/zbp_hs_i_rappartner.clas.abap
@@ -0,0 +1,15 @@
+class ZBP_HS_I_RAPPARTNER definition
+ public
+ abstract
+ final
+ create public .
+
+public section.
+protected section.
+private section.
+ENDCLASS.
+
+
+
+CLASS ZBP_HS_I_RAPPARTNER IMPLEMENTATION.
+ENDCLASS.
diff --git a/src/zbp_hs_i_rappartner.clas.xml b/src/zbp_hs_i_rappartner.clas.xml
new file mode 100644
index 0000000..4a1b746
--- /dev/null
+++ b/src/zbp_hs_i_rappartner.clas.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/zcl_hs_demo_dummy_data.clas.abap b/src/zcl_hs_demo_dummy_data.clas.abap
new file mode 100644
index 0000000..79a1077
--- /dev/null
+++ b/src/zcl_hs_demo_dummy_data.clas.abap
@@ -0,0 +1,228 @@
+CLASS zcl_hs_demo_dummy_data DEFINITION
+ PUBLIC
+ FINAL
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+
+ INTERFACES if_oo_adt_classrun .
+
+ CONSTANTS:
+ c_error TYPE zhs_dmo_position-price VALUE '37707',
+ c_number_of_invoices TYPE i VALUE 300,
+ c_days_back_from_today TYPE i VALUE 365,
+ c_max_number_of_positions TYPE i VALUE 3,
+ c_max_quantity_per_position TYPE i VALUE 5.
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ DATA:
+ mt_partner TYPE STANDARD TABLE OF zhs_dmo_partner,
+ mt_material TYPE STANDARD TABLE OF zhs_dmo_material,
+ mt_discount TYPE STANDARD TABLE OF zhs_dmo_discount,
+ mt_head TYPE STANDARD TABLE OF zhs_dmo_invoice,
+ mt_position TYPE STANDARD TABLE OF zhs_dmo_position,
+
+ mo_random_partner TYPE REF TO zcl_hs_demo_random,
+ mo_random_date TYPE REF TO zcl_hs_demo_random,
+ mo_random_position TYPE REF TO zcl_hs_demo_random,
+ mo_random_material TYPE REF TO zcl_hs_demo_random,
+ mo_random_quantity TYPE REF TO zcl_hs_demo_random.
+
+ METHODS:
+ create_partner,
+
+ create_material,
+
+ create_discount,
+
+ create_invoice
+ IMPORTING
+ id_count TYPE i,
+
+ create_head
+ RETURNING
+ VALUE(rs_result) TYPE zhs_dmo_invoice,
+
+ create_positions
+ IMPORTING
+ is_head TYPE zhs_dmo_invoice.
+ENDCLASS.
+
+
+
+CLASS zcl_hs_demo_dummy_data IMPLEMENTATION.
+
+
+ METHOD if_oo_adt_classrun~main.
+
+ create_partner( ).
+ out->write( |Partner: { lines( mt_partner ) }| ).
+
+ create_material( ).
+ out->write( |Material: { lines( mt_material ) }| ).
+
+ create_discount( ).
+ out->write( |Discount: { lines( mt_discount ) }| ).
+
+ create_invoice( c_number_of_invoices ).
+ out->write( |Invoice: { lines( mt_head ) }| ).
+ out->write( |Position: { lines( mt_position ) }| ).
+
+ ENDMETHOD.
+
+ METHOD create_discount.
+ mt_discount = VALUE #(
+ ( partner = '1000000000' material = 'F0003' discount = '10.00' )
+ ( partner = '1000000001' material = 'F0001' discount = '15.00' )
+ ( partner = '1000000001' material = 'H0002' discount = '3.50' )
+ ( partner = '1000000006' material = 'R0001' discount = '7.50' )
+ ).
+
+ DELETE FROM zhs_dmo_discount.
+ INSERT zhs_dmo_discount FROM TABLE @mt_discount.
+ ENDMETHOD.
+
+ METHOD create_head.
+ DATA:
+ ld_document TYPE n LENGTH 8 VALUE 30000000.
+
+ IF mo_random_partner IS INITIAL.
+ mo_random_partner = NEW #( id_min = 1 id_max = lines( mt_partner ) ).
+ mo_random_date = NEW #( id_min = 1 id_max = c_days_back_from_today ).
+ ENDIF.
+
+ rs_result = VALUE #(
+ document = ld_document + lines( mt_head )
+ doc_date = CONV d( cl_abap_context_info=>get_system_date( ) - mo_random_date->rand( ) )
+ doc_time = cl_abap_context_info=>get_system_time( )
+ partner = mt_partner[ mo_random_partner->rand( ) ]-partner
+ ).
+
+ INSERT rs_result INTO TABLE mt_head.
+ ENDMETHOD.
+
+ METHOD create_invoice.
+ DO id_count TIMES.
+ DATA(ls_head) = create_head( ).
+ create_positions( ls_head ).
+ ENDDO.
+
+ DELETE FROM zhs_dmo_invoice.
+ INSERT zhs_dmo_invoice FROM TABLE @mt_head.
+ DELETE FROM zhs_dmo_position.
+ INSERT zhs_dmo_position FROM TABLE @mt_position.
+ ENDMETHOD.
+
+ METHOD create_material.
+ mt_material = VALUE #(
+ ( material = 'F0001'
+ name = 'Peanuts'
+ description = 'Roasted Peanuts from US'
+ stock = '900'
+ stock_unit = 'ST'
+ price_per_unit = '2.50'
+ currency = 'USD' )
+ ( material = 'F0002'
+ name = 'Rice'
+ description = 'Big bag rice from china'
+ stock = '120'
+ stock_unit = 'BAG'
+ price_per_unit = '12.00'
+ currency = 'USD' )
+ ( material = 'F0003'
+ name = 'Eggs'
+ description = 'Eggs from happy german chickens'
+ stock = '550'
+ stock_unit = 'PAK'
+ price_per_unit = '3.15'
+ currency = 'EUR' )
+ ( material = 'H0001'
+ name = 'USB Stick 128 GB'
+ description = 'USB Stick with security features'
+ stock = '30'
+ stock_unit = 'ST'
+ price_per_unit = '49.99'
+ currency = 'EUR' )
+ ( material = 'H0002'
+ name = 'OLED Display 34"'
+ description = 'Big and wide display with HDMI and dsiplay port'
+ stock = '18'
+ stock_unit = 'ST'
+ price_per_unit = '440.00'
+ currency = 'USD' )
+ ( material = 'R0001'
+ name = 'Gas'
+ description = 'Gas from sibiria'
+ stock = '50000'
+ stock_unit = 'MMQ'
+ price_per_unit = '1560.00'
+ currency = 'RUB' )
+ ).
+
+ DELETE FROM zhs_dmo_material.
+ INSERT zhs_dmo_material FROM TABLE @mt_material.
+ ENDMETHOD.
+
+ METHOD create_partner.
+ mt_partner = VALUE #(
+ ( partner = '1000000000' name = 'SAP' street = 'Demo Street 15' city = 'Walldorf' country = 'DE' payment_currency = 'EUR' )
+ ( partner = '1000000001' name = 'Microsoft' street = 'Demo Street 24' city = 'Redmond' country = 'US' payment_currency = 'USD' )
+ ( partner = '1000000002' name = 'Meta' street = 'Fox Street 1' city = 'Menlo Park' country = 'US' payment_currency = 'USD' )
+ ( partner = '1000000003' name = 'Alibaba' street = 'Alley 15' city = 'Hangzhou' country = 'CN' payment_currency = 'CNY' )
+ ( partner = '1000000004' name = 'BMW' street = 'Main Avenue 200' city = 'Munich' country = 'DE' payment_currency = 'EUR' )
+ ( partner = '1000000005' name = 'Nestle' street = 'Village Alley 14' city = 'Vevey' country = 'CH' payment_currency = 'CHF' )
+ ( partner = '1000000006' name = 'Gazprom' street = 'Peace Avenue 1' city = 'Sankt Petersburg' country = 'RU' payment_currency = 'RUB' )
+ ).
+
+ DELETE FROM zhs_dmo_partner.
+ INSERT zhs_dmo_partner FROM TABLE @mt_partner.
+ ENDMETHOD.
+
+ METHOD create_positions.
+ IF mo_random_position IS INITIAL.
+ mo_random_position = NEW #( id_min = 1 id_max = c_max_number_of_positions ).
+ mo_random_material = NEW #( id_min = 1 id_max = lines( mt_material ) ).
+ mo_random_quantity = NEW #( id_min = 1 id_max = c_max_quantity_per_position ).
+ ENDIF.
+
+ DO mo_random_position->rand( ) TIMES.
+ DATA(ld_index) = sy-index.
+ DATA(ls_material) = mt_material[ mo_random_material->rand( ) ].
+ DATA(ld_quantity) = mo_random_quantity->rand( ).
+
+ TRY.
+ DATA(ld_discount) = mt_discount[ partner = is_head-partner material = ls_material-material ]-discount.
+ CATCH cx_sy_itab_line_not_found.
+ ld_discount = 0.
+ ENDTRY.
+
+ DATA(ls_position) = VALUE zbs_dmo_position(
+ document = is_head-document
+ pos_number = ld_index
+ material = ls_material-material
+ quantity = ld_quantity
+ price = ( ld_quantity * ls_material-price_per_unit ) * ( 1 - ld_discount / 100 )
+ currency = mt_partner[ partner = is_head-partner ]-payment_currency
+ ).
+
+ TRY.
+ SELECT SINGLE FROM zhs_dmo_discount
+ FIELDS
+ currency_conversion(
+ amount = @ls_position-price,
+ source_currency = @ls_material-currency,
+ target_currency = @ls_position-currency,
+ exchange_rate_date = @is_head-doc_date,
+ round = @abap_true
+ ) AS price
+ INTO @ls_position-price.
+
+ CATCH cx_sy_open_sql_db.
+ ls_position-price = c_error.
+ ENDTRY.
+
+ INSERT ls_position INTO TABLE mt_position.
+ ENDDO.
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/zcl_hs_demo_dummy_data.clas.xml b/src/zcl_hs_demo_dummy_data.clas.xml
new file mode 100644
index 0000000..f711838
--- /dev/null
+++ b/src/zcl_hs_demo_dummy_data.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ ZCL_HS_DEMO_DUMMY_DATA
+ E
+ Generate Data
+ 1
+ X
+ X
+ X
+
+
+
+
diff --git a/src/zcl_hs_demo_random.clas.abap b/src/zcl_hs_demo_random.clas.abap
new file mode 100644
index 0000000..2a4fe19
--- /dev/null
+++ b/src/zcl_hs_demo_random.clas.abap
@@ -0,0 +1,52 @@
+CLASS zcl_hs_demo_random DEFINITION
+ PUBLIC FINAL
+ CREATE PUBLIC.
+
+ PUBLIC SECTION.
+ CLASS-METHODS class_constructor.
+
+ METHODS constructor
+ IMPORTING id_min TYPE i DEFAULT 1
+ id_max TYPE i DEFAULT 6.
+
+ METHODS rand
+ RETURNING VALUE(rd_rand) TYPE i.
+
+ PRIVATE SECTION.
+ CLASS-DATA mo_seed TYPE REF TO cl_abap_random.
+
+ DATA mo_rand TYPE REF TO cl_abap_random.
+ DATA md_from TYPE i.
+ DATA md_to TYPE i.
+ENDCLASS.
+
+
+CLASS zcl_hs_demo_random IMPLEMENTATION.
+ METHOD class_constructor.
+ TRY.
+ DATA(ld_date) = cl_abap_context_info=>get_system_date( ).
+ DATA(ld_time) = cl_abap_context_info=>get_system_time( ).
+
+ DATA(ld_seed) = CONV i( |{ ld_date+4 }{ ld_time }| ).
+ CATCH cx_sy_conversion_overflow.
+ ld_seed = 1337.
+ ENDTRY.
+
+ mo_seed = cl_abap_random=>create( ld_seed ).
+ ENDMETHOD.
+
+
+ METHOD constructor.
+ md_from = id_min.
+ md_to = id_max.
+
+ mo_rand = cl_abap_random=>create( mo_seed->intinrange( low = 1
+ high = 10000 ) ).
+ ENDMETHOD.
+
+
+ METHOD rand.
+ rd_rand = mo_rand->intinrange( low = md_from
+ high = md_to ).
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/zcl_hs_demo_random.clas.xml b/src/zcl_hs_demo_random.clas.xml
new file mode 100644
index 0000000..b4e37be
--- /dev/null
+++ b/src/zcl_hs_demo_random.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ ZCL_HS_DEMO_RANDOM
+ E
+ Random number generator
+ 1
+ X
+ X
+ X
+
+
+
+
diff --git a/src/zhs_dmo_discount.tabl.xml b/src/zhs_dmo_discount.tabl.xml
new file mode 100644
index 0000000..2f5a901
--- /dev/null
+++ b/src/zhs_dmo_discount.tabl.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+ ZHS_DMO_DISCOUNT
+ E
+ TRANSP
+ X
+ Discount Data
+ E
+ A
+ 1
+
+
+ ZHS_DMO_DISCOUNT
+ A
+ 0
+ APPL0
+ N
+
+
+
+ CLIENT
+ X
+ 0
+ C
+ 000006
+ X
+ CLNT
+ 000003
+ CLNT
+
+
+ PARTNER
+ X
+ 0
+ C
+ 000020
+ X
+ CHAR
+ 000010
+ CHAR
+
+
+ MATERIAL
+ X
+ 0
+ C
+ 000010
+ X
+ CHAR
+ 000005
+ CHAR
+
+
+ DISCOUNT
+ 0
+ P
+ 000003
+ DEC
+ 000005
+ 000002
+ DEC
+
+
+
+
+ ZHS_DMO_DISCOUNT
+ CUS_DEV_SUP_DA
+
+
+
+
+
diff --git a/src/zhs_dmo_invoice.tabl.xml b/src/zhs_dmo_invoice.tabl.xml
new file mode 100644
index 0000000..5400dc2
--- /dev/null
+++ b/src/zhs_dmo_invoice.tabl.xml
@@ -0,0 +1,83 @@
+
+
+
+
+
+ ZHS_DMO_INVOICE
+ E
+ TRANSP
+ X
+ Invoice Data
+ E
+ A
+ 1
+
+
+ ZHS_DMO_INVOICE
+ A
+ 0
+ APPL0
+ N
+
+
+
+ CLIENT
+ X
+ 0
+ C
+ 000006
+ X
+ CLNT
+ 000003
+ CLNT
+
+
+ DOCUMENT
+ X
+ 0
+ C
+ 000016
+ X
+ CHAR
+ 000008
+ CHAR
+
+
+ DOC_DATE
+ 0
+ D
+ 000016
+ DATS
+ 000008
+ DATS
+ T
+
+
+ DOC_TIME
+ 0
+ T
+ 000012
+ TIMS
+ 000006
+ TIMS
+ T
+
+
+ PARTNER
+ 0
+ C
+ 000020
+ CHAR
+ 000010
+ CHAR
+
+
+
+
+ ZHS_DMO_INVOICE
+ CUS_DEV_SUP_DA
+
+
+
+
+
diff --git a/src/zhs_dmo_material.tabl.xml b/src/zhs_dmo_material.tabl.xml
new file mode 100644
index 0000000..874b38d
--- /dev/null
+++ b/src/zhs_dmo_material.tabl.xml
@@ -0,0 +1,113 @@
+
+
+
+
+
+ ZHS_DMO_MATERIAL
+ E
+ TRANSP
+ X
+ Material Data
+ E
+ A
+ 1
+
+
+ ZHS_DMO_MATERIAL
+ A
+ 0
+ APPL0
+ N
+
+
+
+ CLIENT
+ X
+ 0
+ C
+ 000006
+ X
+ CLNT
+ 000003
+ CLNT
+
+
+ MATERIAL
+ X
+ 0
+ C
+ 000010
+ X
+ CHAR
+ 000005
+ CHAR
+
+
+ NAME
+ 0
+ C
+ 000050
+ CHAR
+ 000025
+ CHAR
+
+
+ DESCRIPTION
+ 0
+ C
+ 000300
+ CHAR
+ 000150
+ CHAR
+
+
+ STOCK
+ 0
+ P
+ 000006
+ ZBS_DMO_MATERIAL
+ STOCK_UNIT
+ QUAN
+ 000010
+ QUAN
+
+
+ STOCK_UNIT
+ 0
+ C
+ 000006
+ UNIT
+ 000003
+ UNIT
+
+
+ PRICE_PER_UNIT
+ 0
+ P
+ 000008
+ ZBS_DMO_MATERIAL
+ CURRENCY
+ CURR
+ 000015
+ 000002
+ CURR
+
+
+ CURRENCY
+ 0
+ C
+ 000010
+ CUKY
+ 000005
+ CUKY
+
+
+
+
+ ZHS_DMO_MATERIAL
+ CUS_DEV_SUP_DA
+
+
+
+
+
diff --git a/src/zhs_dmo_partner.tabl.xml b/src/zhs_dmo_partner.tabl.xml
new file mode 100644
index 0000000..f1717c5
--- /dev/null
+++ b/src/zhs_dmo_partner.tabl.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+ ZHS_DMO_PARTNER
+ E
+ TRANSP
+ X
+ Partner Data
+ E
+ A
+ 1
+
+
+ ZHS_DMO_PARTNER
+ A
+ 0
+ APPL0
+ N
+
+
+
+ CLIENT
+ X
+ 0
+ C
+ 000006
+ X
+ CLNT
+ 000003
+ CLNT
+
+
+ PARTNER
+ X
+ 0
+ C
+ 000020
+ X
+ CHAR
+ 000010
+ CHAR
+
+
+ NAME
+ 0
+ C
+ 000120
+ CHAR
+ 000060
+ CHAR
+
+
+ STREET
+ 0
+ C
+ 000160
+ CHAR
+ 000080
+ CHAR
+
+
+ CITY
+ 0
+ C
+ 000120
+ CHAR
+ 000060
+ CHAR
+
+
+ COUNTRY
+ LAND1
+ 0
+ E
+
+
+ PAYMENT_CURRENCY
+ 0
+ C
+ 000010
+ CUKY
+ 000005
+ CUKY
+
+
+
+
+ ZHS_DMO_PARTNER
+ CUS_DEV_SUP_DA
+
+
+
+
+
diff --git a/src/zhs_dmo_position.tabl.xml b/src/zhs_dmo_position.tabl.xml
new file mode 100644
index 0000000..18ef93b
--- /dev/null
+++ b/src/zhs_dmo_position.tabl.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+ ZHS_DMO_POSITION
+ E
+ TRANSP
+ X
+ Invoice Position Data
+ E
+ A
+ 1
+
+
+ ZHS_DMO_POSITION
+ A
+ 0
+ APPL0
+ N
+
+
+
+ CLIENT
+ X
+ 0
+ C
+ 000006
+ X
+ CLNT
+ 000003
+ CLNT
+
+
+ DOCUMENT
+ X
+ 0
+ C
+ 000016
+ X
+ CHAR
+ 000008
+ CHAR
+
+
+ POS_NUMBER
+ X
+ 0
+ X
+ 000002
+ X
+ INT2
+ 000005
+ INT2
+
+
+ MATERIAL
+ 0
+ C
+ 000010
+ CHAR
+ 000005
+ CHAR
+
+
+ QUANTITY
+ 0
+ P
+ 000006
+ ZBS_DMO_MATERIAL
+ STOCK_UNIT
+ QUAN
+ 000010
+ QUAN
+
+
+ PRICE
+ 0
+ P
+ 000008
+ ZBS_DMO_POSITION
+ CURRENCY
+ CURR
+ 000015
+ 000002
+ CURR
+
+
+ CURRENCY
+ 0
+ C
+ 000010
+ CUKY
+ 000005
+ CUKY
+
+
+
+
+ ZHS_DMO_POSITION
+ CUS_DEV_SUP_DA
+
+
+
+
+
diff --git a/src/zhs_i_dmodiscount.ddls.asddls b/src/zhs_i_dmodiscount.ddls.asddls
new file mode 100644
index 0000000..9ff574d
--- /dev/null
+++ b/src/zhs_i_dmodiscount.ddls.asddls
@@ -0,0 +1,8 @@
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Interface for Discount'
+define view entity ZHS_I_DmoDiscount as select from zhs_dmo_discount
+{
+ key partner as PartnerNumber,
+ key material as MaterialNumber,
+ discount as DiscountValue
+}
diff --git a/src/zhs_i_dmodiscount.ddls.baseinfo b/src/zhs_i_dmodiscount.ddls.baseinfo
new file mode 100644
index 0000000..d46b4dc
--- /dev/null
+++ b/src/zhs_i_dmodiscount.ddls.baseinfo
@@ -0,0 +1,19 @@
+{
+"BASEINFO":
+{
+"FROM":
+[
+"ZHS_DMO_DISCOUNT"
+],
+"ASSOCIATED":
+[],
+"BASE":
+[],
+"ANNO_REF":
+[],
+"SCALAR_FUNCTION":
+[],
+"VERSION":0,
+"ANNOREF_EVALUATION_ERROR":""
+}
+}
\ No newline at end of file
diff --git a/src/zhs_i_dmodiscount.ddls.xml b/src/zhs_i_dmodiscount.ddls.xml
new file mode 100644
index 0000000..15d8c5b
--- /dev/null
+++ b/src/zhs_i_dmodiscount.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZHS_I_DMODISCOUNT
+ E
+ Interface for Discount
+ W
+
+
+
+
diff --git a/src/zhs_i_dmoinvoice.ddls.asddls b/src/zhs_i_dmoinvoice.ddls.asddls
new file mode 100644
index 0000000..73964c6
--- /dev/null
+++ b/src/zhs_i_dmoinvoice.ddls.asddls
@@ -0,0 +1,10 @@
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Interface for Invoice'
+define view entity ZHS_I_DmoInvoice
+ as select from zhs_dmo_invoice
+{
+ key document as DocumentNumber,
+ doc_date as DocumentDate,
+ doc_time as DocumentTime,
+ partner as PartnerNumber
+}
diff --git a/src/zhs_i_dmoinvoice.ddls.baseinfo b/src/zhs_i_dmoinvoice.ddls.baseinfo
new file mode 100644
index 0000000..e6044b4
--- /dev/null
+++ b/src/zhs_i_dmoinvoice.ddls.baseinfo
@@ -0,0 +1,19 @@
+{
+"BASEINFO":
+{
+"FROM":
+[
+"ZHS_DMO_INVOICE"
+],
+"ASSOCIATED":
+[],
+"BASE":
+[],
+"ANNO_REF":
+[],
+"SCALAR_FUNCTION":
+[],
+"VERSION":0,
+"ANNOREF_EVALUATION_ERROR":""
+}
+}
\ No newline at end of file
diff --git a/src/zhs_i_dmoinvoice.ddls.xml b/src/zhs_i_dmoinvoice.ddls.xml
new file mode 100644
index 0000000..34e0dd8
--- /dev/null
+++ b/src/zhs_i_dmoinvoice.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZHS_I_DMOINVOICE
+ E
+ Interface for Invoice
+ W
+
+
+
+
diff --git a/src/zhs_i_dmomaterial.ddls.asddls b/src/zhs_i_dmomaterial.ddls.asddls
new file mode 100644
index 0000000..435ff6f
--- /dev/null
+++ b/src/zhs_i_dmomaterial.ddls.asddls
@@ -0,0 +1,15 @@
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Interface for Material'
+define view entity ZHS_I_DmoMaterial
+ as select from zhs_dmo_material
+{
+ key material as MaterialNumber,
+ name as MaterialName,
+ description as MaterialDescription,
+ @Semantics.quantity.unitOfMeasure: 'STOCKUNIT'
+ stock as Stock,
+ stock_unit as StockUnit,
+ @Semantics.amount.currencyCode : 'Currency'
+ price_per_unit as PricePerUnit,
+ currency as Currency
+}
diff --git a/src/zhs_i_dmomaterial.ddls.baseinfo b/src/zhs_i_dmomaterial.ddls.baseinfo
new file mode 100644
index 0000000..0f79bdf
--- /dev/null
+++ b/src/zhs_i_dmomaterial.ddls.baseinfo
@@ -0,0 +1,19 @@
+{
+"BASEINFO":
+{
+"FROM":
+[
+"ZHS_DMO_MATERIAL"
+],
+"ASSOCIATED":
+[],
+"BASE":
+[],
+"ANNO_REF":
+[],
+"SCALAR_FUNCTION":
+[],
+"VERSION":0,
+"ANNOREF_EVALUATION_ERROR":""
+}
+}
\ No newline at end of file
diff --git a/src/zhs_i_dmomaterial.ddls.xml b/src/zhs_i_dmomaterial.ddls.xml
new file mode 100644
index 0000000..77d674d
--- /dev/null
+++ b/src/zhs_i_dmomaterial.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZHS_I_DMOMATERIAL
+ E
+ Interface for Material
+ W
+
+
+
+
diff --git a/src/zhs_i_dmopartner.ddls.asddls b/src/zhs_i_dmopartner.ddls.asddls
new file mode 100644
index 0000000..a4215a6
--- /dev/null
+++ b/src/zhs_i_dmopartner.ddls.asddls
@@ -0,0 +1,12 @@
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Interface for Partner'
+define view entity ZHS_I_DmoPartner
+ as select from zhs_dmo_partner
+{
+ key partner as PartnerNumber,
+ name as PartnerName,
+ street as Street,
+ city as City,
+ country as Country,
+ payment_currency as PaymentCurrency
+}
diff --git a/src/zhs_i_dmopartner.ddls.baseinfo b/src/zhs_i_dmopartner.ddls.baseinfo
new file mode 100644
index 0000000..5493cf4
--- /dev/null
+++ b/src/zhs_i_dmopartner.ddls.baseinfo
@@ -0,0 +1,19 @@
+{
+"BASEINFO":
+{
+"FROM":
+[
+"ZHS_DMO_PARTNER"
+],
+"ASSOCIATED":
+[],
+"BASE":
+[],
+"ANNO_REF":
+[],
+"SCALAR_FUNCTION":
+[],
+"VERSION":0,
+"ANNOREF_EVALUATION_ERROR":""
+}
+}
\ No newline at end of file
diff --git a/src/zhs_i_dmopartner.ddls.xml b/src/zhs_i_dmopartner.ddls.xml
new file mode 100644
index 0000000..4001dbe
--- /dev/null
+++ b/src/zhs_i_dmopartner.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZHS_I_DMOPARTNER
+ E
+ Interface for Partner
+ W
+
+
+
+
diff --git a/src/zhs_i_dmoposition.ddls.asddls b/src/zhs_i_dmoposition.ddls.asddls
new file mode 100644
index 0000000..e2bdf3f
--- /dev/null
+++ b/src/zhs_i_dmoposition.ddls.asddls
@@ -0,0 +1,18 @@
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Interface for Position'
+define view entity ZHS_I_DmoPosition as select from zhs_dmo_position
+association [0..1] to ZBS_I_DmoInvoice as _Invoice on $projection.DocumentNumber = _Invoice.DocumentNumber
+association [0..1] to ZBS_I_DmoMaterial as _Material on $projection.MaterialNumber = _Material.MaterialNumber
+{
+ key document as DocumentNumber,
+ key pos_number as PositionNumber,
+ material as MaterialNumber,
+ @Semantics.quantity.unitOfMeasure: 'PositionUnit'
+ quantity as PositionQuantity,
+ _Material.StockUnit as PositionUnit,
+ @Semantics.amount.currencyCode: 'PositionCurrency'
+ price as PositionPrice,
+ currency as PositionCurrency,
+ _Invoice,
+ _Material
+}
diff --git a/src/zhs_i_dmoposition.ddls.baseinfo b/src/zhs_i_dmoposition.ddls.baseinfo
new file mode 100644
index 0000000..9672842
--- /dev/null
+++ b/src/zhs_i_dmoposition.ddls.baseinfo
@@ -0,0 +1,23 @@
+{
+"BASEINFO":
+{
+"FROM":
+[
+"ZBS_I_DMOMATERIAL",
+"ZHS_DMO_POSITION"
+],
+"ASSOCIATED":
+[
+"ZBS_I_DMOINVOICE",
+"ZBS_I_DMOMATERIAL"
+],
+"BASE":
+[],
+"ANNO_REF":
+[],
+"SCALAR_FUNCTION":
+[],
+"VERSION":0,
+"ANNOREF_EVALUATION_ERROR":""
+}
+}
\ No newline at end of file
diff --git a/src/zhs_i_dmoposition.ddls.xml b/src/zhs_i_dmoposition.ddls.xml
new file mode 100644
index 0000000..7f672de
--- /dev/null
+++ b/src/zhs_i_dmoposition.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZHS_I_DMOPOSITION
+ E
+ Interface for Position
+ W
+
+
+
+
diff --git a/src/zhs_i_rappartner.bdef.asbdef b/src/zhs_i_rappartner.bdef.asbdef
new file mode 100644
index 0000000..24a480f
--- /dev/null
+++ b/src/zhs_i_rappartner.bdef.asbdef
@@ -0,0 +1,23 @@
+managed implementation in class zbp_hs_i_rappartner unique;
+strict;
+
+define behavior for ZHS_I_RAPPartner alias Partner
+persistent table zhs_dmo_partner
+lock master
+authorization master ( instance )
+
+{
+ create;
+ update;
+ delete;
+
+ mapping for zbs_dmo_partner
+ {
+ PartnerNumber = partner;
+ PartnerName = name;
+ Street = street;
+ City = city;
+ Country = country;
+ PaymentCurrency = payment_currency;
+ }
+}
\ No newline at end of file
diff --git a/src/zhs_i_rappartner.bdef.xml b/src/zhs_i_rappartner.bdef.xml
new file mode 100644
index 0000000..46f8a4c
--- /dev/null
+++ b/src/zhs_i_rappartner.bdef.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+ ZHS_I_RAPPARTNER
+ BDEF/BDO
+ RAP Interface for Partner
+ 60
+ EN
+
+ -
+ ./zhs_i_rappartner/source/main/versions
+ http://www.sap.com/adt/relations/versions
+ Historic versions
+
+ -
+ ./zhs_i_rappartner/source/main
+ http://www.sap.com/adt/relations/source
+ text/plain
+ Source Content
+
+ -
+ ./zhs_i_rappartner/source/main
+ http://www.sap.com/adt/relations/source
+ text/html
+ Source Content (HTML)
+
+
+ EN
+ 5
+ ./zhs_i_rappartner/source/main
+ ABAP_SOURCE
+ true
+ true
+
+
+
+
diff --git a/src/zhs_i_rappartner.ddls.asddls b/src/zhs_i_rappartner.ddls.asddls
new file mode 100644
index 0000000..21079f3
--- /dev/null
+++ b/src/zhs_i_rappartner.ddls.asddls
@@ -0,0 +1,12 @@
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'RAP Interface for Partner'
+define root view entity ZHS_I_RAPPartner
+ as select from zhs_dmo_partner
+{
+ key partner as PartnerNumber,
+ name as PartnerName,
+ street as Street,
+ city as City,
+ country as Country,
+ payment_currency as PaymentCurrency
+}
diff --git a/src/zhs_i_rappartner.ddls.baseinfo b/src/zhs_i_rappartner.ddls.baseinfo
new file mode 100644
index 0000000..5493cf4
--- /dev/null
+++ b/src/zhs_i_rappartner.ddls.baseinfo
@@ -0,0 +1,19 @@
+{
+"BASEINFO":
+{
+"FROM":
+[
+"ZHS_DMO_PARTNER"
+],
+"ASSOCIATED":
+[],
+"BASE":
+[],
+"ANNO_REF":
+[],
+"SCALAR_FUNCTION":
+[],
+"VERSION":0,
+"ANNOREF_EVALUATION_ERROR":""
+}
+}
\ No newline at end of file
diff --git a/src/zhs_i_rappartner.ddls.xml b/src/zhs_i_rappartner.ddls.xml
new file mode 100644
index 0000000..f93b6f1
--- /dev/null
+++ b/src/zhs_i_rappartner.ddls.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ ZHS_I_RAPPARTNER
+ E
+ RAP Interface for Partner
+ W
+
+
+
+
diff --git a/src/zhs_simple_partner.srvd.srvdsrv b/src/zhs_simple_partner.srvd.srvdsrv
new file mode 100644
index 0000000..5cd27a9
--- /dev/null
+++ b/src/zhs_simple_partner.srvd.srvdsrv
@@ -0,0 +1,4 @@
+@EndUserText.label: 'Simple Partner Service'
+define service ZHS_SIMPLE_PARTNER {
+ expose ZHS_I_RAPPartner as Partner;
+}
\ No newline at end of file
diff --git a/src/zhs_simple_partner.srvd.xml b/src/zhs_simple_partner.srvd.xml
new file mode 100644
index 0000000..c0f1d78
--- /dev/null
+++ b/src/zhs_simple_partner.srvd.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+ ZHS_SIMPLE_PARTNER
+ SRVD/SRV
+ Simple Partner Service
+ EN
+ EN
+ ./zhs_simple_partner/source/main
+ ABAP_SOURCE
+ ABAP Development Tools
+ S
+ Definition
+
+
+
+
diff --git a/src/zhs_ui_simple_partner_o4.srvb.xml b/src/zhs_ui_simple_partner_o4.srvb.xml
new file mode 100644
index 0000000..ea16884
--- /dev/null
+++ b/src/zhs_ui_simple_partner_o4.srvb.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ ZHS_UI_SIMPLE_PARTNER_O4
+ SRVB/SVB
+ Simple UI Service
+ EN
+ EN
+ 5
+
+
+
+ ZHS_UI_SIMPLE_PARTNER_O4
+
+ ODATA
+ V4
+
+ -
+ ZHS_SIMPLE_PARTNER
+
+
-
+ 0001
+ NOT_RELEASED
+
+ /sap/bc/adt/ddic/srvd/sources/zhs_simple_partner
+ SRVD/SRV
+ ZHS_SIMPLE_PARTNER
+
+
+
+ base64
+
+
+
+
+
+
+
+ C1
+ true
+ true
+ true
+ UNPUBLISH
+
+
+
+
diff --git a/src/zhs_ui_simple_partner_o4_0001_g4ba.sco2.xml b/src/zhs_ui_simple_partner_o4_0001_g4ba.sco2.xml
new file mode 100644
index 0000000..d63b426
--- /dev/null
+++ b/src/zhs_ui_simple_partner_o4_0001_g4ba.sco2.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ZHS_UI_SIMPLE_PARTNER_O4_0001_G4BA
+ G4BA
+ ZHS_UI_SIMPLE_PARTNER_O4
+ X
+ 5
+ ZHS_UI_SIMPLE_PARTNER_O4_0001_G4BA
+ ZHS_UI_SIMPLE_PARTNER_O4
+ 5
+
+
+
+