Application Development 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: 

How to retrieve the ARCHIVED Sales order data

former_member687052
Participant
0 Kudos

Hi All,

When issuing the output for the delivery, it is giving an error saying 'Sales Order XXXX does not exist' due to which the prices in the output were displayed as '0'. Reason for this can be that 'the order might have been archived'.

My requirement is,

1. If Sales Order doesnu2019t exist in data base then need to check if Sales order exists in archive data base.

2. If yes, take needed data from archive data base tables to calculate price. The logic of price calculation should be the same as for not archived Sales Orders.

Can anyone help me on this..?

Please tell me how to check whether the Sales order exists in the Archived database. Please share the table names(sample logic if possible) sothat I can use them in the report logic.

Please tell me how to pull the data from the archive database tables to calculate the price.

Thank you in advance.

Thanks & Regards,

Paddu.

Edited by: Paddu K on Feb 23, 2009 3:42 PM

1 ACCEPTED SOLUTION

Former Member
0 Kudos
*&---------------------------------------------------------------------*
*&      Form  get_archive_data
*&---------------------------------------------------------------------*
*       Fetch Archive Data
*----------------------------------------------------------------------*
FORM get_archive_data .

  CLEAR:    g_read_handle, g_commit_cnt,
            g_read_cnt, g_reload_cnt,it_rel_tab,it_bseg_a,it_bkpf_a,
            it_bset_a, gt_result.

  REFRESH: it_rel_tab[],it_bseg_a[],it_bkpf_a[],
           it_bset_a[], gt_result[].


*Populating selection screen fields to field-symbols
  PERFORM build_fs_select_options.



*Call FM as_api_read  FI Data
  CALL FUNCTION 'AS_API_READ'
    EXPORTING
      i_fieldcat                      = 'SAP_FI_DOC_002'
      i_selections                    = ft_selections[]
*   I_OBLIGATORY_FIELDS             =
*   I_MAXROWS                       =
   IMPORTING
     e_result                        = gt_result[]
 EXCEPTIONS
   parameters_invalid              = 1
   no_infostruc_found              = 2
   field_missing_in_fieldcat       = 3
   OTHERS                          = 4
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.




  IF NOT gt_result[] IS INITIAL.

*Sorting by KEY and Offset
    SORT gt_result BY archivekey archiveofs.

*To delete duplicates
    DELETE ADJACENT DUPLICATES FROM gt_result COMPARING archivekey
    archiveofs.

*looping the internal table
    LOOP AT gt_result.
*Get read handle for  object
      CALL FUNCTION 'ARCHIVE_READ_OBJECT'
        EXPORTING
          object         = 'FI_DOCUMNT'
          archivkey      = gt_result-archivekey
          offset         = gt_result-archiveofs
        IMPORTING
          archive_handle = g_read_handle
        EXCEPTIONS
          OTHERS         = 1.
      IF NOT sy-subrc IS INITIAL.
        MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        EXIT.
      ENDIF.

      IF sy-subrc = 0.

*Get Acoounting Document details
        PERFORM object_read_opened
                  TABLES it_rel_tab
                         it_bseg_a
                         it_bkpf_a
*                         it_bset_a
*                         it_bsik_a
*                         it_bsak_a
                         it_bsid_a
                         it_bsad_a
*                         it_bsec_a
                  USING g_read_handle
                        l_archobj
                        g_commit_cnt
                        g_read_cnt
                        g_reload_cnt
                        .
      ENDIF.
*close the file.
      CALL FUNCTION 'ARCHIVE_CLOSE_FILE'
        EXPORTING
          archive_handle          = g_read_handle
        EXCEPTIONS
          internal_error          = 1
          wrong_access_to_archive = 2
          OTHERS                  = 3.
      IF sy-subrc <> 0.
        MESSAGE i004." 'Unable to close archive session'.
        EXIT.
      ENDIF.
    ENDLOOP.

  ELSE.
    MESSAGE i000 WITH 'No data found for Archived data'(095).
    EXIT.
  ENDIF.


