Wednesday 29 November 2017

TO CREATE CSV FILE FOR CURRENT MB52 TRANSACTION

*&---------------------------------------------------------------------*
*& Report  ZMM_FIFO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZMM_FIFO NO STANDARD PAGE HEADING.


TYPESBEGIN OF TY_FINAL,
        MATNR  TYPE MATNR,       " Material Number
        WERKS  TYPE WERKS_D,     " Plant
        LGORT  TYPE LGORT_D,     " Storage Location
        CHARG  TYPE CHARG_D,     " Batch Number
        CLABS  TYPE STRING,      " Valuated Unrestricted-Use Stock
        MEINS  TYPE MEINS,       " Base Unit of Measure
        MAKTX  TYPE MAKTX,       " Material Description (Short Text)
       END OF TY_FINAL,

       BEGIN OF TY_MARA,
        MATNR  TYPE MATNR,       " Material Number
        MEINS  TYPE MEINS,       " Base Unit of Measure
       END OF TY_MARA,

       BEGIN OF TY_MAKT,
        MATNR  TYPE MATNR,       " Material Number
        SPRAS  TYPE SPRAS,       " Language Key
        MAKTX TYPE MAKTX,       " Material Description (Short Text)
       END OF TY_MAKT,

       BEGIN OF TY_MCHB,
        MATNR  TYPE MATNR,       " Material Number
        WERKS  TYPE WERKS_D,     " Plant
        LGORT  TYPE LGORT_D,     " Storage Location
        CHARG  TYPE CHARG_D,     " Batch Number
        CLABS  TYPE LABST,       " Valuated Unrestricted-Use Stock
       END OF TY_MCHB,

       BEGIN OF LT_ERROR,
          TIME(8),
          DATE(8),
          MSG1(50),
          MSG2(50),
          MSG3(50),
          MSG4(50),
          TEXT(220),
        END OF LT_ERROR.

DATAIT_FINAL  TYPE TABLE OF TY_FINAL,
      IT_FINAL1 TYPE TABLE OF TY_FINAL,
      IT_MARA   TYPE TABLE OF TY_MARA,
      IT_MAKT   TYPE TABLE OF TY_MAKT,
      IT_MCHB   TYPE TABLE OF TY_MCHB,
      WA_FINAL1 TYPE TY_FINAL,
      WA_FINAL  TYPE TY_FINAL,
      WA_MARA   TYPE TY_MARA,
      WA_MAKT   TYPE TY_MAKT,
      WA_MCHB   TYPE TY_MCHB.
*
*DATA: IT_TAB TYPE STANDARD TABLE OF TY_FINAL,
*      WA_TAB TYPE ALSMEX_TABLINE.

DATAP_FILE   TYPE   STRING,
      E_FILE   TYPE   STRING,
      FV_TEXT  TYPE   STRING,
      SV_TEXT  TYPE   STRING,
      TEXT     TYPE   STRING.

DATAV_DIR_PATH      LIKE EPSF-EPSDIRNAM VALUE '\\192.168.0.22\TUBECUTTING\GRIN\UPLOAD',
      E_DIR_PATH      LIKE EPSF-EPSDIRNAM VALUE '\\192.168.0.22\TUBECUTTING\GRIN\UPLOAD',
      V_DIR_NAME      LIKE EPSF-EPSDIRNAM,
      V_FILE_COUNTER  LIKE EPSF-EPSFILSIZ,
      V_ERROR_COUNTER LIKE EPSF-EPSFILSIZ,
      T_DIR_LIST      LIKE TABLE OF EPSFILI,
      W_DIR_LIST      TYPE EPSFILI,
      LV0TEXT         TYPE STRING.


SELECTION-SCREENBEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS P_WERKS TYPE MCHB-WERKS,
             P_LGORT TYPE MCHB-LGORT.
SELECTION-SCREENEND OF BLOCK B1.


