Monday, June 8, 2015


Interfaces (To post Legacy data)




METHOD zpiii_mine11sales_data_to_sape~mine11sales_data_to_sapecc_in.
*** **** INSERT IMPLEMENTATION HERE **** ***


*
  TYPES:BEGIN OF ty_message,
    l_mstring TYPE t100-text,
  END OF ty_message.
  DATA lt_suc_message  TYPE STANDARD TABLE OF ty_message.
  DATA wa_suc_message  TYPE  ty_message.
  DATA lt_suc_message1 TYPE STANDARD TABLE OF zfi_mineii_mail.
  DATA wa_suc_message1 TYPE  zfi_mineii_mail.



  TYPES:BEGIN OF ty_message1,
  l_mstring1 TYPE t100-text,
END OF ty_message1.
  DATA lt_fail_message  TYPE STANDARD TABLE OF ty_message1.
  DATA wa_fail_message  TYPE  ty_message.
  DATA lt_fail_message1 TYPE STANDARD TABLE OF zfi_mineii_mail.
  DATA wa_fail_message1 TYPE  zfi_mineii_mail.


  TYPES:
  BEGIN OF lty_download,
  unit_code            TYPE string,
  inter_state_flag     TYPE string,
  region               TYPE string,
  party_code           TYPE string,
  da_no                TYPE string,
  invoice_no           TYPE string,
  invoice_date         TYPE string,
  prod_code            TYPE string,
  scheme_code          TYPE string,
  gl_code              TYPE string,
  qty                  TYPE string,
  rate                 TYPE string,
  prod_amt             TYPE string,
  dr_scheme_code       TYPE string,
  dr_gl_code           TYPE string,
  tot_inv_amt          TYPE string,
  scheme_code1         TYPE string,
  gl_code1             TYPE string,
  amount1              TYPE string,
  scheme_code2         TYPE string,
  gl_code2             TYPE string,
  amount2              TYPE string,
  scheme_code3         TYPE string,
  gl_code3             TYPE string,
  amount3              TYPE string,
  scheme_code4         TYPE string,
  gl_code4             TYPE string,
  amount4              TYPE string,
  scheme_code5         TYPE string,
  gl_code5             TYPE string,
  amount5              TYPE string,
  scheme_code6         TYPE string,
  gl_code6             TYPE string,
  amount6              TYPE string,
  scheme_code7         TYPE string,
  gl_code7             TYPE string,
  amount7              type string,
  scheme_code8         type string,
  gl_code8             type string,
  amount8              type string,
  scheme_code9         type string,
  gl_code9             type string,
  amount9              type string,
  scheme_code10        type string,
  gl_code10            type string,
  amount10             type string,
  user_id              type string,
  time_stamp           type string,

end of lty_download.

    TYPES:
     BEGIN OF ty_skb1,
       saknr              TYPE saknr,
       altkt              TYPE altkt_skb1,
     END OF ty_skb1,

     BEGIN OF ty_skb1_1,
       saknr              TYPE saknr,
       altkt              TYPE string, "ALTKT_SKB1,
     END OF ty_skb1_1.

  TYPES:
   BEGIN OF ty_kna1,
     kunnr              TYPE kunnr,
     sortl              TYPE sortl,
   END OF ty_kna1.

  TYPES:
   BEGIN OF ty_minesii,
     counter TYPE n LENGTH 10,
     unit_code(10),
     scheme_code(10),
     div_code(10),
     party_code         TYPE bdc_fval,"(06),
     invoice_no         TYPE bdc_fval,"(10),
     qty                TYPE bdc_fval,"(10),
     gl_code            TYPE bdc_fval,
     dr_amt             TYPE bdc_fval,

     cr_amt             TYPE bdc_fval,
     kostl              TYPE bdc_fval,
     prof_cen           TYPE bdc_fval,
     poskey             TYPE bdc_fval,
     gl_main_acct       TYPE bdc_fval,
   END OF ty_minesii.

  DATA:
   lv_glcode(10)        TYPE n,
   lv_partycode(06)     TYPE n,
   lv_counter(05)             ,
   lv_dramt             TYPE string,
*   LV_DEBIT             TYPE STRING,
   lv_debit             TYPE dmbtr,
   lv_cramt             TYPE string,
*   LV_CREDIT            TYPE STRING,
   lv_credit            TYPE dmbtr,
   lv_difamt            TYPE string,
   lv_amount_cr         TYPE string,
   lv_amount_dr         TYPE string,
   lv_path             TYPE string.

  DATA:
   lt_minesii_sales     TYPE  zpimine11sales_data_to_sap_tab,
   lt_minesii_table     TYPE  zpimine11sales_data_to_sap_tab,
   lwa_minesii_sales    TYPE  zpimine11sales_data_to_sapecc,
   lt_minesii           TYPE  STANDARD TABLE OF ty_minesii,
   lt_download          type STANDARD TABLE OF lty_download,
   lwa_download         type lty_download,
   lwa_minesii          TYPE  ty_minesii,
   lwa_climscd          TYPE  zfi_olimms_cd,
   lwa_skb1             TYPE  ty_skb1,
   lwa_skb1_1           TYPE  ty_skb1_1,
   lwa_kna1             TYPE  ty_kna1,
   lwa_elog             TYPE  zfi_minesiielog,
   lwa_minesii_table    TYPE  zpimine11sales_data_to_sapecc.

  DATA:
   lt_climscd           TYPE TABLE OF zfi_olimms_cd,
   lt_skb1              TYPE TABLE OF ty_skb1,
   lt_skb1_1            TYPE TABLE OF ty_skb1_1,
   lt_kna1              TYPE TABLE OF ty_kna1,
   lt_elog              TYPE TABLE OF zfi_minesiielog.

  CONSTANTS:
   lc_bukrs             TYPE bukrs  VALUE '1000',
   lc_dr                TYPE newbs  VALUE '01',
   lc_cr                TYPE newbs  VALUE '50'.

  DATA :
   lv_date             TYPE string,
   lv_time             TYPE string.



**-- ABAP07 05.06.2015
**-- Get mine2
  lt_minesii_sales[] = input-mine11sales_data_to_sapecc-sales_data[].

** top header part of excel fields.
  lwa_download-unit_code          =  'Unit Code'.
  lwa_download-inter_state_flag   =  'Inter State Flag'.
  lwa_download-region             =  'Region'.
  lwa_download-party_code         =  'Pary Code'.
  lwa_download-da_no              =  'DA Number'.
  lwa_download-invoice_no         =  'Invoice Number'.
  lwa_download-invoice_date       =  'Invoice Date'.
  lwa_download-prod_code          =  'Prod Code'.
  lwa_download-scheme_code        =  'Scheme Code'.
  lwa_download-gl_code            =  'GL Code'.
  lwa_download-qty                =  'Qty'.
  lwa_download-rate               =  'Rate'.
  lwa_download-prod_amt           =  'Prod Amt'.
  lwa_download-dr_scheme_code     =  'DR Scheme Code'.
  lwa_download-dr_gl_code         =  'DR GL Code'.
  lwa_download-tot_inv_amt        =  'TOT Inv Amt'.
  lwa_download-scheme_code1       =  'Scheme Code1'.
  lwa_download-gl_code1           =  'GL Code1'.
  lwa_download-amount1            =  'Amount1'.
  lwa_download-scheme_code2       =  'Scheme Code2'.
  lwa_download-gl_code2           =  'GL Code2'.
  lwa_download-amount2            =  'Amount2'.
  lwa_download-scheme_code3       =  'Scheme Code3'.
  lwa_download-gl_code3           =  'GL Code3'.
  lwa_download-amount3            =  'Amount3'.
  lwa_download-scheme_code4       =  'Scheme Code4'.
  lwa_download-gl_code4           =  'GL Code4'.
  lwa_download-amount4            =  'Amount4'.
  lwa_download-scheme_code5       =  'Scheme Code5'.
  lwa_download-gl_code5           =  'GL Code5'.
  lwa_download-amount5            =  'Amount5'.
  lwa_download-scheme_code6       =  'Scheme Code6'.
  lwa_download-gl_code6           =  'GL Code6'.
  lwa_download-amount6            =  'Amount6'.
  lwa_download-scheme_code7       =  'Scheme Code7'.
  lwa_download-gl_code7           =  'GL Code7'.
  lwa_download-amount7            =  'Amount7'.
  lwa_download-scheme_code8       =  'Scheme Code8'.
  lwa_download-gl_code8           =  'GL Code8'.
  lwa_download-amount8            =  'Amount8'.
  lwa_download-scheme_code9       =  'Scheme Code9'.
  lwa_download-gl_code9           =  'GL Code9'.
  lwa_download-amount9            =  'Amount9'.
  lwa_download-scheme_code10      =  'Scheme Code10'.
  lwa_download-gl_code10          =  'GL Code10'.
  lwa_download-amount10           =  'Amount10'.
  lwa_download-user_id            =  'User ID'.
  lwa_download-time_stamp         =  'Time Stamp'.
append lwa_download to lt_download.


**-- Checking the availability of party code     "ABAP07 05.06.2015


**-- Passing mine2 records to another internal table for validation purpose
  lt_minesii_table[] =  lt_minesii_sales[] .