*Start of Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
  IF NOT it_bkpf_a[] IS INITIAL.
    SORT it_bkpf_a BY belnr.
    DELETE ADJACENT DUPLICATES FROM it_bkpf_a COMPARING belnr.
    DELETE it_bkpf_a WHERE budat GT p_budat. "#ECDK902206
  ENDIF.

*Start of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206
  IF it_bkpf_a[] IS INITIAL.
    MESSAGE i000 WITH 'No data found for Archived data'(095).
  ENDIF.
*End of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206

  IF NOT it_bseg_a[] IS INITIAL.
    SORT it_bseg_a BY belnr gjahr buzei.
    DELETE ADJACENT DUPLICATES FROM it_bseg_a COMPARING
                                          belnr gjahr buzei.
  ENDIF.
*End of Changes by GTHATIKONDA on 10/17/2008 #ECDK902204

ENDFORM.                    " get_archive_data


*&---------------------------------------------------------------------*
*&      Form  build_fs_select_options
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM build_fs_select_options .

  REFRESH:  ft_selections.

*Comapny code
  APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
  <fw_selections>-fieldname  = 'BUKRS'.
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_bukrs  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Customer
  APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
  <fw_selections>-fieldname  = 'KUNNR'.
  LOOP AT s_kunnr.
    APPEND INITIAL LINE TO <fw_selections>-selopt_t
           ASSIGNING <lw_selopt>.
    MOVE-CORRESPONDING  s_kunnr TO <lw_selopt>.
  ENDLOOP.

*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
**Customer Group
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'KTOKD'.
*  loop at s_ktokd.
*    append initial line to <fw_selections>-selopt_t
*           assigning <lw_selopt>.
*    move-corresponding  s_ktokd to <lw_selopt>.
*  endloop.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192


*Profit Center
  APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
  <fw_selections>-fieldname  = 'PRCTR'.
  LOOP AT s_prctr.
    APPEND INITIAL LINE TO <fw_selections>-selopt_t
           ASSIGNING <lw_selopt>.
    MOVE-CORRESPONDING  s_prctr TO <lw_selopt>.
  ENDLOOP.

*Commented #ECDK902210
**Key Date
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'BUDAT'.
*  append initial line to <fw_selections>-selopt_t assigning <lw_selopt>
*.
*  move p_budat  to <lw_selopt>-low.
*  move  'I' to <lw_selopt>-sign.
*  move  'EQ' to <lw_selopt>-option.

*Aging Period1
  APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
  <fw_selections>-fieldname  = 'ANZTA'.
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag1  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Aging Period2
*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'ANZTA'.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag2  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Aging Period3
*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'ANZTA'.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag3  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Aging Period4
*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'ANZTA'.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag4  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Aging Period5
*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname = 'ANZTA'.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag5  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.


ENDFORM.                    " build_fs_select_options
*&---------------------------------------------------------------------*
*&      Form  object_read_opened
*&---------------------------------------------------------------------*
*       To Fetch Arichive Data
*----------------------------------------------------------------------*
FORM object_read_opened TABLES   it_rel_tab
                                  it_bseg_a
                                  it_bkpf_a
*                                  it_bset_a
*                                  it_bsik_a
*                                  it_bsak_a
                                  it_bsid_a
                                  it_bsad_a
*                                 it_bsec_a
                         USING value(g_read_handle) LIKE sy-tabix
                               value(l_archobj) LIKE arch_def-object
                         value(g_commit_cnt) LIKE arch_usr-arch_comit
                           g_read_cnt TYPE i
                           g_reload_cnt TYPE i.


  DATA: BEGIN OF table_wa ,
           table LIKE arch_stat-tabname,
        END  OF table_wa.

  DATA: lit_data(2048) TYPE c OCCURS 1 WITH HEADER LINE.
  DATA:  l_structure LIKE arch_stat-tabname,
         l_lin TYPE i.


  CLEAR: it_table_org1,lit_struc,it_table_org2,table_wa,it_rel_tab.
  REFRESH: it_table_org1[],lit_struc[],it_table_org2[],it_rel_tab[].

  CLEAR: g_duprec,g_read_cnt,g_reload_cnt,g_object_cnt.