START-OF-SELECTION.

  PERFORM GET_DATA.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA .

  SELECT MATNR
         WERKS
         LGORT
         CHARG
         CLABS
    FROM MCHB
    INTO TABLE IT_MCHB
    WHERE WERKS EQ P_WERKS
      AND LGORT EQ P_LGORT
      AND CLABS IS NOT NULL.
  IF SY-SUBRC EQ 0.
    SELECT MATNR
           MEINS
      FROM MARA
      INTO TABLE IT_MARA
      FOR ALL ENTRIES IN IT_MCHB
      WHERE MATNR EQ IT_MCHB-MATNR.
    IF SY-SUBRC EQ 0.
    ENDIF.

    SELECT MATNR
           SPRAS
           MAKTX
      FROM MAKT
      INTO TABLE IT_MAKT
      FOR ALL ENTRIES IN IT_MCHB
      WHERE MATNR EQ IT_MCHB-MATNR
        AND SPRAS EQ 'EN'.
    IF SY-SUBRC EQ 0.
    ENDIF.
  ENDIF.

  IF IT_MCHB IS NOT INITIAL.
    LOOP AT IT_MCHB INTO WA_MCHB.
      WA_FINAL-MATNR  WA_MCHB-MATNR.            "Material Number
      WA_FINAL-WERKS  WA_MCHB-WERKS.            "Plant
      WA_FINAL-LGORT  WA_MCHB-LGORT.            "Storage Location
      WA_FINAL-CHARG  WA_MCHB-CHARG.            "Batch Number
      WA_FINAL-CLABS  WA_MCHB-CLABS.            "Valuated Unrestricted-Use Stock

      READ TABLE IT_MARA INTO WA_MARA WITH KEY MATNR WA_MCHB-MATNR.
      IF SY-SUBRC EQ 0.
        WA_FINAL-MEINS  WA_MARA-MEINS.          "Base Unit of Measure
      ENDIF.

      READ TABLE IT_MAKT INTO WA_MAKT WITH KEY MATNR WA_MCHB-MATNR.
      IF SY-SUBRC EQ 0.
        WA_FINAL-MAKTX  WA_MAKT-MAKTX.          "Material Description (Short Text)
      ENDIF.

      APPEND WA_FINAL TO IT_FINAL.
      CLEARWA_FINALWA_MAKTWA_MARAWA_MCHB.
    ENDLOOP.
  ENDIF.

  CALL FUNCTION 'EPS_GET_DIRECTORY_LISTING'
    EXPORTING
      DIR_NAME               V_DIR_PATH
    IMPORTING
      DIR_NAME               V_DIR_NAME
      FILE_COUNTER           V_FILE_COUNTER
      ERROR_COUNTER          V_ERROR_COUNTER
    TABLES
      DIR_LIST               T_DIR_LIST
    EXCEPTIONS
      INVALID_EPS_SUBDIR     1
      SAPGPARAM_FAILED       2
      BUILD_DIRECTORY_FAILED 3
      NO_AUTHORIZATION       4
      READ_DIRECTORY_FAILED  5
      TOO_MANY_READ_ERRORS   6
      EMPTY_DIRECTORY_LIST   7
      OTHERS                 8.

  FV_TEXT SY-DATUM.
  CONCATENATE FV_TEXT 'TEST' '.csv' INTO FV_TEXT.
  READ TABLE T_DIR_LIST INTO W_DIR_LIST WITH KEY NAME FV_TEXT.
  IF SY-SUBRC EQ 0.
    CONCATENATE V_DIR_PATH '\' W_DIR_LIST-NAME INTO P_FILE.
    OPEN DATASET P_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
    IF SY-SUBRC NE 0.
      MESSAGE 'error' TYPE 'E'.
      EXIT.
    ELSE.
      DO.
        READ DATASET P_FILE INTO LV0TEXT.
        IF SY-SUBRC <> 0.
          EXIT.
        ELSE.
          IF SY-TABIX NE 1.
            SPLIT LV0TEXT AT ',' INTO WA_FINAL-MATNR
                                      WA_FINAL-WERKS
                                      WA_FINAL-LGORT
                                      WA_FINAL-CHARG
                                      WA_FINAL-CLABS
                                      WA_FINAL-MEINS
                                      WA_FINAL-MAKTX.
            APPEND WA_FINAL TO IT_FINAL.
          ENDIF.
        ENDIF.
      ENDDO.
      CLEAR WA_FINAL.
    ENDIF.

    CLOSE DATASET P_FILE.
    CONCATENATE V_DIR_PATH '\' FV_TEXT INTO P_FILE.
    OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    IF SY-SUBRC 0.
      LOOP AT IT_FINAL INTO WA_FINAL.
        CONCATENATE WA_FINAL-MATNR
                    WA_FINAL-WERKS
                    WA_FINAL-LGORT
                    WA_FINAL-CHARG
                    WA_FINAL-CLABS
                    WA_FINAL-MEINS
                    WA_FINAL-MAKTX
               INTO LV0TEXT SEPARATED BY ','.
        TRANSFER LV0TEXT TO P_FILE.
        CLEARWA_FINAL,
               LV0TEXT.
      ENDLOOP.
    ENDIF.
    CLOSE DATASET P_FILE.
  ELSE.
    CONCATENATE V_DIR_PATH '\' FV_TEXT INTO P_FILE.
    OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    IF SY-SUBRC 0.
      CONCATENATE 'Material Number'
                  'Plant'
                  'Storage Location'
                  'Batch Number'
                  'Valuated Unrestricted-Use Stock'
                  'Base Unit of Measure'
                  'Material Description'
             INTO LV0TEXT SEPARATED BY ','.
      TRANSFER LV0TEXT TO P_FILE.
      CLEAR LV0TEXT.

      LOOP AT IT_FINAL INTO WA_FINAL.
        CONCATENATE WA_FINAL-MATNR
                    WA_FINAL-WERKS
                    WA_FINAL-LGORT
                    WA_FINAL-CHARG
                    WA_FINAL-CLABS
                    WA_FINAL-MEINS
                    WA_FINAL-MAKTX
               INTO LV0TEXT SEPARATED BY ','.
        TRANSFER LV0TEXT TO P_FILE.
        CLEARWA_FINAL,
               LV0TEXT.
      ENDLOOP.
    ENDIF.
    CLOSE DATASET P_FILE.
  ENDIF.
