Code20070216 - ooxxvv/MySAPnotes GitHub Wiki
code20070216
- 在 layouset 中無法直接撰寫程式碼,需 PERFORM 到別的程式做運算,這裡是一些有用的程式碼。
程式碼
REPORT ZERFI002.
*-------用在 layoutset 中用來轉換年份的 form
FORM CHANGE_YEAR TABLES IN_TAB STRUCTURE ITCSY
OUT_TAB STRUCTURE ITCSY.
DATA: L_INT_YEAR TYPE i VALUE '95',
L_CHR_YEAR(4) TYPE c VALUE '0'.
*----GET INPUT
LOOP AT IN_TAB.
IF IN_TAB-NAME EQ 'L_YEAR'.
L_INT_YEAR = IN_TAB-VALUE.
ENDIF.
ENDLOOP.
*-----CHANGE YEAR
L_INT_YEAR = L_INT_YEAR - 1911.
IF L_INT_YEAR < 0.
L_INT_YEAR = 0.
ENDIF.
WRITE L_INT_YEAR TO L_CHR_YEAR.
*------OUTPUT
LOOP AT OUT_TAB.
IF OUT_TAB-NAME EQ 'L_YEAR'.
MOVE L_CHR_YEAR TO OUT_TAB-VALUE .
ENDIF.
MODIFY OUT_TAB.
ENDLOOP.
ENDFORM.
*-------用在 layoutset 中用來清除空白 form
FORM REPLACE_SPACE TABLES IN_TAB STRUCTURE ITCSY
OUT_TAB STRUCTURE ITCSY.
DATA/ L_INT_SPELL(50) TYPE C VALUE ''.
*----GET INPUT
LOOP AT IN_TAB.
IF IN_TAB-NAME EQ 'L_SPELL'.
L_INT_SPELL = IN_TAB-VALUE.
ENDIF.
ENDLOOP.
*-----REPLACE SPACE
CONDENSE L_INT_SPELL NO-GAPS.
*------OUTPUT
LOOP AT OUT_TAB.
IF OUT_TAB-NAME EQ 'L_SPELL'.
MOVE L_INT_SPELL TO OUT_TAB-VALUE .
ENDIF.
MODIFY OUT_TAB.
ENDLOOP.
ENDFORM.
在 layoutset 中使用 PERFORM 將西元年轉成民國年
SET DATE MASK = 'YYYYMMDD'
DEFINE &L_YEAR& = ®UH-WDATE(4)&
PERFORM CHANGE_YEAR IN PROGRAM ZERFI002
USING &L_YEAR&
CHANGING &L_YEAR&
ENDPERFORM