*Read  data from the infostructure
  DO.
    ADD 1 TO g_object_cnt.
    CLEAR l_structure.

    CALL FUNCTION 'ARCHIVE_GET_NEXT_RECORD'
      EXPORTING
        archive_handle                = g_read_handle
     IMPORTING
       record                        = lit_data
*   RECORD_CURSOR                 =
*   RECORD_FLAGS                  =
       record_structure              = l_structure
*   RECORD_LENGTH                 =
*   RECORD_REF                    =
     EXCEPTIONS
       end_of_object                 = 1
       internal_error                = 2
       wrong_access_to_archive       = 3
       OTHERS                        = 4
              .
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      EXIT.
    ENDIF.

    IF NOT l_structure IS INITIAL.
      table_wa-table = l_structure.
      APPEND table_wa TO it_rel_tab.
    ENDIF.

    APPEND lit_data.
    CLEAR l_lin.
    FIELD-SYMBOLS: <fs_struc> TYPE c.

    CASE l_structure.

*BKPF data
      WHEN 'BKPF'.
        ASSIGN it_bkpf_a TO <fs_struc> CASTING.
        <fs_struc> = lit_data.
        APPEND it_bkpf_a.


*BSID data
      WHEN  'BSID'.
        ASSIGN it_bsid_a TO <fs_struc> CASTING.
        <fs_struc> = lit_data.
        APPEND it_bsid_a.

*BSAD data
      WHEN  'BSAD'.
        ASSIGN it_bsad_a TO <fs_struc> CASTING.
        <fs_struc> = lit_data.
        APPEND it_bsad_a.

*BSEG data
      WHEN 'BSEG'.
        ASSIGN it_bseg_a TO <fs_struc> CASTING.
        <fs_struc> = lit_data.
        APPEND it_bseg_a.


    ENDCASE.
    REFRESH lit_data.
    CLEAR g_object_cnt.
  ENDDO.


ENDFORM.                    " object_read_opened
*&---------------------------------------------------------------------*
*&      Form  get_bsid_bsad_archive_data
*&---------------------------------------------------------------------*
*If Exclude Spl. GL Trnasaction is initial get BSID BSAD Archive data  *
*----------------------------------------------------------------------*
FORM get_bsid_bsad_archive_data .

*Work Area
  DATA: wa_bsid TYPE type_bsid.

*Reading BSAD Archive internal table
*      loop at it_bsad_a   where bukrs eq p_bukrs
*Start of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
*Commented by GTHATIKONDA on 10/17/2008 #ECDK902204
  LOOP AT it_bkpf_a  WHERE  bukrs = p_bukrs AND
                            budat LE p_budat. "#ECDK902206
*End of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
    LOOP AT it_bseg_a   WHERE bukrs EQ p_bukrs AND
                              belnr EQ it_bkpf_a-belnr AND
                              gjahr EQ it_bkpf_a-gjahr AND
                              augdt GT p_budat AND
*                            koart eq 'D'     and
                              kunnr IN s_kunnr AND
                              prctr IN s_prctr.

*Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
*    loop at it_bkpf_a  where budat le p_budat."#ECDK902206

*Move corresponding fiels
      MOVE-CORRESPONDING it_bseg_a TO wa_bsid.
      wa_bsid-blart = it_bkpf_a-blart.
      wa_bsid-budat = it_bkpf_a-budat.
      wa_bsid-bldat = it_bkpf_a-bldat.

      APPEND wa_bsid TO i_bsad.
      CLEAR wa_bsid.
    ENDLOOP.
  ENDLOOP.

  IF NOT i_bsad[] IS INITIAL.
    APPEND LINES OF i_bsad TO i_bsid.
  ENDIF.

*Start of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206
  IF NOT i_bsid[] IS INITIAL.
    SORT i_bsid BY belnr.
*Commenting this logic by GTATIKONDA on 10/31/2008 #ECDK902245
*  delete adjacent duplicates from i_bsid comparing belnr.
  ENDIF.
*End of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206

ENDFORM.                    " get_bsid_bsad_archive_data

