Professional Documents
Culture Documents
Zrep Einv Eway Report
Zrep Einv Eway Report
*& *
*& Report ZREP_EINV_EWAY_REPORT
*& *
*&
*& *
REPORT zrep_einv_eway_report.
* Type Pool declartion
TYPE-POOLS: icon.
* Includes
INCLUDE zrep_einv_eway_report_top.
INCLUDE zrep_einv_eway_report_class.
INCLUDE zrep_einv_eway_report_sel.
INCLUDE zrep_einv_eway_report_forms.
* Initialization
INITIALIZATION.
* Fetch User configuration based on selection
PERFORM fetch_user_config.
* Fetch all domain Values
PERFORM fetch_domain_values.
AT SELECTION-SCREEN OUTPUT.
* Selection screen comments
WRITE icon_message_information AS ICON TO icon.
WRITE icon_message_information AS ICON TO icon1.
WRITE icon_message_information AS ICON TO icon2.
WRITE icon_message_information AS ICON TO icon3.
PERFORM set_module_value.
* Start of selection
START-OF-SELECTION.
* Get all required data
PERFORM get_data.
* If data available to dosplay call screen
IF gt_final IS NOT INITIAL.
CALL SCREEN 9000.
ELSE.
* Message
MESSAGE 'No data for given selection'(m01) TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
* Includes
INCLUDE zrep_einv_eway_report_statuo01.
INCLUDE zrep_einv_eway_report_user_i01.
*& *
*& Include ZREP_EINV_EWAY_REPORT_TOP
*& *
TYPE-POOLS: vrm.
* Type declarations
TYPES: BEGIN OF ty_zst_einv_api_struct,
transporter_id TYPE char20,
transporter_name TYPE char50,
transportation_mode TYPE zde_t_mode,
transportation_distance TYPE char10,
transporter_document_number TYPE char15,
transporter_document_date TYPE char10,
vehicle_number TYPE char12,
vehicle_type TYPE zde_v_type,
extend_validity_reason TYPE zde_ext_reason,
extend_remarks TYPE char100,
remaining_distance TYPE char10,
from_pincode TYPE char10,
consignment_status TYPE zde_consign_sts,
transit_type TYPE zde_transit_type,
address_line1 TYPE char50,
address_line2 TYPE char50,
06.10.2020 working with program 1
matnr_iTYPE matnr,
matkl_i TYPE matkl,
werks_iTYPE werks_d,
lgort_iTYPE lgort_d,
charg_iTYPE charg_d,
lfimg_iTYPE lfimg,
meins_iTYPE meins,
vrkme_iTYPE vrkme,
ntgew_iTYPE ntgew_15 ,
brgew_iTYPE brgew_15 ,
arktx_i TYPE arktx,
vbelv_iTYPE vbelv,
posnv_iTYPE posnv,
vgbel_iTYPE vgbel,
vgpos_iTYPE vgpos,
gsber_iTYPE gsber,
prctr_iTYPE prctr,
netpr_iTYPE netpr,
netwr_i TYPE netwr,
lfgja_i TYPE lfgja,
END OF ty_wb2_v_likp_lips2,
BEGIN OF ty_konv,
knumvTYPE knumv,
kposnTYPE kposn,
kschl TYPE kscha,
kbetr TYPE kbetr,
kwert TYPE kwert,
END OF ty_konv,
BEGIN OF ty_ewaybill,
bukrs TYPE bukrs,
doctyp TYPE j_1ig_doctyp,
docno TYPE j_1ig_ docno,
gjahr TYPE gjahr,
ebillno TYPE j_1ig_ ebillno,
egen_dat TYPE j_1ig_egendat,
egen_timeTYPE j_1ig_ egentime,
vdfmdate TYPE j_1ig_vdfmdate,
vdtodate TYPE j_1ig_vdtodate,
vdtotime TYPE j_1ig_vdtotime,
status TYPE j_1ig_stat,
ernam TYPE ernam,
erdat TYPE erdat,
aenam TYPE aenam,
aedat TYPE aedat,
END OF ty_ewaybill,
BEGIN OF ty_marc,
matnr TYPE matnr,
werks TYPE werks_d,
steuc TYPE steuc,
END OF ty_marc,
BEGIN OF ty_vbfa,
vbelvTYPE vbeln_von,
posnvTYPE posnr_von,
vbelnTYPE vbeln_nach ,
END OF ty_vbfa,
BEGIN OF ty_wb2_v_vbak_vbap2,
vbeln TYPE vbeln_va,
vbeln_i TYPE vbeln_va,
posnr_i TYPE posnr_va,
audat TYPE audat,
bstnk TYPE bstnk,
bstdk TYPE bstdk,
ihrez TYPE ihrez,
06.10.2020 working with program 1
lw_tool-butn_type = gc_btn_type_2.
lw_tool-icon = gc_icon_eway.
APPEND lw_tool TO e_object->mt_toolbar.
lw_tool-function = gc_edit.
lw_tool-text = 'Edit Transporter (SAP Only)'(042).
lw_tool-icon = gc_icon_edit.
lw_tool-butn_type = gc_btn_type_0.
APPEND lw_tool TO e_object->mt_toolbar.
ENDIF.
ENDMETHOD. "DISPLAY
* Menu
METHOD menu .
IF e_ucomm = gc_ucomm_einv.
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_einvg
text = 'Generate E-Invoice'(043).
* icon = gc_icon_39.
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_einvc
text = 'Cancel E-Invoice'(044).
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_einvp
text = 'Download E-Invoice'(118).
.
ENDIF.
IF e_ucomm = gc_ucomm_eway.
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_eeayg
text = 'Generate E-Way Bill(Part A & B)'.
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_eeayb
text = 'Generate E-Way Bill(Part A)'.
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_ewayp
text = 'Download E-Way Bill'.
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_ewayu
text = 'Update E-Way Bill Transporter'.
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_ewayv
text = 'Update E-Way Bill Vehicle No.'.
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_ewaye
text = 'Extend E-Way Bill Validity'.
.
CALL METHOD e_object->add_function
EXPORTING
fcode = gc_fcode_ewayc
text = 'Cancel E-Way Bill'.
ENDIF.
ENDMETHOD.
* User Command
METHOD user_command.
DATA: lw_index TYPE lvc_s_row,
06.10.2020 working with program 1
AT SELECTION-SCREEN .
AT SELECTION-SCREEN ON p_ccode.
IF gt_user_config IS INITIAL.
MESSAGE 'E-Invooice/E-way bill configuration is empty for your login'(000) TYPE 'E'.
ELSE.
READ TABLE gt_user_config TRANSPORTING NO FIELDS WITH KEY bukrs = p_ccode.
IF sy-subrc IS NOT INITIAL.
MESSAGE 'You are not authorized for given company code'(001) TYPE 'E'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON p_mod.
IF gt_user_config IS INITIAL.
MESSAGE 'E-Invooice/E-way bill configuration is empty for your login'(002) TYPE 'E'.
ELSE.
READ TABLE gt_user_config TRANSPORTING NO FIELDS WITH KEY zmodule = p_mod.
IF sy-subrc IS NOT INITIAL.
MESSAGE 'You are not authorized for given Module'(003) TYPE 'E'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON s_werks.
IF gt_user_config IS INITIAL.
MESSAGE 'E-Invooice/E-way bill configuration is empty for your login'(004) TYPE 'E'.
ELSE.
LOOP AT s_werks.
READ TABLE gt_user_config TRANSPORTING NO FIELDS WITH KEY werks = s_werks-low.
IF sy-subrc IS NOT INITIAL.
MESSAGE 'You are not authorized for given Plant'(005) TYPE 'E'.
ENDIF.
ENDLOOP.
ENDIF.
AT SELECTION-SCREEN ON s_docty.
IF gt_user_config IS INITIAL.
MESSAGE 'E-Invooice/E-way bill configuration is empty for your login'(006) TYPE 'E'.
ELSE.
LOOP AT s_docty.
READ TABLE gt_user_config TRANSPORTING NO FIELDS WITH KEY fkart = s_docty-low.
IF sy-subrc IS NOT INITIAL.
MESSAGE 'You are not authorized for given Document Type'(011) TYPE 'E'.
ENDIF.
ENDLOOP.
ENDIF.
*& *
*& Include ZREP_EINV_EWAY_REPORT_FORMS
*& *
*& *
*& Form GET_DATA
*& *
*& text
*& *
*& > p1 text
*& < p2 text
*& *
FORM get_data .
DATA:lw_user_config TYPE ty_user_config.
* Get document related configuration data
SELECT bukrs
zmodule
fkart
vtext
sup_type
sub_type
edoc_type
einv
06.10.2020 working with program 1
eway
accpost
senderr
instgen
batch FROM zteinv_doct yp
INTO TABLE gt_doctyp
WHERE bukrs EQ p_ccode AND
zmodule EQ p_mod AND
fkart IN s_docty AND
batch EQ abap_true.
IF sy-subrc IS NOT INITIAL.
MESSAGE 'Batch generation config is empty for the given selection'(008) TYPE 'E'.
ENDIF.
* Get generator/Approver data
SELECT bukrs
zmodule
fkart
werks
prctr
gen_apr
blk_usr FROM zteinv_appvr
INTO TABLE gt_user_config
WHERE bukrs EQ p_ccode AND
zmodule EQ p_mod AND
fkart IN s_docty AND
werks IN s_werks AND
prctr IN s_prctr AND
gen_apr = sy-uname.
IF sy-subrc IS NOT INITIAL.
MESSAGE 'Config is empty for the given selection'(009) TYPE 'E'.
ENDIF.
* get the API data
SELECT apiid apiprov FROM zteinv_api INTO TABLE gt_api.
IF p_mod = gc_sd.
* collect the billing type and plant details
CLEAR:sl_fkart,sl_werks.
IF gt_user_config IS NOT INITIAL.
LOOP AT gt_user_config INTO lw_user_config WHERE zmodule = gc_sd
AND fkart IN s_docty.
ss_fkart-sign = gc_sign.
ss_fkart-option = gc_equal.
ss_fkart-low = lw_user_config-fkart.
APPEND ss_fkart TO sl_fkart.
CLEAR:ss_fkart.
ss_werks-sign = gc_sign.
ss_werks-option = gc_equal.
ss_werks-low = lw_user_config-werks.
APPEND ss_werks TO sl_werks.
CLEAR ss_werks.
ENDLOOP.
SORT sl_fkart.
DELETE ADJACENT DUPLICATES FROM sl_fkart COMPARING ALL FIELDS.
SORT sl_werks.
DELETE ADJACENT DUPLICATES FROM sl_werks COMPARING ALL FIELDS.
ENDIF.
PERFORM process_sd_data.
PERFORM process_sd_data_delivery.
ENDIF.
ENDFORM.
*& *
*& Form SET_MODULE_VALUE
*& *
* text
06.10.2020 working with program 1
* *
* > p1 text
* < p2 text
* *
FORM set_module_value .
DATA:lt_values TYPE TABLE OF dd07v,
ls_value TYPE dd07v,
lv_name TYPE vrm_id,
lt_list TYPE vrm_values,
lw_mod_value LIKE LINE OF lt_list.
CALL FUNCTION 'GET_DOMAIN_VALUES'
EXPORTING
domname = 'ZDOM_ZMODULE'
TABLES
values_tab = lt_values
EXCEPTIONS
no_values_found = 1
OTHERS = 2.
IF sy-subrc = 0.
LOOP AT lt_values INTO ls_value.
lw_mod_value-key = ls_value-domvalue_l.
lw_mod_value-text = ls_value-ddtext.
APPEND lw_mod_value TO lt_list.
ENDLOOP.
lv_name = 'P_MOD'.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = lv_name
values = lt_list.
ENDIF.
ENDFORM.
*& *
*& Form FETCH_USER_CONFIG
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM fetch_user_config .
DATA:lw_token TYPE string,
lw_return TYPE string,
wa_return TYPE string,
lt_messages TYPE bapiret2_t,
lw_message TYPE bapiret2.
* get approver details
SELECT bukrs
zmodule
fkart
werks
prctr
gen_apr
blk_usr FROM zteinv_appvr INTO TABLE gt_user_config WHERE gen_apr = sy-uname AND
blk_usr EQ ''.
IF sy-subrc IS NOT INITIAL.
* Through error message
EXIT.
ENDIF.
*** Fetch UOM Mapping
SELECT edoc_uom meins FROM ztdoc_uom INTO TABLE gt_doc_uom WHERE edoc_uom IS NOT NULL.
* Get export port details.
SELECT zport_code
zport
06.10.2020 working with program 1
land1
zport_state
zport_address1
zport_address2
zport_place
zport_pincode FROM ztedoc_export INTO TABLE gt_export WHERE land1 = gc_land1_in.
*** generate token
CLEAR:gw_token,lw_return.
* SELECT SINGLE apiuri FROM zteinv_api INTO gw_token WHERE apiid = gc_apiid_token.
* IF sy-subrc IS NOT INITIAL.
* IF gw_token IS INITIAL.
* CALL FUNCTION 'ZFM_EINVOICE_OAUTH_API'
* IMPORTING
* ex_token = gw_token
* ex_return = lw_return
* et_messages = lt_messages.
* ENDIF.
* ENDIF.
ENDFORM.
*& *
*& Form SD_PROCESS_DATA
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM process_sd_data .
DATA: lw_invrefnum TYPE j_1ig_invrefnum,
lw_wb2_v_vbrk_vbrp2 TYPE ty_wb2_v_vbrk_vbrp2,
lw_kna1 LIKE LINE OF gt_kna1,
lw_gstin LIKE LINE OF gt_gstin,
lv_internal_date TYPE sy-datum,
lw_konv TYPE ty_konv,
lw_ewaybill TYPE ty_ewaybill,
ls_zteway_transport TYPE zteway_transport,
ls_zteinv_details TYPE zteinv_details,
lw_vbpa TYPE ty_vbpa,
lw_kna1_d TYPE ty_kna1,
lw_lfa1 TYPE lfa1,
lt_likp TYPE TABLE OF ty_likp,
lv_gjahr(4) TYPE c,
lt_vbrk_vbrp TYPE TABLE OF ty_wb2_v_vbrk_vbrp2,
lw_vbrk_vbrp2 TYPE ty_wb2_v_vbrk_vbrp2,
lw_doctyp TYPE ty_doctyp,
lt_sd_header TYPE TABLE OF ty_wb2_v_vbrk_vbrp2,
lt_vbrk_export TYPE TABLE OF ty_wb2_v_vbrk_vbrp2,
lv_index TYPE sy-tabix,
lv_rate TYPE kbetr,
lv_dmbtr TYPE dmbtr,
lw_eway_data TYPE zeway_data,
lw_wc LIKE LINE OF gt_wc.
DATA:rt_name TYPE RANGE OF rvari_vnam,
rs_name LIKE LINE OF rt_name.
*& Get Invocies for E-invocie and E-way bill
IF s_prctr IS NOT INITIAL.
SELECT vbeln vbeln_i posnr_i fkart fktyp vbtyp waerk vkorg
vtweg knumv fkdat gjahr kurrf land1 bukrs netwr ernam kunrg
kunag xblnr zuonr fksto bupla fkimg_i meins_i kursk_i
netwr_i vgbel_i matnr_i arktx_i charg_i pstyv_i werks_i ean11_i prctr_i mwsbp_i
FROM wb2_v_vbrk_vbrp2
INTO TABLE gt_wb2_v_vbrk_vbrp2
WHERE fkart IN sl_fkart
06.10.2020 working with program 1
ENDIF.
* Dispatch and Ship Details
CLEAR:lt_sd_header.
lt_sd_header = gt_wb2_v_vbrk_vbrp2.
SORT lt_sd_header BY vgbel_i.
DELETE ADJACENT DUPLICATES FROM lt_sd_header COMPARING vgbel_i.
IF lt_sd_header IS NOT INITIAL.
SELECT vbeln kunnr FROM likp
INTO TABLE gt_likp
FOR ALL ENTRIES IN lt_sd_header
WHERE vbeln EQ lt_sd_header-vgbel_i.
IF gt_likp IS NOT INITIAL.
SELECT kunnr land1 name1 name2 ort01 pstlz regio stras telf1 adrnr stcd3
FROM kna1 INTO TABLE gt_kna1_d
FOR ALL ENTRIES IN gt_likp
WHERE kunnr = gt_likp-kunnr.
IF sy-subrc EQ 0.
* Region text
SELECT spras land1 land1 bezei FROM t005u
INTO TABLE gt_t005u_d
FOR ALL ENTRIES IN gt_kna1_d
WHERE land1 EQ gc_land1_in
AND bland EQ gt_kna1_d-regio
AND spras EQ sy-langu.
* Address details
SELECT addrnumber tel_number FROM adrc
INTO TABLE gt_adrc_d
FOR ALL ENTRIES IN gt_kna1_d
WHERE addrnumber = gt_kna1_d-adrnr.
ENDIF.
ENDIF.
ENDIF.
*Seller Details
CLEAR lt_sd_header.
lt_sd_header = gt_wb2_v_vbrk_vbrp2.
SORT lt_sd_header BY werks_i.
DELETE ADJACENT DUPLICATES FROM lt_sd_header COMPARING werks_i.
IF lt_sd_header IS NOT INITIAL.
SELECT werks name1 name2 stras pstlz ort01 land1 regio
counc cityc adrnr spras zone1 j_1bbranch
FROM t001w
INTO TABLE gt_t001w
FOR ALL ENTRIES IN lt_sd_header
WHERE werks EQ lt_sd_header-werks_i.
IF sy-subrc EQ 0.
SORT gt_t001w BY werks.
* Region text
SELECT spras land1 bland bezei FROM t005u
INTO TABLE gt_t005u_s
FOR ALL ENTRIES IN gt_t001w
WHERE land1 EQ gt_t001w-land1
AND bland EQ gt_t001w-regio
AND spras EQ sy-langu.
* Address details
SELECT addrnumber tel_number FROM adrc
INTO TABLE gt_adrc_s
FOR ALL ENTRIES IN gt_t001w
WHERE addrnumber = gt_t001w-adrnr.
IF sy-subrc EQ 0.
SELECT addrnumber smtp_addr
FROM adr6
INTO TABLE gt_adr6_s
FOR ALL ENTRIES IN gt_adrc_s
06.10.2020 working with program 1
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
IF lw_ewaybill-status EQ gc_eway_sts_c.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-aedat
IMPORTING
date_external = gw_final-eway_canc_dt
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
ELSE.
gw_final-eway_canc_dt = 0.
ENDIF.
gw_final-eway_erzet = lw_ewaybill-egen_time.
* Valid from
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-vdfmdate
IMPORTING
date_external = gw_final-eway_v_from
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
* Valid To
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-vdtodate
IMPORTING
date_external = gw_final-eway_v_to
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
gw_final-eway_v_time = lw_ewaybill-vdtotime.
IF lw_ewaybill-status = gc_eway_sts_a.
gw_final-eway_status = 'Success'(060).
gw_final-eway_icon = gc_icon_08.
ELSEIF lw_ewaybill-status = gc_eway_sts_a.
gw_final-eway_status = 'Error'(061).
gw_final-eway_icon = gc_icon_0a.
ELSEIF lw_ewaybill-status = gc_eway_sts_c.
gw_final-eway_status = 'Cancelled'(062).
gw_final-eway_icon = gc_icon_0w.
ENDIF.
ENDIF.
READ TABLE gt_zteway_transport INTO ls_zteway_transport WITH KEY
bukrs = lw_wb2_v_vbrk_vbrp2-bukrs
docno = lw_wb2_v_vbrk_vbrp2-vbeln
doctyp = lw_wb2_v_vbrk_vbrp2-fkart
BINARY SEARCH.
IF sy-subrc = 0.
06.10.2020 working with program 1
gw_final-t_id = ls_zteway_transport-t_id.
gw_final-t_name = ls_zteway_transport-t_name.
gw_final-t_doc_no = ls_zteway_transport-t_doc_no.
IF ls_zteway_transport-t_date IS NOT INITIAL.
CONCATENATE ls_zteway_transport-t_date+6(2) '/'
ls_zteway_transport-t_date+4(2) '/'
ls_zteway_transport-t_date+0(4)
INTO gw_final-t_date.
ENDIF.
gw_final-t_mode = ls_zteway_transport-t_mode.
gw_final-t_distance = ls_zteway_transport-t_distance.
gw_final-v_number = ls_zteway_transport-v_number.
gw_final-v_type = ls_zteway_transport-v_type.
IF gw_final-v_type IS INITIAL.
gw_final-v_type = gc_v_type_1..
ENDIF.
gw_final-eway_print = ls_zteway_transport-eway_print.
IF gw_final-eway_status = 'Error'(061).
gw_final-eway_error = ls_zteway_transport-eway_error.
ELSE.
gw_final-eway_error = ' '.
ENDIF.
gw_final-t_r_distance = ls_zteway_transport-t_r_distance.
gw_final-t_ext_valid_reason = ls_zteway_transport-t_ext_valid_reason.
gw_final-t_ext_valid_remarks = ls_zteway_transport-t_ext_valid_remarks.
gw_final-t_from_pin = ls_zteway_transport-t_from_pin.
gw_final-t_consignment_status = ls_zteway_transport-t_consignment_status.
gw_final-t_transit_type = ls_zteway_transport-t_transit_type.
gw_final-t_address1 = ls_zteway_transport-t_address1.
gw_final-t_address2 = ls_zteway_transport-t_address2.
gw_final-t_address3 = ls_zteway_transport-t_address3.
gw_final-v_reason_code = ls_zteway_transport-v_reason_code.
gw_final-v_reason = ls_zteway_transport-v_reason.
gw_final-c_reason_code = ls_zteway_transport-c_reason_code.
gw_final-c_reason = ls_zteway_transport-c_reason.
gw_final-zport_code = ls_zteway_transport-zport_code.
ELSE.
* Document number
DATA: lt_lines TYPE STANDARD TABLE OF tline,
lw_lines TYPE tline,
lv_tdname TYPE thead-tdname.
lv_tdname = lw_wb2_v_vbrk_vbrp2-vbeln.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'Z003'
language = sy-langu
name = lv_tdname
object = gc_tobject_vbbk
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
READ TABLE lt_lines INTO lw_lines INDEX 1.
IF sy-subrc IS INITIAL.
06.10.2020 working with program 1
gw_final-t_doc_no = lw_lines-tdline.
ENDIF.
ENDIF.
* Document Date
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'Z004'
language = sy-langu
name = lv_tdname
object = gc_tobject_vbbk
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
READ TABLE lt_lines INTO lw_lines INDEX 1.
IF sy-subrc IS INITIAL.
gw_final-t_date = lw_lines-tdline.
IF gw_final-t_date IS NOT INITIAL.
CONCATENATE ls_zteway_transport-t_date+6(2) '/'
ls_zteway_transport-t_date+4(2) '/'
ls_zteway_transport-t_date+0(4)
INTO gw_final-t_date.
ENDIF.
ENDIF.
ENDIF.
* mode
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'Z005'
language = sy-langu
name = lv_tdname
object = gc_tobject_vbbk
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
READ TABLE lt_lines INTO lw_lines INDEX 1.
IF sy-subrc IS INITIAL.
gw_final-t_mode = lw_lines-tdline.
ENDIF.
ENDIF.
* Vehicle number
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
06.10.2020 working with program 1
id = 'Z006'
language = sy-langu
name = lv_tdname
object = gc_tobject_vbbk
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
READ TABLE lt_lines INTO lw_lines INDEX 1.
IF sy-subrc IS INITIAL.
gw_final-v_number = lw_lines-tdline.
ENDIF.
ENDIF.
* Transporter name
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'Z015'
language = sy-langu
name = lv_tdname
object = gc_tobject_vbbk
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
READ TABLE lt_lines INTO lw_lines INDEX 1.
IF sy-subrc IS INITIAL.
gw_final-t_name = lw_lines-tdline.
ENDIF.
ENDIF.
* Transporter Id
READ TABLE gt_eway_data INTO lw_eway_data WITH KEY vbeln = lw_wb2_v_vbrk_vbrp2-vbeln
fkdat = lw_wb2_v_vbrk_vbrp2-fkdat.
IF sy-subrc IS INITIAL.
gw_final-t_id = lw_eway_data-stcd3.
ENDIF.
ENDIF.
gw_final-vbeln = lw_wb2_v_vbrk_vbrp2-vbeln.
gw_final-gjahr = lw_wb2_v_vbrk_vbrp2-gjahr.
gw_final-fkart = lw_wb2_v_vbrk_vbrp2-fkart.
gw_final-fktyp = lw_wb2_v_vbrk_vbrp2-fktyp.
gw_final-vbtyp = lw_wb2_v_vbrk_vbrp2-vbtyp.
gw_final-vkorg = lw_wb2_v_vbrk_vbrp2-vkorg.
gw_final-vtweg = lw_wb2_v_vbrk_vbrp2-vtweg.
IF lw_wb2_v_vbrk_vbrp2-fkdat IS NOT INITIAL.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
06.10.2020 working with program 1
date_internal = lw_wb2_v_vbrk_vbrp2-fkdat
IMPORTING
date_external = gw_final-fkdat
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
gw_final-fkdat_db = lw_wb2_v_vbrk_vbrp2-fkdat.
ENDIF.
gw_final-kunrg = lw_wb2_v_vbrk_vbrp2-kunrg.
gw_final-werks = lw_wb2_v_vbrk_vbrp2-werks_i.
gw_final-prctr = lw_wb2_v_vbrk_vbrp2-prctr_i.
gw_final-doc_ernam = lw_wb2_v_vbrk_vbrp2-ernam.
gw_final-bupla = lw_wb2_v_vbrk_vbrp2-bupla.
gw_final-odnno = lw_wb2_v_vbrk_vbrp2-xblnr.
gw_final-bukrs = lw_wb2_v_vbrk_vbrp2-bukrs.
* Get Fiscl year
CALL FUNCTION 'GM_GET_FISCAL_YEAR'
EXPORTING
i_date = lw_wb2_v_vbrk_vbrp2-fkdat
i_fyv = gc_periv_v3
IMPORTING
e_fy = lv_gjahr
EXCEPTIONS
fiscal_year_does_not_exist = 1
not_defined_for_date = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
gw_final-gjahr = lv_gjahr.
ENDIF.
* Ship to details
CLEAR:lw_vbpa.
READ TABLE gt_vbpa INTO lw_vbpa WITH KEY vbeln = lw_wb2_v_vbrk_vbrp2-vbeln
parvw = gc_parvw_we
BINARY SEARCH.
IF sy-subrc EQ 0.
CLEAR:lw_kna1_d.
READ TABLE gt_kna1 INTO lw_kna1_d WITH KEY kunnr = lw_vbpa-kunnr BINARY SEARCH.
IF sy-subrc EQ 0.
gw_final-ship_to = lw_kna1_d-kunnr.
gw_final-ship_to_name = lw_kna1_d-name1.
ENDIF.
ENDIF.
READ TABLE gt_gstin INTO lw_gstin WITH KEY bukrs = gw_final-bukrs
branch = gw_final-bupla.
IF sy-subrc IS INITIAL.
gw_final-sup_gstin = lw_gstin-gstin.
ENDIF.
READ TABLE gt_kna1 INTO lw_kna1 WITH KEY kunnr = gw_final-kunrg BINARY SEARCH.
IF sy-subrc IS INITIAL.
gw_final-kunnr = lw_kna1-kunnr.
gw_final-name1 = lw_kna1-name1.
gw_final-ship_gstin = lw_kna1-stcd3.
ENDIF.
READ TABLE gt_doctyp INTO lw_doctyp WITH KEY bukrs = p_ccode
zmodule = gc_sd
fkart = gw_final-fkart.
IF sy-subrc IS INITIAL.
gw_final-einv = lw_doctyp-einv.
06.10.2020 working with program 1
gw_final-eway = lw_doctyp-eway.
ENDIF.
gw_final-mod = gc_sd.
READ TABLE gt_wb2_v_vbrk_vbrp2 INTO lw_vbrk_vbrp2 WITH KEY vbeln = lw_wb2_v_vbrk_vbrp2-vbeln.
IF sy-subrc = 0.
lv_index = sy-tabix.
* Work contract
READ TABLE gt_wc INTO lw_wc WITH KEY vbeln = lw_wb2_v_vbrk_vbrp2-vbeln.
IF sy-subrc IS INITIAL.
LOOP AT gt_wc INTO lw_wc WHERE vbeln = lw_wb2_v_vbrk_vbrp2-vbeln.
gw_final-taxamt = gw_final-taxamt + lw_wc-value.
gw_final-tax = gw_final-tax + lw_wc-igst + lw_wc-cgst + lw_wc-sgst.
gw_final-igst_amt = gw_final-igst_amt + lw_wc-igst.
gw_final-cgst_amt = gw_final-cgst_amt + lw_wc-cgst.
gw_final-sgst_amt = gw_final-sgst_amt + lw_wc-sgst.
ENDLOOP.
ELSE.
LOOP AT gt_wb2_v_vbrk_vbrp2 INTO lw_vbrk_vbrp2 FROM lv_index.
IF lw_vbrk_vbrp2-vbeln NE lw_wb2_v_vbrk_vbrp2-vbeln.
EXIT.
ENDIF.
gw_final-taxamt = gw_final-taxamt + lw_vbrk_vbrp2-netwr_i.
gw_final-tax = gw_final-tax + lw_vbrk_vbrp2-mwsbp_i.
"IGST Tax amount
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = lw_vbrk_vbrp2-knumv
kposn = lw_vbrk_vbrp2-posnr_i
kschl = gc_kschl_joig
BINARY SEARCH.
IF sy-subrc EQ 0.
CLEAR lv_dmbtr.
PERFORM calculate_tax USING lw_vbrk_vbrp2-knumv
lw_vbrk_vbrp2-posnr_i
gc_kschl_joig
CHANGING lv_dmbtr
lv_rate.
gw_final-igst_amt = gw_final-igst_amt + lv_dmbtr.
ENDIF.
"CGST Tax amount
CLEAR lv_dmbtr.
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = lw_vbrk_vbrp2-knumv
kposn = lw_vbrk_vbrp2-posnr_i
kschl = gc_kschl_jocg
BINARY SEARCH.
IF sy-subrc EQ 0.
PERFORM calculate_tax USING lw_vbrk_vbrp2-knumv
lw_vbrk_vbrp2-posnr_i
gc_kschl_jocg
CHANGING lv_dmbtr
lv_rate.
gw_final-cgst_amt = gw_final-cgst_amt + lv_dmbtr.
ENDIF.
"SGST Tax amount
CLEAR lv_dmbtr.
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = lw_vbrk_vbrp2-knumv
kposn = lw_vbrk_vbrp2-posnr_i
kschl = gc_kschl_josg
BINARY SEARCH.
IF sy-subrc EQ 0.
PERFORM calculate_tax USING lw_vbrk_vbrp2-knumv
lw_vbrk_vbrp2-posnr_i
gc_kschl_josg
CHANGING lv_dmbtr
lv_rate.
06.10.2020 working with program 1
ENDIF.
gw_final-erzet = lw_invrefnum-erzet.
IF lw_invrefnum-cancel_date IS NOT INITIAL.
lv_internal_date = lw_invrefnum-cancel_date.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lv_internal_date
IMPORTING
date_external = gw_final-canc_dt
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
ENDIF.
IF lw_invrefnum-irn_status EQ gc_irn_sts_act.
gw_final-status = 'Success'(060).
gw_final-icon = gc_icon_08.
ELSEIF lw_invrefnum-irn_status EQ gc_irn_sts_err.
gw_final-status = 'Error'(061).
gw_final-icon = gc_icon_0a.
ELSEIF lw_invrefnum-irn_status EQ gc_irn_sts_cnl.
gw_final-status = 'Cancelled'(062).
gw_final-icon = gc_icon_0w.
ENDIF.
ENDIF.
CLEAR ls_zteinv_details.
READ TABLE gt_zteinv_details INTO ls_zteinv_details WITH KEY
bukrs = p_ccode
docno = lw_wb2_v_likp_lips2-vbeln
doctyp = lw_wb2_v_likp_lips2-lfart.
IF sy-subrc = 0.
IF gw_final-status = 'Error'(061).
gw_final-einv_error = ls_zteinv_details-einv_error.
ELSE.
gw_final-einv_error = ' '.
ENDIF.
ENDIF.
CLEAR:lw_ewaybill.
READ TABLE gt_ewaybill INTO lw_ewaybill WITH KEY bukrs = p_ccode
docno = lw_wb2_v_likp_lips2-vbeln
doctyp = lw_wb2_v_likp_lips2-lfart.
IF sy-subrc = 0.
gw_final-eway_num = lw_ewaybill-ebillno.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-egen_dat
IMPORTING
date_external = gw_final-eway_date
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
gw_final-eway_ernam = lw_ewaybill-ernam.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-erdat
IMPORTING
date_external = gw_final-eway_erdat
EXCEPTIONS
06.10.2020 working with program 1
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
IF lw_ewaybill-status EQ gc_eway_sts_c.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-aedat
IMPORTING
date_external = gw_final-eway_canc_dt
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
ELSE.
gw_final-eway_canc_dt = 0.
ENDIF.
gw_final-eway_erzet = lw_ewaybill-egen_time.
* Valid from
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-vdfmdate
IMPORTING
date_external = gw_final-eway_v_from
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
* Valid To
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-vdtodate
IMPORTING
date_external = gw_final-eway_v_to
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
gw_final-eway_v_time = lw_ewaybill-vdtotime.
IF lw_ewaybill-status = gc_eway_sts_a.
gw_final-eway_status = 'Success'(060).
gw_final-eway_icon = gc_icon_08.
ELSEIF lw_ewaybill-status = gc_eway_sts_e.
gw_final-eway_status = 'Error'(061).
gw_final-eway_icon = gc_icon_0a.
ELSEIF lw_ewaybill-status = gc_eway_sts_c.
gw_final-eway_status = 'Cancelled'(062).
gw_final-eway_icon = gc_icon_0w.
ENDIF.
ENDIF.
READ TABLE gt_zteway_transport INTO ls_zteway_transport WITH KEY
bukrs = p_ccode
docno = lw_wb2_v_likp_lips2-vbeln
doctyp = lw_wb2_v_likp_lips2-lfart
BINARY SEARCH.
IF sy-subrc = 0.
06.10.2020 working with program 1
gw_final-t_id = ls_zteway_transport-t_id.
gw_final-t_name = ls_zteway_transport-t_name.
gw_final-t_doc_no = ls_zteway_transport-t_doc_no.
IF ls_zteway_transport-t_date IS NOT INITIAL.
CONCATENATE ls_zteway_transport-t_date+6(2) '/'
ls_zteway_transport-t_date+4(2) '/'
ls_zteway_transport-t_date+0(4)
INTO gw_final-t_date.
ENDIF.
gw_final-t_mode = ls_zteway_transport-t_mode.
gw_final-t_distance = ls_zteway_transport-t_distance.
gw_final-v_number = ls_zteway_transport-v_number.
gw_final-v_type = ls_zteway_transport-v_type.
gw_final-t_r_distance = ls_zteway_transport-t_r_distance.
gw_final-t_ext_valid_reason = ls_zteway_transport-t_ext_valid_reason.
gw_final-t_ext_valid_remarks = ls_zteway_transport-t_ext_valid_remarks.
gw_final-t_from_pin = ls_zteway_transport-t_from_pin.
gw_final-t_consignment_status = ls_zteway_transport-t_consignment_status.
gw_final-t_transit_type = ls_zteway_transport-t_transit_type.
gw_final-t_address1 = ls_zteway_transport-t_address1.
gw_final-t_address2 = ls_zteway_transport-t_address2.
gw_final-t_address3 = ls_zteway_transport-t_address3.
gw_final-v_reason_code = ls_zteway_transport-v_reason_code.
gw_final-v_reason = ls_zteway_transport-v_reason.
gw_final-c_reason_code = ls_zteway_transport-c_reason_code.
gw_final-c_reason = ls_zteway_transport-c_reason.
gw_final-zport_code = ls_zteway_transport-zport_code.
ELSE.
* Customer specific logic
ENDIF.
gw_final-vbeln = lw_wb2_v_likp_lips2-vbeln.
gw_final-fkart = lw_wb2_v_likp_lips2-lfart.
gw_final-vbtyp = lw_wb2_v_likp_lips2-vbtyp.
gw_final-vkorg = lw_wb2_v_likp_lips2-vkorg.
IF lw_wb2_v_likp_lips2-fkdat IS NOT INITIAL.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_wb2_v_likp_lips2-fkdat
IMPORTING
date_external = gw_final-fkdat
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
gw_final-fkdat_db = lw_wb2_v_likp_lips2-fkdat.
ENDIF.
gw_final-kunrg = lw_wb2_v_likp_lips2-kunnr.
gw_final-werks = lw_wb2_v_likp_lips2-werks_i.
gw_final-prctr = lw_wb2_v_likp_lips2-prctr_i.
gw_final-doc_ernam = lw_wb2_v_likp_lips2-ernam.
gw_final-odnno = lw_wb2_v_likp_lips2-xblnr.
gw_final-bukrs = p_ccode.
* Get Fiscal year
CALL FUNCTION 'GM_GET_FISCAL_YEAR'
EXPORTING
i_date = lw_wb2_v_likp_lips2-fkdat
i_fyv = gc_periv_v3
IMPORTING
e_fy = lv_gjahr
EXCEPTIONS
fiscal_year_does_not_exist = 1
06.10.2020 working with program 1
not_defined_for_date = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE 'Fiscal Year not found'(m03) TYPE 'I'.
ELSE.
gw_final-gjahr = lv_gjahr.
ENDIF.
READ TABLE gt_gstin INTO lw_gstin WITH KEY bukrs = gw_final-bukrs.
IF sy-subrc IS INITIAL.
gw_final-sup_gstin = lw_gstin-gstin.
ENDIF.
READ TABLE gt_kna1 INTO lw_kna1 WITH KEY kunnr = gw_final-kunrg BINARY SEARCH.
IF sy-subrc IS INITIAL.
gw_final-kunnr = lw_kna1-kunnr.
gw_final-name1 = lw_kna1-name1.
gw_final-ship_gstin = lw_kna1-stcd3.
ENDIF.
READ TABLE gt_doctyp INTO lw_doctyp WITH KEY bukrs = p_ccode
zmodule = gc_sd
fkart = gw_final-fkart.
IF sy-subrc IS INITIAL.
gw_final-einv = lw_doctyp-einv.
gw_final-eway = lw_doctyp-eway.
ENDIF.
gw_final-mod = gc_sd.
READ TABLE gt_wb2_v_likp_lips2 INTO lw_likp_lips2 WITH KEY vbeln = lw_wb2_v_likp_lips2-vbeln.
IF sy-subrc IS INITIAL.
lv_index = sy-tabix.
LOOP AT gt_wb2_v_likp_lips2 INTO lw_likp_lips2 FROM lv_index.
IF lw_likp_lips2-vbeln NE lw_wb2_v_likp_lips2-vbeln.
EXIT.
ENDIF.
gw_final-taxamt = gw_final-taxamt + lw_likp_lips2-netwr.
"IGST Tax amount
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = lw_likp_lips2-knumv
kposn = lw_likp_lips2-posnr_i
kschl = gc_kschl_joig
BINARY SEARCH.
IF sy-subrc EQ 0.
gw_final-igst_amt = gw_final-igst_amt + lw_konv-kwert.
ENDIF.
"CGST Tax amount
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = lw_likp_lips2-knumv
kposn = lw_likp_lips2-posnr_i
kschl = gc_kschl_jocg
BINARY SEARCH.
IF sy-subrc EQ 0.
gw_final-cgst_amt = gw_final-cgst_amt + lw_konv-kwert.
ENDIF.
"SGST Tax amount
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = lw_likp_lips2-knumv
kposn = lw_likp_lips2-posnr_i
kschl = gc_kschl_josg
BINARY SEARCH.
IF sy-subrc IS NOT INITIAL.
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = lw_likp_lips2-knumv
kposn = lw_likp_lips2-posnr_i
kschl = gc_kschl_joug
BINARY SEARCH.
ENDIF.
IF sy-subrc EQ 0.
gw_final-sgst_amt = gw_final-sgst_amt + lw_konv-kwert.
ENDIF.
06.10.2020 working with program 1
IF sy-subrc = 0.
ENDIF.
CALL FUNCTION 'GET_DOMAIN_VALUES'
EXPORTING
domname = 'ZDOM_T_MODE'
TABLES
values_tab = gt_t_mode_values
EXCEPTIONS
no_values_found = 1
OTHERS = 2.
IF sy-subrc = 0.
ENDIF.
CALL FUNCTION 'GET_DOMAIN_VALUES'
EXPORTING
domname = 'ZDOM_EXT_REASON'
TABLES
values_tab = gt_t_ext_reason_values
EXCEPTIONS
no_values_found = 1
OTHERS = 2.
IF sy-subrc = 0.
ENDIF.
CALL FUNCTION 'GET_DOMAIN_VALUES'
EXPORTING
domname = 'ZDOM_V_TYPE'
TABLES
values_tab = gt_v_type_values
EXCEPTIONS
no_values_found = 1
OTHERS = 2.
IF sy-subrc = 0.
ENDIF.
CALL FUNCTION 'GET_DOMAIN_VALUES'
EXPORTING
domname = 'ZDOM_CONSIGN_STS'
TABLES
values_tab = gt_t_consignment_status_values
EXCEPTIONS
no_values_found = 1
OTHERS = 2.
IF sy-subrc = 0.
ENDIF.
CALL FUNCTION 'GET_DOMAIN_VALUES'
EXPORTING
domname = 'ZDOM_TRANSIT_TYPE'
TABLES
values_tab = gt_t_transit_type_values
EXCEPTIONS
no_values_found = 1
OTHERS = 2.
IF sy-subrc = 0.
ENDIF.
CALL FUNCTION 'GET_DOMAIN_VALUES'
EXPORTING
domname = 'ZDOM_VEH_REASON'
TABLES
values_tab = gt_v_reason_values
EXCEPTIONS
no_values_found = 1
OTHERS = 2.
IF sy-subrc = 0.
ENDIF.
ENDFORM.
06.10.2020 working with program 1
*& *
*& Form POPUP_TO_CONFIRM_WITH_INPUT
*& *
* text
* *
* >P_VL_PROGRAM text
* >P_VL_FORMNAME text
* >P_VL_POPUP_TITLE text
* >P_VL_OKPUSHBUTTON text
* >P_VL_BUTTONICON text
* >P_LT_SVAL text
* *
FORM popup_to_confirm_with_input USING p_vl_program TYPE sy-repid
p_vl_formname TYPE char30
p_vl_popup_title TYPE char30
p_vl_okpushbutton TYPE svalbutton-buttontext
p_vl_buttonicon TYPE icon-name
p_lt_sval TYPE ty_sval.
CALL FUNCTION 'POPUP_GET_VALUES_USER_BUTTONS'
EXPORTING
formname = p_vl_formname
programname = p_vl_program
popup_title = p_vl_popup_title
ok_pushbuttontext = p_vl_okpushbutton
icon_ok_push = p_vl_buttonicon
TABLES
fields = p_lt_sval
EXCEPTIONS
error_in_fields = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
**************************************************************************************
*************************************************************************************
FORM calculate_tax USING i_knumv
i_posnr
i_kschl
CHANGING e_value
e_rate.
DATA:lv_advance TYPE kwert,
lw_konv LIKE LINE OF gt_konv.
CLEAR lv_advance.
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = i_knumv
kposn = i_posnr
kschl = 'ZAGH'.
IF sy-subrc IS INITIAL.
lv_advance = lw_konv-kwert * -1.
ENDIF.
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = i_knumv
kposn = i_posnr
kschl = i_kschl.
IF sy-subrc IS INITIAL.
e_rate = lw_konv-kbetr / 10.
IF lv_advance IS NOT INITIAL.
lv_advance = lv_advance * e_rate / 100.
ENDIF.
e_value = lw_konv-kwert + lv_advance.
ENDIF.
ENDFORM.
* *
***INCLUDE ZREP_EINV_EWAY_REPORT_STATUO01.
06.10.2020 working with program 1
* *
*& *
*& Module STATUS_9000 OUTPUT
*& *
* text
* *
MODULE status_9000 OUTPUT.
SET PF-STATUS '9000'.
SET TITLEBAR '9000'.
DATA: lt_variant TYPE disvariant,
lw_layout TYPE lvc_s_layo.
DATA:o_eventreceiver TYPE REF TO lcl_event.
CLEAR lw_layout.
lw_layout-zebra = space.
lw_layout-cwidth_opt = abap_true.
lw_layout-sel_mode = gc_lay_mode_a."'A'.
* Create Controls
IF gref_alv_container IS NOT BOUND.
CREATE OBJECT gref_alv_container
EXPORTING
container_name = 'CUST_ALV'.
CREATE OBJECT dg_dyndoc_id
EXPORTING
style = 'ALV_GRID'.
* Create Splitter for custom_container
CREATE OBJECT dg_splitter
EXPORTING
parent = gref_alv_container
rows = 2
columns = 1.
* Split the custom_container to two containers and move the reference
* to receiving containers g_parent_html and g_parent_grid
"i am allocating the space for grid and top of page
CALL METHOD dg_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = dg_parent_html.
CALL METHOD dg_splitter->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = dg_parent_grid.
"you can set the height of it
* Set height for g_parent_html
CALL METHOD dg_splitter->set_row_height
EXPORTING
id = 1
height = 20.
"from here as usual..you need to specify parent as splitter part
"which we alloted for grid
CREATE OBJECT gref_alv_grid
EXPORTING
i_parent = dg_parent_grid.
IF gref_alv_container IS BOUND.
* Populate Field Catalog
PERFORM get_fieldcatalog.
CREATE OBJECT go_obj.
IF go_obj IS BOUND.
SET HANDLER : go_obj->toolbar FOR gref_alv_grid,
go_obj->user_command FOR gref_alv_grid,
06.10.2020 working with program 1
lw_fcat-fieldname EQ 'TAXAMT' OR
lw_fcat-fieldname EQ 'CGST_AMT' OR
lw_fcat-fieldname EQ 'SGST_AMT' OR
lw_fcat-fieldname EQ 'IGST_AMT' OR
lw_fcat-fieldname EQ 'CESS_AMT'.
lw_fcat-do_sum = 'X'.
ENDIF.
IF lw_fcat-fieldname = 'VBELN'.
lw_fcat-hotspot = 'X'.
ENDIF.
APPEND lw_fcat TO gt_fieldcat.
ENDFORM.
*& *
*& Module STATUS_9001 OUTPUT
*& *
* text
* *
MODULE status_9001 OUTPUT.
SET PF-STATUS '9001_STATUS'.
SET TITLEBAR '9001_TITLE'.
PERFORM set_distance.
PERFORM set_port_det.
ENDMODULE.
*& *
*& Form SET_DISTANCE
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM set_distance .
DATA:lw_index LIKE LINE OF gt_index,
lv_val TYPE xfeld.
FIELD-SYMBOLS <gw_final> TYPE ty_final.
PERFORM check_selected_data CHANGING lv_val.
IF lv_val IS INITIAL.
LOOP AT gt_index INTO lw_index.
READ TABLE gt_final ASSIGNING <gw_final> INDEX lw_index-index.
IF sy-subrc IS INITIAL AND <gw_final>-t_distance IS INITIAL.
IF <gw_final>-t_distance IS NOT INITIAL.
zst_einv_api_struct-transportation_distance = <gw_final>-t_distance.
ENDIF.
ENDIF.
zst_einv_api_struct-transporter_id = <gw_final>-t_id.
zst_einv_api_struct-transporter_name = <gw_final>-t_name.
zst_einv_api_struct-transportation_mode = <gw_final>-t_mode.
zst_einv_api_struct-transportation_distance = <gw_final>-t_distance.
zst_einv_api_struct-transporter_document_number = <gw_final>-t_doc_no.
CONCATENATE <gw_final>-t_date+6(4)
<gw_final>-t_date+3(2)
<gw_final>-t_date+0(2)
INTO zst_einv_api_struct-transporter_document_date.
zst_einv_api_struct-vehicle_number = <gw_final>-v_number.
zst_einv_api_struct-vehicle_type = <gw_final>-v_type.
IF zst_einv_api_struct-vehicle_type IS INITIAL.
zst_einv_api_struct-vehicle_type = gc_v_type_1.
ENDIF.
zst_einv_api_struct-reason_code_for_vehicle_updati = <gw_final>-v_reason_code.
zst_einv_api_struct-reason_for_vehicle_updation = <gw_final>-v_reason.
zst_einv_api_struct-remaining_distance = <gw_final>-t_r_distance.
zst_einv_api_struct-extend_validity_reason = <gw_final>-t_ext_valid_reason.
zst_einv_api_struct-extend_remarks = <gw_final>-t_ext_valid_remarks.
06.10.2020 working with program 1
zst_einv_api_struct-from_pincode = <gw_final>-t_from_pin.
zst_einv_api_struct-consignment_status = <gw_final>-t_consignment_status.
zst_einv_api_struct-transit_type = <gw_final>-t_transit_type.
zst_einv_api_struct-address_line1 = <gw_final>-t_address1.
zst_einv_api_struct-address_line2 = <gw_final>-t_address2.
zst_einv_api_struct-address_line3 = <gw_final>-t_address3.
zst_einv_api_struct-zport_code = <gw_final>-zport_code.
ENDLOOP.
ENDIF.
ENDFORM.
*& *
*& Form SET_PORT_DET
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM set_port_det .
DATA:lt_list TYPE vrm_values,
lw_list TYPE vrm_value,
lt_port TYPE TABLE OF ty_export,
ls_port TYPE ty_export.
CLEAR:lt_list,lt_port.
SELECT zport_code zport land1 zport_state
zport_address1 zport_address2
zport_place zport_pincode
FROM ztedoc_export INTO TABLE lt_port WHERE land1 = gc_land1_in..
IF sy-subrc IS INITIAL.
LOOP AT lt_port INTO ls_port.
lw_list-key = ls_port-zport_code.
lw_list-text = ls_port-zport.
APPEND lw_list TO lt_list.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'ZST_EINV_API_STRUCT-ZPORT_CODE'
values = lt_list
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.
ENDIF.
ENDFORM.
* *
***INCLUDE ZREP_EINV_EWAY_REPORT_USER_I01.
* *
*& *
*& Module USER_COMMAND_9000 INPUT
*& *
* text
* *
MODULE user_command_9000 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
PERFORM exit_program.
ENDCASE.
ENDMODULE.
*& *
*& Form CHECK_SELECTED_DATA
*& *
* text
* *
* > p1 text
06.10.2020 working with program 1
* < p2 text
* *
FORM check_selected_data CHANGING p_val.
DATA:
lv_line TYPE i.
CLEAR:gt_index,gt_row.
CALL METHOD gref_alv_grid->get_selected_rows
IMPORTING
et_index_rows = gt_index
et_row_no = gt_row.
DESCRIBE TABLE gt_row LINES lv_line.
IF lv_line IS INITIAL.
p_val = abap_true.
MESSAGE 'Please select atleast one document'(013) TYPE 'I'.
EXIT.
ENDIF.
ENDFORM.
FORM set_selected_data.
IF gt_index IS NOT INITIAL.
CALL METHOD gref_alv_grid->set_selected_rows
EXPORTING
it_index_rows = gt_index
it_row_no = gt_row.
ENDIF.
ENDFORM.
*& *
*& Form EINVOICE_GENERATE
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM einvoice_generate .
DATA: lw_index TYPE lvc_s_row,
lv_val TYPE xfeld,
lw_token TYPE string,
lw_return TYPE string,
wa_return TYPE string,
lt_messages TYPE bapiret2_t,
lw_message TYPE bapiret2,
lt_show_message TYPE esp1_message_tab_type,
lw_show_message LIKE LINE OF lt_show_message,
lt_invref TYPE TABLE OF j_1ig_invrefnum,
lw_invref TYPE j_1ig_invrefnum,
lt_einv_details TYPE TABLE OF zteinv_details,
lw_einv_details TYPE zteinv_details,
lw_kna1 TYPE ty_kna1,
lw_t005u TYPE ty_t005u,
lw_adrc TYPE ty_adrc,
lw_adr6 TYPE ty_adr6,
lw_export TYPE ty_export,
lw_vbfa TYPE ty_vbfa,
lw_wb2_v_vbak_vbap2 TYPE ty_wb2_v_vbak_vbap2,
lv_reverse_charge TYPE i VALUE 1,
*Seller Details
lw_t001w TYPE ty_t001w1,
lw_adrc_s TYPE ty_adrc,
lw_t005u_s TYPE ty_t005u,
lw_adr6_s TYPE ty_adr6,
lw_wb2_v_vbrk_vbrp2 TYPE ty_wb2_v_vbrk_vbrp2,
lw_bkpfm TYPE ty_bkpf1,
lw_bseg TYPE ty_bseg1,
06.10.2020 working with program 1
lv_index = sy-tabix.
lv_total_assessable_value = 0.
lv_total_cgst_value = 0.
lv_total_sgst_value = 0.
lv_total_igst_value = 0.
lv_total_invoice_value = 0.
lv_total_cess_value = 0.
lv_total_cess_nonadvol_value = 0.
CLEAR:lw_einv_api_hdr-total_assessable_value,lw_einv_api_hdr-total_cgst_value,lw_einv_api_hdr-total_sgst_value,lw_einv_api_hdr-total_igst_value,
lw_einv_api_hdr-total_invoice_value,lw_einv_api_hdr-total_cess_value,lw_einv_api_hdr-total_cess_nonadvol_value.
CLEAR: lv_total_assessable_value,lv_total_igst_value, lv_total_cgst_value,lv_total_sgst_value, lv_total_cess_value,lv_total_cess_nonadvol_value, lv_total_invoice_value.
LOOP AT gt_wb2_v_vbrk_vbrp2 INTO lw_wb2_v_vbrk_vbrp2 FROM lv_index.
IF lw_wb2_v_vbrk_vbrp2-vbeln NE gw_final-vbeln.
EXIT.
ENDIF.
lw_einv_api_hdr-vbeln = lw_wb2_v_vbrk_vbrp2-vbeln.
lw_einv_api_hdr-bukrs = lw_wb2_v_vbrk_vbrp2-bukrs.
lw_einv_api_hdr-doc_year = gw_final-gjahr.
lw_einv_api_hdr-doc_type = lw_wb2_v_vbrk_vbrp2-fkart.
*Data to send to the API IN JSON Scheme
READ TABLE gt_api INTO lw_usrgstin WITH KEY apiid = gc_apiid_usrgstin.
IF sy-subrc IS INITIAL.
lw_einv_api_hdr-user_gstin = lw_usrgstin-apiprov.
ELSE.
lw_einv_api_hdr-user_gstin = gw_final-sup_gstin.
ENDIF.
CONCATENATE '"' lw_einv_api_hdr-user_gstin '"' INTO lw_einv_api_hdr-user_gstin.
lw_einv_api_hdr-supply_type = gc_sup_type_b2b.
CASE lv_reverse_charge.
WHEN 1.
lw_einv_api_hdr-charge_type = gc_charge_n.
WHEN 2.
lw_einv_api_hdr-charge_type = gc_charge_y.
ENDCASE.
lw_einv_api_hdr-ecommerce_gstin = '""'.
CASE lv_document_number.
WHEN 1. "Billing Number as same as ODN
lw_einv_api_hdr-document_number = lw_wb2_v_vbrk_vbrp2-vbeln.
WHEN 2. "ODN
lw_einv_api_hdr-document_number = lw_wb2_v_vbrk_vbrp2-xblnr.
ENDCASE.
SHIFT lw_einv_api_hdr-document_number LEFT DELETING LEADING '0'.
IF lw_wb2_v_vbrk_vbrp2-fkdat IS NOT INITIAL.
CONCATENATE lw_wb2_v_vbrk_vbrp2-fkdat+6(2) '/'
lw_wb2_v_vbrk_vbrp2-fkdat+4(2) '/'
lw_wb2_v_vbrk_vbrp2-fkdat+0(4)
INTO lw_einv_api_hdr-document_date. "Required "Document Date "[2][0][1-2][0-9]-[0-1][0-9]-[0-3][0-9]" Y
ENDIF.
READ TABLE gt_doctyp INTO lw_doctyp WITH KEY fkart = lw_wb2_v_vbrk_vbrp2-fkart
bukrs = lw_wb2_v_vbrk_vbrp2-bukrs
zmodule = gc_sd.
IF sy-subrc = 0.
lw_einv_api_hdr-document_type = lw_doctyp-edoc_type.
ELSE.
lw_einv_api_hdr-document_type = gc_docty_inv.
ENDIF.
CONCATENATE '"' lw_einv_api_hdr-document_type '"' INTO lw_einv_api_hdr-document_type.
CONCATENATE '"' lw_einv_api_hdr-document_number '"' INTO lw_einv_api_hdr-document_number.
CONCATENATE '"' lw_einv_api_hdr-document_date '"' INTO lw_einv_api_hdr-document_date.
**Begin of seller_details
CLEAR: lw_t001w, lw_adrc_s, lw_adr6_s.
READ TABLE gt_t001w INTO lw_t001w WITH KEY werks = lw_wb2_v_vbrk_vbrp2-werks_i BINARY SEARCH.
IF sy-subrc EQ 0.
06.10.2020 working with program 1
IF sy-subrc EQ 0.
TRANSLATE lw_t005u-bezei TO UPPER CASE.
CONCATENATE '"' lw_t005u-bezei '"' INTO lw_einv_api_hdr-state_code_b.
ENDIF.
ENDIF.
lw_einv_api_hdr-pincode_b = '999999'.
lw_einv_api_hdr-place_of_supply_b = gc_export_place.
lw_einv_api_hdr-state_code_b = gc_exp_state.
ENDIF.
ENDIF.
ENDIF.
**End of buyer_details
*begin of dispatch_details
CONCATENATE '"' lw_t001w-name1 '"' INTO lw_einv_api_hdr-comapny_name_d.
CONCATENATE '"' lw_t001w-name2 '"' INTO lw_einv_api_hdr-address1_d .
CONCATENATE '"' lw_t001w-stras '"' INTO lw_einv_api_hdr-address2_d .
CONCATENATE '"' lw_t001w-ort01 '"' INTO lw_einv_api_hdr-location_d .
IF lw_t001w-pstlz IS NOT INITIAL.
lw_einv_api_hdr-pincode_d = lw_t001w-pstlz .
ENDIF.
CLEAR:lw_t005u_d.
READ TABLE gt_t005u_s INTO lw_t005u_s WITH KEY bland = lw_t001w-regio.
IF sy-subrc EQ 0.
TRANSLATE lw_t005u_s-bezei TO UPPER CASE.
CONCATENATE '"' lw_t005u_s-bezei '"' INTO lw_einv_api_hdr-state_code_d .
ENDIF.
*begin of dispatch_details.
*
**Begin of ship_details
CLEAR:lw_vbpa.
READ TABLE gt_vbpa INTO lw_vbpa WITH KEY vbeln = lw_wb2_v_vbrk_vbrp2-vbeln
parvw = gc_parvw_we
BINARY SEARCH.
IF sy-subrc EQ 0.
CLEAR:lw_kna1_d.
READ TABLE gt_kna1 INTO lw_kna1_d WITH KEY kunnr = lw_vbpa-kunnr BINARY SEARCH.
IF sy-subrc EQ 0.
CONCATENATE '"' lw_kna1_d-stcd3 '"' INTO lw_einv_api_hdr-gstin_sh .
CONCATENATE '"' lw_kna1_d-name1 '"' INTO lw_einv_api_hdr-legal_name_sh.
CONCATENATE '"' lw_kna1_d-name1 '"' INTO lw_einv_api_hdr-trade_name_sh. CONCATENATE '"' lw_kna1_d-name2 '"'
CONCATENATE '"' lw_kna1_d-stras '"' INTO lw_einv_api_hdr-address1_sh .
CONCATENATE '"' lw_kna1_d-name2 '"' INTO lw_einv_api_hdr-address2_sh .
IF lw_kna1_d-name2 IS NOT INITIAL AND lw_kna1_d-stras IS INITIAL.
lw_einv_api_hdr-address1_sh = lw_einv_api_hdr-address2_sh .
ENDIF.
CONCATENATE '"' lw_kna1_d-ort01 '"' INTO lw_einv_api_hdr-location_sh .
IF lw_kna1_d-pstlz IS NOT INITIAL.
lw_einv_api_hdr-pincode_sh = lw_einv_api_hdr-pincode_b .
ENDIF.
CLEAR:lw_t005u_d.
READ TABLE gt_t005u INTO lw_t005u_d WITH KEY bland = lw_kna1_d-regio.
IF sy-subrc EQ 0.
TRANSLATE lw_t005u_d-bezei TO UPPER CASE.
lw_einv_api_hdr-state_code_sh = lw_einv_api_hdr-state_code_b.
ENDIF.
CLEAR lv_export.
IF lw_t001w-land1 NE lw_kna1_d-land1.
lv_export = abap_true.
lw_einv_api_hdr-gstin_sh = gc_gstin_urp.
READ TABLE gt_export INTO lw_export WITH KEY zport_code = gw_final-zport_code.
IF sy-subrc IS INITIAL.
CONCATENATE '"' lw_export-zport_address1 '"' INTO lw_einv_api_hdr-address1_sh.
CONCATENATE '"' lw_export-zport_address2 '"' INTO lw_einv_api_hdr-address2_sh.
06.10.2020 working with program 1
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
* Implement suitable error handling here
CONCATENATE '"' '' '"' INTO lw_einv_api_hdr-invoice_remarks. "Required
ELSE.
READ TABLE lt_lines INTO lw_lines INDEX 1.
CONCATENATE '"' lw_lines-tdline '"' INTO lw_einv_api_hdr-invoice_remarks. "Required
ENDIF.
*Begin of reference_details
lw_einv_api_hdr-invoice_period_start_date = lw_einv_api_hdr-document_date.
lw_einv_api_hdr-invoice_period_end_date = lw_einv_api_hdr-document_date.
**Begin of preceding_document_details
lw_einv_api_hdr-reference_of_original_invoice = lw_einv_api_hdr-document_number.
lw_einv_api_hdr-preceding_invoice_date = lw_einv_api_hdr-document_date.
lw_einv_api_hdr-other_reference = '""'.
*End of preceding_document_details
*End of reference_details
*Begin of contract Details,
CLEAR: lw_vbfa, lw_wb2_v_vbak_vbap2.
READ TABLE gt_vbfa INTO lw_vbfa WITH KEY vbeln = gw_final-vbeln.
IF sy-subrc EQ 0.
READ TABLE gt_wb2_v_vbak_vbap2 INTO lw_wb2_v_vbak_vbap2 WITH KEY vbeln = lw_vbfa-vbelv
posnr_i = lw_vbfa-posnv
BINARY SEARCH.
IF sy-subrc EQ 0.
CONCATENATE '"' lw_wb2_v_vbak_vbap2-vbeln '"' INTO lw_einv_api_hdr-receipt_advice_number .
IF lw_wb2_v_vbak_vbap2-audat IS NOT INITIAL.
CONCATENATE '"' lw_wb2_v_vbak_vbap2-audat+6(2) '/'
lw_wb2_v_vbak_vbap2-audat+4(2) '/'
lw_wb2_v_vbak_vbap2-audat+0(4)
'"' INTO lw_einv_api_hdr-receipt_advice_date .
ENDIF.
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-charg_i '"' INTO lw_einv_api_hdr-batch_reference_number.
CONCATENATE '"' lw_wb2_v_vbak_vbap2-bname '"' INTO lw_einv_api_hdr-contract_reference_number.
CONCATENATE '"' lw_wb2_v_vbak_vbap2-ihrez '"' INTO lw_einv_api_hdr-other_reference_c.
lw_einv_api_hdr-project_reference_number = '""'.
CONCATENATE '"' lw_wb2_v_vbak_vbap2-bstnk '"' INTO lw_einv_api_hdr-vendor_po_reference_number.
IF lw_wb2_v_vbak_vbap2-bstdk IS NOT INITIAL.
CONCATENATE '"' lw_wb2_v_vbak_vbap2-bstdk+6(2) '/'
lw_wb2_v_vbak_vbap2-bstdk+4(2) '/'
lw_wb2_v_vbak_vbap2-bstdk+0(4)
'"' INTO lw_einv_api_hdr-vendor_po_reference_date.
ELSE.
lw_einv_api_hdr-vendor_po_reference_date = '""'.
ENDIF.
"End of contract_details
ENDIF.
ENDIF.
*Begin of'"additional_document_details"
lw_einv_api_hdr-supporting_document_url = '""'.
lw_einv_api_hdr-supporting_document = '""'.
lw_einv_api_hdr-additional_information = '""'.
*End of'"additional_document_details"
*Begin of value_details
********************* dafault all values to 0 ******************************
lw_einv_api_hdr-total_assessable_value = '0'.
lw_einv_api_hdr-total_cgst_value = '0'.
lw_einv_api_hdr-total_sgst_value = '0'.
lw_einv_api_hdr-total_igst_value = '0'.
06.10.2020 working with program 1
lw_einv_api_hdr-total_cess_value = '0'.
lw_einv_api_hdr-total_cess_nonadvol_value = '0'.
lw_einv_api_hdr-total_invoice_value = '0'.
lw_einv_api_hdr-total_cess_value_of_state = '0'.
lw_einv_api_hdr-round_off_amount = '0'.
lw_einv_api_hdr-total_invoice_value_additional = '0'.
lw_einv_api_hdr-total_other_charge = '0'.
********************* dafault all values to 0 ******************************
lw_einv_api_hdr-total_assessable_value = '1'. "Required
****************************************************************************************************************************************************
*Begin of item_list
********************* dafault all values to 0 ******************************
lw_einv_api_itm-quantity = '0'.
lw_einv_api_itm-free_quantity = '0'.
lw_einv_api_itm-unit_price = '0'.
lw_einv_api_itm-total_amount = '0'.
lw_einv_api_itm-pre_tax_value = '0'.
lw_einv_api_itm-discount = '0'.
lw_einv_api_itm-other_charge = '0'.
lw_einv_api_itm-gst_rate = '0'.
lw_einv_api_itm-igst_amount = '0'.
lw_einv_api_itm-cgst_amount = '0'.
lw_einv_api_itm-sgst_amount = '0'.
lw_einv_api_itm-cess_rate = '0'.
lw_einv_api_itm-cess_amount = '0'.
lw_einv_api_itm-cess_nonadvol_value = '0'.
lw_einv_api_itm-state_cess_rate = '0'.
lw_einv_api_itm-state_cess_amount = '0'.
lw_einv_api_itm-state_cess_nonadvol_amount = '0'.
lw_einv_api_itm-total_item_value = '0'.
********************* dafault all values to 0 ******************************
* check for export currency
CLEAR lv_exp_curr.
IF lw_wb2_v_vbrk_vbrp2-waerk NE 'INR'.
lv_exp_curr = abap_true.
ENDIF.
lw_einv_api_itm-bukrs = lw_wb2_v_vbrk_vbrp2-bukrs.
lw_einv_api_itm-doc_year = gw_final-gjahr.
lw_einv_api_itm-doc_type = lw_wb2_v_vbrk_vbrp2-fkart.
lw_einv_api_itm-document_type = lw_wb2_v_vbrk_vbrp2-fkart .
lw_einv_api_itm-document_number = lw_einv_api_hdr-document_number .
SHIFT lw_einv_api_itm-document_number LEFT DELETING LEADING '0'.
IF lw_wb2_v_vbrk_vbrp2-fkdat IS NOT INITIAL.
CONCATENATE lw_wb2_v_vbrk_vbrp2-fkdat+6(2) '/'
lw_wb2_v_vbrk_vbrp2-fkdat+4(2) '/'
lw_wb2_v_vbrk_vbrp2-fkdat+0(4)
INTO lw_einv_api_itm-document_date.
ENDIF.
CONCATENATE '"' lw_einv_api_itm-document_type '"' INTO lw_einv_api_itm-document_type.
CONCATENATE '"' lw_einv_api_itm-document_date '"' INTO lw_einv_api_itm-document_date.
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-posnr_i '"' INTO lw_einv_api_itm-item_serial_number .
REPLACE ALL OCCURRENCES OF '"' IN lw_wb2_v_vbrk_vbrp2-arktx_i WITH space.
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-arktx_i '"' INTO lw_einv_api_itm-product_description .
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-land1 '"' INTO lw_einv_api_itm-country_origin."'"52"'.
"get billing item text object VBBP
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = lw_wb2_v_vbrk_vbrp2-matnr_i
IMPORTING
output = lw_wb2_v_vbrk_vbrp2-matnr_i.
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-matnr_i '"' INTO lw_einv_api_itm-order_line_reference.
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-matnr_i '"' INTO lw_einv_api_itm-product_serial_number.
* '"batch details":' '{'
06.10.2020 working with program 1
* Normal items
lw_einv_api_itm-is_service = gc_service_n.
PERFORM service_item USING "lw_wb2_v_vbrk_vbrp2-posnr_i
lw_wb2_v_vbrk_vbrp2-vkorg
lw_wb2_v_vbrk_vbrp2-fkart
lw_wb2_v_vbrk_vbrp2-matnr_i
CHANGING lw_einv_api_itm-is_service.
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-ean11_i '"' INTO lw_einv_api_itm-hsn_code.
"Quantity
lw_einv_api_itm-quantity = lw_wb2_v_vbrk_vbrp2-fkimg_i . "'1'.
*Unit
CLEAR lv_output_uom.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = lw_wb2_v_vbrk_vbrp2-meins_i
IMPORTING
output = lv_output_uom
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
READ TABLE gt_doc_uom INTO ls_doc_uom WITH KEY meins = lv_output_uom.
IF sy-subrc EQ 0.
CONCATENATE '"' ls_doc_uom-edoc_uom '"' INTO lw_einv_api_itm-unit.
ELSE.
READ TABLE gt_doc_uom INTO ls_doc_uom WITH KEY meins = lw_wb2_v_vbrk_vbrp2-meins_i.
IF sy-subrc IS INITIAL.
CONCATENATE '"' ls_doc_uom-edoc_uom '"' INTO lw_einv_api_itm-unit.
ELSE.
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-meins_i '"' INTO lw_einv_api_itm-unit.
ENDIF.
ENDIF.
* Unit Price
IF lw_wb2_v_vbrk_vbrp2-fkimg_i IS NOT INITIAL .
CLEAR:lv_rate,lv_dmbtr,lv_item_amt.
IF lv_exp_curr IS NOT INITIAL.
lv_rate = lw_wb2_v_vbrk_vbrp2-netwr_i / lw_wb2_v_vbrk_vbrp2-fkimg_i.
lv_rate = lv_rate * lw_wb2_v_vbrk_vbrp2-kurrf.
lw_einv_api_itm-unit_price = lv_rate.
lw_einv_api_itm-total_amount = lw_wb2_v_vbrk_vbrp2-netwr_i *
lw_wb2_v_vbrk_vbrp2-kurrf.
ELSE.
lv_rate = lw_wb2_v_vbrk_vbrp2-netwr_i / lw_wb2_v_vbrk_vbrp2-fkimg_i.
lw_einv_api_itm-unit_price = lv_rate.
lw_einv_api_itm-total_amount = lw_wb2_v_vbrk_vbrp2-netwr_i.
lv_item_amt = lw_wb2_v_vbrk_vbrp2-netwr_i + lw_wb2_v_vbrk_vbrp2-mwsbp_i.
ENDIF.
CONDENSE:lw_einv_api_itm-unit_price,lw_einv_api_itm-total_amount.
ENDIF.
lw_einv_api_itm-pre_tax_value = '0'.
CONDENSE:lw_einv_api_itm-pre_tax_value.
"Discount amount
LOOP AT gt_tvarvc INTO lw_tvarvc WHERE name = gc_var_disc.
READ TABLE gt_konv INTO lw_konv WITH KEY knumv = lw_wb2_v_vbrk_vbrp2-knumv
kposn = lw_wb2_v_vbrk_vbrp2-posnr_i
kschl = lw_tvarvc-low.
IF sy-subrc EQ 0.
lw_konv-kbetr = lw_konv-kbetr * -1.
lw_einv_api_itm-discount = lw_einv_api_itm-discount + lw_konv-kwert.
ENDIF.
ENDLOOP.
06.10.2020 working with program 1
lw_einv_api_hdr-total_cess_nonadvol_value = lv_total_cess_nonadvol_value.
CONDENSE:lw_einv_api_hdr-total_assessable_value,lw_einv_api_hdr-total_cgst_value,lw_einv_api_hdr-total_sgst_value,lw_einv_api_hdr-total_igst_value,
lw_einv_api_hdr-total_invoice_value,lw_einv_api_hdr-total_cess_value,lw_einv_api_hdr-total_cess_nonadvol_value.
APPEND lw_einv_api_hdr TO gt_einv_api_hdr.
CLEAR:lw_einv_api_hdr.
ELSE.
MESSAGE 'Document is cancelled' TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.
ELSE.
MESSAGE 'Please select appropriate documents for E-Doc generation'(039) TYPE 'I'.
ENDIF.
ENDLOOP.
IF gt_einv_api_hdr IS NOT INITIAL.
SORT gt_einv_api_hdr .
SORT gt_einv_api_itm .
DELETE ADJACENT DUPLICATES FROM gt_einv_api_hdr COMPARING ALL FIELDS.
DELETE ADJACENT DUPLICATES FROM gt_einv_api_itm COMPARING ALL FIELDS.
lt_api_hdr = gt_einv_api_hdr .
lt_api_itm = gt_einv_api_itm .
CLEAR:lw_token,lw_return.
IF gw_token IS NOT INITIAL.
lw_token = gw_token.
ELSE.
CALL FUNCTION 'ZFM_EINVOICE_OAUTH_API'
IMPORTING
ex_token = lw_token
ex_return = lw_return
et_messages = lt_messages.
ENDIF.
IF lw_token IS NOT INITIAL." AND lw_return EQ 'S'.
CALL FUNCTION 'ZFM_EINVOICE_GENERATE_API'
EXPORTING
im_token = lw_token
im_api_hdr = lt_api_hdr
im_api_itm = lt_api_itm
IMPORTING
ex_return = lw_return
ex_invref = lt_invref
ex_messages = lt_messages
ex_einv_details = lt_einv_details.
IF lt_invref IS NOT INITIAL."lw_return EQ 'S'.
MODIFY j_1ig_invrefnum FROM TABLE lt_invref.
IF sy-subrc EQ 0.
MODIFY zteinv_details FROM TABLE lt_einv_details.
LOOP AT lt_invref INTO lw_invref.
READ TABLE gt_final ASSIGNING <gw_final> WITH KEY vbeln = lw_invref-docno.
IF sy-subrc IS INITIAL.
<gw_final>-irn = lw_invref-irn.
<gw_final>-ack_no = lw_invref-ack_no.
IF lw_invref-ack_date IS NOT INITIAL.
lv_date = lw_invref-ack_date.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lv_date
IMPORTING
date_external = <gw_final>-ack_dt
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
06.10.2020 working with program 1
ENDIF.
ENDIF.
<gw_final>-ernam = lw_invref-ernam.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_invref-erdat
IMPORTING
date_external = <gw_final>-erdat
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
<gw_final>-erzet = lw_invref-erzet.
IF lw_invref-irn_status = gc_irn_sts_act.
<gw_final>-status = 'Success'(060).
<gw_final>-icon = gc_icon_08.
<gw_final>-einv_error = space.
ELSEIF lw_invref-irn_status = gc_irn_sts_err.
<gw_final>-status = 'Error'(061).
<gw_final>-icon = gc_icon_0a.
READ TABLE lt_einv_details INTO lw_einv_details WITH KEY docno = lw_invref-docno.
IF sy-subrc IS INITIAL.
<gw_final>-einv_error = lw_einv_details-einv_error.
ENDIF.
ELSEIF lw_invref-irn_status = gc_irn_sts_cnl.
<gw_final>-status = 'Cancelled'(062).
<gw_final>-icon = gc_icon_0w.
ENDIF.
ENDIF.
ENDLOOP.
* COmmit work
COMMIT WORK.
CALL METHOD gref_alv_grid->refresh_table_display
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Table refresh error'(012) TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
CLEAR lt_show_message.
IF lt_messages IS NOT INITIAL.
LOOP AT lt_messages INTO lw_message.
IF lw_message-type IS NOT INITIAL.
lw_show_message-msgid = gc_msgid_01.
lw_show_message-msgty = lw_message-type.
lw_show_message-msgno = gc_msgno_319.
lw_show_message-msgv1 = lw_message-message_v1.
lw_show_message-msgv2 = lw_message-message_v2.
lw_show_message-msgv3 = lw_message-message_v3.
lw_show_message-msgv4 = lw_message-message_v4.
APPEND lw_show_message TO lt_show_message.
ENDIF.
ENDLOOP.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = lt_show_message.
ENDIF.
ELSE.
06.10.2020 working with program 1
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
* *
* FORM EXIT_PROGRAM *
* *
FORM exit_program.
CALL METHOD gref_alv_container->free.
LEAVE TO SCREEN 0.
ENDFORM.
*& *
*& Form EINVOICE_CANCEL
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM einvoice_cancel USING p_lv_reason_code
p_lv_reason.
DATA:lw_token TYPE string,
lw_return TYPE string,
wa_return TYPE string,
lt_messages TYPE bapiret2_t,
lw_message TYPE bapiret2,
lt_show_message TYPE esp1_message_tab_type,
lw_show_message LIKE LINE OF lt_show_message,
lt_invref TYPE TABLE OF j_1ig_invrefnum,
lw_invref TYPE j_1ig_invrefnum,
lw_index LIKE LINE OF gt_index,
lv_val TYPE xfeld,
lv_answer TYPE c,
lv_gstin TYPE kna1-stcd3,
lv_reason TYPE char20,
lv_remarks TYPE char255,
ls_values TYPE dd07v,
lv_internal_date TYPE sy-datum,
lw_usrgstin TYPE ty_api.
FIELD-SYMBOLS <gw_final> TYPE ty_final.
PERFORM check_selected_data CHANGING lv_val.
IF lv_val IS INITIAL.
LOOP AT gt_index INTO lw_index.
READ TABLE gt_final INTO gw_final INDEX lw_index-index.
IF sy-subrc IS INITIAL AND gw_final-irn IS NOT INITIAL.
lv_gstin = gw_final-sup_gstin.
SELECT * FROM j_1ig_invrefnum APPENDING TABLE lt_invref
WHERE bukrs = gw_final-bukrs AND
docno = gw_final-vbeln AND
doc_type = gw_final-fkart AND
irn = gw_final-irn.
ENDIF.
ENDLOOP.
READ TABLE gt_api INTO lw_usrgstin WITH KEY apiid = gc_apiid_usrgstin.
IF sy-subrc IS INITIAL.
lv_gstin = lw_usrgstin-apiprov.
ENDIF.
IF lt_invref IS NOT INITIAL.
CLEAR:lw_token,lw_return.
IF gw_token IS NOT INITIAL.
lw_token = gw_token.
ELSE.
CALL FUNCTION 'ZFM_EINVOICE_OAUTH_API'
06.10.2020 working with program 1
IMPORTING
ex_token = lw_token
ex_return = lw_return
et_messages = lt_messages.
ENDIF.
IF lw_token IS NOT INITIAL.
CONCATENATE '"' p_lv_reason_code '"' INTO lv_reason.
CONCATENATE '"' p_lv_reason '"' INTO lv_remarks.
CONCATENATE '"' lv_gstin '"' INTO lv_gstin.
CALL FUNCTION 'ZFM_EINVOICE_CANCEL_API'
EXPORTING
im_token = lw_token
im_invref = lt_invref
im_gstin = lv_gstin
im_reason = lv_reason
im_remarks = lv_remarks
IMPORTING
ex_return = lw_return
ex_invref = lt_invref
ex_messages = lt_messages.
IF lt_invref IS NOT INITIAL."lw_return EQ 'S'.
MODIFY j_1ig_invrefnum FROM TABLE lt_invref.
LOOP AT lt_invref INTO lw_invref.
READ TABLE gt_final ASSIGNING <gw_final> WITH KEY vbeln = lw_invref-docno.
IF sy-subrc IS INITIAL.
IF lw_invref-cancel_date IS NOT INITIAL.
lw_invref-irn_status = gc_irn_sts_cnl.
UPDATE zteinv_details SET e_reason_code = p_lv_reason_code
e_reason = p_lv_reason
aenam = sy-uname
aedat = sy-datum
WHERE bukrs = lw_invref-bukrs AND
docno = lw_invref-docno AND
doctyp = lw_invref-doc_type AND
gjahr = lw_invref-doc_year.
IF sy-subrc IS INITIAL.
lv_internal_date = lw_invref-cancel_date.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lv_internal_date
IMPORTING
date_external = <gw_final>-canc_dt
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
ENDIF.
* ENDIF.
ENDIF.
IF lw_invref-irn_status = gc_irn_sts_act.
<gw_final>-status = 'Success'(060).
<gw_final>-icon = gc_icon_08.
ELSEIF lw_invref-irn_status = gc_irn_sts_err.
<gw_final>-status = 'Error'(061).
<gw_final>-icon = gc_icon_0a.
ELSEIF lw_invref-irn_status = gc_irn_sts_cnl.
<gw_final>-status = 'Cancelled'(062).
<gw_final>-icon = gc_icon_0w.
ENDIF.
ENDIF.
ENDLOOP.
06.10.2020 working with program 1
* Commit work
COMMIT WORK.
CALL METHOD gref_alv_grid->refresh_table_display
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Table refresh error'(012) TYPE 'I'.
ENDIF.
* ENDIF.
ENDIF.
ENDIF.
CLEAR lt_show_message.
IF lt_messages IS NOT INITIAL.
LOOP AT lt_messages INTO lw_message.
lw_show_message-msgid = gc_msgid_01.
lw_show_message-msgty = lw_message-type.
lw_show_message-msgno = gc_msgno_319.
lw_show_message-msgv1 = lw_message-message_v1.
lw_show_message-msgv2 = lw_message-message_v2.
lw_show_message-msgv3 = lw_message-message_v3.
lw_show_message-msgv4 = lw_message-message_v4.
APPEND lw_show_message TO lt_show_message.
ENDLOOP.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = lt_show_message.
ENDIF.
ELSE.
MESSAGE 'Please select appropriate documents for E-Invoice cancellation'(014) TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
*& *
*& Form CALL_POPUP
*& *
* text
* *
* >P_TEXT_T20 text
* >P_TEXT_T21 text
* *
FORM call_popup USING p_text_t20
p_text_t21
CHANGING p_text_t22 TYPE c.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = p_text_t20
text_question = p_text_t21
text_button_1 = 'Yes'(107)
text_button_2 = 'No'(108)
display_cancel_button = abap_true
IMPORTING
answer = p_text_t22
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
*& *
*& Module USER_COMMAND_9001 INPUT
06.10.2020 working with program 1
*& *
* text
* *
MODULE user_command_9001 INPUT.
DATA:lw_index LIKE LINE OF gt_index.
DATA:lv_answer TYPE c.
FIELD-SYMBOLS <gw_final> TYPE ty_final.
DATA: lt_zteway_transport TYPE TABLE OF zteway_transport,
ls_zteway_transport TYPE zteway_transport.
CASE sy-ucomm.
WHEN 'OK'.
PERFORM call_popup USING text-t23 text-t30
CHANGING lv_answer.
IF lv_answer = '1'.
LOOP AT gt_index INTO lw_index.
READ TABLE gt_final ASSIGNING <gw_final> INDEX lw_index-index.
IF sy-subrc IS INITIAL.
<gw_final>-t_id = zst_einv_api_struct-transporter_id.
<gw_final>-t_name = zst_einv_api_struct-transporter_name.
<gw_final>-t_mode = zst_einv_api_struct-transportation_mode.
<gw_final>-t_distance = zst_einv_api_struct-transportation_distance.
<gw_final>-t_doc_no = zst_einv_api_struct-transporter_document_number.
IF zst_einv_api_struct-transporter_document_date IS NOT INITIAL.
CONCATENATE zst_einv_api_struct-transporter_document_date+6(2) '/'
zst_einv_api_struct-transporter_document_date+4(2) '/'
zst_einv_api_struct-transporter_document_date+0(4)
INTO <gw_final>-t_date.
ENDIF.
CONDENSE zst_einv_api_struct-vehicle_number NO-GAPS.
<gw_final>-v_number = zst_einv_api_struct-vehicle_number.
<gw_final>-v_type = zst_einv_api_struct-vehicle_type.
<gw_final>-t_r_distance = zst_einv_api_struct-remaining_distance.
<gw_final>-t_ext_valid_reason = zst_einv_api_struct-vehicle_type.
<gw_final>-t_ext_valid_remarks = zst_einv_api_struct-extend_remarks.
<gw_final>-t_from_pin = zst_einv_api_struct-from_pincode.
<gw_final>-t_consignment_status = zst_einv_api_struct-consignment_status.
<gw_final>-t_transit_type = zst_einv_api_struct-transit_type.
IF zst_einv_api_struct-transportation_mode NE gc_tmode_5.
<gw_final>-t_transit_type = space.
ENDIF.
<gw_final>-t_address1 = zst_einv_api_struct-address_line1.
<gw_final>-t_address2 = zst_einv_api_struct-address_line2.
<gw_final>-t_address3 = zst_einv_api_struct-address_line3.
<gw_final>-v_reason_code = zst_einv_api_struct-reason_code_for_vehicle_updati.
<gw_final>-v_reason = zst_einv_api_struct-reason_for_vehicle_updation.
<gw_final>-zport_code = zst_einv_api_struct-zport_code.
ENDIF.
ls_zteway_transport-bukrs = <gw_final>-bukrs.
ls_zteway_transport-doctyp = <gw_final>-fkart.
ls_zteway_transport-docno = <gw_final>-vbeln.
ls_zteway_transport-gjahr = <gw_final>-gjahr.
ls_zteway_transport-t_id = <gw_final>-t_id.
ls_zteway_transport-t_name = <gw_final>-t_name.
ls_zteway_transport-t_doc_no = <gw_final>-t_doc_no.
ls_zteway_transport-t_date = zst_einv_api_struct-transporter_document_date.
ls_zteway_transport-t_mode = <gw_final>-t_mode.
ls_zteway_transport-t_distance = <gw_final>-t_distance.
ls_zteway_transport-v_number = <gw_final>-v_number.
ls_zteway_transport-v_type = <gw_final>-v_type.
ls_zteway_transport-t_r_distance = <gw_final>-t_r_distance.
ls_zteway_transport-t_ext_valid_reason = <gw_final>-t_ext_valid_reason.
ls_zteway_transport-t_ext_valid_remarks = <gw_final>-t_ext_valid_remarks.
ls_zteway_transport-t_from_pin = <gw_final>-t_from_pin.
06.10.2020 working with program 1
ls_zteway_transport-t_consignment_status = <gw_final>-t_consignment_status.
ls_zteway_transport-t_transit_type = <gw_final>-t_transit_type.
ls_zteway_transport-t_address1 = <gw_final>-t_address1.
ls_zteway_transport-t_address2 = <gw_final>-t_address2.
ls_zteway_transport-t_address3 = <gw_final>-t_address3.
ls_zteway_transport-v_reason_code = <gw_final>-v_reason_code.
ls_zteway_transport-v_reason = <gw_final>-v_reason.
ls_zteway_transport-zport_code = <gw_final>-zport_code.
ls_zteway_transport-eway_print = <gw_final>-eway_print.
ls_zteway_transport-eway_error = <gw_final>-eway_error.
READ TABLE gt_zteway_transport TRANSPORTING NO FIELDS WITH KEY bukrs = <gw_final>-bukrs
doctyp = <gw_final>-fkart
docno = <gw_final>-vbeln.
IF sy-subrc IS INITIAL.
ls_zteway_transport-aenam = sy-uname.
ls_zteway_transport-aedat = sy-datum.
ELSE.
ls_zteway_transport-ernam = sy-uname.
ls_zteway_transport-erdat = sy-datum.
ENDIF.
* APPEND ls_zteway_transport TO lt_zteway_transport.
MODIFY zteway_transport FROM ls_zteway_transport.
IF sy-subrc IS NOT INITIAL.
MESSAGE 'Data update error'(022) TYPE 'I'.
ENDIF.
ENDLOOP.
CALL METHOD gref_alv_grid->refresh_table_display
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Table refresh error'(012) TYPE 'I'.
ENDIF.
PERFORM set_selected_data.
LEAVE TO SCREEN 0.
ENDIF.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
*& *
*& Form EWAYBILL_GENERATE
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM ewaybill_generate.
DATA:lw_index TYPE lvc_s_row,
lv_val TYPE xfeld,
lv_answer TYPE c,
lv_index TYPE sy-tabix,
lw_token TYPE string,
lw_return TYPE string,
wa_return TYPE string,
lt_messages TYPE bapiret2_t,
lw_message TYPE bapiret2,
lt_show_message TYPE esp1_message_tab_type,
lw_show_message LIKE LINE OF lt_show_message,
lw_etransport TYPE zteway_transport,
lt_ewaybill TYPE TABLE OF j_1ig_ewaybill,
lw_ewaybill TYPE j_1ig_ewaybill,
06.10.2020 working with program 1
lv_total_igst_value = 0.
lv_total_cess_value = 0.
lv_total_cessnoval_value = 0.
lv_total_taxable_value = 0.
LOOP AT gt_wb2_v_vbrk_vbrp2 INTO lw_wb2_v_vbrk_vbrp2 FROM lv_index.
IF lw_wb2_v_vbrk_vbrp2-vbeln NE gw_final-vbeln.
EXIT.
ENDIF.
********************************* Begin of Fill header derails ***********************************************
lw_eway_api_hdr-bukrs = lw_wb2_v_vbrk_vbrp2-bukrs.
READ TABLE gt_api INTO lw_usrgstin WITH KEY apiid = gc_apiid_eusrgstin.
IF sy-subrc IS INITIAL.
CONCATENATE '"' lw_usrgstin-apiprov '"' INTO lw_eway_api_hdr-user_gstin.
ELSE.
CONCATENATE '"' gw_final-sup_gstin '"' INTO lw_eway_api_hdr-user_gstin.
ENDIF.
READ TABLE gt_doctyp INTO ls_doctyp WITH KEY fkart = lw_wb2_v_vbrk_vbrp2-fkart.
IF sy-subrc EQ 0.
lv_supply_type = ls_doctyp-sup_type.
lv_sub_supply_type = ls_doctyp-sub_type.
lv_document_type = ls_doctyp-edoc_type.
ENDIF.
*& Supply Type
READ TABLE gt_supply_values INTO ls_values WITH KEY domvalue_l = lv_supply_type.
IF sy-subrc EQ 0.
TRANSLATE ls_values-ddtext TO UPPER CASE.
CONCATENATE '"' ls_values-ddtext '"' INTO lw_eway_api_hdr-supply_type.
ENDIF.
*& Sub Supply Type
READ TABLE gt_sub_supply_values INTO ls_values WITH KEY domvalue_l = lv_sub_supply_type.
IF sy-subrc EQ 0.
TRANSLATE ls_values-ddtext TO UPPER CASE.
CONCATENATE '"' ls_values-ddtext '"' INTO lw_eway_api_hdr-sub_supply_type.
CONCATENATE '"' ls_values-ddtext '"' INTO lw_eway_api_hdr-sub_supply_description.
ENDIF.
*& Document Type
READ TABLE gt_doctyp_values INTO ls_values WITH KEY domvalue_l = lv_document_type.
IF sy-subrc EQ 0.
TRANSLATE ls_values-ddtext TO UPPER CASE.
CONCATENATE '"' ls_values-ddtext '"' INTO lw_eway_api_hdr-document_type.
ENDIF.
CONCATENATE '"' gw_final-gjahr '"' INTO lw_eway_api_hdr-doc_year.
CASE lv_document_number.
WHEN 1. "Billing Number as same as ODN
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-vbeln '"' INTO lw_eway_api_hdr-document_number.
WHEN 2. "ODN
CONCATENATE '"' lw_wb2_v_vbrk_vbrp2-xblnr '"' INTO lw_eway_api_hdr-document_number.
ENDCASE.
lw_eway_api_hdr-vbeln = lw_wb2_v_vbrk_vbrp2-vbeln.
CONCATENATE '"'
lw_wb2_v_vbrk_vbrp2-fkdat+6(2) '/'
lw_wb2_v_vbrk_vbrp2-fkdat+4(2) '/'
lw_wb2_v_vbrk_vbrp2-fkdat+0(4)
'"' INTO lw_eway_api_hdr-document_date.
*** Supplier details
CLEAR: lw_t001w. ", lw_adrc_s, lw_adr6_s.
READ TABLE gt_t001w INTO lw_t001w WITH KEY werks = lw_wb2_v_vbrk_vbrp2-werks_i BINARY SEARCH.
IF sy-subrc EQ 0.
READ TABLE gt_api INTO lw_usrgstin WITH KEY apiid = gc_apiid_esupgstin.
IF sy-subrc IS INITIAL.
CONCATENATE '"' lw_usrgstin-apiprov '"' INTO lw_eway_api_hdr-gstin_of_consignor.
ELSE.
CONCATENATE '"' gw_final-sup_gstin '"' INTO lw_eway_api_hdr-gstin_of_consignor.
06.10.2020 working with program 1
ENDIF.
CONCATENATE '"' lw_t001w-name1 '"' INTO lw_eway_api_hdr-legal_name_of_consignor.
CONCATENATE '"' lw_t001w-name2 '"' INTO lw_eway_api_hdr-address1_of_consignor.
CONCATENATE '"' lw_t001w-stras '"' INTO lw_eway_api_hdr-address2_of_consignor.
CONCATENATE '"' lw_t001w-ort01 '"' INTO lw_eway_api_hdr-place_of_consignor.
CONCATENATE '"' lw_t001w-pstlz '"' INTO lw_eway_api_hdr-pincode_of_consignor.
CLEAR:lw_t005u_s.
READ TABLE gt_t005u_s INTO lw_t005u_s WITH KEY bland = lw_t001w-regio.
IF sy-subrc EQ 0.
TRANSLATE lw_t005u_s-bezei TO UPPER CASE.
CONCATENATE '"' lw_t005u_s-bezei '"' INTO lw_eway_api_hdr-state_of_consignor.
ENDIF.
CONCATENATE '"' lw_t005u_s-bezei '"' INTO lw_eway_api_hdr-actual_from_state_name.
ENDIF.
*** Buyer details
CLEAR:lw_kna1, lw_adrc, lw_adr6.
READ TABLE gt_vbpa INTO lw_vbpa WITH KEY vbeln = lw_wb2_v_vbrk_vbrp2-vbeln
parvw = gc_parvw_re
BINARY SEARCH.
IF sy-subrc IS INITIAL.
READ TABLE gt_kna1 INTO lw_kna1 WITH KEY kunnr = lw_vbpa-kunnr BINARY SEARCH.
IF sy-subrc EQ 0.
READ TABLE gt_api INTO lw_usrgstin WITH KEY apiid = gc_apiid_ebuygstin.
IF sy-subrc IS INITIAL.
CONCATENATE '"' lw_usrgstin-apiprov '"' INTO lw_eway_api_hdr-gstin_of_consignee.
ELSE.
IF lw_kna1-stcd3 IS NOT INITIAL.
CONCATENATE '"' lw_kna1-stcd3 '"' INTO lw_eway_api_hdr-gstin_of_consignee.
ELSE.
lw_eway_api_hdr-gstin_of_consignee = gc_gstin_urp.
ENDIF.
ENDIF.
CONCATENATE '"' lw_kna1-name1 '"' INTO lw_eway_api_hdr-legal_name_of_consignee.
CLEAR:lw_t005u.
READ TABLE gt_t005u INTO lw_t005u WITH KEY bland = lw_kna1-regio.
IF sy-subrc EQ 0.
TRANSLATE lw_t005u-bezei TO UPPER CASE.
CONCATENATE '"' lw_t005u-bezei '"' INTO lw_eway_api_hdr-actual_to_state_name.
ENDIF.
CONCATENATE '"' lw_t005u-bezei '"' INTO lw_eway_api_hdr-state_of_supply.
READ TABLE gt_vbpa INTO lw_vbpa WITH KEY vbeln = lw_wb2_v_vbrk_vbrp2-vbeln
parvw = gc_parvw_we
BINARY SEARCH.
IF sy-subrc IS INITIAL.
READ TABLE gt_kna1 INTO lw_kna1 WITH KEY kunnr = lw_vbpa-kunnr BINARY SEARCH.
IF sy-subrc IS INITIAL.
READ TABLE gt_adrc INTO lw_adrc WITH KEY addrnumber = lw_kna1-adrnr.
READ TABLE gt_adr6 INTO lw_adr6 WITH KEY addrnumber = lw_adrc-addrnumber.
CONCATENATE '"' lw_kna1-stras '"' INTO lw_eway_api_hdr-address1_of_consignee.
CONCATENATE '"' lw_kna1-name2 '"' INTO lw_eway_api_hdr-address2_of_consignee.
CONCATENATE '"' lw_kna1-ort01 '"' INTO lw_eway_api_hdr-place_of_consignee.
CONCATENATE '"' lw_kna1-pstlz '"' INTO lw_eway_api_hdr-pincode_of_consignee.
CLEAR:lw_t005u.
READ TABLE gt_t005u INTO lw_t005u WITH KEY bland = lw_kna1-regio.
IF sy-subrc EQ 0.
TRANSLATE lw_t005u-bezei TO UPPER CASE.
CONCATENATE '"' lw_t005u-bezei '"' INTO lw_eway_api_hdr-actual_to_state_name.
ENDIF.
* Set the export flag
CLEAR lv_export.
IF lw_t001w-land1 NE lw_kna1-land1.
lv_export = abap_true.
ENDIF.
06.10.2020 working with program 1
IF lw_eway_api_hdr-sub_supply_type = gc_sub_suptyp_exp OR
lv_export = abap_true.
lw_eway_api_hdr-state_of_supply = gc_export_place.
lw_eway_api_hdr-gstin_of_consignee = gc_gstin_urp.
READ TABLE gt_export INTO ls_export WITH KEY zport_code = gw_final-zport_code.
IF sy-subrc IS INITIAL..
CONCATENATE '"' ls_export-zport_address1 '"' INTO lw_eway_api_hdr-address1_of_consignee.
CONCATENATE '"' ls_export-zport_address2 '"' INTO lw_eway_api_hdr-address2_of_consignee.
CONCATENATE '"' ls_export-zport_place '"' INTO lw_eway_api_hdr-place_of_consignee.
CONCATENATE '"' ls_export-zport_pincode '"' INTO lw_eway_api_hdr-pincode_of_consignee.
CLEAR:lw_t005u.
READ TABLE gt_t005u INTO lw_t005u WITH KEY bland = ls_export-zport_state.
IF sy-subrc EQ 0.
TRANSLATE lw_t005u-bezei TO UPPER CASE.
CONCATENATE '"' lw_t005u-bezei '"' INTO lw_eway_api_hdr-actual_to_state_name.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*** Value details
"default value
lw_eway_api_hdr-other_value = '0'.
lw_eway_api_hdr-total_invoice_value = '0'.
lw_eway_api_hdr-taxable_amount = '0'.
lw_eway_api_hdr-cgst_amount = '0'.
lw_eway_api_hdr-sgst_amount = '0'.
lw_eway_api_hdr-igst_amount = '0'.
lw_eway_api_hdr-cess_amount = '0'.
lw_eway_api_hdr-cess_nonadvol_value = '0'.
* Transaction Type
IF ( ( lw_eway_api_hdr-state_of_consignor = lw_eway_api_hdr-actual_from_state_name ) AND
( lw_eway_api_hdr-state_of_supply = lw_eway_api_hdr-actual_to_state_name ) ).
lw_eway_api_hdr-transaction_type = 1.
ELSEIF ( ( lw_eway_api_hdr-state_of_consignor = lw_eway_api_hdr-actual_from_state_name ) AND
( lw_eway_api_hdr-state_of_supply NE lw_eway_api_hdr-actual_to_state_name ) ).
lw_eway_api_hdr-transaction_type = 2.
ELSEIF ( ( lw_eway_api_hdr-state_of_consignor NE lw_eway_api_hdr-actual_from_state_name ) AND
( lw_eway_api_hdr-state_of_supply = lw_eway_api_hdr-actual_to_state_name ) ).
lw_eway_api_hdr-transaction_type = 3.
ELSEIF ( ( lw_eway_api_hdr-state_of_consignor NE lw_eway_api_hdr-actual_from_state_name ) AND
( lw_eway_api_hdr-state_of_supply NE lw_eway_api_hdr-actual_to_state_name ) ).
lw_eway_api_hdr-transaction_type = 4.
ENDIF.
CONDENSE lw_eway_api_hdr-transaction_type.
lw_eway_api_hdr-generate_status = gc_gen_sts_1.
lw_eway_api_hdr-data_source = gc_dsource_erp.
CONCATENATE '"' sy-uname '"' INTO lw_eway_api_hdr-user_ref.
CONCATENATE '"' lw_kna1-ort01 '"' INTO lw_eway_api_hdr-location_code.
*& Generate E-Way Bill Part A & Part B.
IF gv_e_comm EQ gc_ucomm_eeayg.
lw_eway_api_hdr-eway_bill_status = gc_ewaysts_abc.
ELSE.
*& Generate E-Way Bill Part A only.
lw_eway_api_hdr-eway_bill_status = gc_ewaysts_ac.
ENDIF.
*& Auto print E-way Bill
lw_eway_api_hdr-auto_print = gc_eway_print.
CONCATENATE '"' lw_adr6-smtp_addr '"' INTO lw_eway_api_hdr-email.
*** Transport details
CONCATENATE '"' gw_final-t_id '"' INTO lw_eway_api_hdr-transporter_id.
06.10.2020 working with program 1
CLEAR:lw_t005u.
READ TABLE gt_t005u INTO lw_t005u WITH KEY bland = lw_kna1-regio.
IF sy-subrc EQ 0.
TRANSLATE lw_t005u-bezei TO UPPER CASE.
CONCATENATE '"' lw_t005u-bezei '"' INTO lw_eway_api_hdr-state_of_supply.
ENDIF.
CONCATENATE '"' lw_t005u-bezei '"' INTO lw_eway_api_hdr-actual_to_state_name.
ENDIF.
*** Value details
"default value
lw_eway_api_hdr-other_value = '0'.
lw_eway_api_hdr-total_invoice_value = '0'.
lw_eway_api_hdr-taxable_amount = '0'.
lw_eway_api_hdr-cgst_amount = '0'.
lw_eway_api_hdr-sgst_amount = '0'.
lw_eway_api_hdr-igst_amount = '0'.
lw_eway_api_hdr-cess_amount = '0'.
lw_eway_api_hdr-cess_nonadvol_value = '0'.
CONCATENATE '"' 'REGULAR' '"' INTO lw_eway_api_hdr-transaction_type.
CONCATENATE '"' '1' '"' INTO lw_eway_api_hdr-generate_status.
CONCATENATE '"' 'ERP' '"' INTO lw_eway_api_hdr-data_source.
CONCATENATE '"' sy-uname '"' INTO lw_eway_api_hdr-user_ref.
CONCATENATE '"' lw_kna1-ort01 '"' INTO lw_eway_api_hdr-location_code.
*& Generate E-Way Bill Part A & Part B.
IF gv_e_comm EQ 'EEAYG'.
CONCATENATE '"' 'ABC' '"' INTO lw_eway_api_hdr-eway_bill_status.
ELSE.
*& Generate E-Way Bill Part A only.
CONCATENATE '"' 'AC' '"' INTO lw_eway_api_hdr-eway_bill_status.
ENDIF.
*& Auto print E-way Bill
CONCATENATE '"' 'Y' '"' INTO lw_eway_api_hdr-auto_print.
CONCATENATE '"' lw_adr6-smtp_addr '"' INTO lw_eway_api_hdr-email.
*** Transport details
CONCATENATE '"' gw_final-t_id '"' INTO lw_eway_api_hdr-transporter_id.
CONCATENATE '"' gw_final-t_name '"' INTO lw_eway_api_hdr-transporter_name.
READ TABLE gt_t_mode_values INTO ls_values WITH KEY domvalue_l = gw_final-t_mode.
IF sy-subrc EQ 0.
TRANSLATE ls_values-ddtext TO UPPER CASE.
CONCATENATE '"' ls_values-ddtext '"' INTO lw_eway_api_hdr-transportation_mode.
ENDIF.
CONCATENATE '"' gw_final-t_distance '"' INTO lw_eway_api_hdr-transportation_distance.
CONCATENATE '"' gw_final-t_doc_no '"' INTO lw_eway_api_hdr-transporter_document_number.
CONCATENATE '"' gw_final-t_date '"' INTO lw_eway_api_hdr-transporter_document_date.
CONCATENATE '"' gw_final-v_number '"' INTO lw_eway_api_hdr-vehicle_number.
READ TABLE gt_v_type_values INTO ls_values WITH KEY domvalue_l = gw_final-v_type.
IF sy-subrc EQ 0.
TRANSLATE ls_values-ddtext TO UPPER CASE.
CONCATENATE '"' ls_values-ddtext '"' INTO lw_eway_api_hdr-vehicle_type.
ENDIF.
********************************* End of Fill header derails ***********************************************
********************************** Begin of Fill item derails ************************************************
*** Rest item tax rate
lw_eway_api_itm-cgst_rate = '0'.
lw_eway_api_itm-sgst_rate = '0'.
lw_eway_api_itm-igst_rate = '0'.
lw_eway_api_itm-cess_rate = '0'.
lw_eway_api_itm-cessnonadvol = '0'.
lw_eway_api_itm-bukrs = lw_eway_api_hdr-bukrs.
lw_eway_api_itm-document_number = lw_eway_api_hdr-document_number.
lw_eway_api_itm-doc_year = lw_eway_api_hdr-doc_year.
lw_eway_api_itm-document_type = lw_eway_api_hdr-document_type.
lw_eway_api_itm-document_date = lw_eway_api_hdr-document_date.
06.10.2020 working with program 1
lw_eway_api_itm-cessnonadvol = 0.
lv_total_cessnoval_value = lv_total_cessnoval_value + 0.
lv_total_taxable_value = lv_total_taxable_value + lw_wb2_v_likp_lips2-netwr.
APPEND lw_eway_api_itm TO gt_eway_api_itm.
CLEAR:lw_eway_api_itm.
*********************************** End of Fill item derails ************************************************
ENDLOOP.
lw_eway_api_hdr-total_invoice_value = lv_total_taxable_value +
lv_total_cgst_value +
lv_total_sgst_value +
lv_total_igst_value +
lv_total_cess_value +
lv_total_cessnoval_value.
lw_eway_api_hdr-other_value = 0.
lw_eway_api_hdr-taxable_amount = lv_total_taxable_value.
lw_eway_api_hdr-cgst_amount = lv_total_cgst_value.
lw_eway_api_hdr-sgst_amount = lv_total_sgst_value.
lw_eway_api_hdr-igst_amount = lv_total_igst_value.
lw_eway_api_hdr-cess_amount = lv_total_cess_value.
lw_eway_api_hdr-cess_nonadvol_value = lv_total_cessnoval_value.
APPEND lw_eway_api_hdr TO gt_eway_api_hdr.
CLEAR:lw_eway_api_hdr.
ENDIF.
ENDIF.
ENDIF.
ELSE.
MESSAGE 'Please select appropriate documents for E-Doc generation'(039) TYPE 'I'.
ENDIF.
ENDLOOP.
IF gt_eway_api_hdr IS NOT INITIAL.
SORT gt_eway_api_hdr .
SORT gt_eway_api_itm .
DELETE ADJACENT DUPLICATES FROM gt_eway_api_hdr COMPARING ALL FIELDS.
DELETE ADJACENT DUPLICATES FROM gt_einv_api_itm COMPARING ALL FIELDS.
lt_api_hdr = gt_eway_api_hdr .
lt_api_itm = gt_eway_api_itm .
CLEAR lv_error.
CALL FUNCTION 'ZFM_EWAY_BILL_VALIDATION'
EXPORTING
im_ucomm = gv_e_comm
im_api_header = gt_eway_api_hdr
IMPORTING
ex_error = lv_error.
IF lv_error = ' '.
CLEAR:lw_token,lw_return.
IF gw_token IS NOT INITIAL.
lw_token = gw_token.
ELSE.
CALL FUNCTION 'ZFM_EINVOICE_OAUTH_API'
IMPORTING
ex_token = lw_token
ex_return = lw_return
et_messages = lt_messages.
ENDIF.
IF lw_token IS NOT INITIAL.
CALL FUNCTION 'ZFM_EWAY_BILL_GENERATE_API'
EXPORTING
im_token = lw_token
im_api_header = lt_api_hdr
im_api_item = lt_api_itm
IMPORTING
ex_return = lw_return
ex_messages = lt_messages
06.10.2020 working with program 1
ex_ewaybill = lt_ewaybill
ex_eway_transport = lt_eway_transport.
IF lt_ewaybill IS NOT INITIAL.
LOOP AT lt_ewaybill ASSIGNING <lw_ewaybill>.
READ TABLE gt_final INTO gw_final WITH KEY vbeln = <lw_ewaybill>-docno.
IF sy-subrc = 0.
<lw_ewaybill>-gjahr = gw_final-gjahr.
<lw_ewaybill>-doctyp = gw_final-fkart.
ENDIF.
ENDLOOP.
MODIFY j_1ig_ewaybill FROM TABLE lt_ewaybill.
IF sy-subrc EQ 0.
COMMIT WORK.
LOOP AT lt_ewaybill INTO lw_ewaybill.
READ TABLE gt_final ASSIGNING <gw_final> WITH KEY vbeln = lw_ewaybill-docno.
IF sy-subrc IS INITIAL.
<gw_final>-eway_num = lw_ewaybill-ebillno.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-egen_dat
IMPORTING
date_external = <gw_final>-eway_date
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
<gw_final>-eway_ernam = lw_ewaybill-ernam.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-erdat
IMPORTING
date_external = <gw_final>-eway_erdat
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
<gw_final>-eway_erzet = lw_ewaybill-egen_time.
*Valid upto
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-vdtodate
IMPORTING
date_external = <gw_final>-eway_v_to
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date conversion error'(m02) TYPE 'I'.
ENDIF.
IF lw_ewaybill-status = gc_eway_sts_a.
<gw_final>-eway_status = 'Success'(060).
<gw_final>-eway_icon = gc_icon_08.
<gw_final>-eway_error = space.
ELSEIF lw_ewaybill-status = gc_eway_sts_e.
<gw_final>-eway_status = 'Error'(061).
<gw_final>-eway_icon = gc_icon_0a.
ELSEIF lw_ewaybill-status = gc_eway_sts_c.
<gw_final>-eway_status = 'Cancelled'(062).
<gw_final>-eway_icon = gc_icon_0w.
06.10.2020 working with program 1
ENDIF.
ENDIF.
ENDLOOP.
CLEAR lt_show_message.
IF lt_messages IS NOT INITIAL.
LOOP AT gt_index INTO lw_index.
READ TABLE gt_final ASSIGNING <gw_final> INDEX lw_index-index.
IF sy-subrc EQ 0.
CLEAR: lv_string,lw_etransport.
LOOP AT lt_messages INTO lw_message WHERE message_v3 = <gw_final>-vbeln.
lw_show_message-msgid = gc_msgid_01.
lw_show_message-msgty = lw_message-type.
lw_show_message-msgno = gc_msgno_319.
lw_show_message-msgv1 = lw_message-message_v1.
lw_show_message-msgv2 = lw_message-message_v2.
lw_show_message-msgv3 = lw_message-message_v3.
lw_show_message-msgv4 = lw_message-message_v4.
APPEND lw_show_message TO lt_show_message.
IF lw_message-type = gc_mtype_s.
READ TABLE lt_eway_transport INTO ls_eway_transport WITH KEY docno = <gw_final>-vbeln.
IF sy-subrc IS INITIAL.
<gw_final>-eway_print = ls_eway_transport-eway_print.
ELSE.
<gw_final>-eway_print = lw_message-message_v4.
ENDIF.
UPDATE zteway_transport SET eway_print = <gw_final>-eway_print
WHERE bukrs = <gw_final>-bukrs AND
gjahr = <gw_final>-gjahr AND
docno = lw_message-message_v3 AND
doctyp = <gw_final>-fkart.
IF sy-subrc IS NOT INITIAL.
MOVE-CORRESPONDING <gw_final> TO lw_etransport.
lw_etransport-t_date = <gw_final>-fkdat_db.
lw_etransport-doctyp = <gw_final>-fkart.
lw_etransport-docno = <gw_final>-vbeln.
lw_etransport-gjahr = <gw_final>-gjahr.
READ TABLE lt_eway_transport INTO ls_eway_transport WITH KEY docno = <gw_final>-vbeln.
IF sy-subrc IS INITIAL.
<gw_final>-eway_print = ls_eway_transport-eway_print.
ELSE.
<gw_final>-eway_print = lw_message-message_v4.
ENDIF.
lw_etransport-gjahr = <gw_final>-eway_print.
lw_etransport-ernam = sy-uname.
lw_etransport-erdat = sy-datum.
MODIFY zteway_transport FROM lw_etransport.
IF sy-subrc IS NOT INITIAL.
MESSAGE 'Data update error'(022) TYPE 'I'.
ENDIF.
ENDIF.
CONTINUE.
ELSEIF lw_message-type = gc_mtype_e.
CONCATENATE lv_string lw_message-message INTO lv_string SEPARATED BY ' '.
ENDIF.
ENDLOOP.
IF lv_string IS NOT INITIAL.
<gw_final>-eway_error = lv_string.
UPDATE zteway_transport SET eway_error = lv_string
WHERE bukrs = <gw_final>-bukrs AND
gjahr = <gw_final>-gjahr AND
docno = lw_message-message_v3 AND
doctyp = <gw_final>-fkart.
IF sy-subrc IS NOT INITIAL.
06.10.2020 working with program 1
lw_ewaybill-bukrs = gw_final-bukrs.
lw_ewaybill-docno = gw_final-vbeln.
lw_ewaybill-gjahr = gw_final-gjahr.
lw_ewaybill-doctyp = gw_final-fkart.
lw_ewaybill-ebillno = ls_eway_ext_validity-ewaybillno.
lw_ewaybill-aenam = sy-uname.
lw_ewaybill-aedat = sy-datum.
UPDATE j_1ig_ewaybill SET aenam = lw_ewaybill-aenam
aedat = lw_ewaybill-aedat
WHERE bukrs = lw_ewaybill-bukrs AND
docno = lw_ewaybill-docno AND
doctyp = lw_ewaybill-doctyp AND
gjahr = lw_ewaybill-gjahr AND
ebillno = lw_ewaybill-ebillno.
IF sy-subrc = 0.
APPEND lw_ewaybill TO lt_ewaybill.
ENDIF.
ENDIF.
ENDLOOP.
IF sy-subrc EQ 0.
COMMIT WORK.
CALL METHOD gref_alv_grid->refresh_table_display
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Table refresh error'(012) TYPE 'I'.
ENDIF.
CLEAR lt_show_message.
IF lt_messages IS NOT INITIAL.
LOOP AT lt_messages INTO lw_message.
lw_show_message-msgid = gc_msgid_01.
lw_show_message-msgty = lw_message-type.
lw_show_message-msgno = gc_msgno_319.
lw_show_message-msgv1 = lw_message-message_v1.
lw_show_message-msgv2 = lw_message-message_v2.
lw_show_message-msgv3 = lw_message-message_v3.
lw_show_message-msgv4 = lw_message-message_v4.
APPEND lw_show_message TO lt_show_message.
ENDLOOP.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = lt_show_message.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
MESSAGE 'Please select appropriate documents for E-Waybill update'(016) TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*& *
*& Form EWAYBILL_EXTEND
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM ewaybill_extend .
06.10.2020 working with program 1
IF sy-subrc EQ 0.
TRANSLATE ls_values-ddtext TO UPPER CASE.
CONCATENATE '"' ls_values-ddtext '"' INTO ls_eway_ext_valid_api-extend_validity_reason.
ENDIF.
CONCATENATE '"' gw_final-t_ext_valid_remarks '"' INTO ls_eway_ext_valid_api-extend_remarks.
ls_eway_ext_valid_api-from_pincode = gw_final-t_from_pin.
CONCATENATE '"' gw_final-t_consignment_status '"' INTO ls_eway_ext_valid_api-consignment_status.
*& Transit is moving or not
IF gw_final-eway_v_to GT sy-datum.
READ TABLE gt_t_transit_type_values INTO ls_values WITH KEY domvalue_l = gw_final-t_transit_type.
IF sy-subrc EQ 0.
TRANSLATE ls_values-ddtext TO UPPER CASE.
CONCATENATE '"' ls_values-ddtext '"' INTO ls_eway_ext_valid_api-transit_type.
ENDIF.
IF gw_final-t_transit_type IS INITIAL.
CONCATENATE '"' ' ' '"' INTO ls_eway_ext_valid_api-transit_type.
ENDIF.
CONCATENATE '"' gw_final-t_address1 '"' INTO ls_eway_ext_valid_api-address_line1.
CONCATENATE '"' gw_final-t_address2 '"' INTO ls_eway_ext_valid_api-address_line2.
CONCATENATE '"' gw_final-t_address3 '"' INTO ls_eway_ext_valid_api-address_line3.
ELSE.
CONCATENATE '"' ' ' '"' INTO ls_eway_ext_valid_api-transit_type.
CONCATENATE '"' ' ' '"' INTO ls_eway_ext_valid_api-address_line1.
CONCATENATE '"' ' ' '"' INTO ls_eway_ext_valid_api-address_line2.
CONCATENATE '"' ' ' '"' INTO ls_eway_ext_valid_api-address_line3.
ENDIF.
********************************* End of Fill header derails ***********************************************
APPEND ls_eway_ext_valid_api TO lt_eway_ext_valid_api.
CLEAR:ls_eway_ext_valid_api.
ENDIF.
ENDLOOP.
IF lt_eway_ext_valid_api IS NOT INITIAL.
SORT lt_eway_ext_valid_api.
DELETE ADJACENT DUPLICATES FROM lt_eway_ext_valid_api COMPARING ALL FIELDS.
CALL FUNCTION 'ZFM_EWAY_BILL_VALIDATION'
EXPORTING
im_ucomm = gc_ucomm_ewaye
im_api_extend = lt_eway_ext_valid_api
IMPORTING
ex_error = lv_return.
CLEAR:lw_token,lw_return.
IF gw_token IS NOT INITIAL.
lw_token = gw_token.
ELSE.
CALL FUNCTION 'ZFM_EINVOICE_OAUTH_API'
IMPORTING
ex_token = lw_token
ex_return = lw_return
et_messages = lt_messages.
ENDIF.
IF lw_token IS NOT INITIAL." AND lw_return EQ 'S'.
CALL FUNCTION 'ZFM_EWAY_BILL_EXTEND_VALID_API'
EXPORTING
im_token = lw_token
im_api_data = lt_eway_ext_valid_api
IMPORTING
ex_return = lw_return
ex_messages = lt_messages
ex_exd_details = lt_eway_ext_validity.
IF lt_eway_ext_validity IS NOT INITIAL."lw_return EQ 'S'.
LOOP AT lt_eway_ext_validity INTO ls_eway_ext_validity.
READ TABLE gt_final ASSIGNING <gw_final> WITH KEY eway_num = ls_eway_ext_validity-ewaybillno.
IF sy-subrc = 0.
06.10.2020 working with program 1
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*& *
*& Form EWAYBILL_CANCEL
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM ewaybill_cancel USING p_lv_reason_code
p_lv_reason.
DATA:lw_token TYPE string,
lw_return TYPE string,
wa_return TYPE string,
lt_messages TYPE bapiret2_t,
lw_message TYPE bapiret2,
lt_show_message TYPE esp1_message_tab_type,
lw_show_message LIKE LINE OF lt_show_message,
lt_ewaybill TYPE TABLE OF j_1ig_ewaybill,
lw_ewaybill TYPE j_1ig_ewaybill,
lt_eway_cancel_api TYPE ztt_eway_bill_cancel_str,
ls_eway_cancel_api TYPE zst_eway_bill_cancel_str,
lt_eway_cancel TYPE ztt_eway_bill_cancel_out_str,
ls_eway_cancel TYPE zst_eway_bill_cancel_out_str,
lw_usrgstin TYPE ty_api,
ls_values TYPE dd07v.
FIELD-SYMBOLS <gw_final> TYPE ty_final.
CLEAR: lt_messages,lt_ewaybill,lt_eway_cancel_api.
LOOP AT gt_index INTO lw_index.
READ TABLE gt_final INTO gw_final INDEX lw_index-index.
IF sy-subrc IS INITIAL AND gw_final-eway_num IS NOT INITIAL.
********************************* Begin of Fill header derails ***********************************************
READ TABLE gt_api INTO lw_usrgstin WITH KEY apiid = gc_apiid_eusrgstin.
IF sy-subrc IS INITIAL.
CONCATENATE '"' lw_usrgstin-apiprov '"' INTO ls_eway_cancel_api-user_gstin.
ELSE.
CONCATENATE '"' gw_final-sup_gstin '"' INTO ls_eway_cancel_api-user_gstin.
ENDIF.
ls_eway_cancel_api-ebillno = gw_final-eway_num.
ls_eway_cancel_api-data_source = gc_dsource_erp.
READ TABLE gt_cancel_values INTO ls_values WITH KEY domvalue_l = p_lv_reason_code.
IF sy-subrc EQ 0.
TRANSLATE ls_values-ddtext TO UPPER CASE.
CONCATENATE '"' ls_values-ddtext '"' INTO ls_eway_cancel_api-reason_of_cancel.
ENDIF.
CONCATENATE '"' p_lv_reason '"' INTO ls_eway_cancel_api-cancel_remark.
********************************* End of Fill header derails ***********************************************
APPEND ls_eway_cancel_api TO lt_eway_cancel_api.
CLEAR:ls_eway_cancel_api.
ENDIF.
ENDLOOP.
IF lt_eway_cancel_api IS NOT INITIAL.
SORT lt_eway_cancel_api.
DELETE ADJACENT DUPLICATES FROM lt_eway_cancel_api COMPARING ALL FIELDS.
CLEAR:lw_token,lw_return.
IF gw_token IS NOT INITIAL.
lw_token = gw_token.
ELSE.
CALL FUNCTION 'ZFM_EINVOICE_OAUTH_API'
IMPORTING
06.10.2020 working with program 1
ex_token = lw_token
ex_return = lw_return
et_messages = lt_messages.
ENDIF.
IF lw_token IS NOT INITIAL.
CALL FUNCTION 'ZFM_EWAY_BILL_CANCEL_API'
EXPORTING
im_token = lw_token
im_api_data = lt_eway_cancel_api
IMPORTING
ex_return = lw_return
ex_messages = lt_messages
ex_ewaybill_cancel = lt_eway_cancel.
IF lt_eway_cancel IS NOT INITIAL.
LOOP AT lt_eway_cancel INTO ls_eway_cancel.
READ TABLE gt_final ASSIGNING <gw_final> WITH KEY eway_num = ls_eway_cancel-ewaybillno.
IF sy-subrc = 0.
lw_ewaybill-bukrs = gw_final-bukrs.
lw_ewaybill-docno = gw_final-vbeln.
lw_ewaybill-gjahr = gw_final-gjahr.
lw_ewaybill-doctyp = gw_final-fkart.
lw_ewaybill-ebillno = ls_eway_cancel-ewaybillno.
lw_ewaybill-aenam = sy-uname.
lw_ewaybill-aedat = sy-datum.
lw_ewaybill-status = gw_final-eway_status.
IF ls_eway_cancel-canceldate IS NOT INITIAL.
lw_ewaybill-status = gc_eway_sts_c.
UPDATE j_1ig_ewaybill SET status = lw_ewaybill-status
aenam = lw_ewaybill-aenam
aedat = lw_ewaybill-aedat
WHERE bukrs = lw_ewaybill-bukrs AND
docno = lw_ewaybill-docno AND
doctyp = lw_ewaybill-doctyp AND
gjahr = lw_ewaybill-gjahr AND
ebillno = lw_ewaybill-ebillno.
IF sy-subrc = 0.
UPDATE zteway_transport SET c_reason_code = p_lv_reason_code
c_reason = p_lv_reason
aenam = lw_ewaybill-aenam
aedat = lw_ewaybill-aedat
WHERE bukrs = lw_ewaybill-bukrs AND
docno = lw_ewaybill-docno AND
doctyp = lw_ewaybill-doctyp AND
gjahr = lw_ewaybill-gjahr.
IF sy-subrc IS INITIAL.
<gw_final>-eway_status = 'Cancelled'(062).
<gw_final>-eway_icon = gc_icon_0w.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = sy-datum
IMPORTING
date_external = <gw_final>-eway_canc_dt
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Data Conversion is incomplete' TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
06.10.2020 working with program 1
COMMIT WORK.
CALL METHOD gref_alv_grid->refresh_table_display
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Table refresh error'(012) TYPE 'I'.
ENDIF.
CLEAR lt_show_message.
IF lt_messages IS NOT INITIAL.
LOOP AT lt_messages INTO lw_message.
lw_show_message-msgid = gc_msgid_01.
lw_show_message-msgty = lw_message-type.
lw_show_message-msgno = gc_msgno_319.
lw_show_message-msgv1 = lw_message-message_v1.
lw_show_message-msgv2 = lw_message-message_v2.
lw_show_message-msgv3 = lw_message-message_v3.
lw_show_message-msgv4 = lw_message-message_v4.
APPEND lw_show_message TO lt_show_message.
ENDLOOP.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = lt_show_message.
ENDIF.
ENDIF.
ENDIF.
ELSE.
MESSAGE 'Please select appropriate documents to cancel E-Waybill'(018) TYPE 'I'.
ENDIF.
ENDFORM.
*& *
*& Form EWAYBILL_UPDATE_VEHICLE
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM ewaybill_update_vehicle .
DATA:lw_index TYPE lvc_s_row,
lv_val TYPE xfeld,
lv_answer TYPE c.
DATA:lv_index TYPE sy-tabix.
DATA:lw_token TYPE string,
lw_return TYPE string,
wa_return TYPE string,
lt_messages TYPE bapiret2_t,
lw_message TYPE bapiret2,
lt_show_message TYPE esp1_message_tab_type,
lw_show_message LIKE LINE OF lt_show_message.
DATA:lt_ewaybill TYPE TABLE OF j_1ig_ewaybill,
lw_ewaybill TYPE j_1ig_ewaybill.
DATA :lw_wb2_v_vbrk_vbrp2 TYPE ty_wb2_v_vbrk_vbrp2.
DATA: lt_eway_upd_vehile_api TYPE ztt_eway_bill_updat_vehno_str,
ls_eway_upd_vehile_api TYPE zst_eway_bill_updat_vehno_str.
DATA: lt_eway_ext_validity TYPE ztt_eway_bill_extend_validity,
ls_eway_ext_validity TYPE zst_eway_bill_extend_validity.
DATA: lw_t001w TYPE ty_t001w1,
lw_t005u_s TYPE ty_t005u.
DATA:lw_usrgstin TYPE ty_api,
lv_datum TYPE sydatum.
FIELD-SYMBOLS <gw_final> TYPE ty_final.
DATA: ls_values TYPE dd07v.
06.10.2020 working with program 1
im_api_vehicle = lt_eway_upd_vehile_api
IMPORTING
ex_error = lv_return.
IF lv_return = ' '.
CLEAR:lw_token,lw_return.
IF gw_token IS NOT INITIAL.
lw_token = gw_token.
ELSE.
CALL FUNCTION 'ZFM_EINVOICE_OAUTH_API'
IMPORTING
ex_token = lw_token
ex_return = lw_return
et_messages = lt_messages.
ENDIF.
IF lw_token IS NOT INITIAL." AND lw_return EQ 'S'.
CALL FUNCTION 'ZFM_EWAY_BILL_UPD_VEHL_NO_API'
EXPORTING
im_token = lw_token
im_api_data = lt_eway_upd_vehile_api
IMPORTING
ex_return = lw_return
ex_messages = lt_messages
ex_api_data = lt_eway_ext_validity.
IF lt_eway_ext_validity IS NOT INITIAL."lw_return EQ 'S'.
LOOP AT lt_eway_ext_validity INTO ls_eway_ext_validity.
READ TABLE gt_final ASSIGNING <gw_final> WITH KEY eway_num = ls_eway_ext_validity-ewaybillno.
IF sy-subrc = 0.
IF ls_eway_ext_validity-validupto IS NOT INITIAL.
lw_ewaybill-bukrs = gw_final-bukrs.
lw_ewaybill-docno = gw_final-vbeln.
lw_ewaybill-gjahr = gw_final-gjahr.
lw_ewaybill-doctyp = gw_final-fkart.
lw_ewaybill-ebillno = ls_eway_ext_validity-ewaybillno.
lw_ewaybill-vdtodate = ls_eway_ext_validity-validupto.
lw_ewaybill-vdtotime = ls_eway_ext_validity-vdtotime.
UPDATE j_1ig_ewaybill SET vdtodate = lw_ewaybill-vdtodate
vdtotime = lw_ewaybill-vdtotime
aenam = sy-uname
aedat = sy-datum
WHERE bukrs = lw_ewaybill-bukrs AND
docno = lw_ewaybill-docno AND
doctyp = lw_ewaybill-doctyp AND
gjahr = lw_ewaybill-gjahr AND
ebillno = lw_ewaybill-ebillno.
IF sy-subrc = 0.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lw_ewaybill-vdtodate
IMPORTING
date_external = <gw_final>-eway_v_to
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Date convertion error'(010) TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
IF sy-subrc EQ 0.
COMMIT WORK.
CALL METHOD gref_alv_grid->refresh_table_display
06.10.2020 working with program 1
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Table refresh error'(012) TYPE 'I'.
ENDIF.
CLEAR lt_show_message.
IF lt_messages IS NOT INITIAL.
LOOP AT lt_messages INTO lw_message.
lw_show_message-msgid = gc_msgid_01.
lw_show_message-msgty = lw_message-type.
lw_show_message-msgno = gc_msgno_319.
lw_show_message-msgv1 = lw_message-message_v1.
lw_show_message-msgv2 = lw_message-message_v2.
lw_show_message-msgv3 = lw_message-message_v3.
lw_show_message-msgv4 = lw_message-message_v4.
APPEND lw_show_message TO lt_show_message.
ENDLOOP.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = lt_show_message.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
MESSAGE 'Please select appropriate documents for E-Waybill update'(016) TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*& *
*& Form EWAYBILL_PRINT
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM ewaybill_print USING iv_flag.
DATA:lw_index TYPE lvc_s_row,
lv_val TYPE xfeld,
lv_answer TYPE c.
DATA:lv_index TYPE sy-tabix.
DATA:lw_token TYPE string,
lw_return TYPE string,
wa_return TYPE string,
lt_messages TYPE bapiret2_t,
lw_message TYPE bapiret2,
lt_show_message TYPE esp1_message_tab_type,
lw_show_message LIKE LINE OF lt_show_message.
DATA: lv_url TYPE string.
DATA: lo_http_client TYPE REF TO if_http_client,
lv_service TYPE string,
lv_result TYPE string,
lo_ixml TYPE REF TO if_ixml.
* DATA: ls_config TYPE zteinv_api.
DATA:lt_ewaybill TYPE TABLE OF j_1ig_ewaybill,
lw_ewaybill TYPE j_1ig_ewaybill.
DATA:lw_eway_transport TYPE zteway_transport.
FIELD-SYMBOLS <gw_final> TYPE ty_final.
CLEAR: lt_messages,lt_ewaybill.
06.10.2020 working with program 1
CLEAR lv_url.
PERFORM check_selected_data CHANGING lv_val.
IF lv_val IS INITIAL.
IF iv_flag IS INITIAL.
PERFORM call_popup USING text-t23 text-t29
CHANGING lv_answer.
ELSE.
PERFORM call_popup USING text-t20 text-t31
CHANGING lv_answer.
ENDIF.
IF lv_answer = '1'.
LOOP AT gt_index INTO lw_index.
READ TABLE gt_final INTO gw_final INDEX lw_index-index.
CLEAR lv_url.
IF iv_flag IS INITIAL.
IF gw_final-eway_num IS NOT INITIAL.
CONCATENATE 'https://'(109) gw_final-eway_print '.pdf'(110) INTO lv_url.
ENDIF.
ELSE.
IF gw_final-irn IS NOT INITIAL.
lv_url = gw_final-einv_print.
ENDIF.
ENDIF.
IF lv_url IS NOT INITIAL.
CONDENSE lv_url NO-GAPS.
CALL METHOD cl_gui_frontend_services=>execute
EXPORTING
document = lv_url
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE 'Pdf couldn not find'(023) TYPE 'I'.
ENDIF.
ENDIF.
********************************* Begin of Fill header derails ***********************************************
********************************* End of Fill header derails ***********************************************
ENDLOOP.
CLEAR lt_show_message.
IF lt_messages IS NOT INITIAL.
LOOP AT lt_messages INTO lw_message.
lw_show_message-msgid = '01'.
lw_show_message-msgty = lw_message-type.
lw_show_message-msgno = '319'.
lw_show_message-msgv1 = lw_message-message_v1.
lw_show_message-msgv2 = lw_message-message_v2.
lw_show_message-msgv3 = lw_message-message_v3.
lw_show_message-msgv4 = lw_message-message_v4.
APPEND lw_show_message TO lt_show_message.
ENDLOOP.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = lt_show_message.
ENDIF.
ENDIF.
* ELSE.
* MESSAGE 'Please select appropriate documents for E-Waybill print'(020) TYPE 'I'.
ENDIF.
* ENDIF.
ENDFORM.
*& *
*& Form USER_COMMAND_EWAY_CANCEL
*& *
* text
06.10.2020 working with program 1
* *
* > p1 text
* < p2 text
* *
FORM user_command_eway_cancel TABLES ifields TYPE ty_sval
USING ok_code_save
error
h_show_popup.
DATA: ls_ifields TYPE sval.
DATA:lv_reason_code TYPE zde_cancel_reason,
lv_reason TYPE char120.
CASE ok_code_save.
WHEN gc_okcode_furt.
LOOP AT ifields INTO ls_ifields.
IF ls_ifields-fieldname = gc_fname_crec_code."'C_REASON_CODE'.
lv_reason_code = ls_ifields-value.
ELSEIF ls_ifields-fieldname = gc_fname_crec."'C_REASON'.
lv_reason = ls_ifields-value.
ENDIF.
ENDLOOP.
PERFORM ewaybill_cancel USING lv_reason_code lv_reason.
WHEN OTHERS.
ENDCASE.
ENDFORM.
*& *
*& Form EWAYBILL_CANCEL_OLD
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM ewaybill_cancel_old .
DATA: lv_val TYPE xfeld.
DATA: vl_program TYPE sy-repid,
vl_formname TYPE char30,
vl_popup_title TYPE char30,
vl_okpushbutton TYPE svalbutton-buttontext,
vl_buttonicon TYPE icon-name,
lt_sval TYPE ty_sval,
lv_msg TYPE xfeld,
lv_answer TYPE c,
lw_final TYPE ty_final.
FIELD-SYMBOLS:<ls_sval> TYPE sval.
PERFORM check_selected_data CHANGING lv_val.
IF lv_val IS INITIAL.
PERFORM call_popup USING text-t23 text-t22
CHANGING lv_answer.
IF lv_answer = '1'.
CLEAR lv_msg.
LOOP AT gt_index INTO lw_index.
READ TABLE gt_final INTO lw_final INDEX lw_index-index.
IF sy-subrc IS INITIAL AND lw_final-eway_icon = gc_icon_0w.
MESSAGE 'Document already cancelled'(037) TYPE 'I'.
lv_msg = abap_true.
EXIT.
ENDIF.
ENDLOOP.
IF lv_msg IS INITIAL.
*& Add title & FORMNAME for Cancel pop-up
vl_program = sy-repid.
vl_formname = 'USER_COMMAND_EWAY_CANCEL'.
vl_popup_title = 'Confirm to cancel E-way Bill'(114).
06.10.2020 working with program 1
IF wa_mara-matnr+0(1) = '0'.
SHIFT wa_mara-matnr LEFT DELETING LEADING '0'.
IF wa_mara-matnr+0(1) = '1'.
lw_einv_api_itm-is_service = gc_service_y.
ENDIF.
ELSEIF wa_mara-mtart = 'DIEN'.
lw_einv_api_itm-is_service = gc_service_y.
ENDIF.
IF i_vkorg = '1030' OR i_vkorg = '1040' OR i_vkorg = '4040' OR i_vkorg = '5020' OR i_vkorg = '9030'.
lw_einv_api_itm-is_service = gc_service_y.
ENDIF.
IF i_fkart = 'ZCS' OR i_fkart = 'ZCSE' OR i_fkart = 'ZERC' OR i_fkart = 'NCS' OR i_fkart = 'NCSE'.
lw_einv_api_itm-is_service = gc_service_y.
ENDIF.
ENDFORM.