ENDFORM.                    " GET_DATA

ASSET REGISTER FI





REPORT zinfir_asset_history.
************************************************************************
* PROGRAM TITLE : ZINFIR_ASSET_HISTORY
* MODULE : FI
* PROGRAM TYPE : Report
* INPUT  : Company code and report run date
* OUTPUT : Asset history for current year
* CREATED BY : PRATIK PRAKASH KAMBLE
* CREATION DATE : 29.11.2017
*-----------------------------------------------------------------------
* DESCRIPTION : 50053C
************************************************************************
* Modification history:
* ----------------------------------------------------------------------
*   DATE     | User ID   | TR
* 29.11.2017 | ABAP_YASH | E7DK918824
* ----------------------------------------------------------------------
DATA: lv_tcode TYPE sy-tcode,
      lv_date  TYPE sy-datum,
      lv_bukrs TYPE bukrs,
      s_anlkl  TYPE RANGE OF anlkl WITH HEADER LINE,
      lv_anlkl TYPE anlkl.

DATA: bukrs     TYPE RANGE OF bukrs WITH HEADER LINE,
      it_asset1 TYPE TABLE OF fiaa_salvtab_ragitt,
      it_asset2 TYPE TABLE OF fiaa_salvtab_ragitt,
      it_asset3 TYPE TABLE OF fiaa_salvtab_ragitt,
      it_asset4 TYPE TABLE OF fiaa_salvtab_ragitt,
      it_asset5 TYPE TABLE OF fiaa_salvtab_ragitt,
      it_asset6 TYPE TABLE OF fiaa_salvtab_ragitt,
      fs_asset  TYPE          fiaa_salvtab_ragitt,
      fs_asset1 TYPE          fiaa_salvtab_ragitt.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_date TYPE sy-datum.
SELECT-OPTIONS: s_bukrs FOR lv_bukrs.
SELECTION-SCREEN END OF BLOCK b1.