**-- Sort validation table of mine2
  SORT  lt_minesii_table.
*   DELETE ADJACENT DUPLICATES FROM lt_minesii_table COMPARING party_code.

**-- Fetch Unit Code,Scheme Code,Div.Code,Cost Centre & Profit Centre
  SELECT *
    FROM zfi_olimms_cd
    INTO TABLE  lt_climscd.

**Fetch Customer Number
  SELECT kunnr
         sortl
    FROM kna1
    INTO TABLE lt_kna1.

**--Fetch GL Account Number
  SELECT  saknr
          altkt
          FROM skb1 INTO TABLE lt_skb1
          WHERE bukrs EQ lc_bukrs.

**-- ALTERNATE KEYS validations
  LOOP AT lt_skb1 INTO lwa_skb1.
** -- delete the leading zeroes
    SHIFT lwa_skb1-altkt LEFT DELETING LEADING '0'.
    lwa_skb1_1-saknr = lwa_skb1-saknr.
    lwa_skb1_1-altkt = lwa_skb1-altkt.
    APPEND lwa_skb1_1 TO lt_skb1_1.
    CLEAR lwa_skb1_1.
  ENDLOOP.
**-- checking for availability of party code in KNA1.    " abap07 05.06.2015

  LOOP AT lt_minesii_table INTO lwa_minesii_table.
    SORT lt_kna1.
    READ TABLE lt_kna1 INTO lwa_kna1 WITH KEY sortl = lwa_minesii_table-party_code.
*                                            BINARY SEARCH.
    IF sy-subrc NE 0.
      lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
      lwa_elog-p_code      = lwa_minesii_table-party_code.
      lwa_elog-unit_code   = lwa_minesii_table-unit_code.
      lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
      CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of Party Code '
                  lwa_minesii_table-party_code INTO
      lwa_elog-inv_mesg SEPARATED BY space.
      CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
      CONDENSE lv_date.
      lwa_elog-zdate = lv_date.
      lwa_elog-ztime = sy-uzeit.

      APPEND lwa_elog TO lt_elog.
      CLEAR lwa_elog.
    ENDIF.
    SORT lt_skb1_1.
    IF lwa_minesii_table-gl_code IS NOT INITIAL.
***************************read statement for GL_CODE ***********************
*DATA :LV_ALTKT TYPE STRING.
*LV_ALTKT = Lwa_minesii_table-gl_code.
      IF lwa_minesii_table-gl_code IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code ."lwa_minesii_table-gl_code BINARY SEARCH.
        IF sy-subrc NE 0.

          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.

          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code INTO
                      lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.
*endif.
*
**-- read statement for DR_GL_CODE
      IF lwa_minesii_table-dr_gl_code IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-dr_gl_code .
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-dr_gl_code.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-dr_gl_code INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- read statement for GL_CODE1
      IF lwa_minesii_table-gl_code1 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code1 .
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code1.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code1 INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- read statement for GL_CODE2
      IF lwa_minesii_table-gl_code2 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code2 .
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code2.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code2 INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.
**-- read statement for GL_CODE3
      IF lwa_minesii_table-gl_code3 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code3 .
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code3.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code3 INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- read statement for GL_CODE4
      IF lwa_minesii_table-gl_code4 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code4.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code4.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code4 INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.
**-- read statement for GL_CODE5
      IF lwa_minesii_table-gl_code5 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code5.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code5.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code5 INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.
**-- read statement for GL_CODE6
      IF lwa_minesii_table-gl_code6 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code6.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code6.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code6 INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- read statement for GL_CODE7
      IF lwa_minesii_table-gl_code7 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code7.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code7.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.
**-- read statement for GL_CODE8
      IF lwa_minesii_table-gl_code8 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code8.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code8.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code8 INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.
**-- read statement for GL_CODE9
      IF lwa_minesii_table-gl_code9 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code9.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no  = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc      = lwa_minesii_table-gl_code9.
          lwa_elog-unit_code   = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code9 INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.
**-- read statement for GL_CODE10
      IF lwa_minesii_table-gl_code10 IS NOT INITIAL.
        READ TABLE lt_skb1_1 INTO lwa_skb1_1 WITH KEY altkt = lwa_minesii_table-gl_code10.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-gl_acc = lwa_minesii_table-gl_code10.
          lwa_elog-unit_code = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Non-availability of GL Code '
                      lwa_minesii_table-gl_code10 INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.
    ENDIF.
**-- validations for unit code

    IF lt_climscd IS NOT INITIAL.
      SORT lt_climscd.
      IF lwa_minesii_table-unit_code IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY unit_code = lwa_minesii_table-unit_code.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code = lwa_minesii_table-unit_code.
          lwa_elog-unit_code = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the combination of Unit Code '
                      lwa_minesii_table-unit_code  'is not available' INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.

        ENDIF.
      ENDIF.
    ENDIF.

** -- validation for scheme SCHEME_CODE
    IF lt_climscd IS NOT INITIAL.
      SORT lt_climscd.
      IF lwa_minesii_table-scheme_code IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                    lwa_minesii_table-scheme_code 'is not available' INTO
                    lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.

        ENDIF.
      ENDIF.

**-- validation for scheme DR_SCHEME CODE
      IF lwa_minesii_table-dr_scheme_code IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-dr_scheme_code.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-dr_scheme_code.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the  Scheme Code'
                     lwa_minesii_table-dr_scheme_code 'is not available' INTO
                     lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.

        ENDIF.
      ENDIF.
**-- validation for scheme SCHEME CODE1
      IF lwa_minesii_table-scheme_code1 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code1.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code1.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                    lwa_minesii_table-scheme_code1 'is not available' INTO
                    lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.

        ENDIF.
      ENDIF.
**-- validation for scheme SCHEME CODE2
      IF lwa_minesii_table-scheme_code2 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code2.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code2.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                      lwa_minesii_table-scheme_code2 'is not available' INTO
                      lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- validation for scheme SCHEME CODE3
      IF lwa_minesii_table-scheme_code3 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code3.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code3.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                      lwa_minesii_table-scheme_code3 'is not available' INTO
                      lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- validation for scheme SCHEME CODE4
      IF lwa_minesii_table-scheme_code4 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code4.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code4.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                      lwa_minesii_table-scheme_code4 'is not available' INTO
                      lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- validation for scheme SCHEME CODE5
      IF lwa_minesii_table-scheme_code5 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code5.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code5.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                      lwa_minesii_table-scheme_code5 'is not available' INTO
                      lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- validation for scheme SCHEME CODE6
      IF lwa_minesii_table-scheme_code6 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code6.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code6.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                     lwa_minesii_table-scheme_code6 'is not available' INTO
                     lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- validation for scheme SCHEME CODE7
      IF lwa_minesii_table-scheme_code7 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code7.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code7.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                    lwa_minesii_table-scheme_code7 'is not available' INTO
                    lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- validation for scheme SCHEME CODE8
      IF lwa_minesii_table-scheme_code8 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code8.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code8.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                    lwa_minesii_table-scheme_code8 'is not available' INTO
                    lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- validation for scheme SCHEME CODE9
      IF lwa_minesii_table-scheme_code9 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code9.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no   = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code  = lwa_minesii_table-scheme_code9.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                      lwa_minesii_table-scheme_code9 'is not available' INTO
                      lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

**-- validation for scheme SCHEME CODE10
      IF lwa_minesii_table-scheme_code10 IS NOT INITIAL.
        READ TABLE lt_climscd INTO lwa_climscd WITH KEY scheme_code = lwa_minesii_table-scheme_code10.
        IF sy-subrc NE 0.
          lwa_elog-invoice_no = lwa_minesii_table-invoice_no.
          lwa_elog-unit_code  = lwa_minesii_table-unit_code.
          lwa_elog-scheme_code = lwa_minesii_table-scheme_code10.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted since the Scheme Code'
                      lwa_minesii_table-scheme_code10 'is not available' INTO
                      lwa_elog-inv_mesg SEPARATED BY space.
          CONCATENATE sy-datum+6(2)'.' sy-datum+4(2)'.' sy-datum+0(4) INTO lv_date.
          CONDENSE lv_date.
          lwa_elog-zdate = lv_date.
          lwa_elog-ztime = sy-uzeit.

          APPEND lwa_elog TO lt_elog.
          CLEAR lwa_elog.
        ENDIF.
      ENDIF.

    ENDIF.



    CLEAR lwa_minesii_table.
  ENDLOOP.



  IF lt_elog IS NOT INITIAL.
    DELETE ADJACENT DUPLICATES FROM lt_elog COMPARING ALL FIELDS.
    DELETE FROM zfi_minesiielog.
    INSERT zfi_minesiielog FROM TABLE lt_elog.
    COMMIT WORK.
  ENDIF.
  IF lt_elog IS INITIAL.


    LOOP AT lt_minesii_sales INTO lwa_minesii_sales.
*************

** -- downloading file in excel

