cancel
Showing results for 
Search instead for 
Did you mean: 

How to download data from ITS

Former Member
0 Kudos

Hi Guys:

.   I display the data as a step loop style and want to download data from ITS.

    Can anybody tell me how to download as a  txt or excel file?

   many thanks !

Regards!

Jay

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Dear Jay,

you have to use the mime-download :

* Declaration

   TYPES: BEGIN OF tys_data_tab,
           wa_data_tab(1)     TYPE           c,
       END OF tys_data_tab.
TYPES: tyt_data_tab TYPE TABLE OF  tys_data_tab.

data:

         LWA_DATA_TAB(350) TYPE C,
         LT_DATA_TAB       LIKE TABLE OF LWA_DATA_TAB,

        LWA_DATA_OUT(1)   TYPE           C,

         LT_DATA_OUT       TYPE TYT_DATA_TAB,             

         LV_COUNT          TYPE I,

          

         lv_conttype  type AVWCTXCONT.

* Set:

lv_conttype = 'application/vnd.ms-excel'.

* Build up the datatab from your internal table as

concatenate lwa_datatab field1

          INTO LWA_DATA_TAB
          SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB..
          CONDENSE LWA_DATA_TAB.

* This is important to get the fields in separet cells in your excel.

* When all your fields are included

append lwa_datatab to lt_data_tab.

* Now get the data length

    LOOP AT LT_DATA_TAB INTO LWA_DATA_TAB.
    CLEAR LV_COUNT.         " counter
    DO.
*         copy each sign to output table
*         offset
*         counter = sy-index
      WRITE LWA_DATA_TAB+LF_COUNT(1) TO LWA_DATA_OUT.

      APPEND LWA_DATA_OUT TO LT_DATA_OUT.

      ADD 1 TO LV_COUNT.

      IF LF_COUNT GE 346.
        CLEAR LV_COUNT .
        EXIT.
      ENDIF.

    ENDDO.

.
* Hexadecimal conversion off line feed

    PERFORM DOWNLOAD_UMBURCH CHANGING LT_DATA_OUT.

  ENDLOOP.

******************************

FORM DOWNLOAD_UMBURCH CHANGING pt_data_out TYPE tyt_data_tab..
  DATAlwa_data_out(1)      TYPE           c.
  CLASS cl_abap_conv_in_ce DEFINITION LOAD.
  TRY.
      CALL METHOD cl_abap_conv_in_ce=>uccp
        EXPORTING
          uccp = '000D'
        RECEIVING
          char = lwa_data_out.
    CATCH cx_sy_conversion_codepage .
      sy-subrc = 0.
    CATCH cx_parameter_invalid_type .
      sy-subrc = 0.
    CATCH cx_sy_codepage_converter_init .
      sy-subrc = 0.
  ENDTRY.
* 2. Teil
  APPEND lwa_data_out TO pt_data_out.
  CLEAR lwa_data_out.
  TRY.
      CALL METHOD cl_abap_conv_in_ce=>uccp
        EXPORTING
          uccp = '000A'
        RECEIVING
          char = lwa_data_out.
    CATCH cx_sy_conversion_codepage .
      sy-subrc = 0.
    CATCH cx_parameter_invalid_type .
      sy-subrc = 0.
    CATCH cx_sy_codepage_converter_init .
      sy-subrc = 0.
  ENDTRY.

  APPEND lwa_data_out TO pt_data_out.

ENDFORM

****************************************

* Now get the length

  CLEAR L_DATA_LEN.
  LOOP AT LT_DATA_OUT INTO LWA_DATA_OUT.
    ADD 2 TO L_DATA_LEN" each row 2 signs (Hexa code)
  ENDLOOP.
  LT_DATA_TAB[] = LT_DATA_OUT[].

* Now you neet the correct hexa tab

 

    PERFORM CHANGE_HEX_CHAR CHANGING
                                LT_DATATAB.

   *----------------------------------------------------------------------*
FORM change_hex_char  CHANGING pt_datatab TYPE tyt_data_tab.
  TYPES: BEGIN OF type_hextab,
           line(2) TYPE x,
         END OF type_hextab.
  DATA: lv_char    TYPE c,
        lv_hex(2TYPE x.
  DATAlt_out  TYPE TABLE OF type_hextab WITH HEADER LINE.
  DATAlt_help TYPE TABLE OF type_hextab WITH HEADER LINE,
         ls_datatab TYPE tys_data_tab,
         ls_out     TYPE type_hextab.
  DATA: lv_count TYPE i.
* Changing  c(1) in H(2) --> pt_datatab -->lt_out
  LOOP AT pt_datatab INTO ls_datatab.
    TRY.
        CALL METHOD cl_abap_conv_out_ce=>uccp
          EXPORTING
            char = ls_datatab-wa_data_tab
          RECEIVING
            uccp = ls_out-line.
      CATCH cx_sy_conversion_codepage .
        sy-subrc = 0.
      CATCH cx_sy_codepage_converter_init .
        sy-subrc = 0.
      CATCH cx_parameter_invalid_range .
        sy-subrc = 0.
    ENDTRY.
    APPEND ls_out TO lt_out.
  ENDLOOP.
  MOVE lt_out[] TO lt_help[].
  CLEAR lt_out. REFRESH lt_out.
  CLEAR lv_count.
  LOOP AT lt_help.
    MOVE lt_help-line+1 TO lt_out-line+lv_count.
    ADD 1 TO lv_count.
    IF lv_count GE 2.
      APPEND lt_out.
      CLEAR lv_count.
      CLEAR lt_out.
    ENDIF.
  ENDLOOP.
  IF NOT lv_count IS INITIAL.
    APPEND lt_out.
    CLEAR lv_count.
    CLEAR lt_out.
  ENDIF.
  CLEAR lt_help. REFRESH lt_help.
  REFRESH pt_datatab.
* Changing hexa 2 to char 1 h(2) --> c(1)
  CLEAR ls_out.
  LOOP AT lt_out INTO ls_out.
    TRY.
        CALL METHOD cl_abap_conv_in_ce=>uccp
          EXPORTING
            uccp = ls_out-line
          RECEIVING
            char = ls_datatab-wa_data_tab.
      CATCH cx_sy_conversion_codepage .
        sy-subrc = 0.
      CATCH cx_parameter_invalid_type .
        sy-subrc = 0.
      CATCH cx_sy_codepage_converter_init .
        sy-subrc = 0.
    ENDTRY.
    APPEND ls_datatab TO pt_datatab.
  ENDLOOP.

ENDFORM.                    " CHANGE_HEX_CHAR

*--------------------------------------------------------------------------------------------------------

* CALL

    CALL FUNCTION 'ALEWEB_DOWNLOAD'
    EXPORTING
      DATA_LEN                = l_data_len
      MIME_TYPE               = lv_conttype
      DATA_TYPE               = 'RAW'
    TABLES
      DATA_TAB                = lt_data_tab
    EXCEPTIONS
      ITS_NOT_AVAILABLE       = 1
      OTHERS                  = 2
            .

may this will help you. I'll use this techinque in sevaral ITS Applications.

Best regards

Thorsten

Answers (1)

Answers (1)

Former Member
0 Kudos

Dear Jay,

you can use the following menupoints for download:

"Menu -> System -> List -> Save -> Local File"

   OR

"List -> Export -> Spreadsheet"

BR

Zoltan

Former Member
0 Kudos

Dear Zoltan,

recognise that your not inside an R/3 application. The frontend is the internet browser. Therefore you don't have the path for download an sap list.

have a look to my solution.

Best regards

Thorsten