Using BAPI upload excel file for t-code AS02 in SAP

Using BAPI " BAPI_FIXEDASSET_CHANGE " create a zprogram to upload excel file for mass change fixed asset in SAP.



REPORT ZAS02_ASSET_CHANGE_UPLOAD.

TYPE-POOLStruxs.

" Structure for Excel data
TYPESBEGIN OF ty_excel,
         anln1 TYPE anln1,
         bukrs TYPE bukrs,
         kostl TYPE kostl,
         werks TYPE werks,
         prctr TYPE prctr,
       END OF ty_excel.

DATAlt_excel    TYPE TABLE OF ty_excel,
      ls_excel    TYPE ty_excel,
      ls_time     TYPE bapi1022_feglg003,  " Time-dependent data
      ls_timex    TYPE bapi1022_feglg003x" Change flags
      ls_return   TYPE bapiret2,           " Holds BAPI response structure
      lv_subnumber TYPE anln2.             " To enforce correct subnumber length

DATAlv_raw_data TYPE truxs_t_text_data.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERSp_file TYPE localfile.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN skip 2.

SELECTION-SCREEN COMMENT /1(80TEXT-002.                     " Excel Format:
SELECTION-SCREEN COMMENT /1(80TEXT-003.                     " (Purchase Group | Supplying Plant | Article | Plant | Quantity)


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name p_file.

START-OF-SELECTION.

IF p_file IS INITIAL.
    MESSAGE 'Please select an Excel file before executing.' TYPE 'E'.
    EXIT.
  ENDIF.

*--- 1. Upload Excel Data ---*
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
      i_tab_raw_data       lv_raw_data
      i_filename           p_file
    TABLES
      i_tab_converted_data lt_excel
    EXCEPTIONS
      conversion_failed    1
      OTHERS               2.

  IF sy-subrc <> 0.
    WRITE'Error: Could not read Excel file.'.
    EXIT.
  ENDIF.

*--- 2. Process and Update Assets ---*
  LOOP AT lt_excel INTO ls_excel.

    CLEARls_timels_timexls_return.

    " Fix Asset alpha-numeric padding (Ensures 12 characters with leading zeros)
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  ls_excel-anln1
      IMPORTING
        output ls_excel-anln1.

    " Enforce correct 4-character asset subnumber format
    lv_subnumber '0000'.

    ls_time-costcenter ls_excel-kostl.
    ls_time-plant      ls_excel-werks.
    ls_time-profit_ctr ls_excel-prctr.

    " Mark which fields to update (The 'X' flags)
    ls_timex-costcenter 'X'.
    ls_timex-plant      'X'.
    ls_timex-profit_ctr 'X'.

    " Call the BAPI
    CALL FUNCTION 'BAPI_FIXEDASSET_CHANGE'
      EXPORTING
        companycode        ls_excel-bukrs
        asset              ls_excel-anln1
        subnumber          lv_subnumber
        timedependentdata  ls_time
        timedependentdatax ls_timex
      IMPORTING
        return             ls_return" <-- Populates structure directly

    " Check the real response inside ls_return directly
    IF ls_return-type <> 'E' AND ls_return-type <> 'A'.

      " No errors or aborts found, commit the change to the database
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait 'X'.

      WRITE/ ls_excel-anln1ls_excel-bukrsls_excel-kostlls_excel-werksls_excel-prctr'- Updated successfully'.
    ELSE.
      " If there's a real error, it will now show up here
      WRITE'Error on Asset'ls_excel-anln1':'ls_return-message.
    ENDIF.

  ENDLOOP.

Comments

Popular posts from this blog

New commodity code create in SAP S/4 Hana

BAPI to Change STO PO/ PO Delivery date in SAP

Decimal remove in a smartforms report