lwa_download-unit_code          = lwa_minesii_sales-unit_code         .
lwa_download-inter_state_flag   = lwa_minesii_sales-inter_state_flag  .
lwa_download-region             = lwa_minesii_sales-region            .
lwa_download-party_code         = lwa_minesii_sales-party_code        .
lwa_download-da_no              = lwa_minesii_sales-da_no             .
lwa_download-invoice_no         = lwa_minesii_sales-invoice_no        .
lwa_download-invoice_date       = lwa_minesii_sales-invoice_date      .
lwa_download-prod_code          = lwa_minesii_sales-prod_code         .
lwa_download-scheme_code        = lwa_minesii_sales-scheme_code       .
lwa_download-gl_code            = lwa_minesii_sales-gl_code           .
lwa_download-qty                = lwa_minesii_sales-qty               .
lwa_download-rate               = lwa_minesii_sales-rate              .
lwa_download-prod_amt           = lwa_minesii_sales-prod_amt          .
lwa_download-dr_scheme_code     = lwa_minesii_sales-dr_scheme_code    .
lwa_download-dr_gl_code         = lwa_minesii_sales-dr_gl_code        .
lwa_download-tot_inv_amt        = lwa_minesii_sales-tot_inv_amt       .
lwa_download-scheme_code1       = lwa_minesii_sales-scheme_code1      .
lwa_download-gl_code1           = lwa_minesii_sales-gl_code1          .
lwa_download-amount1            = lwa_minesii_sales-amount1           .
lwa_download-scheme_code2       = lwa_minesii_sales-scheme_code2      .
lwa_download-gl_code2           = lwa_minesii_sales-gl_code2          .
lwa_download-amount2            = lwa_minesii_sales-amount2           .
lwa_download-scheme_code3       = lwa_minesii_sales-scheme_code3      .
lwa_download-gl_code3           = lwa_minesii_sales-gl_code3          .
lwa_download-amount3            = lwa_minesii_sales-amount3           .
lwa_download-scheme_code4       = lwa_minesii_sales-scheme_code4      .
lwa_download-gl_code4           = lwa_minesii_sales-gl_code4          .
lwa_download-amount4            = lwa_minesii_sales-amount4           .
lwa_download-scheme_code5       = lwa_minesii_sales-scheme_code5      .
lwa_download-gl_code5           = lwa_minesii_sales-gl_code5          .
lwa_download-amount5            = lwa_minesii_sales-amount5           .
lwa_download-scheme_code6       = lwa_minesii_sales-scheme_code6      .
lwa_download-gl_code6           = lwa_minesii_sales-gl_code6          .
lwa_download-amount6            = lwa_minesii_sales-amount6           .
lwa_download-scheme_code7       = lwa_minesii_sales-scheme_code7      .
lwa_download-gl_code7           = lwa_minesii_sales-gl_code7          .
lwa_download-amount7            = lwa_minesii_sales-amount7           .
lwa_download-scheme_code8       = lwa_minesii_sales-scheme_code8      .
lwa_download-gl_code8           = lwa_minesii_sales-gl_code8          .
lwa_download-amount8            = lwa_minesii_sales-amount8           .
lwa_download-scheme_code9       = lwa_minesii_sales-scheme_code9      .
lwa_download-gl_code9           = lwa_minesii_sales-gl_code9          .
lwa_download-amount9            = lwa_minesii_sales-amount9           .
lwa_download-scheme_code10      = lwa_minesii_sales-scheme_code10     .
lwa_download-gl_code10          = lwa_minesii_sales-gl_code10         .
lwa_download-amount10           = lwa_minesii_sales-amount10          .
lwa_download-user_id            = lwa_minesii_sales-user_id           .
lwa_download-time_stamp         = lwa_minesii_sales-time_stamp        .

append lwa_download to lt_download.
clear lwa_download.



*************
      CLEAR:lwa_minesii-dr_amt,lwa_minesii-cr_amt.


      READ TABLE lt_climscd INTO lwa_climscd WITH KEY unit_code   = lwa_minesii_sales-unit_code
                                                     scheme_code = lwa_minesii_sales-scheme_code
                                                     div_code    = '95'.
      IF sy-subrc = 0.

        lwa_minesii-counter     = lwa_minesii-counter + 001.
        lwa_minesii-unit_code   = lwa_climscd-unit_code.
        lwa_minesii-scheme_code = lwa_climscd-scheme_code.
        lwa_minesii-div_code    = lwa_climscd-div_code.
        lwa_minesii-dr_amt      = lwa_minesii_sales-tot_inv_amt.
        lwa_minesii-kostl       = lwa_climscd-kostl.
        lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
        lwa_minesii-poskey      = lc_dr.
        lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
        lwa_minesii-qty         = lwa_minesii_sales-qty.
        lwa_minesii-party_code  = lwa_minesii_sales-party_code.
        lv_partycode            = lwa_minesii_sales-party_code.


        READ TABLE lt_kna1 INTO lwa_kna1 WITH KEY sortl = lv_partycode.
        IF sy-subrc EQ 0.
          lwa_minesii-gl_main_acct = lwa_kna1-kunnr.
        ENDIF.
        APPEND lwa_minesii TO lt_minesii.
        CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-dr_amt,lwa_minesii-gl_main_acct,lwa_minesii-dr_amt,
              lwa_minesii-qty.

        lwa_minesii-counter     = lwa_minesii-counter.
        lwa_minesii-unit_code   = lwa_climscd-unit_code.
        lwa_minesii-scheme_code = lwa_climscd-scheme_code.
        lwa_minesii-div_code    = lwa_climscd-div_code.
        lwa_minesii-cr_amt      = lwa_minesii_sales-prod_amt.
        lwa_minesii-kostl       = lwa_climscd-kostl.
        lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
        lwa_minesii-poskey      = lc_cr.
        lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
        lwa_minesii-party_code  = lwa_minesii_sales-party_code.
        lwa_minesii-gl_code     = lwa_minesii_sales-gl_code.
        lv_glcode               = lwa_minesii_sales-gl_code.
        READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
        IF sy-subrc EQ 0.
          lwa_minesii-gl_main_acct = lwa_skb1-saknr.
        ENDIF.
        APPEND lwa_minesii TO lt_minesii.
        CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.

        IF lwa_minesii_sales-gl_code1     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code1 IS NOT INITIAL AND
           lwa_minesii_sales-amount1  NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount1.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code1.
          lv_glcode               = lwa_minesii_sales-gl_code1.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.

        ENDIF.

        IF lwa_minesii_sales-gl_code2     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code2 IS NOT INITIAL AND
           lwa_minesii_sales-amount2  NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount2.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code2.
          lv_glcode               = lwa_minesii_sales-gl_code2.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.

        ENDIF.

        IF lwa_minesii_sales-gl_code3     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code3 IS NOT INITIAL AND
           lwa_minesii_sales-amount3  NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount3.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code3.
          lv_glcode               = lwa_minesii_sales-gl_code3.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.

        ENDIF.

        IF lwa_minesii_sales-gl_code4     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code4 IS NOT INITIAL AND
           lwa_minesii_sales-amount4 NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount4.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code4.
          lv_glcode               = lwa_minesii_sales-gl_code4.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.
        ENDIF.

        IF lwa_minesii_sales-gl_code5     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code5 IS NOT INITIAL AND
           lwa_minesii_sales-amount5  NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount5.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code5.
          lv_glcode               = lwa_minesii_sales-gl_code5.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.

        ENDIF.

        IF lwa_minesii_sales-gl_code6     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code6 IS NOT INITIAL AND
           lwa_minesii_sales-amount6  NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount6.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code6.
          lv_glcode               = lwa_minesii_sales-gl_code6.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.

        ENDIF.

        IF lwa_minesii_sales-gl_code7     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code7 IS NOT INITIAL AND
           lwa_minesii_sales-amount7  NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount7.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code7.
          lv_glcode               = lwa_minesii_sales-gl_code7.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.

        ENDIF.

        IF lwa_minesii_sales-gl_code8     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code8 IS NOT INITIAL AND
           lwa_minesii_sales-amount8  NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount8.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code8.
          lv_glcode               = lwa_minesii_sales-gl_code8.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.

        ENDIF.

        IF lwa_minesii_sales-gl_code9     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code9 IS NOT INITIAL AND
           lwa_minesii_sales-amount9  NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount9.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code9.
          lv_glcode               = lwa_minesii_sales-gl_code9.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.
        ENDIF.

        IF lwa_minesii_sales-gl_code10     IS NOT INITIAL AND
           lwa_minesii_sales-scheme_code10 IS NOT INITIAL AND
           lwa_minesii_sales-amount10  NE '.00'.

          lwa_minesii-counter     = lwa_minesii-counter.
          lwa_minesii-unit_code   = lwa_climscd-unit_code.
          lwa_minesii-scheme_code = lwa_climscd-scheme_code.
          lwa_minesii-div_code    = lwa_climscd-div_code.
          lwa_minesii-cr_amt      = lwa_minesii_sales-amount10.
          lwa_minesii-kostl       = lwa_climscd-kostl.
          lwa_minesii-prof_cen    = lwa_climscd-prof_cnt.
          lwa_minesii-poskey      = lc_cr.
          lwa_minesii-invoice_no  = lwa_minesii_sales-invoice_no.
          lwa_minesii-party_code  = lwa_minesii_sales-party_code.
          lwa_minesii-gl_code     = lwa_minesii_sales-gl_code10.
          lv_glcode               = lwa_minesii_sales-gl_code10.
          READ TABLE lt_skb1 INTO lwa_skb1 WITH  KEY altkt = lv_glcode.
          IF sy-subrc EQ 0.
            lwa_minesii-gl_main_acct = lwa_skb1-saknr.
          ENDIF.
          APPEND lwa_minesii TO lt_minesii.
          CLEAR:lwa_minesii-gl_code,lv_glcode,lwa_minesii-cr_amt,lwa_minesii-gl_main_acct,lwa_minesii-cr_amt.

        ENDIF.

