Tuesday, 20 May 2025

Z_ANLC_HERO_FA - SAP DATA EXTRACT

 *&---------------------------------------------------------------------*

*& Report  Z_ANLC_HERO_FA

*&

*& Extract SAP Data For Asset Value Fields SAP TABLE ANLC Into cvs File Called ANLC.csv

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*& Developed By - Vivek Nigam

*& Date - 13/04/2024

*& Modified by-Vivek Nigam

*& Date - 03/07/2024 - Added INNER JOIN WITH KNB1 & ADDED WHERE CLAUSE TO FILTER DATA BASED ON

*& Date - 04/10/2024 - Added INNER JOIN WITH KNB1 & ADDED WHERE CLAUSE TO FILTER DATA BASED ON - ANLN1  KANSW KNAFA NAFAP GJAHR

*& LEGAL ENTITY NAME / COMPANY CODE

*& Date - 25/07/2024- ADDED SELLECTION SCREEN TO SELECT FILE OUTPUT PATH AND LEGAL ENTITY NAME TO FILTER DATA

*& LEGAL ENTITY NAME / COMPANY CODE

*& Date - 30/07/2024- ADDED VARIANTS FOR SCHEDULING BASED ON SELECTION SCREEN @ 09:58 AM

*& Date - 01/08/2024 ADDED UK61 FOR NEW CAST CENTER / LEGAL ENTITY

*&---------------------------------------------------------------------*

*&--ANLN1 KANSW KNAFA ---ANLN1  KANSW KNAFA

*ANLN1  KANSW KNAFA NAFAP GJAHR

*&---------------------------------------------------------------------*

*Modified By Vivek Nigam Dated On 05/12/2024 @ 09:48 AM To Fix Lover Case File Extention Issue & UTF-8 Encoding: 4110


*&-*Modified By Vivek Nigam Dated On 05/12/2024 @ 09:48 AM To Fix Lover Case File Extention Issue & UTF-8 Encoding: 4110

*Modified By Vivek Nigam Dated On 05/12/2024 @ 10:51 AM to fix output path And Added new HFT Path --------------------------------------------------------------------*

*https://lpl.sharepoint.com/:x:/r/sites/HEROProgramme-02.Pilot-UK/_layouts/15/Doc.aspx?sourcedoc=%7B47845D33-17F4-48A5-A6CC-3C91E7896F36%7D&file=02.HERO_design_source_schemas_fixed_asset_2.xlsx&action=default&mobileredirect=true

*ANLN1  KANSW KNAFA NAFAP GJAHR

*THIS CODE AGAIN MODIFIED BY VIVEK NIGAM DATED ON 19/12/2024 @12:25 TO FIX CURRENCY FORMAT ISSUE AND - SIGN ISSUE

****Updated On 17/01/2025 After Transported In To Production -- Gaetan AUBINEAU (EXT) mentioned you in Issue 1399636

****ETL 3 - Fixed Asset Balance - Discrepancy in Asset Aquisition Cost

**** @Vivek NIGAM (EXT) Could you add these 3 new fields in the file ANLC please ?

****o ANSWL

****o PSTBEG

****o PSTPER

****I updated the schema file to add new mapping :

***https://lpl.sharepoint.com/:x:/r/sites/HEROProgramme-02.Pilot-UK/_layouts/15/Doc.aspx?sourcedoc=%7B47845D33-17F4-48A5-A6CC-3C91E7896F36%7D&file=02.HERO_design_source_schemas_fixed_asset_2.xlsx&action=default&mobileredirect=true

***ANLN1  KANSW KNAFA NAFAP GJAHR NAFAG ANSWL PSTBEG  PSTPER


REPORT  Z_ANLC_HERO_FA.


TYPE-POOLS: VRM.


DATA: NAME  TYPE VRM_ID,

      LIST  TYPE VRM_VALUES,

      VALUE LIKE LINE OF LIST.



PARAMETERS: ENTITY(10) AS LISTBOX VISIBLE LENGTH 10.