*Reading BSAD Archive internal table
*      loop at it_bsad_a  where bukrs eq p_bukrs
*Start of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
*Commented by GTHATIKONDA on 10/17/2008 #ECDK902204
  LOOP AT it_bkpf_a  WHERE bukrs = p_bukrs AND  "#ECDK902206
                           budat LE p_budat.

*End of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
    LOOP AT it_bseg_a  WHERE bukrs EQ p_bukrs AND
                             belnr EQ it_bkpf_a-belnr AND
                             gjahr EQ it_bkpf_a-gjahr AND
                             kunnr IN s_kunnr AND
                             umskz EQ space AND
                             augdt GT p_budat AND
                             prctr IN s_prctr.
*Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
*    loop at it_bkpf_a  where budat le p_budat. "#ECDK902206

*Move corresponding fiels
      MOVE-CORRESPONDING it_bseg_a TO wa_bsid.
      wa_bsid-blart = it_bkpf_a-blart.
      wa_bsid-budat = it_bkpf_a-budat.
      wa_bsid-bldat = it_bkpf_a-bldat.


      APPEND wa_bsid TO i_bsad.
      CLEAR wa_bsid.
    ENDLOOP.
  ENDLOOP.

  IF NOT i_bsad[] IS INITIAL.
    APPEND LINES OF i_bsad TO i_bsid.
  ENDIF.
6 REPLIES 6

Former Member
0 Kudos

Hi,

Check this link