**Validation checking for debit & credit for every invoice before posting
        CLEAR:lv_debit,lv_credit,lv_difamt,lv_amount_cr,lv_amount_dr.
        LOOP AT lt_minesii INTO lwa_minesii WHERE invoice_no = lwa_minesii-invoice_no.
          lv_debit = lv_debit + lwa_minesii-dr_amt.
          lv_credit = lv_credit + lwa_minesii-cr_amt.
        ENDLOOP.


        IF lv_credit EQ lv_debit.
*
        ELSE.
          lwa_elog-invoice_no = lwa_minesii-invoice_no.
          CONCATENATE'Invoice' lwa_elog-invoice_no 'not Posted because of Credit/Debit Missmatch' INTO
          lwa_elog-inv_mesg SEPARATED BY space.
          APPEND lwa_elog TO lt_elog.
          DELETE lt_minesii WHERE invoice_no = lwa_elog-invoice_no.
          CLEAR lwa_elog.

        ENDIF.

      ELSEIF sy-subrc NE 0.

        lwa_elog-invoice_no = lwa_minesii_sales-invoice_no.

        CONCATENATE 'Unit Code'   lwa_minesii_sales-unit_code
                    'Scheme Code' lwa_minesii_sales-scheme_code 'Division Code' '95'
                    'Combination not maintained in table'
                    INTO lwa_elog-inv_mesg SEPARATED BY space.


        APPEND lwa_elog TO lt_elog.
        CLEAR lwa_elog.
*      LV_ERROR = 'X'.
*      EXIT.

      ENDIF.
*    CLEAR:LWA_MINESII.
*    ENDIF.

*    DELETE LT_MINESII WHERE CR_AMT EQ '0' AND DR_AMT NE '0'.
    ENDLOOP.


*******    DOWNLOAD EXCEL

**First Download
  IF sy-mandt+0(1) = '2'.
    CONCATENATE 'C:\INTERFACES\MINEII\DEV\SAP_MINEII' sy-mandt sy-datum '.XLS' INTO lv_path.
  ELSEIF sy-mandt+0(1) = '3'.
    CONCATENATE 'C:\INTERFACES\MINEII\QTY\SAP_MINEII' sy-mandt sy-datum '.XLS' INTO lv_path.
  ELSEIF sy-mandt+0(1) = '4'.
    CONCATENATE 'C:\INTERFACES\MINEII\PRD\SAP_MINEII' sy-mandt sy-datum '.XLS' INTO lv_path.
  ENDIF.


  CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
      filename                = lv_path
      filetype                = 'ASC'
      write_field_separator   = 'X'
    CHANGING
      data_tab                = lt_download
    EXCEPTIONS
      file_write_error        = 1
      no_batch                = 2
      gui_refuse_filetransfer = 3
      invalid_type            = 4
      no_authority            = 5
      unknown_error           = 6
      header_not_allowed      = 7
      separator_not_allowed   = 8
      filesize_not_allowed    = 9
      header_too_long         = 10
      dp_error_create         = 11
      dp_error_send           = 12
      dp_error_write          = 13
      unknown_dp_error        = 14
      access_denied           = 15
      dp_out_of_memory        = 16
      disk_full               = 17
      dp_timeout              = 18
      file_not_found          = 19
      dataprovider_exception  = 20
      control_flush_error     = 21
      not_supported_by_gui    = 22
      error_no_gui            = 23
      OTHERS                  = 24.
  IF sy-subrc <> 0.
*   Implement suitable error handling here
  ENDIF.

*******

    DELETE FROM zfi_minesiielog.
    COMMIT WORK.

    IF lt_elog IS NOT INITIAL.

      INSERT zfi_minesiielog FROM TABLE lt_elog.
      IF sy-subrc EQ 0.
        COMMIT WORK.
      ENDIF.
    ENDIF.


    IF lt_elog IS INITIAL.

      CALL FUNCTION 'ZFI_INTERFACE_MINESII'
        TABLES
          lt_minesii = lt_minesii[]
          lt_elog    = lt_elog[].

**Getting Success and Failure messages from BDC

      REFRESH lt_suc_message[].
      REFRESH lt_fail_message[].
      IMPORT lt_suc_message TO lt_suc_message[]  FROM MEMORY ID 'SUCCESS'.
      IMPORT lt_fail_message TO lt_fail_message[]  FROM MEMORY ID 'FAIL'.

***logic for mail
      DATA lv_str(30).
      DATA lv_str1(30).
      lv_str = 'Posted Successfully'.
      lv_str1 = 'Posting Failed'.
      LOOP AT lt_suc_message INTO wa_suc_message.
        wa_suc_message1-mandt = sy-mandt.
        wa_suc_message1-message = wa_suc_message-l_mstring.

        CONCATENATE wa_suc_message1-message lv_str INTO wa_suc_message1-message SEPARATED BY space.
        APPEND wa_suc_message1 TO lt_suc_message1.
        CLEAR:wa_suc_message1,wa_suc_message.
      ENDLOOP.
      SORT lt_suc_message1 ASCENDING BY mandt message.
      DELETE ADJACENT DUPLICATES FROM lt_suc_message1 COMPARING mandt message.



      LOOP AT lt_fail_message INTO wa_fail_message.
        wa_fail_message1-mandt = sy-mandt.
        wa_fail_message1-message = wa_fail_message-l_mstring.

        CONCATENATE wa_fail_message1-message lv_str1 INTO wa_fail_message1-message SEPARATED BY space.
        APPEND wa_fail_message1 TO lt_fail_message1.
        CLEAR:wa_fail_message1,wa_fail_message.
      ENDLOOP.
      SORT lt_fail_message1 ASCENDING BY mandt message.
      DELETE ADJACENT DUPLICATES FROM lt_fail_message1 COMPARING mandt message.

      IF lt_suc_message1[] IS NOT INITIAL.

        CALL FUNCTION 'ZSEND_MAIL_MINEII'
          TABLES
            lt_mail = lt_suc_message1[].


      ENDIF.

      IF lt_fail_message1[] IS NOT INITIAL.

        CALL FUNCTION 'ZSEND_MAIL_MINEII'
          TABLES
            lt_mail = lt_fail_message1[].



      ENDIF.
    ENDIF.
  ENDIF.    "for error log (Non-availability of party code)
ENDMETHOD.























***************************************************************
Custom Function module for posting
***************************************************************




