2011年5月11日 星期三

Archive Tips


Archived Sale Document Read

T-Codes

SARA
Archive Administration
SARE
Archive Explorer
SARI
Archive Information System
SARJ
Archive Retrieval Configurator
DB15
Data Archiving: Database Tables

Functions

AS_API_READ
Reading of Data from the Archive Information System
ARCHIVE_OPEN_FOR_READ
Open an Existing Archive File for Reading
ARCHIVE_READ_OBJECT
Read a Data Object from an Archive File
ARCHIVE_GET_NEXT_RECORD
Sequential Read of the Records from a Data Object
ARCHIVE_CLOSE_FILE
Open Archive Files Will Be Closed
ARCHIVE_GET_TABLE
Read Records by Structure from the Current Data
KASH_ARCHIVE_DATA_FILE_SHOW
Display tools for archive

Tables

ADMI_FILES
Archive Files of Archive Sessions
ARCH_IDX
Index table for data object selection

[Func] Func Group - TXXL


EXCEL - list viewer interface

Function Module:
  • XXL_SIMPLE_API: 單個情況 Excel 清單查看器的省略接口
  • XXL_FULL_API: Excel 清單瀏覽器的完整界面

XXL_SIMPLE_API

Example code:
  1. XXLSTEST
  2. DATA_Export
*&---------------------------------------------------------------------*
*&      Form  data_export
*&---------------------------------------------------------------------*
*       資料匯出至 Excel
*----------------------------------------------------------------------*
FORM DATA_EXPORT .

DATA: XMPL_HEADER LIKE  GXXLT_P-TEXT
                  VALUE '交貨明細表'.

DATA BEGIN OF XMPLT_O OCCURS 1.
        INCLUDE STRUCTURE GXXLT_O.
DATA END OF XMPLT_O.

DATA BEGIN OF XMPLT_P OCCURS 1.
        INCLUDE STRUCTURE GXXLT_P.
DATA END OF XMPLT_P.

DATA BEGIN OF XMPLT_V OCCURS 1.
        INCLUDE STRUCTURE GXXLT_V.
DATA END OF XMPLT_V.

DATA: BEGIN OF XMPLT_D OCCURS 60,
        VBELN    LIKE LIPS-VBELN,
        POSNR    LIKE LIPS-POSNR,
        KUNNR    LIKE LIKP-KUNNR,
        NAME1    LIKE KNA1-NAME1,
        NAME1_SH LIKE KNA1-NAME1,
        MATNR    LIKE LIPS-MATNR,
        VGBEL    LIKE LIPS-VGBEL,
        KDMAT    LIKE LIPS-KDMAT,
        LFIMG    LIKE LIPS-LFIMG,
        VRKME    LIKE LIPS-VRKME,
        LFDAT    LIKE LIKP-LFDAT,
      END OF XMPLT_D.

* 標題列
CLEAR XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '交貨'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '項目'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '收貨人'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '客戶名稱'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '出貨對象名稱'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '物料'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '採購文件'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '客戶物料號碼'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '交貨數量'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = 'SU'.
APPEND XMPLT_V.
XMPLT_V-COL_NO     = XMPLT_V-COL_NO + 1.
XMPLT_V-COL_NAME   = '發貨日期'.
APPEND XMPLT_V.

* 資料轉移
LOOP AT GT_ITAB.
  MOVE-CORRESPONDING GT_ITAB TO XMPLT_D.
  APPEND XMPLT_D.
ENDLOOP.
SORT XMPLT_D BY VBELN POSNR.
*
CALL FUNCTION 'XXL_SIMPLE_API'
   EXPORTING
        N_KEY_COLS         = 4
        FILENAME           = 'XMPL0002'
        HEADER             = XMPL_HEADER
   TABLES
        DATA               = XMPLT_D
        ONLINE_TEXT        = XMPLT_O
        PRINT_TEXT         = XMPLT_P
        COL_TEXT           = XMPLT_V.

ENDFORM.                    " data_export

XXL_FULL_API

Example code: XXLFTEST
CALL FUNCTION 'XXL_FULL_API'
   EXPORTING
        N_VRT_KEYS         = 3     " Of the 9 columns in the list
        N_ATT_COLS         = 6     " \ object, 3 are key columns
        N_HRZ_KEYS         = 3     " Header above the non-key-columns
                                   " \ forms a three-level-hierarchy
        DATA_STARTING_AT   = 5     " Only 50 rows out of 60 are
        DATA_ENDING_AT     = 54    " \ really exported
        FILENAME           = 'XMPL0001'
        HEADER_1           = XMPL_HEADER1
        HEADER_2           = XMPL_HEADER2
        SEMA_TYPE          = 'X'    " C-Columns are converted if SEMA
                                    " \ definitions require this
        NO_DIALOG          = SPACE  " XXL itself prompts for FILENAME
   TABLES
        VKEY               = XMPLT_V
        HKEY               = XMPLT_H
        DATA               = XMPLT_D
        SEMA               = XMPLT_S
        ONLINE_TEXT        = XMPLT_O
        PRINT_TEXT         = XMPLT_P
   EXCEPTIONS
        FILE_OPEN_ERROR    = 71
        FILE_WRITE_ERROR   = 72
        INV_WINSYS         = 73
        INV_XXL            = 74
        CANCELLED_BY_USER  = 75
        OTHERS             = 99.