FIELD-SYMBOLS <lt_pay_data1>   TYPE ANY TABLE.
FIELD-SYMBOLS <lt_pay_data2>   TYPE ANY TABLE.
FIELD-SYMBOLS <lt_pay_data3>   TYPE ANY TABLE.
DATA lr_pay_data              TYPE REF TO data.

DATA: lv_gjahr  TYPE gjahr,
      lv_gjahr1 TYPE gjahr,
      lv_gjahr2 TYPE gjahr,
      lv_date1  TYPE sy-datum,
      lv_date2  TYPE sy-datum,
      lv_date3  TYPE sy-datum.

DATA : gr_layout      TYPE REF TO cl_salv_layout,
       gr_layout_key  TYPE salv_s_layout_key,
       ls_layout      TYPE salv_s_layout,
       lt_layout_info TYPE salv_t_layout_info.

DATA : gr_display TYPE REF TO cl_salv_display_settings,
       lv_title   TYPE lvc_title.
DATA : gr_sort    TYPE REF TO cl_salv_sorts.
DATA : gr_select  TYPE REF TO cl_salv_selections.
DATA : gr_aggr    TYPE REF TO cl_salv_aggregations.
DATA : gr_table TYPE REF TO cl_salv_table.
DATA: gr_coloumns TYPE REF TO cl_salv_columns_table,
      gr_column   TYPE REF TO cl_salv_column_table.
DATA : gr_functions TYPE REF TO cl_salv_functions_list.


lv_gjahr1 = p_date+0(4).
lv_gjahr2 = p_date+0(4) - 1.

CONCATENATE lv_gjahr1 '03' '31' INTO lv_date1.
CONCATENATE lv_gjahr2 '12' '31' INTO lv_date2.
CONCATENATE lv_gjahr2 '03' '31' INTO lv_date3.


cl_salv_bs_runtime_info=>set(
  EXPORTING display  = abap_false
            metadata = abap_false
            data     = abap_true ).

SUBMIT ragitt_alv01 WITH bukrs IN s_bukrs
                    WITH so_anlkl IN s_anlkl
                    WITH berdatum EQ lv_date1
                    WITH bereich1 EQ '01'
                    WITH srtvr EQ '0007'
                    WITH xeinzel EQ 'X'
                    WITH summb EQ ' '
                    WITH p_grid EQ 'X'
                    WITH pa_gitvs EQ 'DK01'
                    WITH pa_xgbaf EQ 'X'
                    EXPORTING LIST TO MEMORY AND RETURN.

TRY.
    cl_salv_bs_runtime_info=>get_data_ref(
      IMPORTING r_data = lr_pay_data ).
    ASSIGN lr_pay_data->* TO <lt_pay_data1>.
  CATCH cx_salv_bs_sc_runtime_info.
    MESSAGE 'Unable to retrieve ALV data' TYPE 'E'.
ENDTRY.

CLEAR lr_pay_data.
CALL METHOD cl_salv_bs_runtime_info=>clear_all.
cl_salv_bs_runtime_info=>set(
  EXPORTING display  = abap_false
            metadata = abap_false
            data     = abap_true ).

SUBMIT ragitt_alv01 WITH bukrs IN s_bukrs
                    WITH so_anlkl IN s_anlkl
                    WITH berdatum EQ lv_date2
                    WITH bereich1 EQ '01'
                    WITH srtvr EQ '0007'
                    WITH xeinzel EQ 'X'
                    WITH summb EQ ' '
                    WITH p_grid EQ 'X'
                    WITH pa_gitvs EQ 'DK01'
                    WITH pa_xgbaf EQ 'X'
                    EXPORTING LIST TO MEMORY AND RETURN.

TRY.
    cl_salv_bs_runtime_info=>get_data_ref(
      IMPORTING r_data = lr_pay_data ).
    ASSIGN lr_pay_data->* TO <lt_pay_data2>.
  CATCH cx_salv_bs_sc_runtime_info.
    MESSAGE 'Unable to retrieve ALV data' TYPE 'E'.