FUNCTION ZFI_INTERFACE_MINESII.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(CTU) LIKE  APQI-PUTACTIVE DEFAULT 'X'
*"     VALUE(MODE) LIKE  APQI-PUTACTIVE DEFAULT 'N'
*"     VALUE(UPDATE) LIKE  APQI-PUTACTIVE DEFAULT 'L'
*"     VALUE(GROUP) LIKE  APQI-GROUPID OPTIONAL
*"     VALUE(USER) LIKE  APQI-USERID OPTIONAL
*"     VALUE(KEEP) LIKE  APQI-QERASE OPTIONAL
*"     VALUE(HOLDDATE) LIKE  APQI-STARTDATE OPTIONAL
*"     VALUE(NODATA) LIKE  APQI-PUTACTIVE DEFAULT '/'
*"     VALUE(BLDAT_001) LIKE  BDCDATA-FVAL DEFAULT '02.09.2014'
*"     VALUE(BLART_002) LIKE  BDCDATA-FVAL DEFAULT 'sa'
*"     VALUE(BUKRS_003) LIKE  BDCDATA-FVAL DEFAULT '1000'
*"     VALUE(BUDAT_004) LIKE  BDCDATA-FVAL DEFAULT '12.09.2014'
*"     VALUE(MONAT_005) LIKE  BDCDATA-FVAL DEFAULT '10'
*"     VALUE(WAERS_006) LIKE  BDCDATA-FVAL DEFAULT 'inr'
*"     VALUE(XBLNR_007) LIKE  BDCDATA-FVAL DEFAULT 'Upload'
*"     VALUE(BKTXT_008) LIKE  BDCDATA-FVAL DEFAULT 'MINESII Sales'
*"     VALUE(DOCID_009) LIKE  BDCDATA-FVAL DEFAULT '*'
*"     VALUE(NEWBS_010) LIKE  BDCDATA-FVAL DEFAULT '40'
*"     VALUE(NEWKO_011) LIKE  BDCDATA-FVAL DEFAULT '4025100301'
*"     VALUE(WRBTR_012) LIKE  BDCDATA-FVAL DEFAULT '1000'
*"     VALUE(BUPLA_013) LIKE  BDCDATA-FVAL DEFAULT 'M00I'
*"     VALUE(ZUONR_016) LIKE  BDCDATA-FVAL DEFAULT 'upld'
*"     VALUE(SGTXT_017) LIKE  BDCDATA-FVAL DEFAULT 'olimmslwdger'
*"     VALUE(FMORE_018) LIKE  BDCDATA-FVAL DEFAULT 'X'
*"     VALUE(WRBTR_020) LIKE  BDCDATA-FVAL DEFAULT '1000'
*"     VALUE(BUPLA_021) LIKE  BDCDATA-FVAL DEFAULT 'M00I'
*"     VALUE(ZUONR_024) LIKE  BDCDATA-FVAL DEFAULT 'upld'
*"     VALUE(SGTXT_025) LIKE  BDCDATA-FVAL DEFAULT 'olimmslwdger'
*"     VALUE(NEWBS_026) LIKE  BDCDATA-FVAL DEFAULT '50'
*"     VALUE(NEWKO_027) LIKE  BDCDATA-FVAL DEFAULT '2220030122'
*"     VALUE(FMORE_028) LIKE  BDCDATA-FVAL DEFAULT 'X'
*"     VALUE(KOSTL_029) LIKE  BDCDATA-FVAL DEFAULT 'M010010102'
*"     VALUE(PRCTR_030) LIKE  BDCDATA-FVAL DEFAULT 'M01002'
*"     VALUE(GEBER_031) LIKE  BDCDATA-FVAL DEFAULT 'INT-ACCRUL'
*"     VALUE(FIPEX_032) LIKE  BDCDATA-FVAL DEFAULT 'NONBUDGET'
*"     VALUE(FISTL_033) LIKE  BDCDATA-FVAL DEFAULT 'M010010102'
*"     VALUE(FIPOS_034) LIKE  BDCDATA-FVAL DEFAULT 'NONBUDGET'
*"     VALUE(WRBTR_035) LIKE  BDCDATA-FVAL DEFAULT '1000'
*"     VALUE(BUPLA_036) LIKE  BDCDATA-FVAL DEFAULT 'M00I'
*"     VALUE(ZUONR_039) LIKE  BDCDATA-FVAL DEFAULT 'upld'
*"     VALUE(SGTXT_040) LIKE  BDCDATA-FVAL DEFAULT 'olimmslwdger'
*"     VALUE(FMORE_041) LIKE  BDCDATA-FVAL DEFAULT 'X'
*"     VALUE(PRCTR_042) LIKE  BDCDATA-FVAL DEFAULT 'M01001'
*"     VALUE(WRBTR_043) LIKE  BDCDATA-FVAL DEFAULT '1000'
*"     VALUE(BUPLA_044) LIKE  BDCDATA-FVAL DEFAULT 'M00I'
*"     VALUE(ZUONR_047) LIKE  BDCDATA-FVAL DEFAULT 'upld'
*"     VALUE(SGTXT_048) LIKE  BDCDATA-FVAL DEFAULT 'olimmslwdger'
*"     VALUE(NEWBS_049) LIKE  BDCDATA-FVAL DEFAULT '40'
*"     VALUE(NEWKO_050) LIKE  BDCDATA-FVAL DEFAULT '1015060101'
*"     VALUE(FMORE_051) LIKE  BDCDATA-FVAL DEFAULT 'X'
*"     VALUE(PRCTR_052) LIKE  BDCDATA-FVAL DEFAULT 'M01001'
*"     VALUE(FIPEX_053) LIKE  BDCDATA-FVAL DEFAULT 'BALANCESHEET'
*"     VALUE(FIPOS_054) LIKE  BDCDATA-FVAL DEFAULT 'BALANCESHEET'
*"     VALUE(WRBTR_055) LIKE  BDCDATA-FVAL DEFAULT '1000'
*"     VALUE(BUPLA_056) LIKE  BDCDATA-FVAL DEFAULT 'M00I'
*"     VALUE(ZUONR_059) LIKE  BDCDATA-FVAL DEFAULT 'upld'
*"     VALUE(SGTXT_060) LIKE  BDCDATA-FVAL DEFAULT 'olimmslwdger'
*"     VALUE(FMORE_061) LIKE  BDCDATA-FVAL DEFAULT 'X'
*"     VALUE(PRCTR_062) LIKE  BDCDATA-FVAL DEFAULT 'M01001'
*"     VALUE(WRBTR_063) LIKE  BDCDATA-FVAL DEFAULT '1000'
*"     VALUE(BUPLA_064) LIKE  BDCDATA-FVAL DEFAULT 'M00I'
*"     VALUE(ZUONR_067) LIKE  BDCDATA-FVAL DEFAULT 'upld'
*"     VALUE(SGTXT_068) LIKE  BDCDATA-FVAL DEFAULT 'olimmslwdger'
*"     VALUE(NEWBS_069) LIKE  BDCDATA-FVAL DEFAULT '50'
*"     VALUE(NEWKO_070) LIKE  BDCDATA-FVAL DEFAULT '3005030203'
*"     VALUE(FMORE_071) LIKE  BDCDATA-FVAL DEFAULT 'X'
*"     VALUE(PRCTR_072) LIKE  BDCDATA-FVAL DEFAULT 'M01001'
*"     VALUE(GEBER_073) LIKE  BDCDATA-FVAL DEFAULT 'INT-ACCRUL'
*"     VALUE(FIPEX_074) LIKE  BDCDATA-FVAL DEFAULT 'BALANCESHEET'
*"     VALUE(FIPOS_075) LIKE  BDCDATA-FVAL DEFAULT 'BALANCESHEET'
*"     VALUE(WRBTR_076) LIKE  BDCDATA-FVAL DEFAULT '1000'
*"     VALUE(BUPLA_077) LIKE  BDCDATA-FVAL DEFAULT 'M00I'
*"     VALUE(ZUONR_080) LIKE  BDCDATA-FVAL DEFAULT 'upld'
*"     VALUE(SGTXT_081) LIKE  BDCDATA-FVAL DEFAULT 'olimmslwdger'
*"     VALUE(FMORE_082) LIKE  BDCDATA-FVAL DEFAULT 'X'
*"     VALUE(PRCTR_083) LIKE  BDCDATA-FVAL DEFAULT 'M01001'
*"     VALUE(WRBTR_084) LIKE  BDCDATA-FVAL DEFAULT '1000'
*"     VALUE(BUPLA_085) LIKE  BDCDATA-FVAL DEFAULT 'M00I'
*"     VALUE(ZUONR_088) LIKE  BDCDATA-FVAL DEFAULT 'upld'
*"     VALUE(SGTXT_089) LIKE  BDCDATA-FVAL DEFAULT 'olimmslwdger'
*"     VALUE(FMORE_090) LIKE  BDCDATA-FVAL DEFAULT 'X'
*"     VALUE(PRCTR_091) LIKE  BDCDATA-FVAL DEFAULT 'M01001'
*"     VALUE(GEBER_092) LIKE  BDCDATA-FVAL DEFAULT 'INT-ACCRUL'
*"     VALUE(FIPEX_093) LIKE  BDCDATA-FVAL DEFAULT 'NONBUDGET'
*"     VALUE(FIPOS_094) LIKE  BDCDATA-FVAL DEFAULT 'NONBUDGET'
*"  EXPORTING
*"     VALUE(SUBRC) LIKE  SYST-SUBRC
*"  TABLES
*"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
*"      LT_MINESII STRUCTURE  ZFI_MINESII
*"      LT_ELOG STRUCTURE  ZFI_MINESIIELOG
*"----------------------------------------------------------------------
BREAK-POINT.
  DATA :LWA_MINESII  LIKE LT_MINESII,
          LWA_MINESII_TEMP  LIKE LT_MINESII.

  DATA  LT_MINESII_TEMP  TYPE TABLE OF ZFI_MINESII.


  DATA: LV_COUNTER       TYPE CHAR1,
        LV_AMT           TYPE BDC_FVAL,
        LV_INC           TYPE I,
        LV_DATUM(10)     TYPE C,
        lv_qty           TYPE BDC_FVAL.
*        COUNTER          TYPE CHAR1.

  CONSTANTS:
        LC_AMT(15)       TYPE C        VALUE SPACE,
        LC_DCTYP         TYPE BDC_FVAL VALUE 'M1',"'ZI',
        LC_BUKRS         TYPE BDC_FVAL VALUE '1000',
        LC_WAERS         TYPE BDC_FVAL VALUE 'INR',
        LC_ZUONR         TYPE BDC_FVAL VALUE 'MINESII SALES',
        LC_SGTXT         TYPE BDC_FVAL VALUE 'MINESII SALES'.


*  LV_COUNTER = 1.

  LV_INC = 1.

  LT_MINESII_TEMP[] = LT_MINESII[].

  LOOP AT LT_MINESII INTO LWA_MINESII.
*    clear:lv_qty.
    if lwa_minesii-poskey = '01'.
      lv_qty = LWA_MINESII-qty.
      endif.

    IF LWA_MINESII-CR_AMT NE LC_AMT.
      LV_AMT = LWA_MINESII-CR_AMT.
    ELSEIF LWA_MINESII-DR_AMT NE LC_AMT.
      LV_AMT = LWA_MINESII-DR_AMT.
    ENDIF.

    CONCATENATE SY-DATUM+6(2) '.'
                SY-DATUM+4(2) '.'
                SY-DATUM+0(4) INTO LV_DATUM.


    SUBRC = 0.

