|
[Selection Texts] [Text Symbols]] I005 Separetor I006 Tab I007 Other (Not space) IB02 Table
R Download table contents to PC local file SP_COUNT Display number of entries SP_DIR Directory SP_ELSE Others (except space) SP_LANGU Language SP_ROWS Maximum No. of Hits SP_SEPAR Separator SP_TAB Tab SP_TABLE Table name *=====================================================================* * Allow my poor English, English comments on this program are not good . *=====================================================================* ************************************************************************ *&---------------------------------------------------------------------* * Created on 2007.02.15 by Y.SAITA TOKYO,JAPAN *&---------------------------------------------------------------------*
* You can do anything to this report without my permission. * (modify,fix bugs,sell,republish,etc) * This program is a use-at-your-own-risk-basis-program, * So use at your own risk. ** * In no event will the author be liable for indirect, special, * Incidental, or consequental damages (if any) arising out of * the use of this program. * The person, who implements this program, * have to be sure that such damage does not happen. * I hope you'll find this program useful. * &--------------------------------------------------------------------- * * [Description] * This program downloads table of contents to a Pc file(text). * You can choose any separator (except space) as a delimiter. * You can use 'Dynamic selection' by pressing 'Filter records'. * You can filter fields by pressing 'Filter fields' which calls * the program filter fields(also you can use conversion-exit * by checking [cnv]). * * Download file name will be * client + table name + system date + system time. * * The table must be defined In Abap/4 Dictionary and * the table category must be 'TRANSP'or 'CLUSTER'or 'POOL' or 'VIEW'. * When the table category is a 'VIEW',the view type must be 'D' or 'P'. * Don't forget to implement program 'y_zsaita_430'. * * [Compatibility] * Tested On 4.6C and Enterprise. * * [NOTE1] * You do not need to create a gui status. * * [NOTE2] * If you have Unicode check active in program attributes, * 'Tab' must be defined as * CLASS CL_ABAP_CHAR_UTILITIES DEFINITION LOAD. * DATA C_TAB (1) TYPE C VALUE * CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB. * Otherwise, define * ‘DATA C_TAB (1) TYPE X VALUE '09'.’ * * [NOTE3] * Remember Excel 2003 Limits 256 Columns and 65536 rows. * Some codes are not needed with Excel 2007. * [NOTE4] * You may need to change the Japanese yen mark to backslash. * * [Security Notes] * If you want that only you can run this program, * You can use macro M_AUTH_CHK,M_AUTH_CHK2. * If you don't them,delete them. * *=============================================================* * For more information,see the attached pdf.file *=============================================================* *[Selection Texts] "I 005 Separetor "I 006 Tab "I 007 Others (except space) "I B02 Table *[Text Symbols] "S P_COUNT Display number of entries "S P_DIR Directory "S P_ELSE Other (not space) "S P_LANGU Language "S P_ROWS Maximum No. of Hits "S P_SEPAR Separator "S P_TAB Tab "S P_TABLE Table name REPORT Y_ZSAITA_420 LINE-COUNT 65 LINE-SIZE 1023 NO STANDARD PAGE HEADING. * TABLES: DD02L. ************* * DATA * ************* TYPE-POOLS: RSDS. DATA: D_REF TYPE REF TO DATA, I_ALV_CAT TYPE TABLE OF LVC_S_FCAT, LS_ALV_CAT LIKE LINE OF I_ALV_CAT. DATA: SV_ALV_CAT LIKE LINE OF I_ALV_CAT. *LVC_S_FCAT I_ALV_CAT TYPES TABNAME LIKE DCOBJDEF-NAME . *for dynamic internal table DATA: BEGIN OF ITAB OCCURS 0. INCLUDE STRUCTURE DNTAB. DATA SEL_FLAG(1). " Selected or not DATA SEL_CNV(1). " CNV_EXIT DATA: END OF ITAB. * DATA BEGIN OF NAMETABL OCCURS 30. INCLUDE STRUCTURE DNTAB. DATA SEL_FLAG(1). " Selected or not DATA SEL_CNV(1). " CNV_EXIT DATA END OF NAMETABL.
*for download data DATA : V_DATALINE(5000). DATA : I_DOWN LIKE V_DATALINE OCCURS 100 WITH HEADER LINE. DATA : I_DOWN2 LIKE V_DATALINE OCCURS 100 WITH HEADER LINE. *
DATA: W_SELID TYPE RSDYNSEL-SELID, IT_TABLES TYPE TABLE OF RSDSTABS, IS_TABLES TYPE RSDSTABS, IT_FIELDS TYPE TABLE OF RSDSFIELDS, IT_EXPR TYPE RSDS_TEXPR, IT_RANGES TYPE RSDS_TRANGE, IT_WHERE TYPE RSDS_TWHERE, IS_WHERE TYPE RSDS_WHERE, W_ACTIVE TYPE I. *for header text DATA : W_TEXT_TITLE(1000) TYPE C. DATA : W_TEXT_SEQ(5000) TYPE C. DATA : W_TEXT_FIELDNAME(5000) TYPE C. DATA : W_TEXT_FIELDTEXT(5000) TYPE C.
DATA : W_TEXT(5000) TYPE C. DATA : W_TEXT_BBB(100) TYPE C. * DATA W_ITAB_CNT TYPE I. DATA W_TABIX(4) TYPE C. DATA W_DBCNT LIKE SY-DBCNT. DATA W_DBCNT2 LIKE SY-DBCNT. DATA: W_DD02T_DDTEXT LIKE DD02T-DDTEXT, "table text W_DD02L-TABCLASS LIKE DD02L-TABCLASS, W_DD02L-VIEWCLASS LIKE DD02L-VIEWCLASS. *Tab for having Unicode check active CLASS CL_ABAP_CHAR_UTILITIES DEFINITION LOAD. DATA C_TAB(1) TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB. ********************************************* *Do not delete *Tab for not having Unicode check active * DATA C_TAB(1) TYPE X VALUE '09'. ********************************************* DATA : W_VALUE(20) TYPE C. * DATA W_FIELD(1) TYPE C. DATA W_FIELD_CNT TYPE I. DATA W_SELECTED_FIELD_CNT TYPE I. DATA L_DATAT TYPE C. DATA W_DATE(10) TYPE C. DATA W_TIME(10) TYPE C. DATA W_FILENM2 TYPE STRING. DATA W_SEQ_CNT TYPE I. DATA W_SEQ_CNT2(5) TYPE N. DATA SV_TABLE TYPE TABNAME. DATA W_DIR_CHECK(1) TYPE C. DATA W_SEPARATOR(1) TYPE C. *FOR FM 'PC_SPLIT_COMPLETE_FILENAME' DATA : W_PCFILE-PATH LIKE PCFILE-PATH, W_COMPLETE_FILENAME LIKE PCFILE-PATH, W_PCNAME(100) TYPE C. DATA: COS_MAXLINE TYPE I VALUE 65536. "Excel 2003 max rows ************* * Marcros * ************* * DATA W_POPUP_ANSWER(1) TYPE C. ********************************************* * Marcro for POPUP_TO_CONFIRM_WITH_MESSAGE * ********************************************* DEFINE M_POPUP_TO_CONFIRM_MESSAGE. * CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE' EXPORTING DEFAULTOPTION = 'Y' DIAGNOSETEXT1 = &1 DIAGNOSETEXT2 = &2 DIAGNOSETEXT3 = &3 TEXTLINE1 = &4 TEXTLINE2 = &5 TITEL = &6 START_COLUMN = 25 START_ROW = 6 CANCEL_DISPLAY = 'X' IMPORTING ANSWER = &7. * END-OF-DEFINITION.
********************************************* * Marcro for POPUP_TO_INFORM * ********************************************* DEFINE M_POPUP_TO_INFORM. CALL FUNCTION 'POPUP_TO_INFORM' EXPORTING TITEL = &5 TXT1 = &1 TXT2 = &2 TXT3 = &3 TXT4 = &4. * END-OF-DEFINITION. * DEFINE M_AUTH_CHK. * IF SY-UNAME = '???'. ELSE. MESSAGE E398(00) WITH 'You do not have authorization'. EXIT. ENDIF. END-OF-DEFINITION. * DEFINE M_AUTH_CHK2. * IF SY-DATUM > '20070401'. MESSAGE E398(00) WITH 'You do not have authorization'. ENDIF. * END-OF-DEFINITION. ******************************** * field-symbols ******************************** FIELD-SYMBOLS : <F_FS1> TYPE TABLE, <F_FS2> TYPE ANY, <F_FS3> TYPE ANY.
*-------------------------------------------------* * Selection Screen,Parameters and Select-Options * *-------------------------------------------------* *Display Number of entries PARAMETERS: P_COUNT AS CHECKBOX . SELECTION-SCREEN SKIP 1. *Table name SELECTION-SCREEN: BEGIN OF BLOCK B02 WITH FRAME TITLE TEXT-B02. PARAMETERS: P_TABLE TYPE TABNAME OBLIGATORY MEMORY ID DTB MATCHCODE OBJECT DD_DBTB_16. *Filter Records SELECTION-SCREEN: BEGIN OF LINE, PUSHBUTTON 33(20) P_SEL USER-COMMAND SEL, COMMENT 55(15) SELCNT, END OF LINE. *Filter FIELD SELECTION-SCREEN: BEGIN OF LINE, PUSHBUTTON 33(20) P_FIELD USER-COMMAND FIELD, COMMENT 55(15) SELFIELD, END OF LINE. SELECTION-SCREEN: END OF BLOCK B02. *Separator tab SELECTION-SCREEN BEGIN OF BLOCK B003 WITH FRAME TITLE TEXT-005. SELECTION-SCREEN BEGIN OF LINE. PARAMETERS P_TAB RADIOBUTTON GROUP G002. "Tab SELECTION-SCREEN COMMENT (20) TEXT-006 FOR FIELD P_TAB. SELECTION-SCREEN END OF LINE. *Separator others(anything but space) SELECTION-SCREEN BEGIN OF LINE. PARAMETERS P_ELSE RADIOBUTTON GROUP G002. SELECTION-SCREEN COMMENT (20) TEXT-007 FOR FIELD P_ELSE. SELECTION-SCREEN POSITION POS_LOW. PARAMETERS P_SEPAR(1) TYPE C. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK B003. *Langueage PARAMETERS: P_LANGU LIKE DOKIL-LANGU DEFAULT SY-LANGU OBLIGATORY. *Maximum No. of Hits PARAMETERS: P_ROWS TYPE I. SELECTION-SCREEN SKIP 1. *Directory PARAMETERS: P_DIR LIKE RLGRAP-FILENAME OBLIGATORY. ********************** *AT SELECTION-SCREEN * ********************** AT SELECTION-SCREEN. * M_AUTH_CHK. * IF SV_TABLE <> P_TABLE. PERFORM SELECT_DD02L. * PERFORM CALL_NAMETAB_GET. "Get table definition ENDIF. * IF P_COUNT = SPACE. IF P_ELSE = 'X'. IF P_SEPAR = ' '. SET CURSOR FIELD 'P_SEPAR'. MESSAGE E398(00) WITH 'Please enter a separator except a space'. ENDIF. ENDIF. ENDIF. * Filter records IF SY-UCOMM = 'SEL'. PERFORM UCOMM_SEL. EXIT. ENDIF. * Filter fields IF SY-UCOMM = 'FIELD'. PERFORM UCOMM_FIELD. EXIT. ENDIF. * **************************** *AT SELECTION-SCREEN OUTPUT* **************************** AT SELECTION-SCREEN OUTPUT. * M_AUTH_CHK.
IF W_ACTIVE IS INITIAL. CLEAR: SELCNT. ELSE. WRITE W_ACTIVE TO SELCNT LEFT-JUSTIFIED. ENDIF. * IF W_FIELD IS INITIAL. CLEAR SELFIELD. ELSE. WRITE W_SELECTED_FIELD_CNT TO SELFIELD LEFT-JUSTIFIED. ENDIF. *----------------------------------------------------------------------* * AT SELECTION-SCREEN ON VALUE-REQUEST *----------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_DIR. * PERFORM FRM_GET_DLPATH. ****************************** *AT USER-COMMAND * ****************************** *AT USER-COMMAND. *
******************** *INITIALIZATION * ******************** INITIALIZATION. * M_AUTH_CHK.
* P_SEL = 'Filter Records'. P_FIELD = 'Filter Fields'. * P_DIR = 'M:\My Documents\temp\'. ""<--backslash?? P_LANGU = 'EN'. * CLEAR SV_TABLE. ********************** *START-OF-SELECTION * ********************** START-OF-SELECTION.
M_AUTH_CHK. * * Check directory exists PERFORM CHECK_FILE. IF W_DIR_CHECK = 'X'. EXIT. ENDIF. * Check SY-BATCH = 'X' OR NOT IF SY-BATCH = 'X'. MESSAGE E398(00) WITH 'This program does not run in background'. ENDIF. * IF P_COUNT = SPACE. PERFORM CONFIRM_MESSAGE_RTN. CHECK W_POPUP_ANSWER = 'J'. ENDIF. * IF P_COUNT = 'X'. PERFORM DETAIL_RTN . EXIT. ENDIF. * DESCRIBE TABLE ITAB LINES W_ITAB_CNT. * PERFORM HEADER_RTN. * PERFORM DETAIL_RTN. CHECK W_DBCNT <> 0. CHECK W_POPUP_ANSWER = 'J'. CHECK P_COUNT = SPACE. CHECK W_POPUP_ANSWER = 'J'. * Download table of contents to a pc file PERFORM CALL_GUI_DOWNLOAD_RTN. * * ******************** *END-OF-SELECTION * ******************** END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form call_NAMETAB_GET *&---------------------------------------------------------------------* * Get table definition *----------------------------------------------------------------------* FORM CALL_NAMETAB_GET . * CALL FUNCTION 'NAMETAB_GET' EXPORTING LANGU = P_LANGU TABNAME = P_TABLE TABLES NAMETAB = ITAB EXCEPTIONS INTERNAL_ERROR = 1 TABLE_HAS_NO_FIELDS = 2 TABLE_NOT_ACTIV = 3 NO_TEXTS_FOUND = 4 OTHERS = 5.
* IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. EXIT. ENDIF. * DESCRIBE TABLE ITAB LINES W_FIELD_CNT. * ENDFORM. *&---------------------------------------------------------------------* *& Form HEADER_RTN *&---------------------------------------------------------------------* * Edit header *----------------------------------------------------------------------* FORM HEADER_RTN . * REFRESH I_DOWN. CLEAR W_TEXT . * In case of all fields are selected IF W_FIELD <> 'X'. LOOP AT ITAB. MOVE-CORRESPONDING ITAB TO NAMETABL. NAMETABL-SEL_FLAG = 'X'. APPEND NAMETABL. ENDLOOP. ENDIF. *Header PERFORM EDIT_HEADER_1. PERFORM EDIT_HEADER_2. * ENDFORM. *&---------------------------------------------------------------------* *& Form DETAIL_RTN *&---------------------------------------------------------------------* * Create internaltable dynamicaly and read data from table *----------------------------------------------------------------------* FORM DETAIL_RTN . * Prepare for building internal table build PERFORM EDIT_DETAIL_1. * Build internal table build CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE EXPORTING IT_FIELDCATALOG = I_ALV_CAT IMPORTING EP_TABLE = D_REF . * ASSIGN D_REF->* TO <F_FS1>. * PERFORM TABLE_SELECT. "read table IF SY-DBCNT = 0. MESSAGE S398(00) WITH 'No records selected with the search criteria'. EXIT. ENDIF. * W_DBCNT = SY-DBCNT. * IF P_COUNT = 'X'. MESSAGE S398(00) WITH 'Number of entries which meet' 'the selection criteria:' W_DBCNT. EXIT. ENDIF. * PERFORM CONFIRM_MESSAGE_RTN_2. CHECK W_POPUP_ANSWER = 'J'. *Excel 2003 rows limit check (65536) W_DBCNT2 = W_DBCNT + 4. * IF W_DBCNT2 >= COS_MAXLINE. PERFORM CONFIRM_MESSAGE_RTN_3. CHECK W_POPUP_ANSWER = 'J'. ENDIF. * IF W_FIELD <> 'X'. W_SELECTED_FIELD_CNT = W_FIELD_CNT . ENDIF. * Excel 2003 Columns limit check (256) IF W_SELECTED_FIELD_CNT > 256. "may not need in the future? PERFORM CONFIRM_MESSAGE_RTN_4. CHECK W_POPUP_ANSWER = 'J'. ENDIF. * Get field PERFORM GET_FIELD. * ENDFORM. *&---------------------------------------------------------------------* *& Form GET_FIELD *&---------------------------------------------------------------------* * Edit each field depending on the field type *----------------------------------------------------------------------* FORM GET_FIELD. * LOOP AT <F_FS1> ASSIGNING <F_FS2>. * CLEAR W_TEXT. DO W_SELECTED_FIELD_CNT TIMES. ASSIGN COMPONENT SY-INDEX OF STRUCTURE <F_FS2> TO <F_FS3>. IF SY-SUBRC <> 0. EXIT. ENDIF. * DESCRIBE FIELD <F_FS3> TYPE L_DATAT. * * Numric IF L_DATAT = 'P'. IF <F_FS3> < 0. PERFORM FM_CLOI_PUT_SIGN_IN_FRONT USING <F_FS3> . W_TEXT_BBB = W_VALUE. ELSE. W_TEXT_BBB = <F_FS3> . ENDIF. ELSE. W_TEXT_BBB = <F_FS3> . ENDIF. * DATE 20060101--> 2006/01/01 IF L_DATAT = 'D'. WRITE <F_FS3> TO W_DATE. W_TEXT_BBB = W_DATE . ENDIF. * TIME 123456 --> 12:34:56 IF L_DATAT = 'T'. WRITE <F_FS3> TO W_TIME. W_TEXT_BBB = W_TIME . ENDIF. * CONDENSE W_TEXT_BBB . * Check conversion exits IF W_TEXT_BBB <> SPACE. PERFORM FM_CONVEXIT. ENDIF. * IF SY-INDEX = 1. CONCATENATE W_TEXT W_TEXT_BBB INTO W_TEXT. CONTINUE. ENDIF. * CONCATENATE W_TEXT W_TEXT_BBB INTO W_TEXT SEPARATED BY W_SEPARATOR. * ENDDO. * CLEAR I_DOWN. APPEND W_TEXT TO I_DOWN . * ENDLOOP. * ENDFORM. *&---------------------------------------------------------------------* *& Form CALL_GUI_DOWNLOAD_RTN *&---------------------------------------------------------------------* * Download table contents *----------------------------------------------------------------------* FORM CALL_GUI_DOWNLOAD_RTN . * * Edit Pc local filename * Download file name will be * client + table name + system date + system time. * CONCATENATE P_DIR SY-MANDT '-' P_TABLE '-' SY-DATUM+4(4) '-' SY-UZEIT+0(4) '.TXT' INTO W_FILENM2. * LOOP AT I_DOWN FROM 1 TO 4. "HEADER 1-4. * I_DOWN2 = I_DOWN. APPEND I_DOWN2. * ENDLOOP. * CLEAR I_DOWN2. APPEND I_DOWN2. * LOOP AT I_DOWN FROM 6. "DETAIL * ADD 1 TO W_SEQ_CNT. IF P_TAB = 'X'. W_SEQ_CNT2 = W_SEQ_CNT. CONCATENATE W_SEQ_CNT2 I_DOWN INTO I_DOWN2 SEPARATED BY C_TAB. ELSE. W_SEQ_CNT2 = W_SEQ_CNT. CONCATENATE W_SEQ_CNT2 I_DOWN INTO I_DOWN2 SEPARATED BY P_SEPAR. ENDIF. APPEND I_DOWN2. ENDLOOP. * PERFORM FM_GUI_DOWNLOAD. * ENDFORM. *&---------------------------------------------------------------------* *& Form CONFIRM_MESSAGE_RTN *&---------------------------------------------------------------------* * Display confirm message *----------------------------------------------------------------------* FORM CONFIRM_MESSAGE_RTN . * DATA :W_TEXT0(300) TYPE C, W_TEXT1(300) TYPE C, W_TEXT2(300) TYPE C, W_TEXT3(300) TYPE C, W_TEXT4(300) TYPE C, W_TEXT5(300) TYPE C. * W_TEXT1+0(30) = 'Download?'. W_TEXT2+0(30) = 'From table'. W_TEXT2+32(70) = P_TABLE. W_TEXT2+105(01) = '-'. W_TEXT2+110(40) = W_DD02T_DDTEXT. CONDENSE W_TEXT2. * IF P_TAB = 'X'. W_TEXT3+0(30) = 'Separator as Tab'. ELSE. W_TEXT3+0(30) = 'Separator as'. W_TEXT3+40(2) = P_SEPAR. ENDIF. CONDENSE W_TEXT3. W_TEXT4+0(30) = 'Continue?'. * M_POPUP_TO_CONFIRM_MESSAGE W_TEXT1 W_TEXT2 W_TEXT3 W_TEXT4 W_TEXT5 'Confirm' W_POPUP_ANSWER. * ENDFORM. *&---------------------------------------------------------------------* *& Form CONFIRM_MESSAGE_RTN_2 *&---------------------------------------------------------------------* * Display confirm pop up message for number of entries *----------------------------------------------------------------------* FORM CONFIRM_MESSAGE_RTN_2 . * DATA :W_TEXT0(300) TYPE C, W_TEXT1(300) TYPE C, W_TEXT2(300) TYPE C, W_TEXT3(300) TYPE C, W_TEXT4(300) TYPE C, W_TEXT5(300) TYPE C. * W_TEXT1+0(30) = 'Number of entries:'. W_TEXT1+32(70) = W_DBCNT. CONDENSE W_TEXT1. * W_TEXT2+0(30) = 'Continue?'. CONDENSE W_TEXT2. * M_POPUP_TO_CONFIRM_MESSAGE W_TEXT1 W_TEXT2 W_TEXT3 W_TEXT4 W_TEXT5 'Confirm' W_POPUP_ANSWER. * ENDFORM. *&---------------------------------------------------------------------* *& Form CONFIRM_MESSAGE_RTN_3 *&---------------------------------------------------------------------* * Excel 2003 rows limit check * Excel can handle only 65536 rows, * Download data has 4 header lines, * so download data must be within 65532. *(In the futrue,these codes will not be needed) *----------------------------------------------------------------------* FORM CONFIRM_MESSAGE_RTN_3. * DATA :W_TEXT0(300) TYPE C, W_TEXT1(300) TYPE C, W_TEXT2(300) TYPE C, W_TEXT3(300) TYPE C, W_TEXT4(300) TYPE C, W_TEXT5(300) TYPE C. * W_TEXT1+0(70) = 'Number of entires is over 65,532'. CONDENSE W_TEXT1. * W_TEXT2+0(80) = 'Excel 2003 cannot handle 65,532 rows!'. CONDENSE W_TEXT2. * M_POPUP_TO_CONFIRM_MESSAGE W_TEXT1 W_TEXT2 W_TEXT3 W_TEXT4 W_TEXT5 'Confirm' W_POPUP_ANSWER. * ENDFORM. *&---------------------------------------------------------------------* *& Form CONFIRM_MESSAGE_RTN_4 *&---------------------------------------------------------------------* * If Number of Selected field is over 256, * Mesaage will be displayed. * (In the futute,these codes will not be needed) *----------------------------------------------------------------------* FORM CONFIRM_MESSAGE_RTN_4. * DATA :W_TEXT0(300) TYPE C, W_TEXT1(300) TYPE C, W_TEXT2(300) TYPE C, W_TEXT3(300) TYPE C, W_TEXT4(300) TYPE C, W_TEXT5(300) TYPE C. * W_TEXT1+0(30) = 'Number of Select field'. W_TEXT1+32(10) = W_FIELD_CNT. * CONDENSE W_TEXT1. * W_TEXT2+0(80) = 'Excel 2003 cannot handle over 256 columns!'. * CONDENSE W_TEXT2. * M_POPUP_TO_CONFIRM_MESSAGE W_TEXT1 W_TEXT2 W_TEXT3 W_TEXT4 W_TEXT5 'Confirm' W_POPUP_ANSWER. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_CLOI_PUT_SIGN_IN_FRONT *&---------------------------------------------------------------------* * Reverse the minus sign using fm cloi_put_sign_in_front' * 12345- ---> -12345 *----------------------------------------------------------------------* FORM FM_CLOI_PUT_SIGN_IN_FRONT USING P_NUM. * CLEAR W_VALUE. * W_VALUE = P_NUM. CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' CHANGING VALUE = W_VALUE . * ENDFORM. *&---------------------------------------------------------------------* *& Form STRUCTURE_COMPONENTS *&---------------------------------------------------------------------* * Calls a program which filters table fields * and check the conversion exits(00123 -> 123 ) *----------------------------------------------------------------------* FORM STRUCTURE_COMPONENTS. * NAMETABL[] = ITAB[]. * FREE MEMORY ID 'XTMP'. EXPORT NAMETABL W_DD02T_DDTEXT TO MEMORY ID 'XTMP'. " Change program ID,otherwise a runtime error will occur! SUBMIT Y_ZSAITA_0430 AND RETURN. IMPORT NAMETABL FROM MEMORY ID 'XTMP'. ITAB[] = NAMETABL[] . * ENDFORM. *&---------------------------------------------------------------------* *& Form SELECT_DD02L *&---------------------------------------------------------------------* * Check table exists from table DD02L *----------------------------------------------------------------------* FORM SELECT_DD02L. * M_AUTH_CHK. * CLEAR : W_DD02T_DDTEXT.
SELECT B~DDTEXT A~TABCLASS A~VIEWCLASS INTO (W_DD02T_DDTEXT, W_DD02L-TABCLASS, W_DD02L-VIEWCLASS) UP TO 1 ROWS FROM DD02L AS A JOIN DD02T AS B ON A~TABNAME = B~TABNAME WHERE A~TABNAME = P_TABLE AND A~AS4LOCAL = 'A' AND A~TABCLASS IN ('TRANSP','CLUSTER','POOL','VIEW') AND B~DDLANGUAGE = P_LANGU. ENDSELECT. * IF SY-SUBRC <> 0. MESSAGE E398(00) WITH 'Table does not exist'. ENDIF. * IF W_DD02L-TABCLASS = 'VIEW'. IF W_DD02L-VIEWCLASS = 'D' OR W_DD02L-VIEWCLASS = 'P'. ELSE. SET CURSOR FIELD 'P_TABLE'. MESSAGE E398(00) WITH 'Data selection is not possible' 'View type must be ''D'' OR ''P'' '. ENDIF. ENDIF. * CLEAR W_TEXT_TITLE. * CONCATENATE SY-MANDT '-' P_TABLE '-' W_DD02T_DDTEXT '-' SY-DATUM '-' SY-UZEIT INTO W_TEXT_TITLE. * SV_TABLE = P_TABLE. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_FREE_SELECTIONS_INIT *&---------------------------------------------------------------------* * Initialize dynamic selection: Declare permitted tables *----------------------------------------------------------------------* FORM FM_FREE_SELECTIONS_INIT. M_AUTH_CHK. * CALL FUNCTION 'FREE_SELECTIONS_INIT' EXPORTING EXPRESSIONS = IT_EXPR IMPORTING SELECTION_ID = W_SELID EXPRESSIONS = IT_EXPR TABLES TABLES_TAB = IT_TABLES EXCEPTIONS OTHERS = 1. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_FREE_SELECTIONS_DIALOG *&---------------------------------------------------------------------* * Dialog for entering dynamic selection conditions *----------------------------------------------------------------------* FORM FM_FREE_SELECTIONS_DIALOG. * Display free selection dialog CALL FUNCTION 'FREE_SELECTIONS_DIALOG' EXPORTING SELECTION_ID = W_SELID TITLE = 'SELECTION' STATUS = 1 AS_WINDOW = 'X' IMPORTING EXPRESSIONS = IT_EXPR FIELD_RANGES = IT_RANGES NUMBER_OF_ACTIVE_FIELDS = W_ACTIVE TABLES FIELDS_TAB = IT_FIELDS EXCEPTIONS OTHERS = 1. ENDFORM. *&---------------------------------------------------------------------* *& Form UCOMM_SEL *&---------------------------------------------------------------------* * Filter record using dynamic selection *----------------------------------------------------------------------* FORM UCOMM_SEL. * REFRESH IT_TABLES. IS_TABLES-PRIM_TAB = P_TABLE. APPEND IS_TABLES TO IT_TABLES. CLEAR: W_SELID. * free selection dialog * Init free selection dialog CHECK W_SELID IS INITIAL. * IF W_SELID IS INITIAL. PERFORM FM_FREE_SELECTIONS_INIT. IF SY-SUBRC = 0. PERFORM FM_FREE_SELECTIONS_DIALOG. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form UCOMM_FIELD *&---------------------------------------------------------------------* * Filter Fields *----------------------------------------------------------------------* FORM UCOMM_FIELD. * CLEAR : W_FIELD,W_SELECTED_FIELD_CNT. * PERFORM STRUCTURE_COMPONENTS.
LOOP AT NAMETABL WHERE SEL_FLAG = 'X'. ADD 1 TO W_SELECTED_FIELD_CNT. ENDLOOP. IF W_SELECTED_FIELD_CNT > 0. W_FIELD = 'X'. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form EDIT_HEADER_1 *&---------------------------------------------------------------------* * Edit header2-4 *----------------------------------------------------------------------* FORM EDIT_HEADER_1. * LOOP AT ITAB. * Selected Fields only IF W_FIELD = 'X'. READ TABLE NAMETABL WITH KEY FIELDNAME = ITAB-FIELDNAME. IF SY-SUBRC <> 0. CONTINUE. ENDIF. IF NAMETABL-SEL_FLAG <> 'X'. CONTINUE. ENDIF. ENDIF. * W_TABIX = SY-TABIX . * Separator IF P_TAB = 'X'. W_SEPARATOR = C_TAB. ELSE. W_SEPARATOR = P_SEPAR. ENDIF. * Second line - seqential number counting from client(mandt) CONCATENATE W_TEXT_SEQ W_TABIX INTO W_TEXT_SEQ SEPARATED BY W_SEPARATOR. * Third line - field name CONCATENATE W_TEXT_FIELDNAME ITAB-FIELDNAME INTO W_TEXT_FIELDNAME SEPARATED BY W_SEPARATOR. * Fouth line - field text CONCATENATE W_TEXT_FIELDTEXT ITAB-FIELDTEXT INTO W_TEXT_FIELDTEXT SEPARATED BY W_SEPARATOR. * ENDLOOP. * ENDFORM. *&---------------------------------------------------------------------* *& Form EDIT_HEADER_2 *&---------------------------------------------------------------------* * Append to internal table for download *----------------------------------------------------------------------* FORM EDIT_HEADER_2. *First line CLEAR I_DOWN. CONDENSE W_TEXT_TITLE NO-GAPS. APPEND W_TEXT_TITLE TO I_DOWN . *Second line CLEAR I_DOWN. CONDENSE W_TEXT_SEQ NO-GAPS. APPEND W_TEXT_SEQ TO I_DOWN . *Third line CLEAR I_DOWN. CONDENSE W_TEXT_FIELDNAME NO-GAPS. APPEND W_TEXT_FIELDNAME TO I_DOWN . *Fourth line CLEAR I_DOWN. CONDENSE W_TEXT_FIELDTEXT. " NO-GAPS. APPEND W_TEXT_FIELDTEXT TO I_DOWN . * CLEAR I_DOWN. APPEND I_DOWN . ENDFORM. *&---------------------------------------------------------------------* *& Form EDIT_DETAIL_1 *&---------------------------------------------------------------------* * Prepare for building internal table build *----------------------------------------------------------------------* FORM EDIT_DETAIL_1. *Prepare for building internal table build LOOP AT ITAB . IF W_FIELD = 'X'. READ TABLE NAMETABL WITH KEY FIELDNAME = ITAB-FIELDNAME. IF SY-SUBRC <> 0. CONTINUE. ENDIF. IF NAMETABL-SEL_FLAG <> 'X'. CONTINUE. ENDIF. ENDIF. * CLEAR LS_ALV_CAT. LS_ALV_CAT-FIELDNAME = ITAB-FIELDNAME. LS_ALV_CAT-REF_TABLE = P_TABLE. LS_ALV_CAT-REF_FIELD = ITAB-FIELDNAME. LS_ALV_CAT-CONVEXIT = ITAB-CONVEXIT. APPEND LS_ALV_CAT TO I_ALV_CAT. * ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form TABLE_SELECT *&---------------------------------------------------------------------* * Select Table with or without parameters *----------------------------------------------------------------------* FORM TABLE_SELECT. * Without parameters IF W_ACTIVE = 0. SELECT * FROM (P_TABLE) INTO CORRESPONDING FIELDS OF TABLE <F_FS1> UP TO P_ROWS ROWS. EXIT. ENDIF. * Selection with parameters PERFORM FM_FREE_SELECTIONS_RANGE_2. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_FREE_SELECTIONS_RANGE_2 *&---------------------------------------------------------------------* * Dynamic Selections: Convert Format from RSDS_TRANGE ==> RSDS_TWHERE *----------------------------------------------------------------------* FORM FM_FREE_SELECTIONS_RANGE_2. * CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_WHERE' EXPORTING FIELD_RANGES = IT_RANGES IMPORTING WHERE_CLAUSES = IT_WHERE. * CHECK SY-SUBRC = 0. * READ TABLE IT_WHERE INTO IS_WHERE WITH KEY TABLENAME = P_TABLE. * CHECK SY-SUBRC = 0. * SELECT * FROM (P_TABLE) INTO CORRESPONDING FIELDS OF TABLE <F_FS1> UP TO P_ROWS ROWS WHERE (IS_WHERE-WHERE_TAB). * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_GUI_DOWNLOAD *&---------------------------------------------------------------------* * Download using fm 'GUI_DOWNLOAD' *----------------------------------------------------------------------* FORM FM_GUI_DOWNLOAD. * CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING * BIN_FILESIZE = FILENAME = W_FILENM2 FILETYPE = 'ASC' * APPEND = ' ' WRITE_FIELD_SEPARATOR = ' ' * HEADER = '00' TRUNC_TRAILING_BLANKS = 'X' * WRITE_LF = 'X' * COL_SELECT = ' ' * COL_SELECT_MASK = ' ' * DAT_MODE = ' ' * CONFIRM_OVERWRITE = ' ' * NO_AUTH_CHECK = ' ' " CODEPAGE = '8000' " "<--for japanese unicode,delete if this you don't need * IGNORE_CERR = ABAP_TRUE * REPLACEMENT = '#' * WRITE_BOM = ' ' * TRUNC_TRAILING_BLANKS_EOL = 'X' * IMPORTING * FILELENGTH = TABLES * DATA_TAB = i_down DATA_TAB = I_DOWN2 * DATA_TAB = I_DATA2 * FIELDNAMES = EXCEPTIONS FILE_WRITE_ERROR = 1 NO_BATCH = 2 GUI_REFUSE_FILETRANSFER = 3 INVALID_TYPE = 4 NO_AUTHORITY = 5 UNKNOWN_ERROR = 6 HEADER_NOT_ALLOWED = 7 SEPARATOR_NOT_ALLOWED = 8 FILESIZE_NOT_ALLOWED = 9 HEADER_TOO_LONG = 10 DP_ERROR_CREATE = 11 DP_ERROR_SEND = 12 DP_ERROR_WRITE = 13 UNKNOWN_DP_ERROR = 14 ACCESS_DENIED = 15 DP_OUT_OF_MEMORY = 16 DISK_FULL = 17 DP_TIMEOUT = 18 FILE_NOT_FOUND = 19 DATAPROVIDER_EXCEPTION = 20 CONTROL_FLUSH_ERROR = 21 OTHERS = 22. * DATA W_TEXT100(200) TYPE C. IF SY-SUBRC <> 0. MESSAGE E398(00) WITH W_FILENM2 'Download error'. ELSE. MESSAGE S398(00) WITH 'Data downloaded successfully to ' W_FILENM2 'Number of records is' W_DBCNT. ENDIF. ENDFORM. * *&---------------------------------------------------------------------* *& Form FM_CONVEXIT *&---------------------------------------------------------------------* * Conversion exit *----------------------------------------------------------------------* FORM FM_CONVEXIT. * READ TABLE I_ALV_CAT INTO SV_ALV_CAT INDEX SY-INDEX. LOOP AT NAMETABL WHERE FIELDNAME = SV_ALV_CAT-FIELDNAME. EXIT. ENDLOOP. CHECK SY-SUBRC = 0. CHECK NAMETABL-SEL_CNV = 'X'. * CHECK SV_ALV_CAT-CONVEXIT <> SPACE. PERFORM CNV_EXIT_OUTOUT USING SV_ALV_CAT-CONVEXIT W_TEXT_BBB . * ENDFORM. *&---------------------------------------------------------------------* *& Form CNV_EXIT_OUTOUT *&---------------------------------------------------------------------* * Conversion exit2 *----------------------------------------------------------------------* FORM CNV_EXIT_OUTOUT USING P_CONVEXIT P_TEXT_BBB. * DATA SV_CONEXIT(16) TYPE C. CONCATENATE '==' P_CONVEXIT INTO SV_CONEXIT. WRITE P_TEXT_BBB TO P_TEXT_BBB USING EDIT MASK SV_CONEXIT. ENDFORM. * *&---------------------------------------------------------------------* *& Form FRM_GET_DLPATH *&---------------------------------------------------------------------* * Call fm 'TMP_GUI_BROWSE_FOR_FOLDER' *----------------------------------------------------------------------* FORM FRM_GET_DLPATH. * CALL FUNCTION 'TMP_GUI_BROWSE_FOR_FOLDER' EXPORTING WINDOW_TITLE = 'Select folder' INITIAL_FOLDER = 'C:\TEMP\' "<--backslash?? IMPORTING SELECTED_FOLDER = P_DIR EXCEPTIONS CNTL_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. * CONCATENATE P_DIR '\' INTO P_DIR. "<--backslash?? * ENDFORM. *&---------------------------------------------------------------------* *& Form CHECK_FILE *&---------------------------------------------------------------------* * Check directory exist? *----------------------------------------------------------------------* FORM CHECK_FILE. * CHECK P_COUNT = SPACE. * CLEAR W_DIR_CHECK. * PERFORM FM_PC_SPLIT_COMPLETE_FILENAME USING P_DIR. CHECK SY-SUBRC = 0. IF W_PCNAME <> SPACE. MESSAGE S398(00) WITH 'Enter directory only'. W_DIR_CHECK = 'X'. EXIT. ENDIF. * DATA L_RETURN(1) TYPE C. CALL FUNCTION 'WS_QUERY' EXPORTING FILENAME = P_DIR QUERY = 'DE' "'DE' FILENAME IMPORTING RETURN = L_RETURN "RETURN = '0' No '1' Yes EXCEPTIONS INV_QUERY = 1 NO_BATCH = 2 FRONTEND_ERROR = 3 OTHERS = 4. * CASE SY-SUBRC. WHEN '0'. IF L_RETURN = '0'. MESSAGE S398(00) WITH 'Directory does not exist on the PC'. W_DIR_CHECK = 'X'. EXIT. ENDIF. WHEN OTHERS. ENDCASE. ENDFORM. *&---------------------------------------------------------------------* *& Form FM_PC_SPLIT_COMPLETE_FILENAME *&---------------------------------------------------------------------* * Divides a complete PC file name into disk drive, path, file and exten *----------------------------------------------------------------------* FORM FM_PC_SPLIT_COMPLETE_FILENAME USING P_FILENM. * W_COMPLETE_FILENAME = P_FILENM. * CALL FUNCTION 'PC_SPLIT_COMPLETE_FILENAME' EXPORTING COMPLETE_FILENAME = W_COMPLETE_FILENAME * CHECK_DOS_FORMAT = IMPORTING * DRIVE = * EXTENSION = NAME = W_PCNAME * NAME_WITH_EXT = PATH = W_PCFILE-PATH EXCEPTIONS INVALID_DRIVE = 1 INVALID_EXTENSION = 2 INVALID_NAME = 3 INVALID_PATH = 4 OTHERS = 5. * 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. *end of program *=============================================* second program. [Text Symbols]] I001 Select fields for table I002 Chk I003 Seq I004 Field Name I005 Text I010 Cnv I011 Cnversion exits
R Filter table Fields *=====================================================================* * Allow my poor English, English comments on this program are not good . *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* * Created on 2007.02.15 by Y.SAITA TOKYO,JAPAN *&---------------------------------------------------------------------* * You can do anything to this program without my permission. * (modify, fix bugs ,sell,republish,etc) * This program is a use-at-your-own-risk-basis-program, * So use at your own risk. * * In no event will the author be liable for indirect, special, * Incidental, or consequental damages (if any) arising out of * the use of this program. The person, who implements this program, * have to be sure that such damage does not happen. *----------------------------------------------------------------------* * [Description] * This program is called from another program and * filters fields by checking field name and check conversion exit. * * [NOTE] * Create a gui status (LIST) with * PICK(F2) Jump to the trn 'SE11' * COPY Copy selected fields and returns to the calling program * RETURN Returns to the callingr program * (Does not Copy selected fields) * * ALLF Select all fields * DELA Deselect all fields
* ALLF_CNV Select all conversion exitsf(CNV) * DELA_CNV Deselect all conversion exitsf(CNV) * * [Security Notes] * If you want that only you can run this program, * You can use macro M_AUTH_CHK,M_AUTH_CHK2. * If you don't them,delete them. * * Any feedback will be welcome. E-mail is
This e-mail address is being protected from spam bots, you need JavaScript enabled to view it
*=============================================================* * For more information,see the attached PDF.file *=============================================================* * REPORT Y_ZSAITA_0430 NO STANDARD PAGE HEADING LINE-SIZE 170 LINE-COUNT 300. * DATA BEGIN OF NAMETABL OCCURS 30. INCLUDE STRUCTURE DNTAB. DATA SEL_FLAG(1). "Selected? DATA SEL_CNV(1). "CNV_EXIT DATA END OF NAMETABL. * DATA W_CURSORFIELD(60) TYPE C. DATA W_SELECTED_FIELD_CNT TYPE I. DATA W_TEXT1(200) TYPE C. DATA W_DD02T_DDTEXT LIKE DD02T-DDTEXT. DATA W_POPUP_ANSWER(1) TYPE C. DATA W_CHKBOX(1) TYPE C. DATA W_CHKBOX_2(1) TYPE C. "CNV_EXIT DATA W_N TYPE I. DATA W_NAMETABL_INDEX LIKE SY-INDEX. * DEFINE M_AUTH_CHK. * IF SY-UNAME = '????'. ELSE. MESSAGE E398(00) WITH 'You do not have authorization'. EXIT. ENDIF. END-OF-DEFINITION. * DEFINE M_AUTH_CHK2. * IF SY-DATUM > '20070401'. MESSAGE E398(00) WITH 'You do not have authorization'. ENDIF. * END-OF-DEFINITION. * ******************** *INITIALIZATION * ******************** INITIALIZATION. * M_AUTH_CHK. IMPORT NAMETABL W_DD02T_DDTEXT FROM MEMORY ID 'XTMP'. ******************** *START-OF-SELECTION* ******************** START-OF-SELECTION. * M_AUTH_CHK. SET PF-STATUS 'LIST'. "Don't forget to create this gui status. * PERFORM FM_NAMETABL_WRITE. * END-OF-SELECTION. * FREE MEMORY ID 'XTMP'. ********************** *TOP-OF-PAGE * ********************** * TOP-OF-PAGE. M_AUTH_CHK. WRITE : /1 TEXT-001. FORMAT COLOR 3. WRITE : 28 NAMETABL-TABNAME. FORMAT COLOR OFF. HIDE NAMETABL-TABNAME. WRITE : 80 W_DD02T_DDTEXT. ULINE. WRITE: /1 TEXT-002. "CHECK WRITE: 6 TEXT-003. "Sequential number WRITE: 12 TEXT-004. "Field Name WRITE: 44 TEXT-005. "Text * WRITE: /90 TEXT-010. "CHECK-Cnv WRITE: 95 TEXT-011. "Cnversion exits * ULINE. * SKIP. * ****************************** *AT USER-COMMAND * ****************************** AT USER-COMMAND. * CASE SY-UCOMM. WHEN 'ENTR'. PERFORM FM_UCOMM_ENTR. WHEN 'COPY'. PERFORM FM_UCOMM_COPY. WHEN 'RETN'. LEAVE. WHEN 'ALLF'. PERFORM FM_UCOMM_ALLF. WHEN 'DELA'. PERFORM FM_UCOMM_DELA. WHEN 'ALLF_CNV'. PERFORM FM_UCOMM_ALLF_CNV. WHEN 'DELA_CNV'. PERFORM FM_UCOMM_DELA_CNV. ENDCASE. ****************************** *AT LINE-SELECTION * ****************************** AT LINE-SELECTION. * M_AUTH_CHK.
GET CURSOR FIELD W_CURSORFIELD. * IF W_CURSORFIELD <> 'NAMETABL-TABNAME'. SET CURSOR LINE 1 OFFSET 27. MESSAGE S398(00) WITH 'Please position the cursor on a table name'. EXIT. ENDIF. * Jump to the trx 'se11' PERFORM FM_RS_DD_DEF_SHOW. * CLEAR NAMETABL-TABNAME. *&---------------------------------------------------------------------* *& Form FM_UCOMM_ENTR *&---------------------------------------------------------------------* * ENTER *----------------------------------------------------------------------* FORM FM_UCOMM_ENTR. * DO. READ LINE SY-INDEX. IF SY-SUBRC <> 0. EXIT. ENDIF. CHECK SY-INDEX > 5. MODIFY LINE SY-INDEX. ENDDO. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_UCOMM_COPY *&---------------------------------------------------------------------* * Copy the fields *----------------------------------------------------------------------* FORM FM_UCOMM_COPY. M_AUTH_CHK. * LOOP AT NAMETABL. * PERFORM READ_LINE. "read lists * ENDLOOP. * CLEAR W_SELECTED_FIELD_CNT. LOOP AT NAMETABL WHERE SEL_FLAG = 'X'. ADD 1 TO W_SELECTED_FIELD_CNT. ENDLOOP. * CLEAR W_TEXT1. W_TEXT1+0(30) = 'Number of Selected field is'. W_TEXT1+32(6) = W_SELECTED_FIELD_CNT. CONDENSE W_TEXT1. * PERFORM POPUP_TO_CONFIRM USING W_TEXT1 'Returns to the callingr program?' 'Confirm' W_POPUP_ANSWER. * IF W_POPUP_ANSWER <> 'J'. EXIT. ENDIF. * EXPORT NAMETABL TO MEMORY ID 'XTMP'. LEAVE. * ENDFORM. *&---------------------------------------------------------------------* *& Form READ_LINE *&---------------------------------------------------------------------* * Read lines *----------------------------------------------------------------------* FORM READ_LINE. * W_N = SY-TABIX + 6. CLEAR : W_CHKBOX,W_CHKBOX_2. * READ LINE W_N FIELD VALUE NAMETABL-SEL_FLAG INTO W_CHKBOX "CHEKC BOX NAMETABL-SEL_CNV INTO W_CHKBOX_2. "CNV_EXIT CHECK SY-SUBRC = 0. NAMETABL-SEL_FLAG = W_CHKBOX. NAMETABL-SEL_CNV = W_CHKBOX_2. * MODIFY NAMETABL TRANSPORTING SEL_FLAG SEL_CNV . * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_UCOMM_ALLF *&---------------------------------------------------------------------* * Select all for fields *----------------------------------------------------------------------* FORM FM_UCOMM_ALLF. * DO. * READ LINE SY-INDEX. IF SY-SUBRC NE 0. EXIT. ENDIF. CHECK SY-INDEX > 6. SY-LISEL(1) = 'X'. MODIFY LINE SY-INDEX. * ENDDO. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_UCOMM_DELA *&---------------------------------------------------------------------* * Deselect all for fields *----------------------------------------------------------------------* FORM FM_UCOMM_DELA. * DO. * READ LINE SY-INDEX. IF SY-SUBRC <> 0. EXIT. ENDIF. CHECK SY-INDEX > 6. SY-LISEL(1) = ' '. MODIFY LINE SY-INDEX. * ENDDO. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_UCOMM_ALLF_CNV *&---------------------------------------------------------------------* * Select all for conversion exits *----------------------------------------------------------------------* FORM FM_UCOMM_ALLF_CNV. * DO. * READ LINE SY-INDEX. IF SY-SUBRC NE 0. EXIT. ENDIF. CHECK SY-INDEX > 6. W_NAMETABL_INDEX = SY-INDEX - 6. READ TABLE NAMETABL INDEX W_NAMETABL_INDEX. CHECK NAMETABL-CONVEXIT <> SPACE. SY-LISEL+89(1) = 'X'. MODIFY LINE SY-INDEX. * ENDDO. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_UCOMM_DELA_CNV *&---------------------------------------------------------------------* * Deselect all for conversion exits *----------------------------------------------------------------------* FORM FM_UCOMM_DELA_CNV. * DO. * READ LINE SY-INDEX. IF SY-SUBRC <> 0. EXIT. ENDIF. CHECK SY-INDEX > 6. W_NAMETABL_INDEX = SY-INDEX - 6. READ TABLE NAMETABL INDEX W_NAMETABL_INDEX. CHECK NAMETABL-CONVEXIT <> SPACE. * SY-LISEL+89(1) = ' '. MODIFY LINE SY-INDEX. * ENDDO. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_NAMETABL_WRITE *&---------------------------------------------------------------------* * Display table field and conversion exit *----------------------------------------------------------------------* FORM FM_NAMETABL_WRITE. * M_AUTH_CHK. * READ TABLE NAMETABL INDEX 1. * LOOP AT NAMETABL. WRITE: / NAMETABL-SEL_FLAG INPUT ON AS CHECKBOX, 6 NAMETABL-POSITION, 12 NAMETABL-FIELDNAME, 44 NAMETABL-FIELDTEXT+0(40). * IF NAMETABL-CONVEXIT <> SPACE. WRITE: 90 NAMETABL-SEL_CNV INPUT ON AS CHECKBOX, 95 NAMETABL-CONVEXIT. ENDIF. * HIDE: NAMETABL. * ENDLOOP. * ENDFORM. **************************************************** * Call 'POPUP_TO_CONFIRM_STEP' **************************************************** FORM POPUP_TO_CONFIRM USING TEXT_A TEXT_B TEXT_C ANSWER. * CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' EXPORTING DEFAULTOPTION = 'Y' TEXTLINE1 = TEXT_A TEXTLINE2 = TEXT_B TITEL = TEXT_C IMPORTING ANSWER = ANSWER EXCEPTIONS OTHERS = 1. * ENDFORM. *&---------------------------------------------------------------------* *& Form FM_RS_DD_DEF_SHOW *&---------------------------------------------------------------------* * CALL FM 'RS_DD_DEF_SHOW' jump to the trx 'SE11' *----------------------------------------------------------------------* FORM FM_RS_DD_DEF_SHOW. M_AUTH_CHK. * CALL FUNCTION 'RS_DD_DEF_SHOW' EXPORTING OBJNAME = NAMETABL-TABNAME. * ENDFORM. *END-OF-PROGRAM*
|