ENDTRY.

CLEAR lr_pay_data.
CALL METHOD cl_salv_bs_runtime_info=>clear_all.
cl_salv_bs_runtime_info=>set(
  EXPORTING display  = abap_false
            metadata = abap_false
            data     = abap_true ).

SUBMIT ragitt_alv01 WITH bukrs IN s_bukrs
                    WITH so_anlkl IN s_anlkl
                    WITH berdatum EQ lv_date3
                    WITH bereich1 EQ '01'
                    WITH srtvr EQ '0007'
                    WITH xeinzel EQ 'X'
                    WITH summb EQ ' '
                    WITH p_grid EQ 'X'
                    WITH pa_gitvs EQ 'DK01'
                    WITH pa_xgbaf EQ 'X'
                    EXPORTING LIST TO MEMORY AND RETURN.

TRY.
    cl_salv_bs_runtime_info=>get_data_ref(
      IMPORTING r_data = lr_pay_data ).
    ASSIGN lr_pay_data->* TO <lt_pay_data3>.
  CATCH cx_salv_bs_sc_runtime_info.
    MESSAGE 'Unable to retrieve ALV data' TYPE 'E'.
ENDTRY.
IF <lt_pay_data1> IS ASSIGNED.
  LOOP AT <lt_pay_data1> ASSIGNING FIELD-SYMBOL(<fs_data>).

    ASSIGN COMPONENT 'BUKRS' OF STRUCTURE <fs_data> TO FIELD-SYMBOL(<field>).
    IF <field> IS ASSIGNED.
      fs_asset-bukrs = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'ANLN1' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-anln1 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'ANLN2' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-anln2 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'ANLKL' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-anlkl = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'TXT50' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-txt50 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'AKTIV' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-aktiv = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'WAERS' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-waers = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR1' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr1 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR2' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr2 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR3' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr3 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR4' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr4 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR5' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr5 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR6' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr6 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR7' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr7 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR8' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr8 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR9' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr9 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR10' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr10 = <field>.
      UNASSIGN <field>.
    ENDIF.

    APPEND fs_asset TO it_asset1.
    CLEAR fs_asset.
*  UNASSIGN <fs_data>.
  ENDLOOP.
ENDIF.
IF <lt_pay_data2> IS ASSIGNED.
  LOOP AT <lt_pay_data2> ASSIGNING <fs_data>.

    ASSIGN COMPONENT 'BUKRS' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-bukrs = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'ANLN1' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-anln1 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'ANLN2' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-anln2 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'ANLKL' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-anlkl = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'TXT50' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-txt50 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'AKTIV' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-aktiv = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'WAERS' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-waers = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR1' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr1 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR2' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr2 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR3' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr3 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR4' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr4 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR5' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr5 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR6' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr6 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR7' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr7 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR8' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr8 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR9' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr9 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR10' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr10 = <field>.
      UNASSIGN <field>.
    ENDIF.

    APPEND fs_asset TO it_asset2.
    CLEAR fs_asset.
*  UNASSIGN <fs_data>.
  ENDLOOP.
ENDIF.
IF <lt_pay_data3> IS ASSIGNED.
  LOOP AT <lt_pay_data3> ASSIGNING <fs_data>.

    ASSIGN COMPONENT 'BUKRS' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-bukrs = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'ANLN1' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-anln1 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'ANLN2' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-anln2 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'ANLKL' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-anlkl = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'TXT50' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-txt50 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'AKTIV' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-aktiv = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'WAERS' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-waers = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR1' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr1 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR2' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr2 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR3' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr3 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR4' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr4 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR5' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr5 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR6' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr6 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR7' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr7 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR8' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr8 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR9' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr9 = <field>.
      UNASSIGN <field>.
    ENDIF.
    ASSIGN COMPONENT 'BTR10' OF STRUCTURE <fs_data> TO <field>.
    IF <field> IS ASSIGNED.
      fs_asset-btr10 = <field>.
      UNASSIGN <field>.
    ENDIF.

    APPEND fs_asset TO it_asset3.
    CLEAR fs_asset.