**************Processing of Header Record for the first time*******************
    ON CHANGE OF LWA_MINESII-COUNTER.
      PERFORM BDC_NODATA      USING NODATA.

      PERFORM OPEN_GROUP      USING GROUP USER KEEP HOLDDATE CTU.

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0100'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'RF05A-NEWKO'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'BKPF-BLDAT'
                                    LV_DATUM."BLDAT_001.
      PERFORM BDC_FIELD       USING 'BKPF-BLART'
                                    LC_DCTYP."BLART_002.
      PERFORM BDC_FIELD       USING 'BKPF-BUKRS'
                                    LC_BUKRS."BUKRS_003.
      PERFORM BDC_FIELD       USING 'BKPF-BUDAT'
                                    LV_DATUM."BUDAT_004.
      PERFORM BDC_FIELD       USING 'BKPF-MONAT'
                                    MONAT_005.
      PERFORM BDC_FIELD       USING 'BKPF-WAERS'
                                    LC_WAERS."WAERS_006.
      PERFORM BDC_FIELD       USING 'BKPF-XBLNR'
                                    LWA_MINESII-INVOICE_NO."XBLNR_007.
      PERFORM BDC_FIELD       USING 'BKPF-BKTXT'
                                    BKTXT_008.
      PERFORM BDC_FIELD       USING 'FS006-DOCID'
                                    DOCID_009.
      PERFORM BDC_FIELD       USING 'RF05A-NEWBS'
                                    LWA_MINESII-POSKEY."NEWBS_010.
      PERFORM BDC_FIELD       USING 'RF05A-NEWKO'
                                    LWA_MINESII-GL_MAIN_ACCT."NEWKO_011.

    ENDON.

*    BREAK-POINT.
******************End of header Record*******************************************

    IF LWA_MINESII-POSKEY = '50'.
***********Processing of Next Screens**********************************************

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0300'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'BSEG-SGTXT'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'BSEG-WRBTR'
                                    LV_AMT."WRBTR_012.
      PERFORM BDC_FIELD       USING 'BSEG-BUPLA'
                                    BUPLA_013.

      if lwa_minesII-gl_code = '6531'.
      PERFORM BDC_FIELD       USING 'BSEG-MENGE'
                                    lv_qty.
      PERFORM BDC_FIELD       USING 'BSEG-MEINS'
                                    'TO'."MEINS_015.
      endif.
      PERFORM BDC_FIELD       USING 'BSEG-ZUONR'
                                    LC_ZUONR."ZUONR_016.
      PERFORM BDC_FIELD       USING 'BSEG-SGTXT'
                                    LC_SGTXT."SGTXT_017.
      PERFORM BDC_FIELD       USING 'DKACB-FMORE'
                                    FMORE_018.
***
      PERFORM BDC_DYNPRO      USING 'SAPLKACB' '0002'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'COBL-KOSTL'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=ENTE'.
*      PERFORM BDC_FIELD       USING 'COBL-KOSTL'
*                                    LWA_MINESII-KOSTL."KOSTL_019.
      PERFORM BDC_FIELD       USING 'COBL-PRCTR'
                                    LWA_MINESII-PROF_CEN."KOSTL_019.
*      PERFORM BDC_FIELD       USING 'COBL-FIPEX'
*                                    'NONBUDGET'.

***********End Of screens***********************************************************

      LV_INC = LV_INC + 1.

*********after all the items are processed posting being done in F-02*********
      AT END OF COUNTER.

        PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0300'.  "300 ABHINAV
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                        '=BU'.
        PERFORM BDC_DYNPRO      USING 'SAPLKACB' '0002'.

        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=ENTE'.
        PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0700'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'RF05A-NEWBS'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=BU'.

        PERFORM BDC_TRANSACTION TABLES MESSTAB
      USING                         'F-02'
                                    CTU
                                    MODE
                                    UPDATE.

*        BREAK-POINT.
        IF SY-SUBRC <> 0.
          SUBRC = SY-SUBRC.
          EXIT.
        ENDIF.

        PERFORM CLOSE_GROUP USING     CTU.
        CONTINUE.
      ENDAT.
***************End of posting*****************************

************Reading next line item form the Temp. Internal table for Posting key and G/L Acct.
      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0300'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                     '/00'.

      READ TABLE LT_MINESII_TEMP INTO LWA_MINESII_TEMP  INDEX LV_INC.
      IF SY-SUBRC = 0.
        PERFORM BDC_FIELD       USING 'RF05A-NEWBS'
                                      LWA_MINESII_TEMP-POSKEY.
        PERFORM BDC_FIELD       USING 'RF05A-NEWKO'
                                      LWA_MINESII_TEMP-GL_MAIN_ACCT.
**        PERFORM BDC_FIELD       USING 'RF05A-NEWUM'
**                                      GFS_RECORD-NEWUM.

      ENDIF.

      PERFORM BDC_DYNPRO      USING 'SAPLKACB' '0002'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=ENTE'.
*    NEWBS = GFS_RECORD-NEWBS.
      CLEAR:LWA_MINESII_TEMP.
      CONTINUE.
*************end of reading next line item**************************************
    ENDIF.


    IF LWA_MINESII-POSKEY = '01'.

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0301'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'RF05A-NEWKO'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
*      PERFORM BDC_FIELD       USING 'BSEG-HKONT'
*                                    GFS_RECORD-HKONT."'2215010101'.
      PERFORM BDC_FIELD       USING 'BSEG-WRBTR'
                                    LV_AMT."'1000'.
*      PERFORM BDC_FIELD       USING 'BSEG-MWSKZ'
*                                    '**'.
*      PERFORM BDC_FIELD       USING 'BSEG-ZTERM'
*                                    GFS_RECORD-ZTERM."'0001'.
      PERFORM BDC_FIELD       USING 'BSEG-ZFBDT'
                                    LV_DATUM."result."GFS_RECORD-BUDAT."'12.11.2014'.
      PERFORM BDC_FIELD       USING 'BSEG-ZUONR'
                                    LC_ZUONR."'JJJJJ'.
      PERFORM BDC_FIELD       USING 'BSEG-SGTXT'
                                    LC_SGTXT."'FFFF'.
      LV_INC = LV_INC + 1.
      AT END OF COUNTER.
        PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0301'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=BS'.
*BREAK-POINT.
        PERFORM BDC_TRANSACTION TABLES MESSTAB
   USING                         'F-02'
                                 CTU
                                 MODE
                                 UPDATE.
*        BREAK-POINT.
        IF SY-SUBRC <> 0.
          SUBRC = SY-SUBRC.
          EXIT.
        ENDIF.

        PERFORM CLOSE_GROUP USING     CTU.
        CONTINUE.
      ENDAT.

      READ TABLE LT_MINESII_TEMP INTO LWA_MINESII_TEMP  INDEX LV_INC.
      IF SY-SUBRC = 0.
        PERFORM BDC_FIELD       USING 'RF05A-NEWBS'
                                      LWA_MINESII_TEMP-POSKEY.
        PERFORM BDC_FIELD       USING 'RF05A-NEWKO'
                                      LWA_MINESII_TEMP-GL_MAIN_ACCT.
**        PERFORM BDC_FIELD       USING 'RF05A-NEWUM'
**                                      GFS_RECORD-NEWUM.


*        PERFORM BDC_FIELD       USING 'RF05A-NEWUM'
*                                       GFS_RECORD-NEWUM_012(001).


      ENDIF.
      CONTINUE.
    ENDIF.

  ENDLOOP.
**DATA LT_MESSTAB TYPE STANDARD TABLE OF BDCMSGCOLL.
** LT_MESSTAB[] =  messtab[].
*  BREAK-POINT.

  FREE MEMORY ID 'SUCCESS'.
  FREE MEMORY ID 'FAIL'.
  refresh lt_suc_message[].
  refresh lt_fail_message[].
  TABLES T100.
  LOOP AT MESSTAB WHERE MSGTYP = 'S'.
    SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
    AND ARBGB = MESSTAB-MSGID
    AND MSGNR = MESSTAB-MSGNR.
    IF SY-SUBRC = 0.
      L_MSTRING = T100-TEXT.
      IF L_MSTRING CS '&1'.
        REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
        REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
        REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
        REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
      ELSE.
        REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
        REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
        REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
        REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
      ENDIF.
      CONDENSE L_MSTRING.
      APPEND L_MSTRING TO LT_SUC_MESSAGE.
    ENDIF.
  ENDLOOP.

   EXPORT LT_SUC_MESSAGE TO MEMORY ID 'SUCCESS'.

  LOOP AT MESSTAB WHERE MSGTYP = 'E'.
    SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
    AND ARBGB = MESSTAB-MSGID
    AND MSGNR = MESSTAB-MSGNR.
    IF SY-SUBRC = 0.
      L_MSTRING1 = T100-TEXT.
      IF L_MSTRING1 CS '&1'.
        REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
        REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
        REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
        REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
      ELSE.
        REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
        REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
        REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
        REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
      ENDIF.
      CONDENSE L_MSTRING1.
      APPEND L_MSTRING1 TO LT_FAIL_MESSAGE.
    ENDIF.
  ENDLOOP.

       EXPORT LT_FAIL_MESSAGE TO MEMORY ID 'FAIL'.

