*&---------------------------------------------------------------------*
*& Include ZALV001
*&---------------------------------------------------------------------*
*& ALV 共用function
*&---------------------------------------------------------------------* *
ALV 宣告* General Data TYPE-POOLS: SLIS. DATA : G_REPID LIKE SY-REPID,
"sy-repid 指當前的主程序 POS TYPE SLIS_SORTINFO_ALV ,
"欄位計數器 I_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "表單列名資料緩存器
PGT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV , "WITH HEADER LINE,
W_FIELDCAT_ALV LIKE LINE OF PGT_FIELDCAT, *用來存放我們將要在表單顯示區域顯示出來的表單的列名,每個列名對應的
*字段名以及列表頭其他相關屬性信息的數據類型 . PIS_LAYOUT TYPE SLIS_LAYOUT_ALV,
"LAYOUT alv格式 I_LIST_COMMENTS TYPE SLIS_T_LISTHEADER,
"用來填充表單標題區域的數据類型 W_LIST_COMMENTS LIKE LINE OF
I_LIST_COMMENTS,"表單標題區域的數据類型緩存器 I_SORT TYPE SLIS_T_SORTINFO_ALV
WITH HEADER LINE, "排序 I_VARIANT TYPE DISVARIANT,
"配置(外部使用) PIS_VARIANT TYPE DISVARIANT, GS_VARIANT_SAVE(1) TYPE C,
"變式類型 IS_PRINT TYPE SLIS_PRINT_ALV , "類型組
I_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT, "EXIT事件記錄器 W_EVENT_EXIT
LIKE LINE OF I_EVENT_EXIT, "EXIT事件記錄器緩存器 W_HTML_TOP_OF_PAGE TYPE
SLIS_FORMNAME, "字符型 G_EXIT_CAUSED_BY_CALLER, GS_EXIT_CAUSED_BY_USER
TYPE SLIS_EXIT_BY_USER, I_EXCLUDING TYPE SLIS_T_EXTAB,
G_TABNAME_HEADER TYPE SLIS_TABNAME, G_TABNAME_ITEM TYPE SLIS_TABNAME,
*使用兩個表格進行輸出時,G_TABNAME_HEADER用于輸出表頭,G_TABNAME_ITEM用于輸出明細 P_ALV_HANDLE(4).
DATA : I_KEYINFO TYPE SLIS_KEYINFO_ALV, IS_KEYINFO TYPE
SLIS_KEYINFO_ALV, GS_KEYINFO TYPE SLIS_KEYINFO_ALV. DATA: BEGIN OF
SLIS_ALV_CATG. INCLUDE TYPE SLIS_FIELDCAT_MAIN0. INCLUDE TYPE
SLIS_FIELDCAT_MAIN1. DATA: END OF SLIS_ALV_CATG. * Callback DATA:I_EVENT
TYPE SLIS_T_EVENT WITH HEADER LINE, "事件記錄器 I_EVENTS TYPE
SLIS_T_EVENT , "事件記錄器 W_EVENTS LIKE LINE OF
I_EVENTS, "事件記錄器緩存器 GT_LIST_TOP_OF_PAGE TYPE
SLIS_T_LISTHEADER, "ALV報表標頭類型 LS_LINE TYPE
SLIS_LISTHEADER, "標頭資料儲存器 G_STATUS_SET TYPE
SLIS_FORMNAME VALUE ‘PF_STATUS_SET‘, G_USER_COMMAND TYPE SLIS_FORMNAME
,"VALUE ‘USER_COMMAND‘,"使用者變量 G_TOP_OF_PAGE TYPE SLIS_FORMNAME ,"VALUE
‘TOP_OF_PAGE‘, "頁首變量類型 G_TOP_OF_LIST TYPE SLIS_FORMNAME ,"VALUE
‘TOP_OF_LIST‘, "報表區域變量 G_END_OF_LIST TYPE SLIS_FORMNAME ."VALUE
‘END_OF_LIST‘. "頁尾區域變量
*&--------------------------------------------------------------------*
*& Form SET_alv_field_info
*&--------------------------------------------------------------------*
*基本型的ALV *&KEY & FIX_COLUMN 搭配可固定列*&POS:欄位計輸器,在傳輸參數時可以為空
*&FIELD_NAME:表格欄位*&SELTEXT_L:欄位說明*&KEY:是否為KEY值*&EMPHASIZE:欄位顏色設定
*&FIX_COLUMN:固定列*&NO_ZERO:輸出不顯示0
**---------------------------------------------------------------------*FORM
SET_ALV_FIELD_INFO USING POS FIELD_NAME
SELTEXT_L KEY
EMPHASIZE FIX_COLUMN
NO_ZERO . CLEAR I_FIELDCAT. I_FIELDCAT-COL_POS = POS.
I_FIELDCAT-FIELDNAME = FIELD_NAME. I_FIELDCAT-SELTEXT_L = SELTEXT_L.
I_FIELDCAT-KEY = KEY. I_FIELDCAT-EMPHASIZE = EMPHASIZE.
I_FIELDCAT-FIX_COLUMN = FIX_COLUMN. I_FIELDCAT-NO_ZERO = NO_ZERO .
APPEND I_FIELDCAT TO PGT_FIELDCAT. LOOP AT PGT_FIELDCAT INTO W_FIELDCAT_ALV.
CASE W_FIELDCAT_ALV-FIELDNAME. WHEN ‘NAME‘. W_FIELDCAT_ALV-HOTSPOT
= ‘X‘. WHEN ‘MYFIELD‘. W_FIELDCAT_ALV-CHECKBOX = ‘X‘.
W_FIELDCAT_ALV-SELTEXT_S = ‘MyChkBox‘. WHEN OTHERS. ENDCASE. MODIFY
PGT_FIELDCAT FROM W_FIELDCAT_ALV. ENDLOOP. ENDFORM.
"SET_alv_field_info
*&--------------------------------------------------------------------*
*& Form SET_alv_field_info1
*&--------------------------------------------------------------------*
*基本型的ALV *&KEY & FIX_COLUMN 搭配可固定列*&POS:欄位計輸器,在傳輸參數時可以為空
*&FIELD_NAME:表格欄位*&SELTEXT_L:欄位說明*&KEY:是否為KEY值*&EMPHASIZE:欄位顏色設定
*&FIX_COLUMN:固定列*&NO_ZERO:輸出不顯示0 *&REF_TABNAME:參考表格
*&REF_FIELDNAME:參考字段名
**---------------------------------------------------------------------*FORM
SET_ALV_FIELD_INFO1 USING POS FIELD_NAME
SELTEXT_L REF_TABNAME
REF_FIELDNAME KEY
EMPHASIZE FIX_COLUMN
NO_ZERO . CLEAR I_FIELDCAT. I_FIELDCAT-COL_POS = POS.
I_FIELDCAT-FIELDNAME = FIELD_NAME. I_FIELDCAT-SELTEXT_L = SELTEXT_L.
I_FIELDCAT-REF_TABNAME = REF_TABNAME. I_FIELDCAT-REF_FIELDNAME =
REF_FIELDNAME. I_FIELDCAT-KEY = KEY. I_FIELDCAT-EMPHASIZE =
EMPHASIZE. I_FIELDCAT-FIX_COLUMN = FIX_COLUMN. I_FIELDCAT-NO_ZERO =
NO_ZERO . APPEND I_FIELDCAT TO PGT_FIELDCAT. LOOP AT PGT_FIELDCAT INTO
W_FIELDCAT_ALV. CASE W_FIELDCAT_ALV-FIELDNAME. WHEN ‘NAME‘.
W_FIELDCAT_ALV-HOTSPOT = ‘X‘. WHEN ‘MYFIELD‘.
W_FIELDCAT_ALV-CHECKBOX = ‘X‘. W_FIELDCAT_ALV-SELTEXT_S = ‘MyChkBox‘.
WHEN OTHERS. ENDCASE. MODIFY PGT_FIELDCAT FROM W_FIELDCAT_ALV. IF
W_FIELDCAT_ALV-SELTEXT_L IS INITIAL . DELETE PGT_FIELDCAT . ENDIF .
ENDLOOP. ENDFORM. "SET_alv_field_info1
*&--------------------------------------------------------------------*
*& Form SET_alv_field_info2
*&--------------------------------------------------------------------*
*基本型的ALV *&KEY & FIX_COLUMN 搭配可固定列*&POS:欄位計輸器,在傳輸參數時可以為空
*&FIELD_NAME:表格欄位*&SELTEXT_L:欄位說明*&KEY:是否為KEY值*&EMPHASIZE:欄位顏色設定
*&FIX_COLUMN:固定列*&NO_ZERO:輸出不顯示0 *&SELTEXT_M:欄位說明
*&OUTPUTLEN:輸出長度*&TABNAME:結構名
**---------------------------------------------------------------------*FORM
SET_ALV_FIELD_INFO2 USING POS FIELD_NAME
SELTEXT_L SELTEXT_M
KEY EMPHASIZE
FIX_COLUMN NO_ZERO
OUTPUTLEN TABNAME. CLEAR I_FIELDCAT.
I_FIELDCAT-COL_POS = POS. I_FIELDCAT-FIELDNAME = FIELD_NAME.
I_FIELDCAT-SELTEXT_L = SELTEXT_L. I_FIELDCAT-SELTEXT_M = SELTEXT_M.
I_FIELDCAT-KEY = KEY. I_FIELDCAT-EMPHASIZE = EMPHASIZE.
I_FIELDCAT-FIX_COLUMN = FIX_COLUMN. I_FIELDCAT-NO_ZERO = NO_ZERO .
I_FIELDCAT-OUTPUTLEN = OUTPUTLEN . I_FIELDCAT-TABNAME = TABNAME .
APPEND I_FIELDCAT TO PGT_FIELDCAT. ENDFORM.
"SET_alv_field_info
*&--------------------------------------------------------------------*
*& Form F_CALL_ALV
*&--------------------------------------------------------------------*
*雙層的ALV *&TABNAME_HEADER: 第一層欄位名*&TABNAME_ITEM:第二層欄位名
*&OUTTAB_HEADER:第一層字段內容*&OUTTAB_ITEM:第二層字段內容
**---------------------------------------------------------------------*FORM
F_CALL_ALV TABLES OUTTAB_HEADER OUTTAB_ITEM USING
VALUE(TABNAME_HEADER) VALUE(TABNAME_ITEM). CALL FUNCTION
‘REUSE_ALV_HIERSEQ_LIST_DISPLAY‘ EXPORTING I_CALLBACK_PROGRAM
= G_REPID * I_CALLBACK_PF_STATUS_SET = ‘F_SET_STATUS‘ *
I_CALLBACK_USER_COMMAND = IS_LAYOUT =
PIS_LAYOUT IT_FIELDCAT = PGT_FIELDCAT[] I_DEFAULT
= ‘X‘ I_SAVE = ‘A‘
IS_VARIANT = I_VARIANT I_TABNAME_HEADER
= TABNAME_HEADER "第一 I_TABNAME_ITEM = TABNAME_ITEM "第二
IS_KEYINFO = I_KEYINFO IS_PRINT
= IS_PRINT I_BYPASSING_BUFFER = ‘X‘ I_BUFFER_ACTIVE
= ‘ ‘ TABLES T_OUTTAB_HEADER =
OUTTAB_HEADER[] "第一 T_OUTTAB_ITEM = OUTTAB_ITEM[] "第二
EXCEPTIONS PROGRAM_ERROR = 1 OTHERS
= 2. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY
NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
ENDFORM. " F_CALL_ALV
*---------------------------------------------------------------------* *
FORM get_alv_event *
*---------------------------------------------------------------------*
*&取得現有可用的Alv Event .
*---------------------------------------------------------------------*FORM
GET_ALV_EVENT. CALL FUNCTION ‘REUSE_ALV_EVENTS_GET‘ EXPORTING
I_LIST_TYPE = 0 IMPORTING ET_EVENTS = I_EVENTS[]. ENDFORM.
"get_alv_event
*&--------------------------------------------------------------------*
*& Form FILL_ALV_EVENT
*&--------------------------------------------------------------------*
*&P_EVENTID: EVENT ID *&TOP-OF-PAGE *&END-OF-PAGE
*&END-OF-LIST *&P_FUNCNAME: FUNCTION NAME
*---------------------------------------------------------------------*FORM
FILL_ALV_EVENT USING VALUE(P_EVENTID) VALUE(P_FUNCNAME). IF I_EVENTS[] IS
INITIAL . PERFORM GET_ALV_EVENT. ENDIF. READ TABLE I_EVENTS WITH KEY NAME
= P_EVENTID INTO W_EVENTS. IF SY-SUBRC = 0. MOVE P_FUNCNAME TO
W_EVENTS-FORM. MODIFY I_EVENTS FROM W_EVENTS INDEX
SY-TABIX."將標題區數据賦值給W_EVENTS ENDIF. ENDFORM. "FILL_ALV_EVENT
*---------------------------------------------------------------------* *
FORM alv_end_of_list *
*---------------------------------------------------------------------* *&
FOR GRID
*---------------------------------------------------------------------* *FORM
ALV_END_OF_LIST. * * CLEAR: I_LIST_COMMENTS[]. * W_LIST_COMMENTS-TYP = ‘A‘. "H
= Header, S = Selection, A = Action * W_LIST_COMMENTS-KEY = ‘‘. *
W_LIST_COMMENTS-INFO = ‘報表結束‘. * APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS. * *
CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE‘ * EXPORTING *
IT_LIST_COMMENTARY = I_LIST_COMMENTS * I_LOGO = ‘HOTEL_5_STAR‘
* I_END_OF_LIST_GRID = ‘X‘. * *ENDFORM.
"alv_end_of_list
*&---------------------------------------------------------------------* *
FORM alv_end_of_page *
*---------------------------------------------------------------------* *&
FOR GRID
*---------------------------------------------------------------------*FORM
ALV_END_OF_PAGE. ENDFORM. "ALV_END_OF_PAGE
*&---------------------------------------------------------------------*
*& Form LAYOUT_INIT
*&---------------------------------------------------------------------*
FORM LAYOUT_INIT USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV. RS_LAYOUT-DETAIL_POPUP
= ‘X‘. ENDFORM. " layout_init
*&---------------------------------------------------------------------*
*& Form EVENT_EXIT_BUILD
*&---------------------------------------------------------------------*
*&I_EVENT_EXIT: *&EXIT-UCOMM:設置触發彈出詳細信息窗口的功能碼,這里是雙擊
*&EXIT-BEFORE:触發前參數*&EXIT-AFTER:触發後參數
*----------------------------------------------------------------------* *
--> p1 text * <-- p2 text
*----------------------------------------------------------------------*FORM
EVENT_EXIT_BUILD . CLEAR: I_EVENT_EXIT[]. * Pick W_EVENT_EXIT-UCOMM =
‘&ETA‘. "設置触發彈出詳細信息窗口的功能碼,這里是雙擊 W_EVENT_EXIT-BEFORE = ‘ ‘.
W_EVENT_EXIT-AFTER = ‘X‘. APPEND W_EVENT_EXIT TO I_EVENT_EXIT. ENDFORM.
" EVENT_EXIT_BUILD
*&---------------------------------------------------------------------*
*& Form PRINT_BUILD
*&---------------------------------------------------------------------*
*&NO_PRINT_LISTINFOS:Display no listinfos
*----------------------------------------------------------------------*FORM
PRINT_BUILD . IS_PRINT-NO_PRINT_LISTINFOS = ‘X‘. ENDFORM. "
PRINT_BUILD
*&---------------------------------------------------------------------*
*& Form LAYOUT_BUILD
*&---------------------------------------------------------------------*
*&ZEBRA:可選行顏色設置*&DETAIL_POPUP:鼠標右鍵功能*&F2CODE:雙擊鼠表功能
*&NO_VLINE:豎直線條設置*&COLWIDTH_OPTIMIZE:輸出寬度調節
*&DETAIL_INITIAL_LINES:橫線設置*&DETAIL_TITLEBAR:輸出alv的toolbar
*----------------------------------------------------------------------* *&
FOR GRID
*----------------------------------------------------------------------*FORM
LAYOUT_BUILD . "用于定義ALV表單的相關格式、屬性 PIS_LAYOUT-ZEBRA = ‘X‘.
PIS_LAYOUT-DETAIL_POPUP = ‘X‘. G_REPID = SY-REPID. PIS_LAYOUT-F2CODE =
‘&ETA‘. PIS_LAYOUT-NO_VLINE = ‘ ‘.
PIS_LAYOUT-COLWIDTH_OPTIMIZE = ‘X‘. PIS_LAYOUT-DETAIL_INITIAL_LINES = ‘X‘.
PIS_LAYOUT-DETAIL_TITLEBAR = ‘Detail Title Bar‘. ENDFORM.
" LAYOUT_BUILD
*&---------------------------------------------------------------------*
*& Form ALV_REPORT_DISPLAY
*&---------------------------------------------------------------------*
*& 基本型GRID ALV FOR HANNSTAR.
*&---------------------------------------------------------------------*
*& Grid 格式為網格格式: *& 鼠標右鍵:可用*& TOP-OF-PAGE:只可固定于左對齊位置*&
輸出長度不受系統限制(1023) *& 列寬可隨意變更
*&---------------------------------------------------------------------*FORM
ALV_REPORT_DISPLAY TABLES ITAB. W_HTML_TOP_OF_PAGE = ‘HTML_TOP_OF_PAGE‘. CALL
FUNCTION ‘REUSE_ALV_GRID_DISPLAY‘ EXPORTING I_CALLBACK_PROGRAM =
G_REPID "前程序 I_BACKGROUND_ID = ‘ ‘ * I_BACKGROUND_ID
= ‘ALV_BACKGROUND‘ * I_BACKGROUND_ID = ‘SIWB_WALLPAPER‘
I_DEFAULT = ‘X‘ I_SAVE = ‘A‘ IS_LAYOUT
= PIS_LAYOUT "子函LAYOUT_BUILD填充的格式定? IT_FIELDCAT =
PGT_FIELDCAT[] "子函FIELDS填充的各列 I_CALLBACK_USER_COMMAND = G_USER_COMMAND *
I_CALLBACK_USER_COMMAND = ‘USER_COMMAND‘ I_CALLBACK_HTML_TOP_OF_PAGE =
W_HTML_TOP_OF_PAGE IT_EVENTS = I_EVENTS IT_EVENT_EXIT
= I_EVENT_EXIT * IS_LAYOUT = SLA IS_PRINT
= IS_PRINT TABLES T_OUTTAB = ITAB EXCEPTIONS
PROGRAM_ERROR = 1 OTHERS = 2.
*定義相關快捷按鈕,以免出現退回等按鈕丟矢的情況 IF SY-SUBRC = 0. IF G_EXIT_CAUSED_BY_CALLER = ‘X‘.
ELSE. IF GS_EXIT_CAUSED_BY_USER-BACK = ‘X‘. "F3 ELSE.
IF GS_EXIT_CAUSED_BY_USER-EXIT = ‘X‘. "F15 ELSE. IF
GS_EXIT_CAUSED_BY_USER-CANCEL = ‘X‘. "F12 ELSE. ENDIF.
ENDIF. ENDIF. ENDIF. ELSE. ENDIF. ENDFORM.
"ALV_REPORT_DISPLAY
*---------------------------------------------------------------------* *
FORM ALV_report *
*---------------------------------------------------------------------* *
基本型的ALV *
*---------------------------------------------------------------------*FORM
ALV_REPORT TABLES ITAB USING PROGRAM_NAME STRUCTURE_NAME
PROGRAM_USCOMM PROGRAM_STATUS CHKBOX COLOR. * ALV 宣告 DATA
:PIS_LAYOUT TYPE SLIS_LAYOUT_ALV, PIS_VARIANT TYPE DISVARIANT. IF
PGT_FIELDCAT[] IS INITIAL . CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE‘
EXPORTING I_PROGRAM_NAME = PROGRAM_NAME I_STRUCTURE_NAME
= STRUCTURE_NAME I_CLIENT_NEVER_DISPLAY = ‘X‘ CHANGING
CT_FIELDCAT = PGT_FIELDCAT[] EXCEPTIONS
INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS
= 3. ENDIF. IF P_ALV_HANDLE IS INITIAL . ELSE.
PIS_VARIANT-HANDLE = P_ALV_HANDLE. ENDIF. PIS_LAYOUT-F2CODE = ‘PICK‘.
PIS_VARIANT-REPORT = PROGRAM_NAME. PIS_VARIANT-USERNAME = SY-UNAME. IF CHKBOX
= ‘X‘. PIS_LAYOUT-BOX_FIELDNAME = ‘CHKBOX‘. ELSE. CLEAR
PIS_LAYOUT-BOX_FIELDNAME. ENDIF. IF COLOR = ‘X‘. PIS_LAYOUT-INFO_FIELDNAME
= ‘COLOR‘. ELSE. CLEAR PIS_LAYOUT-INFO_FIELDNAME . ENDIF.
PIS_LAYOUT-COLWIDTH_OPTIMIZE = ‘X‘. IF COLOR = ‘ ‘ . PIS_LAYOUT-ZEBRA = ‘X‘
. ENDIF. CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY‘ EXPORTING
I_CALLBACK_PROGRAM = PROGRAM_NAME I_CALLBACK_USER_COMMAND =
PROGRAM_USCOMM I_CALLBACK_PF_STATUS_SET = PROGRAM_STATUS
I_STRUCTURE_NAME = STRUCTURE_NAME IS_LAYOUT =
PIS_LAYOUT IS_VARIANT = PIS_VARIANT IT_FIELDCAT
= PGT_FIELDCAT[] I_SAVE = ‘A‘ TABLES T_OUTTAB
= ITAB EXCEPTIONS PROGRAM_ERROR = 1
OTHERS = 2. ENDFORM. "alv_report
*---------------------------------------------------------------------* *
FORM popup_alv_log *
*---------------------------------------------------------------------* *
popup 型態的ALV ***************** FORM POPUP_ALV_LOG TABLES ITAB USING PROGRAM_NAME
STRUCTURE_NAME . * **** >>> ALV 宣告 DATA : PIS_LAYOUT TYPE
SLIS_LAYOUT_ALV, PIS_VARIANT TYPE DISVARIANT. DATA: PLS_FIELDCAT TYPE
SLIS_FIELDCAT_ALV. **** <<< ALV 宣告 IF PGT_FIELDCAT[] IS INITIAL .
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE‘ EXPORTING
I_PROGRAM_NAME = PROGRAM_NAME I_STRUCTURE_NAME =
STRUCTURE_NAME I_CLIENT_NEVER_DISPLAY = ‘X‘ CHANGING
CT_FIELDCAT = PGT_FIELDCAT[] EXCEPTIONS
INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS
= 3. ENDIF. CALL FUNCTION ‘REUSE_ALV_POPUP_TO_SELECT‘ EXPORTING
I_CALLBACK_PROGRAM = PROGRAM_NAME * i_structure_name = structure_name
IT_FIELDCAT = PGT_FIELDCAT[] I_TITLE = ‘Message Log‘
I_SELECTION = ‘‘ I_TABNAME = ‘ITAB‘ I_ZEBRA =
‘X‘ TABLES T_OUTTAB = ITAB EXCEPTIONS PROGRAM_ERROR = 1
OTHERS = 2. ** IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE
SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. * ENDFORM. "popup_alv_log
*&---------------------------------------------------------------------*
*& Form popup_alv_log_full2
*&---------------------------------------------------------------------*
**** 浮動式的ALV report
*----------------------------------------------------------------------*FORM
POPUP_ALV_LOG2 TABLES ITAB USING PROGRAM_NAME STRUCTURE_NAME PROGRAM_USCOMM
PROGRAM_STATUS CHKBOX COLOR ZEBRA .. . **** >>>
ALV 宣告 DATA : "pgt_fieldcat TYPE slis_t_fieldcat_alv, PIS_LAYOUT TYPE
SLIS_LAYOUT_ALV, * is_exit TYPE slis_exit_by_user, PIS_VARIANT
TYPE DISVARIANT. * is_variant2 TYPE disvariant. **** <<< ALV
宣告 IF PGT_FIELDCAT[] IS INITIAL . CALL FUNCTION
‘REUSE_ALV_FIELDCATALOG_MERGE‘ EXPORTING I_PROGRAM_NAME =
PROGRAM_NAME I_STRUCTURE_NAME = STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = ‘X‘ CHANGING CT_FIELDCAT =
PGT_FIELDCAT[] EXCEPTIONS INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2 OTHERS = 3. ENDIF.
PIS_LAYOUT-COLWIDTH_OPTIMIZE = ‘X‘. PIS_LAYOUT-F2CODE = ‘PICK‘. *
is_layout-info_fieldname = ‘COLOR‘. * pis_variant-report = program_name. *
is_variant-handle = ‘0001‘. * pis_variant-username = sy-uname. *
is_variant-log_group = ‘000A‘. IF CHKBOX = ‘X‘. PIS_LAYOUT-BOX_FIELDNAME =
‘CHKBOX‘. ELSE. CLEAR PIS_LAYOUT-BOX_FIELDNAME. ENDIF. IF COLOR = ‘X‘.
PIS_LAYOUT-INFO_FIELDNAME = ‘COLOR‘. ELSE. CLEAR PIS_LAYOUT-INFO_FIELDNAME .
ENDIF. IF ZEBRA = ‘X‘. PIS_LAYOUT-ZEBRA = ‘X‘. ELSE. CLEAR
PIS_LAYOUT-ZEBRA . ENDIF. PIS_VARIANT-REPORT = PROGRAM_NAME.
PIS_VARIANT-HANDLE = ‘0001‘. CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY‘
EXPORTING I_CALLBACK_PROGRAM = PROGRAM_NAME
I_CALLBACK_USER_COMMAND = PROGRAM_USCOMM I_CALLBACK_PF_STATUS_SET =
PROGRAM_STATUS I_STRUCTURE_NAME = STRUCTURE_NAME IS_LAYOUT
= PIS_LAYOUT IS_VARIANT = PIS_VARIANT
IT_FIELDCAT = PGT_FIELDCAT[] IT_SORT =
I_SORT[] IS_PRINT = IS_PRINT IT_EVENTS
= I_EVENT[] I_SAVE = ‘A‘
"HP_311471 I_SCREEN_START_COLUMN = 5 I_SCREEN_START_LINE = 5
I_SCREEN_END_COLUMN = 90 I_SCREEN_END_LINE = 20 TABLES
T_OUTTAB = ITAB EXCEPTIONS PROGRAM_ERROR =
1 OTHERS = 2. *FORM user_command USING r_ucomm LIKE
sy-ucomm *rs_selfield TYPE slis_selfield. * *FORM status USING rt_extab TYPE
slis_t_extab. ENDFORM. " popup_alv_log_full2
*&--------------------------------------------------------------------*
*& Form popup_alv_log3
*&--------------------------------------------------------------------*FORM
POPUP_ALV_LOG3 TABLES ITAB USING PROGRAM_NAME STRUCTURE_NAME
PROGRAM_USCOMM PROGRAM_STATUS CHKBOX COLOR ZEBRA P_TYPE. *
1:正常ALV , 2: Err Log *DATA : BEGIN OF pgt_msg
OCCURS 0 . *DATA : type LIKE bapiret1-type, * message LIKE
bapiret1-message, * color LIKE wb2_alv_head_dyn-linecolor . *DATA : END OF
pgt_msg. **** >>> ALV 宣告 DATA : L_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
PIS_LAYOUT TYPE SLIS_LAYOUT_ALV, * is_exit TYPE slis_exit_by_user,
PIS_VARIANT TYPE DISVARIANT. * is_variant2 TYPE disvariant.
CLEAR: PGT_FIELDCAT, PGT_FIELDCAT[]. **** <<< ALV 宣告 CASE P_TYPE.
WHEN ‘1‘ OR ‘ ‘. IF PGT_FIELDCAT[] IS INITIAL . CALL FUNCTION
‘REUSE_ALV_FIELDCATALOG_MERGE‘ EXPORTING I_PROGRAM_NAME
= PROGRAM_NAME I_STRUCTURE_NAME = STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = ‘X‘ CHANGING CT_FIELDCAT
= PGT_FIELDCAT[] EXCEPTIONS INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2 OTHERS = 3.
ENDIF. WHEN ‘2‘. L_FIELDCAT-FIELDNAME = ‘TYPE‘.
L_FIELDCAT-REF_FIELDNAME = ‘BAPIRET1‘. L_FIELDCAT-REF_TABNAME =
‘BAPIRET1‘. APPEND L_FIELDCAT TO PGT_FIELDCAT . CLEAR L_FIELDCAT.
L_FIELDCAT-FIELDNAME = ‘MESSAGE‘. L_FIELDCAT-REF_FIELDNAME = ‘MESSAGE‘.
L_FIELDCAT-REF_TABNAME = ‘BAPIRET1‘. APPEND L_FIELDCAT TO
PGT_FIELDCAT . CLEAR L_FIELDCAT. L_FIELDCAT-FIELDNAME =
‘LINECOLOR‘. L_FIELDCAT-REF_FIELDNAME = ‘LINECOLOR‘.
L_FIELDCAT-REF_TABNAME = ‘WB2_ALV_HEAD_DYN‘. APPEND L_FIELDCAT TO
PGT_FIELDCAT . CLEAR L_FIELDCAT. * ENDCASE. PIS_LAYOUT-COLWIDTH_OPTIMIZE
= ‘X‘. PIS_LAYOUT-F2CODE = ‘PICK‘. * is_layout-info_fieldname = ‘COLOR‘. *
pis_variant-report = program_name. * is_variant-handle = ‘0001‘. *
pis_variant-username = sy-uname. * is_variant-log_group = ‘000A‘. IF CHKBOX =
‘X‘. PIS_LAYOUT-BOX_FIELDNAME = ‘CHKBOX‘. ELSE. CLEAR
PIS_LAYOUT-BOX_FIELDNAME. ENDIF. IF COLOR = ‘X‘. PIS_LAYOUT-INFO_FIELDNAME
= ‘COLOR‘. ELSE. CLEAR PIS_LAYOUT-INFO_FIELDNAME . ENDIF. IF ZEBRA = ‘X‘.
PIS_LAYOUT-ZEBRA = ‘X‘. ELSE. CLEAR PIS_LAYOUT-ZEBRA . ENDIF.
PIS_VARIANT-REPORT = PROGRAM_NAME. PIS_VARIANT-HANDLE = ‘0001‘. CALL FUNCTION
‘REUSE_ALV_LIST_DISPLAY‘ EXPORTING I_CALLBACK_PROGRAM =
PROGRAM_NAME I_CALLBACK_USER_COMMAND = PROGRAM_USCOMM
I_CALLBACK_PF_STATUS_SET = PROGRAM_STATUS I_STRUCTURE_NAME =
STRUCTURE_NAME IS_LAYOUT = PIS_LAYOUT IS_VARIANT
= PIS_VARIANT IT_FIELDCAT = PGT_FIELDCAT[] IT_SORT
= I_SORT[] IS_PRINT = IS_PRINT
IT_EVENTS = I_EVENT[] I_SAVE = ‘A‘
"HP_311471 I_SCREEN_START_COLUMN = 5
I_SCREEN_START_LINE = 5 I_SCREEN_END_COLUMN = 90
I_SCREEN_END_LINE = 20 TABLES T_OUTTAB = ITAB
EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2.
*FORM user_command USING r_ucomm LIKE sy-ucomm *rs_selfield TYPE slis_selfield.
* *FORM status USING rt_extab TYPE slis_t_extab. ENDFORM. "
popup_alv_log_3
*---------------------------------------------------------------------* *
FORM popup_alv_log4 *
*---------------------------------------------------------------------* *
popup 型態的ALV ***************** FORM POPUP_ALV_LOG4 TABLES ITAB USING
PROGRAM_NAME STRUCTURE_NAME P_TITLE. * **** >>> ALV 宣告 DATA :
PIS_LAYOUT TYPE SLIS_LAYOUT_ALV, PIS_VARIANT TYPE DISVARIANT,
PLS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. DATA: IEX TYPE SLIS_T_EXTAB. DATA: XEX
LIKE LINE OF IEX. DATA: I_TITLE(50). **** <<< ALV 宣告 IF
PGT_FIELDCAT[] IS INITIAL . CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE‘
EXPORTING I_PROGRAM_NAME = PROGRAM_NAME I_STRUCTURE_NAME
= STRUCTURE_NAME I_CLIENT_NEVER_DISPLAY = ‘X‘ CHANGING
CT_FIELDCAT = PGT_FIELDCAT[] EXCEPTIONS
INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS
= 3. ENDIF. XEX-FCODE = ‘&NT1‘. APPEND XEX TO IEX. XEX-FCODE =
‘&OUP‘. APPEND XEX TO IEX. XEX-FCODE = ‘&ODN‘. APPEND XEX TO IEX.
XEX-FCODE = ‘&ILT‘. APPEND XEX TO IEX. XEX-FCODE = ‘&OL0‘. APPEND XEX
TO IEX. XEX-FCODE = ‘%SC‘ . APPEND XEX TO IEX. XEX-FCODE = ‘%SC+‘. APPEND XEX
TO IEX. IF P_TITLE = SPACE. I_TITLE = ‘Message Log‘. ELSE. I_TITLE =
P_TITLE. ENDIF. CALL FUNCTION ‘REUSE_ALV_POPUP_TO_SELECT‘ EXPORTING
I_CALLBACK_PROGRAM = PROGRAM_NAME IT_FIELDCAT = PGT_FIELDCAT[]
I_TITLE = I_TITLE I_SCREEN_START_COLUMN = 5
I_SCREEN_START_LINE = 5 I_SCREEN_END_COLUMN = 110
I_SCREEN_END_LINE = 20 I_SELECTION = ‘X‘ I_TABNAME
= ‘ITAB‘ I_ZEBRA = ‘X‘ IT_EXCLUDING = IEX
TABLES T_OUTTAB = ITAB EXCEPTIONS PROGRAM_ERROR
= 1 OTHERS = 2. ENDFORM.
"popup_alv_log4
*&--------------------------------------------------------------------*
*& Form alv_report
*&--------------------------------------------------------------------* *
支援 ALV Event Report 的 ALV FORM ALV_REPORT_EVENT TABLES ITAB USING PROGRAM_NAME
STRUCTURE_NAME PROGRAM_USCOMM PROGRAM_STATUS CHKBOX COLOR
ZEBRA NO_TOTALLINE. IF PGT_FIELDCAT[] IS INITIAL . CALL FUNCTION
‘REUSE_ALV_FIELDCATALOG_MERGE‘ EXPORTING I_PROGRAM_NAME =
PROGRAM_NAME I_STRUCTURE_NAME = STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = ‘X‘ CHANGING CT_FIELDCAT =
PGT_FIELDCAT[] EXCEPTIONS INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2 OTHERS = 3. ENDIF.
PIS_LAYOUT-COLWIDTH_OPTIMIZE = ‘X‘. PIS_LAYOUT-F2CODE = ‘PICK‘.
PIS_LAYOUT-TOTALS_TEXT = ‘Totals‘. PIS_VARIANT-REPORT = PROGRAM_NAME.
PIS_VARIANT-HANDLE = I_VARIANT-HANDLE. PIS_VARIANT-USERNAME = SY-UNAME. IF
CHKBOX = ‘X‘. PIS_LAYOUT-BOX_FIELDNAME = ‘CHKBOX‘. ELSE. CLEAR
PIS_LAYOUT-BOX_FIELDNAME. ENDIF. IF NO_TOTALLINE = ‘X‘.
PIS_LAYOUT-NO_TOTALLINE = ‘X‘. ELSE. CLEAR PIS_LAYOUT-NO_TOTALLINE. ENDIF.
IF COLOR = ‘X‘. PIS_LAYOUT-INFO_FIELDNAME = ‘COLOR‘. ELSE. CLEAR
PIS_LAYOUT-INFO_FIELDNAME . ENDIF. IF ZEBRA = ‘X‘. PIS_LAYOUT-ZEBRA = ‘X‘.
ELSE. CLEAR PIS_LAYOUT-ZEBRA . ENDIF. IS_PRINT-NO_CHANGE_PRINT_PARAMS =
‘X‘. IS_PRINT-NO_PRINT_LISTINFOS = ‘X‘. CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY‘
EXPORTING I_CALLBACK_PROGRAM = PROGRAM_NAME
I_CALLBACK_USER_COMMAND = PROGRAM_USCOMM I_CALLBACK_PF_STATUS_SET =
PROGRAM_STATUS I_STRUCTURE_NAME = STRUCTURE_NAME IS_LAYOUT
= PIS_LAYOUT IS_VARIANT = PIS_VARIANT
IT_FIELDCAT = PGT_FIELDCAT[] IT_SORT =
I_SORT[] IS_PRINT = IS_PRINT IT_EVENTS
= I_EVENT[] I_SAVE = ‘A‘
"HP_311471 TABLES T_OUTTAB = ITAB EXCEPTIONS
PROGRAM_ERROR = 1 OTHERS = 2. ENDFORM.
"alv_report_enevt
*&--------------------------------------------------------------------*
*& Form alv_report
*&--------------------------------------------------------------------* *
多個ALV Report 在一個報表的 型態FORM BLOCK_ALV_REPORT TABLES ITAB
"Type = 2 用 EVENTS "Type =
2 用USING VALUE(TYPE) PROGRAM_NAME PROGRAM_USCOMM PROGRAM_STATUS
STRUCTURE_NAME "Type = 2 用
ITAB_NAME "Type = 2 用
BLOCK_ALV_TITLE "Type = 2 用 CHKBOX
"Type = 2 用 COLOR
"Type = 2 用 ZEBRA
"Type = 2 用 . **** >>> ALV 宣告 DATA :
PGT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, PIS_LAYOUT TYPE SLIS_LAYOUT_ALV,
PIS_VARIANT TYPE DISVARIANT. **** <<< ALV 宣告 IF TYPE = 1 .
CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_INIT‘ EXPORTING
I_CALLBACK_PROGRAM = PROGRAM_NAME I_CALLBACK_USER_COMMAND =
PROGRAM_USCOMM I_CALLBACK_PF_STATUS_SET = PROGRAM_STATUS. EXIT.
ENDIF. IF TYPE = 2. CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE‘
EXPORTING I_PROGRAM_NAME = PROGRAM_NAME I_STRUCTURE_NAME
= STRUCTURE_NAME I_CLIENT_NEVER_DISPLAY = ‘X‘ CHANGING
CT_FIELDCAT = PGT_FIELDCAT[] EXCEPTIONS
INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS
= 3. PIS_LAYOUT-F2CODE = ‘PICK‘. PIS_VARIANT-REPORT =
PROGRAM_NAME. PIS_VARIANT-USERNAME = SY-UNAME. IF CHKBOX = ‘X‘.
PIS_LAYOUT-BOX_FIELDNAME = ‘CHKBOX‘. ELSE. CLEAR
PIS_LAYOUT-BOX_FIELDNAME. ENDIF. IF COLOR = ‘X‘.
PIS_LAYOUT-INFO_FIELDNAME = ‘COLOR‘. ELSE. CLEAR
PIS_LAYOUT-INFO_FIELDNAME . ENDIF. IF ZEBRA = ‘X‘. PIS_LAYOUT-ZEBRA =
‘X‘. ELSE. CLEAR PIS_LAYOUT-ZEBRA . ENDIF. CALL FUNCTION
‘REUSE_ALV_BLOCK_LIST_APPEND‘ EXPORTING IT_FIELDCAT = PGT_FIELDCAT[]
IS_LAYOUT = PIS_LAYOUT I_TABNAME = ITAB_NAME IT_EVENTS
= EVENTS[] I_TEXT = BLOCK_ALV_TITLE TABLES T_OUTTAB
= ITAB. EXIT. ENDIF. IF TYPE = 3. CALL FUNCTION
‘REUSE_ALV_BLOCK_LIST_DISPLAY‘. EXIT. ENDIF. ENDFORM.
"alv_report
*&--------------------------------------------------------------------*
*& Form alv_report_hierseq
*&--------------------------------------------------------------------* *
text *---------------------------------------------------------------------*
* -->ITAB_H text * -->ITAB_D text *
-->VALUE(PROGRtextAME) * -->VALUE(STRUCtext_NAME_H) *
-->VALUE(STRUCtext_NAME_D) * -->VALUE(ITAB_text_H) *
-->VALUE(ITAB_text_D) * -->VALUE(ITAB_textH) *
-->VALUE(ITAB_textD) * -->VALUE(PROGRtextSCOMM) *
-->VALUE(PROGRtextTATUS) * -->VALUE(CHKBOtext *
-->VALUE(COLORtext * -->VALUE(ZEBRAtext *
-->VALUE(STARTtextUMN) * -->VALUE(STARTtextE)
*---------------------------------------------------------------------*FORM
ALV_REPORT_HIERSEQ TABLES ITAB_H " STRUCTURE i_bkpf ITAB_D " STRUCTURE i_bseg
USING VALUE(PROGRAM_NAME) VALUE(STRUCTURE_NAME_H)
VALUE(STRUCTURE_NAME_D) VALUE(ITAB_NAME_H) VALUE(ITAB_NAME_D)
VALUE(ITAB_TXT_H) VALUE(ITAB_TXT_D) VALUE(PROGRAM_USCOMM)
VALUE(PROGRAM_STATUS) VALUE(CHKBOX) VALUE(COLOR) VALUE(ZEBRA)
VALUE(START_COLUMN) VALUE(START_LINE) VALUE(KEYINFO). ***
>>> ALV 宣告 DATA : PGT_FIELDCAT_A TYPE SLIS_T_FIELDCAT_ALV,
PGT_FIELDCAT_B TYPE SLIS_T_FIELDCAT_ALV, PGT_FIELDCAT TYPE
SLIS_T_FIELDCAT_ALV, P_FIELD TYPE SLIS_FIELDCAT_ALV,
PIS_LAYOUT TYPE SLIS_LAYOUT_ALV, PIS_VARIANT TYPE DISVARIANT,
P_CNT LIKE SY-INDEX. CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE‘ EXPORTING
I_PROGRAM_NAME = PROGRAM_NAME I_STRUCTURE_NAME =
STRUCTURE_NAME_H I_INTERNAL_TABNAME = ITAB_NAME_H
I_CLIENT_NEVER_DISPLAY = ‘‘ CHANGING CT_FIELDCAT =
PGT_FIELDCAT[] EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR
= 2 OTHERS = 3. CALL FUNCTION
‘REUSE_ALV_FIELDCATALOG_MERGE‘ EXPORTING I_PROGRAM_NAME =
PROGRAM_NAME I_STRUCTURE_NAME = STRUCTURE_NAME_D
I_INTERNAL_TABNAME = ITAB_NAME_D I_CLIENT_NEVER_DISPLAY = ‘‘
CHANGING CT_FIELDCAT = PGT_FIELDCAT[] EXCEPTIONS
INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS
= 3. * LOOP AT pgt_fieldcat_a INTO p_field . * ADD 1 TO p_cnt . *
p_field-col_pos = p_cnt. * APPEND p_field TO pgt_fieldcat . * ENDLOOP. *
LOOP AT pgt_fieldcat_b INTO p_field . * ADD 1 TO p_cnt . *
p_field-col_pos = p_cnt. * APPEND p_field TO pgt_fieldcat . * ENDLOOP.
PIS_LAYOUT-COLWIDTH_OPTIMIZE = ‘X‘. PIS_LAYOUT-F2CODE = ‘PICK‘.
PIS_LAYOUT-ITEM_TEXT = ITAB_TXT_D. PIS_LAYOUT-HEADER_TEXT = ITAB_TXT_H.
PIS_VARIANT-REPORT = PROGRAM_NAME. PIS_VARIANT-USERNAME = SY-UNAME. IF CHKBOX
= ‘X‘. PIS_LAYOUT-BOX_FIELDNAME = ‘CHKBOX‘. ELSE. CLEAR
PIS_LAYOUT-BOX_FIELDNAME. ENDIF. IF COLOR = ‘X‘. PIS_LAYOUT-INFO_FIELDNAME
= ‘COLOR‘. ELSE. CLEAR PIS_LAYOUT-INFO_FIELDNAME . ENDIF. IF ZEBRA = ‘X‘.
PIS_LAYOUT-ZEBRA = ‘X‘. ELSE. CLEAR PIS_LAYOUT-ZEBRA . ENDIF. DATA :
P_TAB_H TYPE SLIS_TABNAME , P_TAB_D TYPE SLIS_TABNAME . P_TAB_H =
ITAB_NAME_H. P_TAB_D = ITAB_NAME_D. PIS_VARIANT-REPORT = SY-CPROG. CALL
FUNCTION ‘REUSE_ALV_HIERSEQ_LIST_DISPLAY‘ EXPORTING I_CALLBACK_PROGRAM
= PROGRAM_NAME I_CALLBACK_PF_STATUS_SET = PROGRAM_STATUS
I_CALLBACK_USER_COMMAND = PROGRAM_USCOMM IS_LAYOUT
= PIS_LAYOUT IT_FIELDCAT = PGT_FIELDCAT[] *
IT_SPECIAL_GROUPS = * IT_SORT = *
IT_FILTER = * IS_SEL_HIDE = *
i_screen_start_column = 5 * i_screen_start_line = 5 *
i_screen_end_column = 90 * i_screen_end_line = 20 *
I_DEFAULT = ‘X‘ I_SAVE = ‘X‘ *
is_variant = pis_variant * it_events
= i_event[] * IT_EVENT_EXIT = I_TABNAME_HEADER
= P_TAB_H I_TABNAME_ITEM = P_TAB_D *
I_STRUCTURE_NAME_HEADER = ‘BKPF‘ * I_STRUCTURE_NAME_ITEM =
‘BSEG‘ IS_KEYINFO = KEYINFO * IS_PRINT
= * IS_REPREP_ID = * I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = * IMPORTING * E_EXIT_CAUSED_BY_CALLER
= * ES_EXIT_CAUSED_BY_USER = TABLES T_OUTTAB_HEADER
= ITAB_H[] T_OUTTAB_ITEM = ITAB_D[] EXCEPTIONS
PROGRAM_ERROR = 1 OTHERS = 2 .
IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM.
"alv_report_HIERSEQ
*&--------------------------------------------------------------------*
*& Form alv_report_hierseq_1
*&--------------------------------------------------------------------*
FORM ALV_REPORT_HIERSEQ_1 TABLES ITAB_H
ITAB_D USING VALUE(PROGRAM_NAME)
VALUE(ITAB_NAME_H)
VALUE(ITAB_NAME_D) VALUE(ITAB_TXT_H)
VALUE(ITAB_TXT_D)
VALUE(PROGRAM_USCOMM) VALUE(PROGRAM_STATUS)
VALUE(CHKBOX)
VALUE(COLOR) VALUE(ZEBRA)
VALUE(START_COLUMN)
VALUE(START_LINE) VALUE(KEYINFO). DATA :
P_TAB_H TYPE SLIS_TABNAME , P_TAB_D TYPE SLIS_TABNAME . CLEAR
PIS_VARIANT. PIS_VARIANT-REPORT = SY-CPROG. PIS_VARIANT-REPORT = PROGRAM_NAME.
PIS_VARIANT-USERNAME = SY-UNAME. PIS_LAYOUT-COLWIDTH_OPTIMIZE = ‘X‘.
PIS_LAYOUT-F2CODE = ‘PICK‘. PIS_LAYOUT-ITEM_TEXT = ITAB_TXT_D.
PIS_LAYOUT-HEADER_TEXT = ITAB_TXT_H. IF CHKBOX = ‘X‘.
PIS_LAYOUT-BOX_FIELDNAME = ‘CHKBOX‘. ELSE. CLEAR PIS_LAYOUT-BOX_FIELDNAME.
ENDIF. IF COLOR = ‘X‘. PIS_LAYOUT-INFO_FIELDNAME = ‘COLOR‘. ELSE. CLEAR
PIS_LAYOUT-INFO_FIELDNAME . ENDIF. IF ZEBRA = ‘X‘. PIS_LAYOUT-ZEBRA = ‘X‘.
ELSE. CLEAR PIS_LAYOUT-ZEBRA . ENDIF. P_TAB_H = ITAB_NAME_H. P_TAB_D =
ITAB_NAME_D. CALL FUNCTION ‘REUSE_ALV_HIERSEQ_LIST_DISPLAY‘ EXPORTING
I_CALLBACK_PROGRAM = PROGRAM_NAME I_CALLBACK_PF_STATUS_SET =
PROGRAM_STATUS I_CALLBACK_USER_COMMAND = PROGRAM_USCOMM IS_LAYOUT
= PIS_LAYOUT IT_FIELDCAT = PGT_FIELDCAT[]
I_SAVE = ‘X‘ I_TABNAME_HEADER = P_TAB_H
I_TABNAME_ITEM = P_TAB_D IS_KEYINFO = KEYINFO
TABLES T_OUTTAB_HEADER = ITAB_H[] T_OUTTAB_ITEM =
ITAB_D[] EXCEPTIONS PROGRAM_ERROR = 1 OTHERS
= 2. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER
SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM.
"alv_report_HIERSEQ_1
*&---------------------------------------------------------------------*
*& Form UPADTE_ALV_FIELD_INFO
*&---------------------------------------------------------------------* *
Select ststus H .Hide * K .Key * D .小數點顯示位數*
M .SUM SET * L .OUTPUT LEN <-
COLWIDTH_OPTIMIZE 要取消* N .Hide all * J .(R)ight
(L)eft (C)ent * Z .leading zero * NS.write no-sign
* NZ.write no-zero * NC.no convext *
CFL/CFM/CFS.Change field desc. * S1.sort ASCENDING <- 要和
M 共用* S2.sort DESCENDING <- 要和 M 共用* S3.sort
ASCENDING <- 要和 M 共用(分頁) * S4.sort DESCENDING <- 要和
M 共用(分頁) * Ex : PERFORM UPADTE_ALV_FIELD_INFO USING ‘LIFNR‘ ‘X‘ ‘K‘.
*----------------------------------------------------------------------*FORM
UPADTE_ALV_FIELD_INFO USING FIELD_NAME SET_VALUE STSTUS. * DATA:
T_TMP TYPE SLIS_FIELDCAT_ALV, * T_TMP2 TYPE SLIS_SORTINFO_ALV, *
L_TEXT(1), * P_TABIX like sy-tabix. * ** field info. * DEFINE UP_FIELD.
* CLEAR: T_TMP, T_TMP2. * READ TABLE &1 INTO T_TMP WITH KEY FIELDNAME
= &2. * P_TABIX = sy-tabix. ** DELETE &1 INDEX SY-TABIX. * * IF
&4 = ‘H‘. * T_TMP-NO_OUT = &3. " 隱藏欄位, 但是可以讓使用者手動加入*
MODIFY &1 FROM T_TMP. * ELSEIF &4 = ‘K‘. * T_TMP-KEY = &3.
" KEY SET * MODIFY &1 FROM T_TMP . * ELSEIF &4 = ‘M‘. *
T_TMP-DO_SUM = &3. " SUM SET * MODIFY &1 FROM T_TMP . *
ELSEIF &4 = ‘L‘. * T_TMP-OUTPUTLEN = &3. " OUTPUT LEN *
MODIFY &1 FROM T_TMP. * ELSEIF &4 = ‘N‘. * T_TMP-TECH =
&3. " 完整隱藏* MODIFY &1 FROM T_TMP. * ELSEIF &4 = ‘CFL‘ OR
&4 = ‘CFM‘ OR &4 = ‘CFS‘. * " 改變說明L/M/S * T_TMP-SELTEXT_S =
T_TMP-SELTEXT_M = T_TMP-SELTEXT_L * = T_TMP-REPTEXT_DDIC =
&3. * T_TMP-DDICTXT = &4+2(1). * MODIFY &1 FROM T_TMP. *
ELSEIF &4 = ‘J‘. " (R)ight (L)eft (C)ent * T_TMP-JUST = ‘C‘.
"&3. * MODIFY &1 FROM T_TMP. * ELSEIF &4 = ‘Z‘. "
leading zero * T_TMP-LZERO = &3. * MODIFY &1 FROM T_TMP. *
ELSEIF &4 = ‘NS‘. " write no-sign * T_TMP-NO_SIGN = &3. *
MODIFY &1 FROM T_TMP. * ELSEIF &4 = ‘NZ‘. " write no-zero *
T_TMP-NO_ZERO = &3. * MODIFY &1 FROM T_TMP. * ELSEIF &4
= ‘NC‘. " no convext * T_TMP-NO_CONVEXT = &3. * MODIFY
&1 FROM T_TMP. * * ELSEIF &4 = ‘S1‘ OR &4 = ‘S2‘ OR *
&4 = ‘S3‘ OR &4 = ‘S4‘. * MODIFY &1 FROM T_TMP. * *
T_TMP2-FIELDNAME = &2. * * T_TMP2-SUBTOT = &3. * * IF &4 =
‘S1‘ OR &4 = ‘S3‘. * T_TMP2-UP = &3. * ENDIF. * * IF
&4 = ‘S3‘ OR &4 = ‘S4‘. * T_TMP2-GROUP = ‘* ‘. * ENDIF. * *
APPEND T_TMP2 TO I_SORT. * ENDIF. * END-OF-DEFINITION. * * UP_FIELD
PGT_FIELDCAT FIELD_NAME SET_VALUE STSTUS. DATA: T_TMP TYPE SLIS_FIELDCAT_ALV,
T_TMP2 TYPE SLIS_SORTINFO_ALV, L_TEXT(1). * field info. DEFINE
UP_FIELD. CLEAR: T_TMP, T_TMP2. READ TABLE &1 INTO T_TMP WITH KEY
FIELDNAME = &2. DELETE &1 INDEX SY-TABIX. IF &4 = ‘H‘.
T_TMP-NO_OUT = &3. " 隱藏欄位, 但是可以讓使用者手動加入 APPEND T_TMP TO &1.
ELSEIF &4 = ‘D‘. T_TMP-DECIMALS_OUT = &3. " 小數點顯示位數 APPEND
T_TMP TO &1. ELSEIF &4 = ‘K‘. T_TMP-KEY = &3. " KEY
SET APPEND T_TMP TO &1. ELSEIF &4 = ‘M‘. T_TMP-DO_SUM =
&3. " SUM SET APPEND T_TMP TO &1. ELSEIF &4 = ‘L‘.
T_TMP-OUTPUTLEN = &3. " OUTPUT LEN APPEND T_TMP TO &1. ELSEIF
&4 = ‘N‘. T_TMP-TECH = &3. " 完整隱藏 APPEND T_TMP TO
&1. ELSEIF &4 = ‘CFL‘ OR &4 = ‘CFM‘ OR &4 = ‘CFS‘. "
改變說明L/M/S T_TMP-SELTEXT_S = T_TMP-SELTEXT_M = T_TMP-SELTEXT_L =
T_TMP-REPTEXT_DDIC = &3. T_TMP-DDICTXT = &4+2(1). APPEND T_TMP
TO &1. ELSEIF &4 = ‘J‘. " (R)ight (L)eft (C)ent
T_TMP-JUST = ‘C‘. "&3. APPEND T_TMP TO &1. ELSEIF &4 = ‘Z‘.
" leading zero T_TMP-LZERO = &3. APPEND T_TMP TO &1.
ELSEIF &4 = ‘NS‘. " write no-sign T_TMP-NO_SIGN = &3.
APPEND T_TMP TO &1. ELSEIF &4 = ‘NZ‘. " write no-zero
T_TMP-NO_ZERO = &3. APPEND T_TMP TO &1. ELSEIF &4 = ‘NC‘.
" no convext T_TMP-NO_CONVEXT = &3. APPEND T_TMP TO &1.
ELSEIF &4 = ‘S1‘ OR &4 = ‘S2‘ OR &4 = ‘S3‘ OR &4 = ‘S4‘.
APPEND T_TMP TO &1. T_TMP2-FIELDNAME = &2. T_TMP2-SUBTOT =
&3. IF &4 = ‘S1‘ OR &4 = ‘S3‘. T_TMP2-UP = &3.
ENDIF. IF &4 = ‘S3‘ OR &4 = ‘S4‘. T_TMP2-GROUP = ‘* ‘.
ENDIF. APPEND T_TMP2 TO I_SORT. ENDIF. END-OF-DEFINITION. UP_FIELD
PGT_FIELDCAT FIELD_NAME SET_VALUE STSTUS. ENDFORM. "
UPADTE_ALV_FIELD_INFO
*&---------------------------------------------------------------------*
*& Form UPADTE_ALV_FIELD_INFO_2
*&---------------------------------------------------------------------* *
Select ststus H .Hide * K .Key * M .SUM SET *
D .小數點顯示位數* L .OUTPUT LEN <-
COLWIDTH_OPTIMIZE 要取消* N .Hide all * J .(R)ight
(L)eft (C)ent * Z .leading zero * NS.write no-sign
* NZ.write no-zero * NC.no convext *
CFL/CFM/CFS.Change field desc. * TEXT 欄位文字用L/M/S哪一種*
COLOR : Column 顏色* S1.sort ASCENDING <- 要和 M 共用*
S2.sort DESCENDING <- 要和 M 共用* S3.sort ASCENDING
<- 要和 M 共用(分頁) * S4.sort DESCENDING <- 要和 M 共用(分頁) *
Ex : PERFORM UPADTE_ALV_FIELD_INFO USING ‘LIFNR‘ ‘X‘ ‘K‘.
*----------------------------------------------------------------------*FORM
UPADTE_ALV_FIELD_INFO_2 TABLES P_FIELDCAT STRUCTURE SLIS_ALV_CATG USING
FIELD_NAME SET_VALUE STATUS. DATA: T_TMP TYPE SLIS_FIELDCAT_ALV,
T_TMP2 TYPE SLIS_SORTINFO_ALV, L_TEXT(1), P_TABIX LIKE
SY-TABIX. ** field info. CLEAR: T_TMP, T_TMP2. READ TABLE P_FIELDCAT INTO
T_TMP WITH KEY FIELDNAME = FIELD_NAME. CHECK SY-SUBRC EQ 0. P_TABIX =
SY-TABIX. * DELETE &1 INDEX SY-TABIX. * UP_FIELD 1:PGT_FIELDCAT
2:FIELD_NAME 3:SET_VALUE 4:STSTUS. IF STATUS = ‘H‘. T_TMP-NO_OUT =
SET_VALUE. " 隱藏欄位, 但是可以讓使用者手動加入 MODIFY P_FIELDCAT FROM T_TMP. ELSEIF
STATUS = ‘D‘. T_TMP-DECIMALS_OUT = SET_VALUE. " 小數點顯示位數 MODIFY
P_FIELDCAT FROM T_TMP . ELSEIF STATUS = ‘K‘. T_TMP-KEY = SET_VALUE.
" KEY SET MODIFY P_FIELDCAT FROM T_TMP . ELSEIF STATUS = ‘TEXT‘.
T_TMP-DDICTXT = SET_VALUE. " KEY SET MODIFY P_FIELDCAT FROM T_TMP
. ELSEIF STATUS = ‘COLOR‘. T_TMP-EMPHASIZE = SET_VALUE. " KEY SET
MODIFY P_FIELDCAT FROM T_TMP . ELSEIF STATUS = ‘M‘. T_TMP-DO_SUM =
SET_VALUE. " SUM SET MODIFY P_FIELDCAT FROM T_TMP . ELSEIF STATUS =
‘L‘. T_TMP-OUTPUTLEN = SET_VALUE. " OUTPUT LEN MODIFY P_FIELDCAT FROM
T_TMP. ELSEIF STATUS = ‘N‘. T_TMP-TECH = SET_VALUE. " 完整隱藏 MODIFY
P_FIELDCAT FROM T_TMP. ELSEIF STATUS = ‘CFL‘ OR STATUS = ‘CFM‘ OR STATUS =
‘CFS‘. " 改變說明L/M/S T_TMP-SELTEXT_S = T_TMP-SELTEXT_M = T_TMP-SELTEXT_L
= T_TMP-REPTEXT_DDIC = SET_VALUE. T_TMP-DDICTXT = STATUS+2(1). MODIFY
P_FIELDCAT FROM T_TMP. ELSEIF STATUS = ‘J‘. " (R)ight (L)eft (C)ent
T_TMP-JUST = SET_VALUE. "set_value. MODIFY P_FIELDCAT FROM T_TMP. ELSEIF
STATUS = ‘Z‘. " leading zero T_TMP-LZERO = SET_VALUE. MODIFY
P_FIELDCAT FROM T_TMP. ELSEIF STATUS = ‘NS‘. " write no-sign
T_TMP-NO_SIGN = SET_VALUE. MODIFY P_FIELDCAT FROM T_TMP. ELSEIF STATUS =
‘NZ‘. " write no-zero T_TMP-NO_ZERO = SET_VALUE. MODIFY P_FIELDCAT
FROM T_TMP. ELSEIF STATUS = ‘NC‘. " no convext T_TMP-NO_CONVEXT =
SET_VALUE. MODIFY P_FIELDCAT FROM T_TMP. ELSEIF STATUS = ‘S1‘ OR STATUS =
‘S2‘ OR STATUS = ‘S3‘ OR STATUS = ‘S4‘. MODIFY P_FIELDCAT FROM T_TMP.
T_TMP2-FIELDNAME = FIELD_NAME. T_TMP2-SUBTOT = SET_VALUE. IF STATUS = ‘S1‘
OR STATUS = ‘S3‘. T_TMP2-UP = SET_VALUE. ENDIF. IF STATUS = ‘S3‘ OR
STATUS = ‘S4‘. T_TMP2-GROUP = ‘* ‘. ENDIF. APPEND T_TMP2 TO I_SORT.
ENDIF. ** ** UP_FIELD PGT_FIELDCAT FIELD_NAME SET_VALUE STSTUS. ** ENDFORM.
" UPADTE_ALV_FIELD_INFO
*&---------------------------------------------------------------------*
*& Form UPADTE_ALV_FIELD_INFO
*&---------------------------------------------------------------------* *
Select ststus H .Hide * K .Key * D .小數點顯示位數*
M .SUM SET * L .OUTPUT LEN <-
COLWIDTH_OPTIMIZE 要取消* N .Hide all * J .(R)ight
(L)eft (C)ent * Z .leading zero * NS.write no-sign
* NZ.write no-zero * NC.no convext *
CFL/CFM/CFS.Change field desc. * S1.sort ASCENDING <- 要和
M 共用* S2.sort DESCENDING <- 要和 M 共用* S3.sort
ASCENDING <- 要和 M 共用(分頁) * S4.sort DESCENDING <- 要和
M 共用(分頁) * Ex : PERFORM UPADTE_ALV_FIELD_INFO USING ‘LIFNR‘ ‘X‘ ‘K‘.
*----------------------------------------------------------------------*FORM
UPADTE_ALV_FIELD_INFO_3 USING FIELD_NAME
SET_VALUE STSTUS
TAB_NAME. DATA: T_TMP TYPE SLIS_FIELDCAT_ALV, T_TMP2 TYPE
SLIS_SORTINFO_ALV, P_TABIX LIKE SY-TABIX, L_TEXT(1). CLEAR:
T_TMP, T_TMP2. IF TAB_NAME <> SPACE. READ TABLE PGT_FIELDCAT INTO
T_TMP WITH KEY FIELDNAME = FIELD_NAME TABNAME =
TAB_NAME. ELSE. READ TABLE PGT_FIELDCAT INTO T_TMP WITH KEY
FIELDNAME = FIELD_NAME. ENDIF. P_TABIX = SY-TABIX. * field info. CASE STSTUS.
WHEN ‘H‘. T_TMP-NO_OUT = SET_VALUE. " 隱藏欄位, 但是可以讓使用者手動加入 WHEN
‘D‘. T_TMP-DECIMALS_OUT = SET_VALUE. " 小數點顯示位數 WHEN ‘K‘.
T_TMP-KEY = SET_VALUE. " KEY SET WHEN ‘M‘. T_TMP-DO_SUM =
SET_VALUE. " SUM SET WHEN ‘L‘. T_TMP-OUTPUTLEN = SET_VALUE. "
OUTPUT LEN WHEN ‘N‘. T_TMP-TECH = SET_VALUE. " 完整隱藏 WHEN ‘Z‘.
T_TMP-NO_ZERO = SET_VALUE. " 不顯示 0 WHEN ‘J‘.
" (R)ight (L)eft (C)ent T_TMP-JUST = ‘C‘. "SET_VALUE. WHEN ‘Z‘.
" leading zero T_TMP-LZERO = SET_VALUE. WHEN ‘NS‘. " write
no-sign T_TMP-NO_SIGN = SET_VALUE. WHEN ‘NZ‘. " write no-zero
T_TMP-NO_ZERO = SET_VALUE. WHEN ‘NC‘. " no convext
T_TMP-NO_CONVEXT = SET_VALUE. WHEN ‘CFL‘ OR ‘CFM‘ OR ‘CFS‘. " 改變說明L/M/S
T_TMP-SELTEXT_S = T_TMP-SELTEXT_M = T_TMP-SELTEXT_L =
T_TMP-REPTEXT_DDIC = SET_VALUE. T_TMP-DDICTXT = STSTUS+2(1). WHEN ‘S1‘
OR ‘S2‘ OR ‘S3‘ OR ‘S4‘. T_TMP2-FIELDNAME = FIELD_NAME. T_TMP2-SUBTOT
= SET_VALUE. IF STSTUS = ‘S1‘ OR STSTUS = ‘S3‘. T_TMP2-UP =
SET_VALUE. ENDIF. IF STSTUS = ‘S3‘ OR STSTUS = ‘S4‘.
T_TMP2-GROUP = ‘* ‘. ENDIF. APPEND T_TMP2 TO I_SORT. ENDCASE. MODIFY
PGT_FIELDCAT INDEX P_TABIX FROM T_TMP. ENDFORM. "
UPADTE_ALV_FIELD_INFO_3
*&---------------------------------------------------------------------*
*& Form get_alv_field
*&---------------------------------------------------------------------*
FORM GET_ALV_FIELD USING PROGRAM_NAME STRUCTURE_NAME.
SUBMIT BALVBUFDEL AND RETURN. " reset alv data MESSAGE S888(SABAPDOCU) WITH ‘
‘. CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE‘ EXPORTING
I_PROGRAM_NAME = PROGRAM_NAME I_STRUCTURE_NAME =
STRUCTURE_NAME I_CLIENT_NEVER_DISPLAY = ‘X‘ CHANGING CT_FIELDCAT
= PGT_FIELDCAT[] EXCEPTIONS INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2 OTHERS = 3. ENDFORM.
" get_alv_field
*&---------------------------------------------------------------------*
*& Form UPADTE_ALV_FIELD_INFO_sort
*&---------------------------------------------------------------------* *
SPOS : 排列順序* FIELD_NAME : 欄位名稱* SUB_FLAG : 小計資料* UP_FLAG :
ASCENDING/DESCENDING * GROUP : 分頁符號 (UL/*)
*----------------------------------------------------------------------*FORM
UPADTE_ALV_FIELD_INFO_SORT USING SPOS FIELD_NAME SUB_FLAG UP_FLAG
GROUP. DATA: T_TMP2 TYPE SLIS_SORTINFO_ALV. * field info. CLEAR T_TMP2.
SPOS = SPOS + 1 . T_TMP2-SPOS = SPOS. T_TMP2-FIELDNAME = FIELD_NAME.
T_TMP2-SUBTOT = SUB_FLAG. T_TMP2-UP = UP_FLAG. T_TMP2-GROUP =
GROUP. APPEND T_TMP2 TO I_SORT. ENDFORM. "
UPADTE_ALV_FIELD_INFO_sort
*&---------------------------------------------------------------------*
*& Form MD_CONVERT_MATERIAL_UNIT
*&---------------------------------------------------------------------*
FORM MD_CONVERT_MATERIAL_UNIT USING MATNR BASE_UNIT COV_UNIT QTY
COV_QTY. CALL FUNCTION ‘MD_CONVERT_MATERIAL_UNIT‘ EXPORTING
I_MATNR = MATNR I_IN_ME = BASE_UNIT I_OUT_ME
= COV_UNIT I_MENGE = QTY IMPORTING E_MENGE
= COV_QTY EXCEPTIONS ERROR_IN_APPLICATION = 1 ERROR
= 2 OTHERS = 3. ENDFORM. "
MD_CONVERT_MATERIAL_UNIT
*&---------------------------------------------------------------------*
*& Form get_alv_field_hierseq
*&---------------------------------------------------------------------*
FORM GET_ALV_FIELD_HIERSEQ USING PROGRAM_NAME
STRUCTURE_NAME ITAB_NAME. SUBMIT BALVBUFDEL AND
RETURN. " reset alv data MESSAGE S888(SABAPDOCU) WITH ‘ ‘. CALL FUNCTION
‘REUSE_ALV_FIELDCATALOG_MERGE‘ EXPORTING I_PROGRAM_NAME =
PROGRAM_NAME I_STRUCTURE_NAME = STRUCTURE_NAME
I_INTERNAL_TABNAME = ITAB_NAME I_CLIENT_NEVER_DISPLAY = ‘X‘ CHANGING
CT_FIELDCAT = PGT_FIELDCAT[] EXCEPTIONS
INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS
= 3. ENDFORM. " get_alv_field_hierseq
*&---------------------------------------------------------------------*
*& Form f4_for_variant
*&---------------------------------------------------------------------* *
text
*----------------------------------------------------------------------* *
-->P_REPORT text * -->P_VARI text
*----------------------------------------------------------------------*FORM
F4_FOR_VARIANT USING P_REPORT P_VARI. * DATA: LT_VARIANT LIKE DISVARIANT,
LT_CANCEL(1). LT_VARIANT-REPORT = P_REPORT. * CALL FUNCTION
‘REUSE_ALV_VARIANT_F4‘ * EXPORTING * is_variant = lt_variant *
i_save = ‘A‘ * IMPORTING * e_exit = lt_cancel *
es_variant = lt_variant * EXCEPTIONS * NOT_FOUND
= 1 * PROGRAM_ERROR = 2 * OTHERS = 3
CALL FUNCTION ‘REUSE_ALV_VARIANT_F4‘ EXPORTING IS_VARIANT =
LT_VARIANT * I_TABNAME_HEADER = * I_TABNAME_ITEM = *
IT_DEFAULT_FIELDCAT = * I_SAVE = ‘ ‘ *
I_DISPLAY_VIA_GRID = ‘ ‘ IMPORTING E_EXIT =
LT_CANCEL ES_VARIANT = LT_VARIANT EXCEPTIONS NOT_FOUND
= 1 PROGRAM_ERROR = 2 OTHERS =
3 . 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
SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO *
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. P_VARI =
LT_VARIANT-VARIANT. ENDFORM. "f4_for_variant
*&---------------------------------------------------------------------*
*& Form REPORT_TITLE_DISPLAY
*&---------------------------------------------------------------------* *
text
*----------------------------------------------------------------------*FORM
REPORT_TITLE_DISPLAY USING U_REPID "report id U_BUTXT TYPE
T001-BUTXT "company name U_TITLE TYPE SY-TITLE "report title
U_TCODE TYPE SY-TCODE "Tcode U_SUBTEXT TYPE STRING "sub
description U_PAGNO TYPE SY-PAGNO "page number or ("小計/總計")
U_LINSZ TYPE SY-LINSZ. "line size DATA: LV_REPID TYPE SY-REPID,
LV_LINSZ TYPE SY-LINSZ. DATA: BEGIN OF LV_POS, COMP_NAME TYPE I, "
Compony Name TITLE TYPE I, " Report Title SUBTXT TYPE I,
" Sub text R_SIDE TYPE I, " Right Side CENTER TYPE I,
" Center END OF LV_POS. DATA: BEGIN OF LV_LABEL,"description TCODE(10)
TYPE C, USERNAME(10) TYPE C, COMP_NAME TYPE STRING ,
PROGRAM(10) TYPE C, DATE(10) TYPE C, TIME(10) TYPE C,
PAGENO(10) TYPE C, END OF LV_LABEL. DATA: BEGIN OF LV_LEN,
COMP_NAME TYPE I, " Compony Name TITLE TYPE I, " Report
Title SUBTXT TYPE I, " Sub text END OF LV_LEN. CLEAR: LV_POS,
LV_LEN, LV_LABEL. MOVE U_REPID TO LV_REPID . MOVE U_LINSZ TO LV_LINSZ .
LV_POS-CENTER = LV_LINSZ / 2 . LV_POS-R_SIDE = LV_LINSZ - 23. CLEAR LV_LABEL.
LV_LABEL-PROGRAM = ‘程式代碼 :‘(T01). LV_LABEL-COMP_NAME = U_BUTXT.
LV_LABEL-DATE = ‘執行日期 :‘(T02). LV_LABEL-TIME = ‘執行時間 :‘(T03).
LV_LABEL-PAGENO = ‘頁 次 :‘(T04). LV_LABEL-USERNAME = ‘使 用 者 :‘(T05).
LV_LABEL-TCODE = ‘交易代碼 :‘(T06). * Compony Name Position and Length CONDENSE
LV_LABEL-COMP_NAME. * lv_len-comp_name = STRLEN( lv_label-comp_name ) * 2.
LV_LEN-COMP_NAME = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH(
LV_LABEL-COMP_NAME ). LV_POS-COMP_NAME = LV_POS-CENTER - ( LV_LEN-COMP_NAME / 2
). * Title Position and Length * lv_len-title = STRLEN( u_title ) * 2.
LV_LEN-TITLE = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( U_TITLE ).
LV_POS-TITLE = LV_POS-CENTER - ( LV_LEN-TITLE / 2 ) . * Sub Text Position and
Length * lv_len-subtxt = STRLEN( u_subtext ) * 2. LV_LEN-SUBTXT =
CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( U_SUBTEXT ). LV_POS-SUBTXT =
LV_POS-CENTER - ( LV_LEN-SUBTXT / 2 ) . * First Line WRITE: /
LV_LABEL-PROGRAM, LV_REPID,"程式代碼 AT LV_POS-COMP_NAME(LV_LEN-COMP_NAME)
LV_LABEL-COMP_NAME CENTERED, AT LV_POS-R_SIDE LV_LABEL-DATE,
SY-DATUM. "列印日期* Second Line WRITE: / LV_LABEL-USERNAME, (12)
SY-UNAME,"使用者* AT LV_POS-TITLE(LV_LEN-TITLE) SY_TITLE CENTERED,"程式說明
AT LV_POS-TITLE(LV_LEN-TITLE) U_TITLE CENTERED,"程式說明 AT LV_POS-R_SIDE
LV_LABEL-TIME, SY-UZEIT."列印時間* Third Line IF NOT U_TCODE IS INITIAL. WRITE:
/ LV_LABEL-TCODE, (12) U_TCODE."交易代碼 WRITE: AT
LV_POS-SUBTXT(LV_LEN-SUBTXT) U_SUBTEXT CENTERED. ELSE. WRITE: AT
/LV_POS-SUBTXT(LV_LEN-SUBTXT) U_SUBTEXT CENTERED. ENDIF. WRITE: AT
LV_POS-R_SIDE LV_LABEL-PAGENO NO-GAP, U_PAGNO RIGHT-JUSTIFIED
NO-SIGN. "頁次* ULINE AT /(LV_LINSZ). ENDFORM. "
REPORT_TITLE_DISPLAYABAP alv report,布布扣,bubuko.com
ABAP alv report
原文:http://www.cnblogs.com/rainysblog/p/3573239.html