Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Extract ANLC Asset Value Fields Data in CSV File Using ABAP Program For Selected Cost Center

VIVEK-NIGAM
Explorer
0 Likes
1,754

FIXED ASSET Extract ANLC Asset Value Fields Data in CSV File Using ABAP Program For Selected Cost Center -

------------------------------------

ABAP Program - Z_ANLC_FIXED_ASSET 

  • Program Type – ABAP 
  • ABAP Program Name – Z_ANLC_FA 
  • Tcode - ZHM_ANLC_A 
  • Output File Location - “C:\tmp” 
  • Output File Name- ANLC.CSV 
  • Output File Type – CSV (Column with Semicolon separator (;) 
  • SAP Table Name – ANLC 
  • List of fields to be extracted -  ANLN1  KANSW KNAFA NAFAP GJAHR NAFAG ANSWL PSTBEG  PSTPER 
  • ANLN1 
  • KANSW 
  • KNAFA 
  • NAFAP 
  • GJAHR 
  • NAFAG 
  • ANSWL 
  • PSTBEG  
  • PSTPER

-----------------------------------------------------------------------

REPORT  Z_ANLC_FIXED_ASSET.

TYPE-POOLSVRM.

DATANAME  TYPE VRM_ID,
      LIST  TYPE VRM_VALUES,
      VALUE LIKE LINE OF LIST.


PARAMETERSENTITY(10AS LISTBOX VISIBLE LENGTH 10.
*&--PARAMETERS : OPPATH LIKE RLGRAP-FILENAME DEFAULT 'C:\tmp\TT\ANLC.csv'.
*PARAMETERS : OPATH TYPE STRING DEFAULT 'C:\tmp\\HFT\SAP_Hero_Prod\Raw\IN\UK\UK01\ANLC.csv'.
PARAMETERS OPATH TYPE STRING LOWER CASE DEFAULT 'C:\tmp\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.
databegin 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.

DATAlt_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.
Vivek Niagm (SAP Consultant)
2 REPLIES 2
Read only

abo
Active Contributor
1,739

There is definitely room for improvement 😉

  • excessive (and unrelated) labels: check
  • wrong tag: check
  • old style coding: check
  • no explanation: check
Read only

Sandra_Rossi
Active Contributor
0 Likes
1,665

Sorry to say that but posting a "discussion" without any question or request, whose code is reading data from a table and stores it into CSV, in which the code is almost identical to the previous post (15 posts in 2 weeks!), just the table name is changing, it's there is nothing new, no challenge, so zero interest for a blog post, zero interest for a "discussion". But I can see the company name at the end, ad for free?