[Func] PUT SIGN IN FRONT


Function: CLOI_PUT_SIGN_IN_FRONT ,將負號放到數字前面
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
  CHANGING
    VALUE         = var_char
注意 :如果原先負號的後面還有其他的字元(例如 %),經過處理後會遺漏掉。

[Code] Put Data into Range Object with Macro


Put data into ranges table.
首先是先定義好資料:
TABLES: tvfk.
RANGES: gr_fkart FOR vbrk-fkart.
最重要的 萬用巨集
* -------------
* Define Macro
* -------------
DEFINE put_ranges.
  &1-sign   = &2.
  &1-option = &3.
  &1-low    = &4.
  &1-high   = &5.
  APPEND &1.
END-OF-DEFINITION.
或者是這個「假猴」的 :p
DEFINE put_ranges.
  FIELD-SYMBOLS <PT> LIKE &1.
  ASSIGN &1 TO <PT>.
  <PT>-sign   = &2.
  <PT>-option = &3.
  <PT>-low    = &4.
  <PT>-high   = &5.
  APPEND <PT> TO &1.
END-OF-DEFINITION.
然後是運用的方式:
SELECT fkarts INTO tvfk-fkarts
    FROM tvfk
   WHERE kappl = 'V3'.
  put_ranges gr_fkart 'E' 'EQ' tvfk-fkarts ''.
ENDSELECT.

Distinct vs Single


Select Distinct vs Select Single

SINGLE

The result of the selection should be a single entry. If it is not possible to identify a unique entry, the system uses the first line of the selection. If you use the FOR UPDATE addition, the selected entry is protected against parallel updates from other transactions until the next database commit (see LUW and database lock mechanism). If the database system identifies a deadlock, a runtime error occurs.

DISTINCT

Duplicate entries in the result set are automatically deleted.

[Link] LET US ABAP


SAP AND ABAP TIPS AND FACTS
The link address is: http://abaplovers.blogspot.com/

[Link] sapcommander


Filecommander (Norton-Commander-Clone) for SAP-Systems (ABAP)

[Link] abap-report-wizard


Project to support future developments of the ABAP Report Wizard

[Link] SAPlink

SAPlink is an open source project that aims to make it easier to share ABAP developments between programmers. It provides the ability to easily distribute and package custom objects.

2011年4月8日 星期五

[Link] MassDownload


News: 2012/03/11 Mass Download Program version update to 1.5.1
Mass Download is the successor to Direct Download, the same basic idea but with a totally new code base. The program has all the same features as before but has been updated to take advantage off some of the new features and changes that have arrived in the latest version of SAP.

Change document

customer master object: (Block customer):
TABLE       CDHDR/CDPOS
OBJECTCLAS  = DEBI
OBJECTID    = <Customer number>
TCODE       = VD05

OBJECTCLAS

可以由底下 Table 取得:
SWECDOBTYP  指派更改文件 / 工作流程物件類型
TCDOB       變更文件建立的物件
FUNCTION C14O_CH_DOC_OBJ_NAME_GET:
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(I_TABLENAME) TYPE  ESP1_TAB_NAME
*"       EXPORTING
*"             VALUE(E_OBJ_NAME) LIKE  TCDOB-OBJECT
*"       EXCEPTIONS
*"              ILLEGAL_INPUT<
*"              CHNG_DOC_OBJ_NOT_FOUND
*"----------------------------------------------------------------------
CDNAMES_GET
Transport Chnge doc.obj. via shadow tab.

訂單文件修改查詢

範例程式:RVSCD100:
CALL FUNCTION 'CHANGEDOCUMENT_READ_HEADERS'
  EXPORTING
    DATE_OF_CHANGE    = CDHDR-UDATE
    OBJECTCLASS       = CDHDR-OBJECTCLAS
    OBJECTID          = CDHDR-OBJECTID
    TIME_OF_CHANGE    = CDHDR-UTIME
    USERNAME          = CDHDR-USERNAME
  TABLES
    I_CDHDR           = ICDHDR
  EXCEPTIONS
    NO_POSITION_FOUND = 1
    OTHERS            = 2.

CALL FUNCTION 'CHANGEDOCUMENT_READ_POSITIONS'
  EXPORTING
    CHANGENUMBER      = ICDHDR-CHANGENR
    TABLEKEY          = CDPOS-TABKEY
    TABLENAME         = CDPOS-TABNAME
  IMPORTING
    HEADER            = CDHDR
  TABLES
    EDITPOS           = ICDSHW
  EXCEPTIONS
    NO_POSITION_FOUND = 1
    OTHERS            = 2.