[http://help.sap.com/saphelp_47x200/helpdata/en/a9/55c7b690a111d1a5510000e82deaaa/content.htm]

Cheers,

Surinder

Former Member
0 Kudos

Hi,

use below tcode SARI to know the archive object.

Archive object is must to get the data.

below FM are must.

SARE u2013 Archive Explorer

SARI - Archive Information System: Central Management

SARJ u2013 Archive Retrieval Configurator

DB15 u2013 Tables and Archiving Objects

Function Modules to read or retrieve archived data

AS_API_READ u2013 Reading of Data from the Archive Information System

ARCHIVE_READ_OBJECT - Read a Data Object from an Archive File

ARCHIVE_GET_NEXT_RECORD u2013 Sequential Read of the Records from a Data Object

ARCHIVE_CLOSE_FILE u2013 Open Archive Files Will Be Closed

ARCHIVE_GET_TABLE - Read Records by Structure from the Current Data

see the below code, it is very useful for your requirement.

Former Member
0 Kudos
*&---------------------------------------------------------------------*
*&      Form  get_archive_data
*&---------------------------------------------------------------------*
*       Fetch Archive Data
*----------------------------------------------------------------------*
FORM get_archive_data .

  CLEAR:    g_read_handle, g_commit_cnt,
            g_read_cnt, g_reload_cnt,it_rel_tab,it_bseg_a,it_bkpf_a,
            it_bset_a, gt_result.

  REFRESH: it_rel_tab[],it_bseg_a[],it_bkpf_a[],
           it_bset_a[], gt_result[].


*Populating selection screen fields to field-symbols
  PERFORM build_fs_select_options.



*Call FM as_api_read  FI Data
  CALL FUNCTION 'AS_API_READ'
    EXPORTING
      i_fieldcat                      = 'SAP_FI_DOC_002'
      i_selections                    = ft_selections[]
*   I_OBLIGATORY_FIELDS             =
*   I_MAXROWS                       =
   IMPORTING
     e_result                        = gt_result[]
 EXCEPTIONS
   parameters_invalid              = 1
   no_infostruc_found              = 2
   field_missing_in_fieldcat       = 3
   OTHERS                          = 4
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.




  IF NOT gt_result[] IS INITIAL.

*Sorting by KEY and Offset
    SORT gt_result BY archivekey archiveofs.

*To delete duplicates
    DELETE ADJACENT DUPLICATES FROM gt_result COMPARING archivekey
    archiveofs.

*looping the internal table
    LOOP AT gt_result.
*Get read handle for  object
      CALL FUNCTION 'ARCHIVE_READ_OBJECT'
        EXPORTING
          object         = 'FI_DOCUMNT'
          archivkey      = gt_result-archivekey
          offset         = gt_result-archiveofs
        IMPORTING
          archive_handle = g_read_handle
        EXCEPTIONS
          OTHERS         = 1.
      IF NOT sy-subrc IS INITIAL.
        MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        EXIT.
      ENDIF.

      IF sy-subrc = 0.

*Get Acoounting Document details
        PERFORM object_read_opened
                  TABLES it_rel_tab
                         it_bseg_a
                         it_bkpf_a
*                         it_bset_a
*                         it_bsik_a
*                         it_bsak_a
                         it_bsid_a
                         it_bsad_a
*                         it_bsec_a
                  USING g_read_handle
                        l_archobj
                        g_commit_cnt
                        g_read_cnt
                        g_reload_cnt
                        .
      ENDIF.
*close the file.
      CALL FUNCTION 'ARCHIVE_CLOSE_FILE'
        EXPORTING
          archive_handle          = g_read_handle
        EXCEPTIONS
          internal_error          = 1
          wrong_access_to_archive = 2
          OTHERS                  = 3.
      IF sy-subrc <> 0.
        MESSAGE i004." 'Unable to close archive session'.
        EXIT.
      ENDIF.
    ENDLOOP.

  ELSE.
    MESSAGE i000 WITH 'No data found for Archived data'(095).
    EXIT.
  ENDIF.


*Start of Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
  IF NOT it_bkpf_a[] IS INITIAL.
    SORT it_bkpf_a BY belnr.
    DELETE ADJACENT DUPLICATES FROM it_bkpf_a COMPARING belnr.
    DELETE it_bkpf_a WHERE budat GT p_budat. "#ECDK902206
  ENDIF.

*Start of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206
  IF it_bkpf_a[] IS INITIAL.
    MESSAGE i000 WITH 'No data found for Archived data'(095).
  ENDIF.
*End of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206

  IF NOT it_bseg_a[] IS INITIAL.
    SORT it_bseg_a BY belnr gjahr buzei.
    DELETE ADJACENT DUPLICATES FROM it_bseg_a COMPARING
                                          belnr gjahr buzei.
  ENDIF.
*End of Changes by GTHATIKONDA on 10/17/2008 #ECDK902204

ENDFORM.                    " get_archive_data


*&---------------------------------------------------------------------*
*&      Form  build_fs_select_options
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM build_fs_select_options .

  REFRESH:  ft_selections.

*Comapny code
  APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
  <fw_selections>-fieldname  = 'BUKRS'.
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_bukrs  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Customer
  APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
  <fw_selections>-fieldname  = 'KUNNR'.
  LOOP AT s_kunnr.
    APPEND INITIAL LINE TO <fw_selections>-selopt_t
           ASSIGNING <lw_selopt>.
    MOVE-CORRESPONDING  s_kunnr TO <lw_selopt>.
  ENDLOOP.

*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
**Customer Group
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'KTOKD'.
*  loop at s_ktokd.
*    append initial line to <fw_selections>-selopt_t
*           assigning <lw_selopt>.
*    move-corresponding  s_ktokd to <lw_selopt>.
*  endloop.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192


*Profit Center
  APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
  <fw_selections>-fieldname  = 'PRCTR'.
  LOOP AT s_prctr.
    APPEND INITIAL LINE TO <fw_selections>-selopt_t
           ASSIGNING <lw_selopt>.
    MOVE-CORRESPONDING  s_prctr TO <lw_selopt>.
  ENDLOOP.

*Commented #ECDK902210
**Key Date
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'BUDAT'.
*  append initial line to <fw_selections>-selopt_t assigning <lw_selopt>
*.
*  move p_budat  to <lw_selopt>-low.
*  move  'I' to <lw_selopt>-sign.
*  move  'EQ' to <lw_selopt>-option.

*Aging Period1
  APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
  <fw_selections>-fieldname  = 'ANZTA'.
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag1  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Aging Period2
*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'ANZTA'.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag2  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Aging Period3
*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'ANZTA'.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag3  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Aging Period4
*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname  = 'ANZTA'.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag4  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.

*Aging Period5
*Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
*  append initial line to ft_selections assigning <fw_selections>.
*  <fw_selections>-fieldname = 'ANZTA'.
*End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
  APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
  MOVE p_ag5  TO <lw_selopt>-low.
  MOVE  'I' TO <lw_selopt>-sign.
  MOVE  'EQ' TO <lw_selopt>-option.


ENDFORM.                    " build_fs_select_options
*&---------------------------------------------------------------------*
*&      Form  object_read_opened
*&---------------------------------------------------------------------*
*       To Fetch Arichive Data
*----------------------------------------------------------------------*
FORM object_read_opened TABLES   it_rel_tab
                                  it_bseg_a
                                  it_bkpf_a
*                                  it_bset_a
*                                  it_bsik_a
*                                  it_bsak_a
                                  it_bsid_a
                                  it_bsad_a
*                                 it_bsec_a
                         USING value(g_read_handle) LIKE sy-tabix
                               value(l_archobj) LIKE arch_def-object
                         value(g_commit_cnt) LIKE arch_usr-arch_comit
                           g_read_cnt TYPE i
                           g_reload_cnt TYPE i.


  DATA: BEGIN OF table_wa ,
           table LIKE arch_stat-tabname,
        END  OF table_wa.

  DATA: lit_data(2048) TYPE c OCCURS 1 WITH HEADER LINE.
  DATA:  l_structure LIKE arch_stat-tabname,
         l_lin TYPE i.


  CLEAR: it_table_org1,lit_struc,it_table_org2,table_wa,it_rel_tab.
  REFRESH: it_table_org1[],lit_struc[],it_table_org2[],it_rel_tab[].

  CLEAR: g_duprec,g_read_cnt,g_reload_cnt,g_object_cnt.


*Read  data from the infostructure
  DO.
    ADD 1 TO g_object_cnt.
    CLEAR l_structure.

    CALL FUNCTION 'ARCHIVE_GET_NEXT_RECORD'
      EXPORTING
        archive_handle                = g_read_handle
     IMPORTING
       record                        = lit_data
*   RECORD_CURSOR                 =
*   RECORD_FLAGS                  =
       record_structure              = l_structure
*   RECORD_LENGTH                 =
*   RECORD_REF                    =
     EXCEPTIONS
       end_of_object                 = 1
       internal_error                = 2
       wrong_access_to_archive       = 3
       OTHERS                        = 4
              .
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      EXIT.
    ENDIF.

    IF NOT l_structure IS INITIAL.
      table_wa-table = l_structure.
      APPEND table_wa TO it_rel_tab.
    ENDIF.

    APPEND lit_data.
    CLEAR l_lin.
    FIELD-SYMBOLS: <fs_struc> TYPE c.

    CASE l_structure.

*BKPF data
      WHEN 'BKPF'.
        ASSIGN it_bkpf_a TO <fs_struc> CASTING.
        <fs_struc> = lit_data.
        APPEND it_bkpf_a.


*BSID data
      WHEN  'BSID'.
        ASSIGN it_bsid_a TO <fs_struc> CASTING.
        <fs_struc> = lit_data.
        APPEND it_bsid_a.

*BSAD data
      WHEN  'BSAD'.
        ASSIGN it_bsad_a TO <fs_struc> CASTING.
        <fs_struc> = lit_data.
        APPEND it_bsad_a.

*BSEG data
      WHEN 'BSEG'.
        ASSIGN it_bseg_a TO <fs_struc> CASTING.
        <fs_struc> = lit_data.
        APPEND it_bseg_a.


    ENDCASE.
    REFRESH lit_data.
    CLEAR g_object_cnt.
  ENDDO.


ENDFORM.                    " object_read_opened
*&---------------------------------------------------------------------*
*&      Form  get_bsid_bsad_archive_data
*&---------------------------------------------------------------------*
*If Exclude Spl. GL Trnasaction is initial get BSID BSAD Archive data  *
*----------------------------------------------------------------------*
FORM get_bsid_bsad_archive_data .

*Work Area
  DATA: wa_bsid TYPE type_bsid.

*Reading BSAD Archive internal table
*      loop at it_bsad_a   where bukrs eq p_bukrs
*Start of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
*Commented by GTHATIKONDA on 10/17/2008 #ECDK902204
  LOOP AT it_bkpf_a  WHERE  bukrs = p_bukrs AND
                            budat LE p_budat. "#ECDK902206
*End of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
    LOOP AT it_bseg_a   WHERE bukrs EQ p_bukrs AND
                              belnr EQ it_bkpf_a-belnr AND
                              gjahr EQ it_bkpf_a-gjahr AND
                              augdt GT p_budat AND
*                            koart eq 'D'     and
                              kunnr IN s_kunnr AND
                              prctr IN s_prctr.

*Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
*    loop at it_bkpf_a  where budat le p_budat."#ECDK902206

*Move corresponding fiels
      MOVE-CORRESPONDING it_bseg_a TO wa_bsid.
      wa_bsid-blart = it_bkpf_a-blart.
      wa_bsid-budat = it_bkpf_a-budat.
      wa_bsid-bldat = it_bkpf_a-bldat.

      APPEND wa_bsid TO i_bsad.
      CLEAR wa_bsid.
    ENDLOOP.
  ENDLOOP.

  IF NOT i_bsad[] IS INITIAL.
    APPEND LINES OF i_bsad TO i_bsid.
  ENDIF.

*Start of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206
  IF NOT i_bsid[] IS INITIAL.
    SORT i_bsid BY belnr.
*Commenting this logic by GTATIKONDA on 10/31/2008 #ECDK902245
*  delete adjacent duplicates from i_bsid comparing belnr.
  ENDIF.
*End of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206

ENDFORM.                    " get_bsid_bsad_archive_data

*Reading BSAD Archive internal table
*      loop at it_bsad_a  where bukrs eq p_bukrs
*Start of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
*Commented by GTHATIKONDA on 10/17/2008 #ECDK902204
  LOOP AT it_bkpf_a  WHERE bukrs = p_bukrs AND  "#ECDK902206
                           budat LE p_budat.

*End of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
    LOOP AT it_bseg_a  WHERE bukrs EQ p_bukrs AND
                             belnr EQ it_bkpf_a-belnr AND
                             gjahr EQ it_bkpf_a-gjahr AND
                             kunnr IN s_kunnr AND
                             umskz EQ space AND
                             augdt GT p_budat AND
                             prctr IN s_prctr.
*Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
*    loop at it_bkpf_a  where budat le p_budat. "#ECDK902206

*Move corresponding fiels
      MOVE-CORRESPONDING it_bseg_a TO wa_bsid.
      wa_bsid-blart = it_bkpf_a-blart.
      wa_bsid-budat = it_bkpf_a-budat.
      wa_bsid-bldat = it_bkpf_a-bldat.


      APPEND wa_bsid TO i_bsad.
      CLEAR wa_bsid.
    ENDLOOP.
  ENDLOOP.

  IF NOT i_bsad[] IS INITIAL.
    APPEND LINES OF i_bsad TO i_bsid.
  ENDIF.

Former Member
0 Kudos

CALL FUNCTION 'ARCHIVE_OPEN_FOR_READ'

EXPORTING

OBJECT = archiving object name

IMPORTING

ARCHIVE_HANDLE = archive read handle

DO.

CALL FUNCTION 'ARCHIVE_GET_NEXT_OBJECT'

EXPORTING

archive_handle = archive read handle

CALL FUNCTION 'ARCHIVE_GET_TABLE'

EXPORTING

archive_handle = archive read handle

record_structure = 'TABLENAME'

all_records_of_object = 'X'

automatic_conversion = 'X'

TABLES

table = internal table

ENDDO.

CALL FUNCTION 'ARCHIVE_CLOSE_FILE'

EXPORTING

archive_handle = archive read handle

Regards,

Joan

Former Member
0 Kudos

use KASH_ARCHIVE_DATA_OBJECT_SHOW by making Z copy of this function module.

this function module shows output in tree format.

Comment that code.

g_buffer has all data .

use your selection creteria on g_buffer.

0 Kudos

Use function module

ASH_SD_VBAK_READ

to get all Sales Order Data!

i_borident-objkey = document number