*  UNASSIGN <fs_data>.
  ENDLOOP.
ENDIF.

LOOP AT it_asset1 INTO fs_asset.

  READ TABLE it_asset2 INTO fs_asset1 WITH KEY anln1 = fs_asset-anln1
                                               anln2 = fs_asset-anln2.
  IF sy-subrc EQ 0.
    fs_asset-btr1 = fs_asset-btr1 - fs_asset1-btr1.
    fs_asset-btr2 = fs_asset-btr2 - fs_asset1-btr2.
    fs_asset-btr3 = fs_asset-btr3 - fs_asset1-btr3.
    fs_asset-btr4 = fs_asset-btr4 - fs_asset1-btr4.
    fs_asset-btr5 = fs_asset-btr5 - fs_asset1-btr5.
    fs_asset-btr6 = fs_asset-btr6 - fs_asset1-btr6.
    fs_asset-btr7 = fs_asset-btr7 - fs_asset1-btr7.
    fs_asset-btr8 = fs_asset-btr8 - fs_asset1-btr8.
    fs_asset-btr9 = fs_asset-btr9 - fs_asset1-btr9.
    fs_asset-btr10 = fs_asset-btr10 - fs_asset1-btr10.
  ENDIF.
  APPEND fs_asset TO it_asset4.
  CLEAR: fs_asset,
         fs_asset1.
ENDLOOP.

LOOP AT it_asset2 INTO fs_asset.

  READ TABLE it_asset3 INTO fs_asset1 WITH KEY anln1 = fs_asset-anln1
                                               anln2 = fs_asset-anln2.
  IF sy-subrc EQ 0.
    fs_asset-btr1 = fs_asset-btr1 - fs_asset1-btr1.
    fs_asset-btr2 = fs_asset-btr2 - fs_asset1-btr2.
    fs_asset-btr3 = fs_asset-btr3 - fs_asset1-btr3.
    fs_asset-btr4 = fs_asset-btr4 - fs_asset1-btr4.
    fs_asset-btr5 = fs_asset-btr5 - fs_asset1-btr5.
    fs_asset-btr6 = fs_asset-btr6 - fs_asset1-btr6.
    fs_asset-btr7 = fs_asset-btr7 - fs_asset1-btr7.
    fs_asset-btr8 = fs_asset-btr8 - fs_asset1-btr8.
    fs_asset-btr9 = fs_asset-btr9 - fs_asset1-btr9.
    fs_asset-btr10 = fs_asset-btr10 - fs_asset1-btr10.
  ENDIF.
  APPEND fs_asset TO it_asset5.
  CLEAR: fs_asset,
         fs_asset1.
ENDLOOP.

LOOP AT it_asset4 INTO fs_asset.

  READ TABLE it_asset5 INTO fs_asset1 WITH KEY anln1 = fs_asset-anln1
                                               anln2 = fs_asset-anln2.
  IF sy-subrc EQ 0.
    fs_asset-btr1 = fs_asset-btr1 + fs_asset1-btr1.
    fs_asset-btr2 = fs_asset-btr2 + fs_asset1-btr2.
    fs_asset-btr3 = fs_asset-btr3 + fs_asset1-btr3.
    fs_asset-btr4 = fs_asset-btr4 + fs_asset1-btr4.
    fs_asset-btr5 = fs_asset-btr5 + fs_asset1-btr5.
    fs_asset-btr6 = fs_asset-btr6 + fs_asset1-btr6.
    fs_asset-btr7 = fs_asset-btr7 + fs_asset1-btr7.
    fs_asset-btr8 = fs_asset-btr8 + fs_asset1-btr8.
    fs_asset-btr9 = fs_asset-btr9 + fs_asset1-btr9.
    fs_asset-btr10 = fs_asset-btr10 + fs_asset1-btr10.
  ENDIF.
  APPEND fs_asset TO it_asset6.
  CLEAR: fs_asset,
         fs_asset1.
ENDLOOP.

CALL METHOD cl_salv_bs_runtime_info=>clear_all.