ENDFUNCTION.
INCLUDE BDCRECXY .

Saturday, June 6, 2015

Download Internal table data into excel sheet


**Download File which is received 

  lwa_dwnld-unit_code    = 'Unit'.
  lwa_dwnld-scheme_code  = 'Scheme Code'.
  lwa_dwnld-div_code     = 'Division Code'.
  lwa_dwnld-gl_code      = 'GL Code'.
  lwa_dwnld-dr_amt       = 'Debit Amount'.
  lwa_dwnld-cr_amt       = 'Credit Amount'.
  lwa_dwnld-jv_no        = 'JV Number'.
  lwa_dwnld-ch_jv_type   = 'JV Type'.
  APPEND lwa_dwnld TO lt_dwnld.
  LOOP AT lt_olimms INTO lwa_olimms.

    MOVE-CORRESPONDING lwa_olimms TO lwa_dwnld.
    APPEND lwa_dwnld TO lt_dwnld.

  ENDLOOP.

**First Download
  IF sy-mandt+0(1) = '2'.
    CONCATENATE 'C:\OLIMMS\DEV\LEGACYDATA' sy-mandt sy-datum '.XLS' INTO lv_path.
  ELSEIF sy-mandt+0(1) = '3'.
    CONCATENATE 'C:\OLIMMS\QTY\LEGACYDATA' sy-mandt sy-datum '.XLS' INTO lv_path.
  ELSEIF sy-mandt+0(1) = '4'.
    CONCATENATE 'C:\OLIMMS\PRD\LEGACYDATA' sy-mandt sy-datum '.XLS' INTO lv_path.
  ENDIF.
*  lv_path = 'E:\OLIMMS.XLS'.
  CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
      filename                = lv_path
      filetype                = 'ASC'
      write_field_separator   = 'X'
    CHANGING
      data_tab                = lt_dwnld
    EXCEPTIONS
      file_write_error        = 1
      no_batch                = 2
      gui_refuse_filetransfer = 3
      invalid_type            = 4
      no_authority            = 5
      unknown_error           = 6
      header_not_allowed      = 7
      separator_not_allowed   = 8
      filesize_not_allowed    = 9
      header_too_long         = 10
      dp_error_create         = 11
      dp_error_send           = 12
      dp_error_write          = 13
      unknown_dp_error        = 14
      access_denied           = 15
      dp_out_of_memory        = 16
      disk_full               = 17
      dp_timeout              = 18
      file_not_found          = 19
      dataprovider_exception  = 20
      control_flush_error     = 21
      not_supported_by_gui    = 22
      error_no_gui            = 23
      OTHERS                  = 24.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

Friday, June 5, 2015

Custom Function module to send Email with attachment














FUNCTION ZSEND_MAIL_OLIMMS.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  TABLES
*"      LT_MAIL STRUCTURE  ZFI_MINEII_MAIL
*"----------------------------------------------------------------------

  FIELD-SYMBOLS: <FIELD> TYPE ANY.

  DATA :

BEGIN OF I_DLOAD OCCURS 0 ,
 DLOAD(1000) ,
END OF I_DLOAD ,

IT_RECEIVERS LIKE SOMLRECI1 OCCURS 1 WITH HEADER LINE,
W_OBJECT_CONTENT LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE,
W_DOC_DATA LIKE SODOCCHGI1 OCCURS 0 WITH HEADER LINE,
W_RSNUM(10),
W_BDMNG(14),
W_MEINS(4),

*---for e_mail address
WS_EMAIL1 LIKE ADR6-SMTP_ADDR,
WS_EMAIL2 LIKE ADR6-SMTP_ADDR,
WS_EMAIL3 LIKE ADR6-SMTP_ADDR,
WS_EMAIL4 LIKE ADR6-SMTP_ADDR,
WS_EMAIL5 LIKE ADR6-SMTP_ADDR,

*--Internal table declaration
IT_OBJPACK   LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE,
IT_OBJHEAD   LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE,
IT_OBJBIN    LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
IT_OBJTXT    LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
IT_RECLIST   LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE,
DOC_CHNG  LIKE SODOCCHGI1,
TAB_LINES LIKE SY-TABIX,
W_LONGTEXT(255) TYPE C,
V_DATE(10) TYPE C,
TEXT(200)  TYPE C,
W_TEXT(50) TYPE C,

*---declaration for diaplaying msg in the body of mail.
W_MSGA(18) TYPE C,
W_MSGB(22) TYPE C,
W_MSGC(27) TYPE C.

data :
   lv_string type string,
   lv_date type string,
   lv_fname(27) type c.

*--Get receipient address
  CLEAR IT_RECLIST.

*---passing e_mail address
**  WS_EMAIL1 = 'vipin.saraika@wipro.com'.         "E-mail
**  WS_EMAIL2 = 'dilli.teegala@wipro.com'.         "E-mail
**  WS_EMAIL3 = 'raviteja.bodi@wipro.com'.         "E-mail
**  WS_EMAIL4 = 'vijayasai.basavaraju@wipro.com'.  "E-mail
**  WS_EMAIL5 = 'govinda.pothuraju@wipro.com'.


WS_EMAIL1 = 'raviteja.bodi@wipro.com'.         "E-mail
WS_EMAIL2 = 'kasifshameem@wipro.com'.         "E-mail                           "E-mail


concatenate  sy-datum+6(2)'.' sy-datum+4(2) '.'sy-datum+0(4)  into lv_date.
concatenate 'Olimms' lv_date into lv_string SEPARATED BY space.

lv_fname = lv_string.
*---setting name of file for csv
  W_FILENAME = lv_fname.                   "filenmae of attachment

*  IF p_email IS NOT INITIAL.
* build body of message
  CONCATENATE 'Please find the attachment to check the OLIMMS Interface status' ' ' INTO IT_OBJTXT  "main Body of mail
  SEPARATED BY SPACE.
  APPEND IT_OBJTXT.
  CLEAR IT_OBJTXT.

  IT_RECLIST-RECEIVER = WS_EMAIL1.
  IT_RECLIST-REC_TYPE = 'U'.
  IT_RECLIST-EXPRESS  = ' '.
  IT_RECLIST-COM_TYPE = 'INT'.
  APPEND IT_RECLIST.

  IT_RECLIST-RECEIVER = WS_EMAIL2.
  IT_RECLIST-REC_TYPE = 'U'.
  IT_RECLIST-EXPRESS  = ' '.
  IT_RECLIST-COM_TYPE = 'INT'.
  APPEND IT_RECLIST.

  IT_RECLIST-RECEIVER = WS_EMAIL3.
  IT_RECLIST-REC_TYPE = 'U'.
  IT_RECLIST-EXPRESS  = ' '.
  IT_RECLIST-COM_TYPE = 'INT'.
  APPEND IT_RECLIST.

  IT_RECLIST-RECEIVER = WS_EMAIL4.
  IT_RECLIST-REC_TYPE = 'U'.
  IT_RECLIST-EXPRESS  = ' '.
  IT_RECLIST-COM_TYPE = 'INT'.
  APPEND IT_RECLIST.

  IT_RECLIST-RECEIVER = WS_EMAIL5.
  IT_RECLIST-REC_TYPE = 'U'.
  IT_RECLIST-EXPRESS  = ' '.
  IT_RECLIST-COM_TYPE = 'INT'.
  APPEND IT_RECLIST.
*--Set title of object and email
  CLEAR: W_TEXT.
  DOC_CHNG-OBJ_DESCR = 'Olimms Interface'. "Subject of mail
  DOC_CHNG-OBJ_NAME  = 'INBOUND'.
  DESCRIBE TABLE IT_OBJTXT LINES TAB_LINES.
  READ TABLE IT_OBJTXT INDEX TAB_LINES.
  DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( IT_OBJTXT ).
*--Move the Report Name as the Heading line for email file
  CLEAR: W_LONGTEXT.
  W_LONGTEXT = 'Olimms Interface Status Report'. "heading inside the attachemnt file
  IT_OBJBIN = W_LONGTEXT.
  APPEND IT_OBJBIN. CLEAR IT_OBJBIN.
*--Append Blank Lines
  APPEND IT_OBJBIN. CLEAR IT_OBJBIN.
  APPEND IT_OBJBIN. CLEAR IT_OBJBIN.
**--User name
  CLEAR TEXT.
  MOVE: 'User:'  TO TEXT,  "user inside attachment
        SY-UNAME TO TEXT+6.
  IT_OBJBIN = TEXT.
  APPEND IT_OBJBIN. CLEAR IT_OBJBIN.
* ---appending heading to Internal table of Email
  CLEAR: W_L_M_STRING.
  W_L_M_STRING = 'Messages'.   "sub-heading inside attachment

*    CONCATENATE w_l_m_string
*               INTO w_longtext SEPARATED BY ','.
  IT_OBJBIN = W_L_M_STRING.
  APPEND IT_OBJBIN. CLEAR IT_OBJBIN.
  LOOP AT LT_MAIL.
    DO.
      ASSIGN COMPONENT SY-INDEX OF STRUCTURE LT_MAIL TO <FIELD>.
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.
* Look for Commas in the field value.  If it exists, put quotes around
* value so that the file opens correctly with all the columns aligned
* in Excel.
      SEARCH <FIELD> FOR ',' IN CHARACTER MODE.