[Func] SD_CONDITION_TIME_INTERVAL_GET

依照篩選條件取回日期區間內生效的價格條件
FUNCTION SD_CONDITION_TIME_INTERVAL_GET :
CALL FUNCTION 'SD_CONDITION_TIME_INTERVAL_GET'
    EXPORTING
      VALUE(KOMG_I)             LIKE  KOMG STRUCTURE  KOMG OPTIONAL
      VALUE(KOMK_I)             LIKE  KOMK STRUCTURE  KOMK OPTIONAL
      VALUE(KOMP_I)             LIKE  KOMP STRUCTURE  KOMP OPTIONAL
      VALUE(DATVO_I)            LIKE  A000-DATAB
      VALUE(DATBI_I)            LIKE  A000-DATBI
      VALUE(KVEWE_I)            LIKE  T681V-KVEWE DEFAULT 'A'
      VALUE(KAPPL_I)            LIKE  T681A-KAPPL DEFAULT 'V '
      VALUE(KOMK_KOMP_FIELDS_I) LIKE  SY-MARKY DEFAULT ' '
    TABLES
      PERIODS_TAB               STRUCTURE  WPPERIOD
      KSCHL_TAB                 STRUCTURE  WPKSCHL
    EXCEPTIONS
      NO_CONDITIONS.
Example:
KOMG-VKORG = P_VKORG.
      KOMG-VTWEG = P_VTWEG.
      KOMG-MATNR = IMATNR-MATNR.
      KOMG-KUNNR = IKUNNR-KUNNR.
      CALL FUNCTION 'SD_CONDITION_TIME_INTERVAL_GET'
        EXPORTING
          KOMG_I      = KOMG
          DATVO_I     = S_DATAB-LOW
          DATBI_I     = S_DATAB-HIGH
        TABLES
          PERIODS_TAB = GT_PREDATE
          KSCHL_TAB   = GT_TKSCH
        EXCEPTIONS
          OTHERS      = 1.
      READ TABLE GT_PREDATE INDEX 1.
      CHECK SY-SUBRC = 0.
      LOOP AT GT_PREDATE.
        GT_ITAB-MATNR   = IMATNR-MATNR.
        GT_ITAB-KUNNR   = IKUNNR-KUNNR.
        GT_ITAB-NAME1   = IKUNNR-NAME1.
        GT_ITAB-KOTABNR = GT_PREDATE-KOTABNR.
        GT_ITAB-VTWEG   = P_VTWEG.
        GT_ITAB-KSCHL   = P_KSCHL.
        GT_ITAB-DATAB   = GT_PREDATE-DATAB.
        GT_ITAB-DATBI   = GT_PREDATE-DATBI.
        SELECT SINGLE H~ERNAM H~ERDAT P~KBETR
            INTO (GT_ITAB-ERNAM, GT_ITAB-ERDAT,GT_ITAB-KBETR)
            FROM KONH AS H
            JOIN KONP AS P
              ON P~KNUMH = H~KNUMH
           WHERE H~KNUMH = GT_PREDATE-KNUMH.
        APPEND GT_ITAB.
        LT_DD02T-KOTABNR = GT_PREDATE-KOTABNR.
        APPEND LT_DD02T.
      ENDLOOP.

[Code] Abap list Total Pages

如何印出 [ 頁次/總頁數 ] 的樣式呢?
在每一頁的表頭上,總頁數先用特別的字串代表,特別的字串必須不會與其他的字串重複,以免後面要取代時會有失誤。
假設表頭總頁數的代表字串是 '----' ,取代的程式如下,在列印工作完成之後:
   WRITE SY-PAGNO TO TO_PAGE LEFT-JUSTIFIED.
   DO SY-PAGNO TIMES.
      READ LINE 3 OF PAGE SY-INDEX.
      REPLACE '----' WITH TO_PAGE INTO SY-LISEL.
      MODIFY CURRENT LINE.
   ENDDO.

Passing data from one ABAP program to another

1. You have to define an internal table ITAB in program AAA. 
2. In the program AAA you export your ITAB to the memory. 
    EXPORT ITAB TO MEMORY ID 'TD' (ID is the name of memory, you don't need to create it ). 
3. In program BBB you have to declare The same table (same table's name and same fields). 
4. In BBB you can import ITAB : 
    IMPORT ITAB FROM MEMORY ID 'TD' 
5. Now you can export it to AAA after modifications. 
    EXPORT ITAB TO MEMORY ID 'TD'
6. In AAA : 
    IMPORT ITAB FROM MEMORY ID 'TD'
This solution is independant to SUBMIT. 
 
Best regards,
SAP Basis, ABAP Programming and Other IMG Stuff
http://www.sap-img.com/ab020.htm