TRY.
    CALL METHOD cl_salv_table=>factory
      EXPORTING
        list_display = if_salv_c_bool_sap=>false
*       r_container  =
*       container_name =
      IMPORTING
        r_salv_table = gr_table
      CHANGING
        t_table      = it_asset6.
  CATCH cx_salv_msg .
ENDTRY.

CALL METHOD gr_table->get_columns
  RECEIVING
    value = gr_coloumns.

TRY.
    gr_column ?= gr_coloumns->get_column( 'INDEX' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S1' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S2' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S3' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S4' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S5' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S1_TEXT' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S2_TEXT' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S3_TEXT' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S4_TEXT' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'S5_TEXT' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'FLG_PICK_UP' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'RANGE' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'HLP_LEVEL' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'EXPAND' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'MANDT' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'ANLN0' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'GSBER' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE01' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE02' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE03' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE04' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE05' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE06' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE07' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE08' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE09' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'DSPACE10' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'KTANSW' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'KANSW' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'KUMAFA' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BUCHWERT' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'AFABE' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'KTANSW' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'ERGSO' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'XANLGR' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR11' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR12' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR13' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR14' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR15' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR16' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR17' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR18' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR19' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR20' ).
    gr_column->set_visible( if_salv_c_bool_sap=>false ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'ANLN1' ).
    gr_column->set_short_text( 'Asset' ).
    gr_column->set_medium_text( 'Asset').
    gr_column->set_long_text( 'Asset').
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'ANLN2' ).
    gr_column->set_short_text( 'Sub.No' ).
    gr_column->set_medium_text( 'Asset Sub.No').
    gr_column->set_long_text( 'Asset Sub.No').
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR1' ).
    gr_column->set_medium_text( 'APC Tot.Apr.1').
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR2' ).
    gr_column->set_medium_text( 'Acquis.curr.yr' ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR3' ).
    gr_column->set_medium_text( 'Retmt.curr.yr' ).
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR4' ).
    gr_column->set_medium_text( 'APC Tot.Mar.31').
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR5' ).
    gr_column->set_medium_text( 'Reval./wr-up').
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR6' ).
    gr_column->set_medium_text( 'Dep.Apr.1').
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR7' ).
    gr_column->set_medium_text( 'Dep.retir.').
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR8' ).
    gr_column->set_medium_text( 'Dep.curr.yr').
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR9' ).
    gr_column->set_medium_text( 'Dep.Mar31').
  CATCH cx_salv_not_found.
ENDTRY.
TRY.
    gr_column ?= gr_coloumns->get_column( 'BTR10' ).
    gr_column->set_medium_text( 'Bookval.Mar31').
  CATCH cx_salv_not_found.
ENDTRY.

gr_functions = gr_table->get_functions( ).
gr_functions->set_all( if_salv_c_bool_sap=>true ).

CLEAR : gr_layout, gr_layout_key.
MOVE sy-repid TO gr_layout_key-report.

gr_layout = gr_table->get_layout( ).
gr_layout->set_key( gr_layout_key ).
gr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
gr_layout->set_default( if_salv_c_bool_sap=>true ).


CLEAR : gr_display.
MOVE 'Asset History Sheet Based on Posted Depreciation - 01 Local Area ' TO lv_title.
gr_display = gr_table->get_display_settings( ).
gr_display->set_striped_pattern( if_salv_c_bool_sap=>true ).
gr_display->set_list_header( lv_title ).


gr_aggr = gr_table->get_aggregations( ).
gr_sort = gr_table->get_sorts( ).
IF gr_sort IS NOT INITIAL.
  TRY.
      gr_sort->add_sort( columnname = 'ANLKL'
                         position = 1
                         sequence   = if_salv_c_sort=>sort_up
                         subtotal   = if_salv_c_bool_sap=>true
                         group      = if_salv_c_sort=>group_none
                         obligatory = if_salv_c_bool_sap=>false ).
    CATCH cx_salv_not_found .
    CATCH cx_salv_existing .
    CATCH cx_salv_data_error .
  ENDTRY.
ENDIF.
CALL METHOD gr_table->display.