Xuất dữ liệu từ SAP sang excel (xslx) - 1


- Trong cac du an SAP khi co nhu cau ve viec xuat du lieu tu SAP ra dinh dang excel, thong thuong chung ta co the thong qua tcode SE11, SE16...de load du lieu roi su dung tinh nang 'Export to spreedsheet' co san cua cac tcode nay de xuat ra excel. Ngoai ra cung co kha nhieu cac chuong trinh phat trien cua cong dong ABAPer, dac biet la bo ung dung ABAP2XLSX co the thuc hien hau nhu moi yeu cau khi lam viec voi excel.
- Nhuoc diem cua viec thuc hien qua SE11 la khi phai thao tac voi nhieu bang hoac bang co nhieu du lieu thi kha ton thao tac va mat nhieu thoi gian cho doi; ABAP2XLSX doi hoi ban su dung SAPLINK de cai dat va tao ra kha nhieu object ma co the se kho duoc chap nhan o cac he thong yeu cau bao mat cao. Duoi day toi xin dua ra giai phap xuat du lieu mot cach don gian, su dung cac class chuan cua ALV ma ban co the su dung bat cu luc nao.
- Chuong trinh nay co the viet duoi dang function module, subroutine hoac method cua class... tuy theo nhu cau cua cac ban. Buoc doc du lieu (SELECT) cung tuy theo tung nhu cau cu the nen o day toi se trich dan phan core cua chuong trinh, con input nhu the nao thi tuy cac ban.

 
1. Chuyen doi du lieu lay duoc ( duoi dang internal table ) thanh ALV: 

 TRY
    CL_SALV_TABLE=>FACTORY(
      IMPORTING
        R_SALV_TABLE DATA(LR_TABLE)
      CHANGING
        T_TABLE      LT_TAB )" internal table chua du lieu
  CATCH CX_SALV_MSG .
    EXIT.
ENDTRY.

 
2. Chuyen doi ALV sang dinh dang XSTRING:

 TRY.
    LT_FCAT CL_SALV_CONTROLLER_METADATA=>GET_LVC_FIELDCATALOG(
                R_COLUMNS      LR_TABLE->GET_COLUMNS)
                R_AGGREGATIONS LR_TABLE->GET_AGGREGATIONS)

    LR_RESULT CL_SALV_EX_UTIL=>FACTORY_RESULT_DATA_TABLE(
                R_DATA         REF #LT_TAB )
                T_FIELDCATALOG LT_FCAT )

    CL_SALV_BS_LEX=>EXPORT_FROM_RESULT_DATA_TABLE(
      EXPORTING
        IS_FORMAT            IF_SALV_BS_LEX_FORMAT=>MC_FORMAT_XLSX
        IR_RESULT_DATA_TABLE LR_RESULT
      IMPORTING
        ER_RESULT_FILE       DATA(LR_XSTRING)
  CATCH CX_SALV_UNEXPECTED_PARAM_VALUE .
    EXIT.
ENDTRY.  
 
O day format xlsx duoc dinh nghia o interface IF_SALV_LEX_FORMAT co the co cac gia tri la MHTML, CSV, XLSX...

3. Sau khi chuyen doi sang dinh dang xstring, cac ban co the xuat khi chay online ( su dung GUI_DOWNLOAD ) hoac chay offline ( su dung cau lenh OPEN DATA SET...). Duoi day toi thuc hien tai du lieu xuong PC (chay online).

DATA(LS_XML_CHOICEVALUE IF_SALV_BS_XML=>S_TYPE_XML_CHOICE(
                              KEY      31
                              FRONTEND CL_ALV_BDS=>MC_XLSX_FRONTEND
                              VERSION  02
                              XML_TYPE IF_SALV_BS_XML=>C_TYPE_XLSX
                              GUI_TYPE CL_SALV_EXPORT_XML_DIALOG=>C_GUI_TYPE_EXCEL )

CL_SALV_EXPORT_XML_DIALOG=>DOWNLOAD(
  EXPORTING
    S_XML_CHOICE LS_XML_CHOICE
    XML          LR_XSTRING ).

 
Tren day la cac buoc chinh trong chuong trinh xuat du lieu tu SAP ra file excel . 

Comments