*&--PARAMETERS : OPPATH LIKE RLGRAP-FILENAME DEFAULT 'C:\tmp\TT\ANLC.csv'.

*PARAMETERS : OPATH TYPE STRING DEFAULT '\\UKCROAPTST\tmp\Interfaces\HFT\SAP_Hero_Prod\Raw\IN\UK\UK01\ANLC.csv'.

PARAMETERS : OPATH TYPE STRING LOWER CASE DEFAULT '\\UKDATWNINTP01\SAP_Hero_OAT\raw\in\uk\UK01\ANLC.csv'.


AT SELECTION-SCREEN OUTPUT.


NAME = 'ENTITY'.


VALUE-KEY = 'UK01'.

VALUE-TEXT = 'UK01'.

APPEND VALUE TO LIST.


VALUE-KEY = 'UK75'.

VALUE-TEXT = 'UK75'.

APPEND VALUE TO LIST.


VALUE-KEY = 'UK21'.

VALUE-TEXT = 'UK21'.

APPEND VALUE TO LIST.


VALUE-KEY = 'UK31'.

VALUE-TEXT = 'UK31'.

APPEND VALUE TO LIST.


VALUE-KEY = 'UK41'.

VALUE-TEXT = 'UK41'.

APPEND VALUE TO LIST.


VALUE-KEY = 'UK02'.

VALUE-TEXT = 'UK02'.

APPEND VALUE TO LIST.


VALUE-KEY = 'UK73'.

VALUE-TEXT = 'UK73'.

APPEND VALUE TO LIST.


VALUE-KEY = 'UK04'.

VALUE-TEXT = 'UK04'.

APPEND VALUE TO LIST.


VALUE-KEY = 'UK61'.

VALUE-TEXT = 'UK61'.

APPEND VALUE TO LIST.



CALL FUNCTION 'VRM_SET_VALUES' EXPORTING ID = NAME VALUES = LIST.


*&------PARAMETERS p_lname TYPE char5.

*&------PARAMETERS p_oppath TYPE char50.


*&------AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_lname.

*&------AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_oppath.


*&------AT SELECTION-SCREEN ON VALUE-REQUEST FOR OPPATH.


START-OF-SELECTION.


*&------WRITE: / 'LEGAL ENTITY NAME:', ENTITY.


*&------WRITE: / 'OUTPUT FILE PATH:', OPATH.

*ANLN1  KANSW KNAFA NAFAP GJAHR

type-pools:TRUXS.

data: begin of itab occurs 0,

      ANLN1 like ANLC-ANLN1,

      KANSW like ANLC-KANSW,

      KNAFA like ANLC-KNAFA,

      NAFAP like ANLC-NAFAP,

      GJAHR like ANLC-GJAHR,

      NAFAG like ANLC-NAFAG,

      ANSWL like ANLC-ANSWL,

      PSTBEG like ANLC-PSTBEG,

      PSTPER like ANLC-PSTPER,


      end of itab.

data:  itab1 type TRUXS_T_TEXT_DATA.


DATA: lt_output   TYPE TABLE OF string,

      lv_header   TYPE string,

      lv_line     TYPE string,

      lv_filename TYPE string.


lv_filename = OPATH.


lv_header = 'ANLN1;KANSW;KNAFA;NAFAP;GJAHRL;NAFAG;ANSWL;PSTBEG;PSTPER'.


* Add the header to the output table

APPEND lv_header TO lt_output.



  SELECT  DISTINCT

          ANLC~ANLN1

          ANLC~KANSW

          ANLC~KNAFA

          ANLC~NAFAP

          ANLC~GJAHR

          ANLC~NAFAG

          ANLC~ANSWL

          ANLC~PSTBEG

          ANLC~PSTPER

         from ANLC  INNER JOIN ANLA ON ANLC~ANLN1 = ANLA~ANLN1

         into table itab

         WHERE ANLC~BUKRS = ENTITY AND ANLA~DEAKT IN ('00000000').


*"header data --ANLN1 KANSW KNAFA NAFAP GJAHR

