Update LFA1 Via Excel Sheet
Update LFA1 Via Excel Sheet
TYPES:BEGIN OF ty_upload,
lifnr TYPE lifnr,
zzmsme_stus TYPE zzdemsme_stus,
zzmsme_r_num TYPE zzdemsme_r_num,
zzmsme_r_date TYPE char10,
zzrpt_stat TYPE zzderpt_stat,
zzrpt_name TYPE zzderpt_name,
zzrpt_strtdate TYPE char10,
zzrpt_e_date TYPE char10,
zzstri_o_comp TYPE zzdestri_o_comp,
zzcer_ofin_num TYPE zzdecer_ofin_num,
zze_inv_app TYPE zzdee_inv_app,
zzmsme_c_stat TYPE zzdemsme_c_stat,
zzmsme_c_sdate TYPE char10,
zzmsme_c_edate TYPE char10,
zzgst_c_stat TYPE zzdegst_c_stat,
zzgst_c_sdate TYPE char10,
zzgst_c_edate TYPE char10,
zz_non_gstdec TYPE zzde_non_gstdec,
zzpan_card TYPE zzdepan_card,
zzno_pan_che TYPE zzdeno_pan_che,
zzdcha_license TYPE zzdecha_license,
zz_aa_dec TYPE zzde_aa_dec,
zznature_bus TYPE zzdenature_bus,
zzspeci_person TYPE zzdespeci_pers,
END OF ty_upload.
TYPES:BEGIN OF ty_final,
lifnr TYPE lifnr,
zzmsme_stus TYPE zzdemsme_stus,
zzmsme_r_num TYPE zzdemsme_r_num,
zzmsme_r_date TYPE zzdemsme_r_date,
zzrpt_stat TYPE zzderpt_stat,
zzrpt_name TYPE zzderpt_name,
zzrpt_strtdate TYPE zzderpt_strtdate,
zzrpt_e_date TYPE zzderpt_e_date,
zzstri_o_comp TYPE zzdestri_o_comp,
zzcer_ofin_num TYPE zzdecer_ofin_num,
zze_inv_app TYPE zzdee_inv_app,
zzmsme_c_stat TYPE zzdemsme_c_stat,
zzmsme_c_sdate TYPE zzdemsme_c_sdate,
zzmsme_c_edate TYPE zzdemsme_c_edate,
zzgst_c_stat TYPE zzdegst_c_stat,
zzgst_c_sdate TYPE zzdegst_c_sdate,
zzgst_c_edate TYPE zzdegst_c_edate,
zz_non_gstdec TYPE zzde_non_gstdec,
zzpan_card TYPE zzdepan_card,
zzno_pan_che TYPE zzdeno_pan_che,
zzdcha_license TYPE zzdecha_license,
zz_aa_dec TYPE zzde_aa_dec,
zznature_bus TYPE zzdenature_bus,
zzspeci_person TYPE zzdespeci_pers,
END OF ty_final.
TYPES : BEGIN OF ty_error,
lno TYPE bapi_line,
lifnr TYPE lifnr,
msg TYPE bapi_msg,
END OF ty_error.
DATA:lt_upload TYPE TABLE OF ty_upload,
ls_upload TYPE ty_upload,
lt_final TYPE TABLE OF ty_final,
ls_final TYPE ty_final,
lt_error TYPE TABLE OF ty_error,
ls_error TYPE ty_error,
lv_date TYPE datum.
DATA : lv_file TYPE string.
*- Validate
TYPE-POOLS: vrm.
DATA: git_status TYPE vrm_values.
DATA: gs_status TYPE vrm_value.
DATA: rpt_status TYPE vrm_values.
DATA: rpt_gs_status TYPE vrm_value.
DATA: gt_strike TYPE vrm_values.
DATA: gs_strike TYPE vrm_value.
DATA: gt_inv TYPE vrm_values.
DATA: gs_inv TYPE vrm_value.
DATA: gt_nat_bus TYPE vrm_values.
DATA: gs_nat_bus TYPE vrm_value.
DATA: gt_speci TYPE vrm_values.
DATA: gs_speci TYPE vrm_value.
*- End of Validate
PARAMETERS : p_file TYPE rlgrap-filename OBLIGATORY.
INITIALIZATION.
START-OF-SELECTION.
IF p_file IS INITIAL.
MESSAGE 'Please select file to process' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
PERFORM get_upload.
PERFORM process_data.
PERFORM update_data.
PERFORM display_data.
* BREAK-POINT.
*&---------------------------------------------------------------------*
*& Form get_f4_file
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_f4_file .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_upload
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_upload .
lv_file = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_file
filetype = 'ASC'
has_field_separator = 'X'
dat_mode = ' '
* IMPORTING
* filelength = lv_filelength
* header = lv_headerxstring
TABLES
data_tab = lt_upload.
CLEAR lv_date.
CONCATENATE ls_upload-zzrpt_e_date+6(4) ls_upload-zzrpt_e_date+3(2)
ls_upload-zzrpt_e_date(2) INTO lv_date.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = lv_date
* EXCEPTIONS
* PLAUSIBILITY_CHECK_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
ls_error-lno = lv_index.
ls_error-lifnr = ls_upload-lifnr.
ls_error-msg = 'Date format is Invalid'.
APPEND ls_error TO lt_error.
CONTINUE.
ENDIF.
ls_final-zzrpt_e_date = lv_date.
ENDIF.
* ZZMSME_C_SDATE
IF NOT ls_upload-zzmsme_c_sdate IS INITIAL.
CLEAR lv_date.
CONCATENATE ls_upload-zzmsme_c_sdate+6(4) ls_upload-zzmsme_c_sdate+3(2)
ls_upload-zzmsme_c_sdate(2) INTO lv_date.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = lv_date
* EXCEPTIONS
* PLAUSIBILITY_CHECK_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
ls_error-lno = lv_index.
ls_error-lifnr = ls_upload-lifnr.
ls_error-msg = 'Date format is Invalid'.
APPEND ls_error TO lt_error.
CONTINUE.
ENDIF.
ls_final-zzmsme_c_sdate = lv_date.
ENDIF.
* ZZMSME_C_EDATE
IF NOT ls_upload-zzmsme_c_edate IS INITIAL.
CLEAR lv_date.
CONCATENATE ls_upload-zzmsme_c_edate+6(4) ls_upload-zzmsme_c_edate+3(2)
ls_upload-zzmsme_c_edate(2) INTO lv_date.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = lv_date
* EXCEPTIONS
* PLAUSIBILITY_CHECK_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
ls_error-lno = lv_index.
ls_error-lifnr = ls_upload-lifnr.
ls_error-msg = 'Date format is Invalid'.
APPEND ls_error TO lt_error.
CONTINUE.
ENDIF.
ls_final-zzmsme_c_edate = lv_date.
ENDIF.
* ZZGST_C_SDATE
IF NOT ls_upload-zzgst_c_sdate IS INITIAL.
CLEAR lv_date.
CONCATENATE ls_upload-zzgst_c_sdate+6(4) ls_upload-zzgst_c_sdate+3(2)
ls_upload-zzgst_c_sdate(2) INTO lv_date.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = lv_date
* EXCEPTIONS
* PLAUSIBILITY_CHECK_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
ls_error-lno = lv_index.
ls_error-lifnr = ls_upload-lifnr.
ls_error-msg = 'Date format is Invalid'.
APPEND ls_error TO lt_error.
CONTINUE.
ENDIF.
ls_final-zzgst_c_sdate = lv_date.
ENDIF.
* ZZGST_C_EDATE
IF NOT ls_upload-zzgst_c_edate IS INITIAL.
CLEAR lv_date.
CONCATENATE ls_upload-zzgst_c_edate+6(4) ls_upload-zzgst_c_edate+3(2)
ls_upload-zzgst_c_edate(2) INTO lv_date.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = lv_date
* EXCEPTIONS
* PLAUSIBILITY_CHECK_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
ls_error-lno = lv_index.
ls_error-lifnr = ls_upload-lifnr.
ls_error-msg = 'Date format is Invalid'.
APPEND ls_error TO lt_error.
CONTINUE.
ENDIF.
ls_final-zzgst_c_edate = lv_date.
ENDIF.
*ZZRPT_STRTDATE
IF NOT ls_upload-zzrpt_strtdate IS INITIAL.
CLEAR lv_date.
CONCATENATE ls_upload-zzrpt_strtdate+6(4) ls_upload-zzrpt_strtdate+3(2)
ls_upload-zzrpt_strtdate(2) INTO lv_date.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = lv_date
* EXCEPTIONS
* PLAUSIBILITY_CHECK_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
ls_error-lno = lv_index.
ls_error-lifnr = ls_upload-lifnr.
ls_error-msg = 'Date format is Invalid'.
APPEND ls_error TO lt_error.
CONTINUE.
ENDIF.
ls_final-zzrpt_strtdate = lv_date.
ENDIF.
gs_status-key = '2'.
gs_status-text = 'Medium' .
APPEND gs_status TO git_status.
gs_status-key = '3'.
gs_status-text = 'Small' .
APPEND gs_status TO git_status.
gs_status-key = '4'.
gs_status-text = 'Others' .
APPEND gs_status TO git_status.
gs_status-key = '5'.
gs_status-text = 'Not an MSME' .
APPEND gs_status TO git_status.
gs_status-key = '6'.
gs_status-text = ' ' .
APPEND gs_status TO git_status.
*- ZZRPT_STAT
REFRESH rpt_status.
rpt_gs_status-key = ' '.
rpt_gs_status-text = ' ' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '01'.
rpt_gs_status-text = 'Holding Company of TPL' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '02'.
rpt_gs_status-text = 'Subsidiary of Holding Company' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '03'.
rpt_gs_status-text = 'Associate of Holding company' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '04'.
rpt_gs_status-text = 'Entity holding more than 20%' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '05'.
rpt_gs_status-text = 'Subsidiary of "Entity holding more than 20%"' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '06'.
rpt_gs_status-text = 'Unincorporated JVs of TPL' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '07'.
rpt_gs_status-text = 'Subsidiary of TPL' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '08'.
rpt_gs_status-text = 'Incorporated JVs of TPL' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '09'.
rpt_gs_status-text = 'Associate of TPL' .
APPEND rpt_gs_status TO rpt_status.
rpt_gs_status-key = '10'.
rpt_gs_status-text = 'Subsidiary of "Subsidiary to TPL"' .
APPEND rpt_gs_status TO rpt_status.
gs_strike-key = '1'.
gs_strike-text = 'Yes' .
APPEND gs_strike TO gt_strike.
gs_strike-key = '2'.
gs_strike-text = 'No' .
APPEND gs_strike TO gt_strike.
READ TABLE gt_strike INTO ls_stat1 WITH KEY key = ls_upload-zzstri_o_comp.
IF NOT sy-subrc is INITIAL.
ls_error-lno = lv_index.
ls_error-lifnr = ls_upload-lifnr.
ls_error-msg = 'Upload Valid strike off companies'.
APPEND ls_error TO lt_error.
CONTINUE.
ENDIF.
* CALL FUNCTION 'VRM_SET_VALUES'
* EXPORTING
* id = 'LFA1-ZZSTRI_O_COMP'
* values = gt_strike[]
* EXCEPTIONS
* id_illegal_name = 1
* OTHERS = 2.
*-ZZE_INV_APP
REFRESH gt_inv.
gs_inv-key = ' '.
gs_inv-text = ' ' .
APPEND gs_inv TO gt_inv.
gs_inv-key = '1'.
gs_inv-text = 'Yes' .
APPEND gs_inv TO gt_inv.
gs_inv-key = '2'.
gs_inv-text = 'No' .
APPEND gs_inv TO gt_inv.
READ TABLE gt_inv INTO ls_stat1 WITH KEY key = ls_upload-zze_inv_app.
IF NOT sy-subrc is INITIAL.
ls_error-lno = lv_index.
ls_error-lifnr = ls_upload-lifnr.
ls_error-msg = 'Upload Valid invoice appllicability'.
APPEND ls_error TO lt_error.
CONTINUE.
ENDIF.
* CALL FUNCTION 'VRM_SET_VALUES'
* EXPORTING
* id = 'LFA1-ZZE_INV_APP'
* values = gt_inv[]
* EXCEPTIONS
* id_illegal_name = 1
* OTHERS = 2.
*-ZZNATURE_BUS
REFRESH gt_nat_bus.
gs_nat_bus-key = ' '.
gs_nat_bus-text = ' ' .
APPEND gs_nat_bus TO gt_nat_bus.
gs_nat_bus-key = '01'.
gs_nat_bus-text = 'Manufacturer' .
APPEND gs_nat_bus TO gt_nat_bus.
gs_nat_bus-key = '02'.
gs_nat_bus-text = 'Service Provider' .
APPEND gs_nat_bus TO gt_nat_bus.
gs_nat_bus-key = '03'.
gs_nat_bus-text = 'Trader' .
APPEND gs_nat_bus TO gt_nat_bus.
READ TABLE gt_nat_bus INTO ls_stat1 WITH KEY key = ls_upload-zznature_bus.
IF NOT sy-subrc is INITIAL.
ls_error-lno = lv_index.
ls_error-lifnr = ls_upload-lifnr.
ls_error-msg = 'Upload Valid nature of business'.
APPEND ls_error TO lt_error.
CONTINUE.
ENDIF.
* CALL FUNCTION 'VRM_SET_VALUES'
* EXPORTING
* id = 'LFA1-ZZNATURE_BUS'
* values = gt_nat_bus[]
* EXCEPTIONS
* id_illegal_name = 1
* OTHERS = 2.
*- ZZSPECI_PERSON
REFRESH gt_speci.
gs_speci-key = '01'.
gs_speci-text = 'Yes' .
APPEND gs_speci TO gt_speci.
IF sy-subrc = 0.
ls_error-lno = lv_index.
ls_error-lifnr = ls_final-lifnr.
ls_error-msg = 'SUCCESS'.
APPEND ls_error TO lt_error.
COMMIT WORK AND WAIT.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display_data .
DATA:alv TYPE REF TO cl_salv_table.
DATA:message TYPE REF TO cx_salv_msg.
IF NOT lt_error IS INITIAL.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = alv
CHANGING
t_table = lt_error ).
CATCH cx_salv_msg INTO message.
" error handling
ENDTRY.
alv->display( ).
ELSE.
MESSAGE e000(zmm01) WITH 'No Data Found'.
ENDIF.
ENDFORM.