* If search for commas are successful.
      IF SY-SUBRC = 0.
        CONCATENATE '"' <FIELD> '"' INTO <FIELD> IN CHARACTER MODE.
      ENDIF.
      IF SY-INDEX = 1.
        I_DLOAD-DLOAD = <FIELD>.
        SHIFT: I_DLOAD-DLOAD  LEFT DELETING LEADING SPACE.
      ELSE.
* Put Comma as a separator for values in IT_DLOAD internal table
        SHIFT: I_DLOAD-DLOAD  LEFT DELETING LEADING SPACE.
        CONCATENATE I_DLOAD-DLOAD <FIELD> INTO I_DLOAD-DLOAD
                    SEPARATED BY ',' IN CHARACTER MODE.
      ENDIF.
    ENDDO.
    IT_OBJBIN = I_DLOAD-DLOAD.
    APPEND IT_OBJBIN. CLEAR IT_OBJBIN.
  ENDLOOP.
*  ENDIF.
*  ENDIF.

*Convert to correct format
  CALL FUNCTION 'SO_RAW_TO_RTF'
    TABLES
      OBJCONT_OLD = IT_OBJBIN
      OBJCONT_NEW = IT_OBJBIN.

* create the control table entry for the main email
  DESCRIBE TABLE IT_OBJTXT LINES TAB_LINES.
  CLEAR IT_OBJPACK-TRANSF_BIN.
  IT_OBJPACK-HEAD_START = 1.
  IT_OBJPACK-HEAD_NUM   = 0.
  IT_OBJPACK-BODY_START = 1.
  IT_OBJPACK-BODY_NUM   = TAB_LINES.
  IT_OBJPACK-DOC_TYPE   = 'RAW'.
  APPEND IT_OBJPACK.

  DESCRIBE TABLE IT_OBJBIN LINES TAB_LINES.
  IT_OBJPACK-HEAD_START = 1.
  IT_OBJPACK-HEAD_NUM   = 0.
  IT_OBJPACK-BODY_START = 1.
  IT_OBJPACK-BODY_NUM   = TAB_LINES.
  IT_OBJPACK-TRANSF_BIN = 'X'."'C'.
  IT_OBJPACK-DOC_TYPE   = 'CSV'.
  IT_OBJPACK-OBJ_DESCR  = W_FILENAME.
  IT_OBJPACK-OBJ_NAME   = 'BILLING'.
  IT_OBJPACK-DOC_SIZE   = TAB_LINES * 255.
  APPEND IT_OBJPACK.

  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      DOCUMENT_DATA              = DOC_CHNG
*     PUT_IN_OUTBOX              = c_x
      COMMIT_WORK                = 'X'
    TABLES
      PACKING_LIST               = IT_OBJPACK
*     object_header              = it_objhead
      CONTENTS_BIN               = IT_OBJBIN
      CONTENTS_TXT               = IT_OBJTXT
      RECEIVERS                  = IT_RECLIST
    EXCEPTIONS
      TOO_MANY_RECEIVERS         = 1
      DOCUMENT_NOT_SENT          = 2
      OPERATION_NO_AUTHORIZATION = 4
      OTHERS                     = 99.
  IF SY-SUBRC <> 0.
    WRITE: / 'failure in sending mail'.
  ELSE.
    WRITE: / 'Success in sending mail'.
  ENDIF.





ENDFUNCTION.



Thursday, April 23, 2015

Alv Report




REPORT zhr_time_reason
       NO STANDARD PAGE HEADING LINE-SIZE 255.

**--------------------------------------------------------------------------------**
TABLES:
   pernr.                             " HR Master Data Reporting
NODES :
   peras.                             " Period selection

TYPES:
   BEGIN OF gty_reason,
*   pernr               type persno,
   begda                type begda,
   endda                type endda,
   begtz                 TYPE tims,   " Start Time
   endtz                 TYPE tims,   " End Time
   shift(4)              TYPE c,      " Shift
   id(4)                  TYPE c,      " ID
   text(100)           TYPE c,      " Text for reason
   END OF gty_reason.

TYPES:
   BEGIN OF gty_detail,
   pernr                  TYPE persno, " Pernr
   begda                 TYPE begda,  " Begda
   endda                 TYPE endda,  " Endda
   begtz                  TYPE tims,   " Start Time
   endtz                  TYPE tims,   " End Time
   shift(4)               TYPE c,        " Shift
   id(4)                   TYPE c,        " ID
   text(100)            TYPE c,        " Text
   END OF gty_detail.

DATA :
   gt_reason              TYPE TABLE OF gty_reason,   " IT for selection
   gwa_reason             TYPE gty_reason.            " Work area for selection

DATA :
   gt_details             TYPE  TABLE OF gty_detail,   " IT for final table
   gwa_details            TYPE  gty_detail.            " Work area for final table

DATA:
   gt_fieldcat            TYPE  slis_t_fieldcat_alv ,  " IT for fieldcatalog
   gwa_fieldcat           TYPE  slis_fieldcat_alv.     " Work area for fieldcatalog

*----------------------------------------------------------------------------------------------------*


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-009.
PARAMETERS:r_oncall      RADIOBUTTON GROUP r1,
           r_shift       RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF BLOCK b1.


**--------------------------------------------------------------------------------------------------*

**-- Start-of-selection
START-OF-SELECTION.
**-- Get PERNR
GET peras.
**-- Select records from table

  SELECT SINGLE
*         pernr
         begda
         endda
         BEGTZ
         ENDTZ
         SHIFT
         id
         text
         FROM zhr_time_reason
         INTO gwa_reason
         WHERE pernr EQ peras-pernr.
*         AND   begda EQ pn-begda
*         AND   endda EQ pn-endda.

**-- Move the records to final work area

  move gwa_reason-begda   to gwa_details-begda.
  move gwa_reason-endda   to gwa_details-endda.
  move gwa_reason-begtz   to gwa_details-begtz.
  move gwa_reason-endtz   to gwa_details-endtz.
  move gwa_reason-shift   to gwa_details-shift.
  MOVE gwa_reason-id      TO gwa_details-id.   " ID
  MOVE gwa_reason-text    TO gwa_details-text. " Reason Text
*  MOVE gwa_reason-pernr   TO gwa_details-pernr. " Reason Text

  gwa_details-pernr = peras-pernr.             " Pernr
*  gwa_details-begda = pn-begda.                " Begda
*  gwa_details-endda = pn-endda.                " Endda
**--Clear work area
  CLEAR gwa_reason.
**-- Append final table for display
  APPEND gwa_details TO gt_details.
**--End of selection
END-OF-SELECTION.

**--Displaying final table
  IF gt_details[] IS NOT INITIAL.
    PERFORM build_alv.                        " Build Fieldcatalog
    PERFORM alv_display .                     " Display ALV output
  ELSE.
*    MESSAGE text-006 TYPE 'I'.
  ENDIF.


*&---------------------------------------------------------------------*
*&      Form  build_alv
*&---------------------------------------------------------------------*
FORM build_alv .
**--for radio button on call
if r_oncall = 'X'.
delete gt_details where begtz is initial
                   and  endtz is initial.
**--perform for build field catalog
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-001    '1'   'PERNR'            10 .  " PERNR
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-002    '2'   'BEGDA'            20 .  " BEGIN DATE
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-003    '3'   'ENDDA'            20 .  " END DATE
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-004    '4'   'BEGTZ'            20 .  " START TIME
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-005    '5'   'ENDTZ'            20 .  " END TIME
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-006    '6'   'ID'               20 .  " ID
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-007    '7'   'TEXT'             20 .  " REASON
**--for radio button shift
elseif r_shift = 'X'.
  delete gt_details where shift = ''.
**--perform for build field catalog
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-001    '1'   'PERNR'            10 .  " PERNR
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-002    '2'   'BEGDA'            20 .  " START DATE
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-003    '3'   'ENDDA'            20 .  " END DATE
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-008    '4'   'SHIFT'            20 .  " SHIFT
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-006    '5'   'ID'               20 .  " ID
  PERFORM build_fcat:    USING 'GT_DETAILS'  text-007    '6'   'TEXT'             20 .  " REASON

endif.
ENDFORM.                    " BUILD_ALV
*&---------------------------------------------------------------------*
*&      Form  ALV_DISPLAY
*&---------------------------------------------------------------------*
FORM alv_display .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      it_fieldcat        = gt_fieldcat
    TABLES
      t_outtab           = gt_details
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc <> 0.
    EXIT .
  ENDIF.

ENDFORM.                    " ALV_DISPLAY
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT
*&---------------------------------------------------------------------*

FORM build_fcat USING tabname TYPE string
                    seltext_l TYPE string
                    col_pos   TYPE i
                    fieldname TYPE string
                    outputlen TYPE i .
*
  CLEAR gwa_fieldcat.
  gwa_fieldcat-tabname   = tabname.
  gwa_fieldcat-seltext_l = seltext_l.
  gwa_fieldcat-col_pos   = col_pos.
  gwa_fieldcat-fieldname = fieldname.
  gwa_fieldcat-outputlen = outputlen.
  APPEND gwa_fieldcat TO
         gt_fieldcat.

ENDFORM. "build_fieldcat


**----------------------------------------------------------------------**