*itab-ANLN1 = 'ANLN1'.

*itab-KANSW = 'KANSW'.

*itab-KNAFA = 'KNAFA'.

*itab-NAFAP = 'NAFAP'.

*itab-GJAHR = 'GJAHR'.


*Insert itab index 1.


*FIELD-SYMBOLS <FS> LIKE LINE OF itab.

*FIELD-SYMBOLS: <FS> TYPE itab.

** Loop through your internal table and add data to output table

*LOOP AT itab.

*  CLEAR: lv_line.

*  CONCATENATE itab-ANLN1

*              itab-KANSW

*              itab-KNAFA

*              itab-NAFAP

*              itab-GJAHR

*              INTO lv_line

*              SEPARATED BY ';'.

*

*  APPEND lv_line TO lt_output.

*ENDLOOP.


* Write to CSV file

*OPEN DATASET lv_filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.


*LOOP AT lt_output INTO lv_line.

*  TRANSFER lv_line TO lv_filename.

*ENDLOOP.


*CLOSE DATASET lv_filename.


CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'

 EXPORTING

   I_FIELD_SEPERATOR          = ','

  TABLES

    I_TAB_SAP_DATA             = itab

 CHANGING

   I_TAB_CONVERTED_DATA       =  itab1

 EXCEPTIONS

   CONVERSION_FAILED          = 1

   OTHERS                     = 2

          .

IF SY-SUBRC <> 0.

 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.


*---Below Code Added By Vivek Nigam Dated - 19/12/2024 @ 12:27

DATA:lt_output1   TYPE TABLE OF string,  " Output table for corrected rows

      lv_row      TYPE string,          " A single row from itab1

      lt_columns  TYPE TABLE OF string, " Split columns from the row

      lv_column   TYPE string.          " A single column value


  " Process each row in itab1

  LOOP AT itab1 INTO lv_row.

    " Split the row into columns using semicolon as a delimiter

    SPLIT lv_row AT ';' INTO TABLE lt_columns.


    " Process each column in the row

    LOOP AT lt_columns INTO lv_column.

      " Step 1: Remove thousand separators (period)

      REPLACE ALL OCCURRENCES OF '.' IN lv_column WITH ''.


      " Step 2: Replace decimal separator (comma) with a period

      REPLACE ALL OCCURRENCES OF ',' IN lv_column WITH '.'.


*      " Step 3: Move negative sign to the front

      IF lv_column CP '*-*'.

        SHIFT lv_column RIGHT DELETING TRAILING '-'.

        CONCATENATE '-' lv_column INTO lv_column.

        CONDENSE lv_column NO-GAPS.

      ENDIF.


      " Update the column value in lt_columns

      MODIFY lt_columns FROM lv_column INDEX sy-tabix.

    ENDLOOP.


    " Reassemble the processed columns into a corrected row

    CLEAR lv_row.

    LOOP AT lt_columns INTO lv_column.

      IF lv_row IS INITIAL.

        lv_row = lv_column.

      ELSE.

        CONCATENATE lv_row lv_column INTO lv_row SEPARATED BY ';'.

      ENDIF.

    ENDLOOP.


    " Add the corrected row to the output table

    APPEND lv_row TO lt_output1.

  ENDLOOP.


  APPEND LINES OF lt_output1 TO lt_output.

*--Upto Here Code Remove To Format in Currency -----


*APPEND LINES OF itab1 To lt_output.


   CALL FUNCTION 'GUI_DOWNLOAD'

    EXPORTING

      filename = OPATH

    CODEPAGE = '4110' "4310 codepage 4310  encodes as UTF-8.

    TABLES

      data_tab = lt_output

    EXCEPTIONS

      OTHERS   = 1.


No comments:

Post a Comment

Z_KOMGG_HERO_CUS - SAP DATA EXTRACT USING ABAP PROGRAM

 *&---------------------------------------------------------------------* *& Report  Z_KOMGG_HERO_CUS *& *&-----------------...