首页 > 其他 > 详细

ABAP alv report

时间:2014-03-01 00:22:51      阅读:1010      评论:0      收藏:0      [点我收藏+]
*&---------------------------------------------------------------------* *& 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_DISPLAY

ABAP alv report,布布扣,bubuko.com

ABAP alv report

原文:http://www.cnblogs.com/rainysblog/p/3573239.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!