METHOD invoicelistset_get_entityset.
*/InvoiceListSet?$filter= CustomerCode eq '10' and (InvoiceDate ge datetime'2016-
10-01T00:00:00' and InvoiceDate le datetime'2016-10-01T00:00:00')
*/ /sap/opu/odata/sap/ZIMAST_SRV/InvoiceListSet?$filter= CustomerCode eq
'0001400010' and InvoiceNo eq '1330000025'
"/sap/opu/odata/sap/ZIMAST_SRV/InvoiceListSet?$filter= CustomerCode eq
'0001400001'&$top=5&$skip=0
"/sap/opu/odata/sap/ZIMAST_SRV/InvoiceListSet?$filter= CustomerCode eq
'0001400001' and InvoiceNo eq '1330000047'
"/sap/opu/odata/sap/ZIMAST_SRV/InvoiceListSet?$filter= CustomerCode eq '1S1079'
and OrderNo eq '1212001704'
** Data declarations.
DATA:lt_customer TYPE RANGE OF vbrk-kunag,
ls_customer LIKE LINE OF lt_customer,
lt_date TYPE RANGE OF vbrk-fkdat,
lt_vbeln TYPE RANGE OF vbrk-vbeln,
ls_date LIKE LINE OF lt_date,
ls_vbeln LIKE LINE OF lt_vbeln,
ls_msg TYPE REF TO /iwbep/if_message_container,
es_entityset LIKE LINE OF et_entityset,
ls_error_flag TYPE c,
i_field_value TYPE string.
TYPES : BEGIN OF ty_vbrk ,
vbeln TYPE vbrk-vbeln,
fkdat TYPE vbrk-fkdat,
erzet TYPE vbrk-erzet,
kunag TYPE vbrk-kunag,
END OF ty_vbrk.
DATA : it_vbrk TYPE STANDARD TABLE OF ty_vbrk,
wa_vbrk TYPE ty_vbrk.
** Instantiate Message Container
CALL METHOD me->/iwbep/if_mgw_conv_srv_runtime~get_message_container
RECEIVING
ro_message_container = ls_msg.
** Read Request Data
READ TABLE it_filter_select_options INTO DATA(wa_filter_select_options) WITH
KEY property = 'CustomerCode'.
IF sy-subrc EQ 0.
READ TABLE wa_filter_select_options-select_options INTO
DATA(wa_select_options) WITH KEY option = 'EQ'.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_select_options TO ls_customer.
ls_customer-sign = 'I'.
ls_customer-option = 'EQ'.
i_field_value = ls_customer-low.
CALL METHOD zcl_imast_utility=>get_validation_check
EXPORTING
i_validation_name = 'CUSTOMER' " Field Name
i_field_value = i_field_value " Field Value
IMPORTING
e_error = ls_error_flag.
IF ls_error_flag = abap_true.
CALL METHOD ls_msg->add_message
EXPORTING
iv_msg_type = /iwbep/cl_cos_logger=>error " Message Type
iv_msg_id = 'YIMAST_MSG' " Message Class
iv_msg_number = '004'. " Message Number : Enter
Valid Customer Code
ELSE.
APPEND ls_customer TO lt_customer.
ENDIF.
ENDIF.
ELSE.
ls_error_flag = 'X'.
CALL METHOD ls_msg->add_message
EXPORTING
iv_msg_type = /iwbep/cl_cos_logger=>error " Message Type
iv_msg_id = 'YIMAST_MSG' " Message Class
iv_msg_number = '007'. " Message Number : Enter
Customer Code
ENDIF.
*********************************** INOVICE NO
*********************************************
CLEAR:wa_filter_select_options,wa_select_options.
READ TABLE it_filter_select_options INTO wa_filter_select_options WITH KEY
property = 'InvoiceNo'.
IF sy-subrc EQ 0.
READ TABLE wa_filter_select_options-select_options INTO wa_select_options
WITH KEY option = 'EQ'.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_select_options TO ls_vbeln.
APPEND ls_vbeln TO lt_vbeln.
ELSE.
ls_error_flag = 'X'.
CALL METHOD ls_msg->add_message
EXPORTING
iv_msg_type = /iwbep/cl_cos_logger=>error " Message Type
iv_msg_id = 'YIMAST_MSG' " Message Class
iv_msg_number = '001'. " Message Number : Enter
Invoice
ENDIF.
ENDIF.
**************************************
*********************************** Order No
*********************************************
CLEAR:wa_filter_select_options,wa_select_options.
READ TABLE it_filter_select_options INTO wa_filter_select_options WITH KEY
property = 'OrderNo'.
IF sy-subrc EQ 0.
READ TABLE wa_filter_select_options-select_options INTO wa_select_options
WITH KEY option = 'EQ'.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_select_options TO ls_vbeln.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_vbeln-low
IMPORTING
output = ls_vbeln-low.
DATA it_vbfa TYPE TABLE OF vbfa.
CALL FUNCTION 'SD_VBFA_SELECT'
EXPORTING
i_vbelv = ls_vbeln-low
TABLES
fvbfa = it_vbfa.
SORT it_vbfa DESCENDING BY vbelv erdat erzet.
DELETE ADJACENT DUPLICATES FROM it_vbfa COMPARING vbelv .
LOOP AT it_vbfa ASSIGNING FIELD-SYMBOL(<wa_vbfa>) WHERE vbtyp_n EQ 'M' AND
vbtyp_v EQ 'C'.
ls_vbeln-sign = 'I'.
ls_vbeln-option = 'EQ'.
ls_vbeln-low = <wa_vbfa>-vbeln.
APPEND ls_vbeln TO lt_vbeln.
ENDLOOP.
ELSE.
ls_error_flag = 'X'.
CALL METHOD ls_msg->add_message
EXPORTING
iv_msg_type = /iwbep/cl_cos_logger=>error " Message Type
iv_msg_id = 'YIMAST_MSG' " Message Class
iv_msg_number = '001'. " Message Number : Enter
Invoice
ENDIF.
ENDIF.
**************************************
** raise error message exception
IF ls_error_flag IS NOT INITIAL.
RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
EXPORTING
message_container = ls_msg.
ENDIF.
IF is_paging IS NOT INITIAL.
"importing param pnly filled when $top $skip are used
SELECT
vbeln,
fkdat,
erzet,
kunag
FROM vbrk
WHERE kunag IN @lt_customer
ORDER by vbeln DESCENDING
INTO CORRESPONDING FIELDS OF TABLE @it_vbrk
OFFSET @is_paging-skip UP TO @is_paging-top ROWS .
ELSE.
SELECT
vbeln
fkdat
erzet
kunag
FROM vbrk INTO TABLE it_vbrk
WHERE vbeln IN lt_vbeln AND
fkdat IN lt_date AND
kunag IN lt_customer
ORDER by vbeln DESCENDING.
ENDIF.
** get invoice details
LOOP AT it_vbrk INTO wa_vbrk.
es_entityset-vbeln = wa_vbrk-vbeln.
es_entityset-kunag = wa_vbrk-kunag.
es_entityset-fkdat = wa_vbrk-fkdat.
CONVERT DATE wa_vbrk-fkdat
TIME wa_vbrk-erzet
INTO TIME STAMP es_entityset-fkdat
TIME ZONE sy-zonlo.
APPEND es_entityset TO et_entityset.
ENDLOOP.
ENDMETHOD.