Reference: Title: Author: Date: Version: SAP Version: PROC032.DOC (Word 7.0a) Common Programming Procedures Richard Harper November '99 5.0 30F...40F Introduction. This document details the procedures available within a series of include files called YRBINC, YREPINC, YBDCINC and YGRAPH. They are common utilities for Reporting utilities, BDC utilities and Graphing utilities respectively. These routines are written so that the maintenance aspect of using them within any program is minimal. Parameters are passed to and from the routines using arguments to the procedure call. This eliminates the need to know the internal structure of the various routines providing ‘Black Box’ programming. The following pages of this document detail one routine per page. Table Of Contents 1. ABOUT THIS DOCUMENT. ...................................................................................................... 21 1.1. 1.2. PROCEDURE FORMAT. ............................................................................................................. 21 RUNNING THE MACRO.............................................................................................................. 23 2. USING THE ROUTINES. ........................................................................................................... 24 3. DEPENDANCIES ......................................................................................................................... 28 4. BDC OPERATIONS. ................................................................................................................... 29 4.1. 4.2. 4.3. 4.4. 4.5. 4.6. 4.7. 4.8. 4.9. 4.10. 5. MANDT. ................................................................................................................................ 29 FUNCNAME .......................................................................................................................... 29 BDCMODE. ........................................................................................................................... 29 BDCUPMODE. ...................................................................................................................... 29 CRBATCH. ............................................................................................................................ 29 INHIBITCHK. ........................................................................................................................ 29 DUMPBDC. ........................................................................................................................... 30 DUMPMSG. ........................................................................................................................... 30 GENMAIL. ............................................................................................................................. 30 MAILPROG. .......................................................................................................................... 30 MACROS AND FORMS. ............................................................................................................ 31 5.1. AN EXAMPLE. .......................................................................................................................... 31 6. DRILL DOWN REPORTS. ......................................................................................................... 33 7. ARRAYS. ...................................................................................................................................... 34 7.1. TABLES WITHIN TABLES. ........................................................................................................ 34 7.1.1. Defining An Array. ......................................................................................................... 34 7.1.2. Accessing An Array. ....................................................................................................... 34 8. SELECT-OPTIONS. .................................................................................................................... 36 9. AUTHORISATION CHECKS. ................................................................................................... 37 10. SUB-TOTALS. .......................................................................................................................... 38 11. REAL-TIME DISPLAYS......................................................................................................... 39 11.1. PUSHING KEYS IN ABAP. ........................................................................................................ 39 Page 1 12. INFORMATION SOURCES. .................................................................................................. 40 13. ADDRANGE, ADDDISCRETE, ADDCONSEC - MACROS ............................................. 41 13.1. LOCATION. .............................................................................................................................. 41 13.2. PURPOSE.................................................................................................................................. 41 13.3. ENTRY. .................................................................................................................................... 41 13.3.1. Item To Add. ............................................................................................................... 41 13.3.2. Range Table to add to. ................................................................................................ 41 13.3.3. Item High, Item Low. ................................................................................................. 41 13.4. EXIT. ....................................................................................................................................... 41 13.5. CALLED BY. ............................................................................................................................ 41 13.6. CALLS...................................................................................................................................... 41 13.7. TABLES.................................................................................................................................... 41 13.8. SYSTEM VARIABLES. ............................................................................................................... 41 13.9. DESCRIPTION. .......................................................................................................................... 41 13.10. EXAMPLES. .......................................................................................................................... 41 13.11. SOURCE. .............................................................................................................................. 42 13.12. SEE ALSO. ........................................................................................................................... 42 14. BEGIN_OF_BLOCK, END_OF_BLOCK - MACROS ........................................................ 43 14.1. LOCATION. .............................................................................................................................. 43 14.2. PURPOSE.................................................................................................................................. 43 14.3. ENTRY ..................................................................................................................................... 43 14.3.1. Begin_Of_Block - Block name and Frame title. ......................................................... 43 14.3.2. End_Of_Block - Block name .................................................................................... 43 14.4. EXIT ........................................................................................................................................ 43 14.5. CALLED BY ............................................................................................................................. 43 14.6. CALLS...................................................................................................................................... 43 14.7. TABLES.................................................................................................................................... 43 14.8. SYSTEM VARIABLES. ............................................................................................................... 43 14.9. DESCRIPTION. .......................................................................................................................... 43 14.10. EXAMPLES. .......................................................................................................................... 43 14.11. SOURCE. .............................................................................................................................. 43 14.12. SEE ALSO. ........................................................................................................................... 45 15. BLANKLINE - MACRO ......................................................................................................... 46 15.1. 15.2. 15.3. 15.4. 15.5. 15.6. 15.7. 15.8. 15.9. 15.10. 15.11. 15.12. 16. LOCATION. .............................................................................................................................. 46 PURPOSE.................................................................................................................................. 46 ENTRY. .................................................................................................................................... 46 EXIT. ....................................................................................................................................... 46 CALLED BY. ............................................................................................................................ 46 CALLS...................................................................................................................................... 46 TABLES.................................................................................................................................... 46 SYSTEM VARIABLES. ............................................................................................................... 46 DESCRIPTION. .......................................................................................................................... 46 EXAMPLES. .......................................................................................................................... 46 SOURCECODE. ..................................................................................................................... 46 SEE ALSO. ........................................................................................................................... 46 CHECKLEFT, CHECKRIGHT - MACRO ........................................................................... 47 16.1. LOCATION. .............................................................................................................................. 47 16.2. PURPOSE.................................................................................................................................. 47 16.3. ENTRY. .................................................................................................................................... 47 16.3.1. Position. ...................................................................................................................... 47 16.3.2. Title Length. ................................................................................................................ 47 16.3.3. Title ............................................................................................................................. 47 16.3.4. Parameter ................................................................................................................... 47 16.4. EXIT. ....................................................................................................................................... 47 Page 2 16.5. 16.6. 16.7. 16.8. 16.9. 16.10. 16.11. 16.12. 17. CALLED BY. ............................................................................................................................ 47 CALLS...................................................................................................................................... 47 TABLES.................................................................................................................................... 47 SYSTEM VARIABLES. ............................................................................................................... 47 DESCRIPTION. .......................................................................................................................... 47 EXAMPLES. .......................................................................................................................... 47 SOURCECODE. ..................................................................................................................... 48 SEE ALSO. ........................................................................................................................... 48 RADIOLEFT, RADIORIGHT - MACRO ............................................................................. 49 17.1. LOCATION. .............................................................................................................................. 49 17.2. PURPOSE.................................................................................................................................. 49 17.3. ENTRY. .................................................................................................................................... 49 17.3.1. Position. ...................................................................................................................... 49 17.3.2. Title Length. ................................................................................................................ 49 17.3.3. Title ............................................................................................................................. 49 17.3.4. Parameter ................................................................................................................... 49 17.3.5. Group. ......................................................................................................................... 49 17.4. EXIT. ....................................................................................................................................... 49 17.5. CALLED BY. ............................................................................................................................ 49 17.6. CALLS...................................................................................................................................... 49 17.7. TABLES.................................................................................................................................... 49 17.8. SYSTEM VARIABLES. ............................................................................................................... 49 17.9. DESCRIPTION. .......................................................................................................................... 49 17.10. EXAMPLES. .......................................................................................................................... 49 17.11. SOURCECODE. ..................................................................................................................... 50 17.12. SEE ALSO. ........................................................................................................................... 50 18. COPYBOOK - MACRO .......................................................................................................... 51 18.1. LOCATION. .............................................................................................................................. 51 18.2. PURPOSE.................................................................................................................................. 51 18.3. ENTRY. .................................................................................................................................... 51 18.3.1. Table name to use. ...................................................................................................... 51 18.4. EXIT. ....................................................................................................................................... 51 18.5. CALLED BY. ............................................................................................................................ 51 18.6. CALLS...................................................................................................................................... 51 18.7. TABLES.................................................................................................................................... 51 18.8. SYSTEM VARIABLES. ............................................................................................................... 51 18.9. DESCRIPTION. .......................................................................................................................... 51 18.10. EXAMPLES. .......................................................................................................................... 51 18.11. SOURCECODE. ..................................................................................................................... 51 18.12. SEE ALSO. ........................................................................................................................... 52 19. COPY_STRUCTURE - MACRO............................................................................................ 53 19.1. LOCATION. .............................................................................................................................. 53 19.2. PURPOSE.................................................................................................................................. 53 19.3. ENTRY. .................................................................................................................................... 53 19.3.1. Structure Name to extract from the data dictionary. .................................................. 53 19.3.2. Internal table name to copy strcuture to. .................................................................... 53 19.4. EXIT. ....................................................................................................................................... 53 19.5. CALLED BY. ............................................................................................................................ 53 19.6. CALLS...................................................................................................................................... 53 19.7. TABLES.................................................................................................................................... 53 19.8. SYSTEM VARIABLES. ............................................................................................................... 53 19.9. DESCRIPTION. .......................................................................................................................... 53 19.10. EXAMPLES. .......................................................................................................................... 53 19.11. SOURCECODE. ..................................................................................................................... 53 19.12. SEE ALSO. ........................................................................................................................... 54 Page 3 20. FORMAT_SELECTS - MACRO ............................................................................................ 57 20.1. LOCATION. .............................................................................................................................. 57 20.2. PURPOSE.................................................................................................................................. 57 20.3. ENTRY. .................................................................................................................................... 57 20.3.1. Select Option Tables to use. ........................................................................................ 57 20.4. EXIT. ....................................................................................................................................... 57 20.5. CALLED BY. ............................................................................................................................ 57 20.6. CALLS...................................................................................................................................... 57 20.7. TABLES.................................................................................................................................... 57 20.8. SYSTEM VARIABLES. ............................................................................................................... 57 20.9. DESCRIPTION. .......................................................................................................................... 57 20.10. EXAMPLES. .......................................................................................................................... 57 20.11. SOURCECODE. ..................................................................................................................... 57 20.12. SEE ALSO. ........................................................................................................................... 58 21. INIT_FUNC - MACRO............................................................................................................ 59 21.1. LOCATION. .............................................................................................................................. 59 21.2. PURPOSE.................................................................................................................................. 59 21.3. ENTRY. .................................................................................................................................... 59 21.4. EXIT. ....................................................................................................................................... 59 21.5. CALLED BY. ............................................................................................................................ 59 21.6. CALLS...................................................................................................................................... 59 21.6.1. Functions: ................................................................................................................... 59 21.6.2. Forms: ........................................................................................................................ 59 21.7. TABLES.................................................................................................................................... 59 21.8. SYSTEM VARIABLES. ............................................................................................................... 59 21.9. DESCRIPTION. .......................................................................................................................... 59 21.10. EXAMPLES. .......................................................................................................................... 60 21.11. SOURCECODE. ..................................................................................................................... 60 21.12. SEE ALSO. ........................................................................................................................... 62 22. PSUB - MACRO ....................................................................................................................... 63 22.1. LOCATION. .............................................................................................................................. 63 22.2. PURPOSE.................................................................................................................................. 63 22.3. ENTRY. .................................................................................................................................... 63 22.3.1. Select Option Tables to use......................................................................................... 63 22.3.2. Description of data held in select options table.......................................................... 63 22.4. EXIT. ....................................................................................................................................... 63 22.5. CALLED BY. ............................................................................................................................ 63 22.6. CALLS...................................................................................................................................... 63 22.7. TABLES.................................................................................................................................... 63 22.8. SYSTEM VARIABLES. ............................................................................................................... 63 22.9. DESCRIPTION. .......................................................................................................................... 63 22.10. EXAMPLES. .......................................................................................................................... 63 22.11. SOURCECODE. ..................................................................................................................... 64 22.12. SEE ALSO. ........................................................................................................................... 65 23. WRITETABLE - MACRO ...................................................................................................... 66 23.1. LOCATION. .............................................................................................................................. 66 23.2. PURPOSE.................................................................................................................................. 66 23.3. ENTRY. .................................................................................................................................... 66 23.3.1. Table to use ................................................................................................................. 66 23.3.2. Field name of column to put text in.. .......................................................................... 66 23.4. EXIT. ....................................................................................................................................... 66 23.5. CALLED BY. ............................................................................................................................ 66 23.6. CALLS...................................................................................................................................... 66 23.7. TABLES.................................................................................................................................... 66 23.8. SYSTEM VARIABLES. ............................................................................................................... 66 Page 4 23.9. DESCRIPTION. .......................................................................................................................... 66 23.10. EXAMPLES. .......................................................................................................................... 66 23.11. SOURCECODE. ..................................................................................................................... 66 23.12. SEE ALSO. ........................................................................................................................... 67 24. ZAP - MACRO ......................................................................................................................... 68 24.1. LOCATION. .............................................................................................................................. 68 24.2. PURPOSE.................................................................................................................................. 68 24.3. ENTRY. .................................................................................................................................... 68 24.3.1. Table to clear .............................................................................................................. 68 24.4. EXIT. ....................................................................................................................................... 68 24.5. CALLED BY. ............................................................................................................................ 68 24.6. CALLS...................................................................................................................................... 68 24.7. TABLES.................................................................................................................................... 68 24.8. SYSTEM VARIABLES. ............................................................................................................... 68 24.9. DESCRIPTION. .......................................................................................................................... 68 24.10. EXAMPLES. .......................................................................................................................... 68 24.11. SOURCECODE. ..................................................................................................................... 68 24.12. SEE ALSO. ........................................................................................................................... 69 25. ALLHDRS ................................................................................................................................. 70 25.1. 25.2. 25.3. 25.4. 25.5. 25.6. 25.7. 25.8. 25.9. 25.10. 25.11. 25.12. 26. LOCATION. .............................................................................................................................. 70 PURPOSE.................................................................................................................................. 70 ENTRY. .................................................................................................................................... 70 EXIT. ....................................................................................................................................... 70 CALLED BY. ............................................................................................................................ 70 CALLS...................................................................................................................................... 70 TABLES.................................................................................................................................... 70 SYSTEM VARIABLES. ............................................................................................................... 70 DESCRIPTION. .......................................................................................................................... 70 EXAMPLES. .......................................................................................................................... 70 SOURCECODE. ..................................................................................................................... 70 SEE ALSO. ........................................................................................................................... 71 ASCCHAR ................................................................................................................................ 72 26.1. LOCATION. .............................................................................................................................. 72 26.2. PURPOSE.................................................................................................................................. 72 26.3. ENTRY. .................................................................................................................................... 72 26.3.1. Character to return Ascii code for .............................................................................. 72 26.4. EXIT. ....................................................................................................................................... 72 26.5. CALLED BY. ............................................................................................................................ 72 26.6. CALLS...................................................................................................................................... 72 26.7. TABLES.................................................................................................................................... 72 26.8. SYSTEM VARIABLES. ............................................................................................................... 72 26.9. DESCRIPTION. .......................................................................................................................... 72 26.10. EXAMPLES. .......................................................................................................................... 72 26.11. SOURCECODE. ..................................................................................................................... 72 26.12. SEE ALSO. ........................................................................................................................... 73 27. BUILDREPORT ....................................................................................................................... 74 27.1. LOCATION. .............................................................................................................................. 74 27.2. PURPOSE.................................................................................................................................. 74 27.3. ENTRY. .................................................................................................................................... 74 27.3.1. Data-field name. ......................................................................................................... 74 27.3.2. Data field title. ............................................................................................................ 74 27.3.3. Data field length. ........................................................................................................ 74 27.3.4. FormatType. 'Unit' or 'Currency' or Format mask. ................................................... 74 27.3.5. Format field. ............................................................................................................... 78 27.4. EXIT. ....................................................................................................................................... 79 Page 5 27.5. 27.6. 27.7. 27.8. 27.9. 27.10. 27.11. 27.12. 28. CALLED BY. ............................................................................................................................ 79 CALLS...................................................................................................................................... 79 TABLES.................................................................................................................................... 79 SYSTEM VARIABLES. ............................................................................................................... 79 DESCRIPTION. .......................................................................................................................... 79 EXAMPLES. .......................................................................................................................... 80 SOURCECODE. ..................................................................................................................... 80 SEE ALSO. ........................................................................................................................... 82 CENTREREPORT ................................................................................................................... 83 28.1. LOCATION. .............................................................................................................................. 83 28.2. PURPOSE.................................................................................................................................. 83 28.3. ENTRY. .................................................................................................................................... 83 28.3.1. True or False .............................................................................................................. 83 28.4. EXIT. ....................................................................................................................................... 83 28.5. CALLED BY. ............................................................................................................................ 83 28.6. CALLS...................................................................................................................................... 83 28.7. TABLES.................................................................................................................................... 83 28.8. SYSTEM VARIABLES. ............................................................................................................... 83 28.9. DESCRIPTION. .......................................................................................................................... 83 28.10. EXAMPLES. .......................................................................................................................... 83 28.11. SOURCECODE. ..................................................................................................................... 83 28.12. SEE ALSO. ........................................................................................................................... 84 29. CHECKBOX ............................................................................................................................. 85 29.1. LOCATION. .............................................................................................................................. 85 29.2. PURPOSE.................................................................................................................................. 85 29.3. ENTRY. .................................................................................................................................... 85 29.3.1. Data-field table. .......................................................................................................... 85 29.3.2. Data field title. ............................................................................................................ 85 29.3.3. Data field length. ........................................................................................................ 85 29.4. EXIT. ....................................................................................................................................... 85 29.5. CALLED BY. ............................................................................................................................ 85 29.6. CALLS...................................................................................................................................... 85 29.7. TABLES.................................................................................................................................... 85 29.8. SYSTEM VARIABLES. ............................................................................................................... 85 29.9. DESCRIPTION. .......................................................................................................................... 86 29.10. EXAMPLES. .......................................................................................................................... 86 29.11. SOURCECODE. ..................................................................................................................... 86 29.12. SEE ALSO. ........................................................................................................................... 87 30. CHECKBREAKS ..................................................................................................................... 88 30.1. 30.2. 30.3. 30.4. 30.5. 30.6. 30.7. 30.8. 30.9. 30.10. 30.11. 30.12. 31. LOCATION. .............................................................................................................................. 88 PURPOSE.................................................................................................................................. 88 ENTRY. .................................................................................................................................... 88 EXIT. ....................................................................................................................................... 88 CALLED BY. ............................................................................................................................ 88 CALLS...................................................................................................................................... 88 TABLES.................................................................................................................................... 88 SYSTEM VARIABLES. ............................................................................................................... 88 DESCRIPTION. .......................................................................................................................... 88 EXAMPLES. .......................................................................................................................... 88 SOURCECODE. ..................................................................................................................... 88 SEE ALSO. ........................................................................................................................... 90 CHECK_DOMAIN_VALUES ................................................................................................ 91 31.1. LOCATION. .............................................................................................................................. 91 31.2. PURPOSE.................................................................................................................................. 91 31.3. ENTRY. .................................................................................................................................... 91 Page 6 31.3.1. Domain Name To Check ............................................................................................. 91 31.3.2. Value To Check ........................................................................................................... 91 31.4. EXIT. ....................................................................................................................................... 91 31.5. CALLED BY. ............................................................................................................................ 91 31.6. CALLS...................................................................................................................................... 91 31.7. TABLES.................................................................................................................................... 91 31.8. SYSTEM VARIABLES. ............................................................................................................... 91 31.9. DESCRIPTION. .......................................................................................................................... 91 31.10. EXAMPLES. .......................................................................................................................... 91 31.11. SOURCECODE. ..................................................................................................................... 91 31.12. SEE ALSO. ........................................................................................................................... 92 32. COLUMN_COLOUR .............................................................................................................. 93 32.1. LOCATION. .............................................................................................................................. 93 32.2. PURPOSE.................................................................................................................................. 93 32.3. ENTRY. .................................................................................................................................... 93 32.3.1. Column width .............................................................................................................. 93 32.3.2. Colour to set ............................................................................................................... 93 32.3.3. Value to write.............................................................................................................. 93 32.3.4. Actual colour code to use. .......................................................................................... 93 32.4. EXIT. ....................................................................................................................................... 93 32.5. CALLED BY. ............................................................................................................................ 93 32.6. CALLS...................................................................................................................................... 93 32.7. TABLES.................................................................................................................................... 93 32.8. SYSTEM VARIABLES. ............................................................................................................... 93 32.9. DESCRIPTION. .......................................................................................................................... 93 32.10. EXAMPLES. .......................................................................................................................... 93 32.11. SOURCECODE. ..................................................................................................................... 94 32.12. SEE ALSO. ........................................................................................................................... 94 33. DUMP_TABLE......................................................................................................................... 95 33.1. LOCATION. .............................................................................................................................. 95 33.2. PURPOSE.................................................................................................................................. 95 33.3. ENTRY. .................................................................................................................................... 95 33.3.1. None ............................................................................................................................ 95 33.3.2. Tables: Unstructured table for dump .................................................................. 95 33.4. EXIT. ....................................................................................................................................... 95 33.4.1. None ............................................................................................................................ 95 33.5. CALLED BY. ............................................................................................................................ 95 33.6. CALLS...................................................................................................................................... 95 33.7. TABLES.................................................................................................................................... 95 33.8. SYSTEM VARIABLES. ............................................................................................................... 95 33.9. DESCRIPTION. .......................................................................................................................... 95 33.10. EXAMPLES. .......................................................................................................................... 95 33.11. SOURCECODE. ..................................................................................................................... 96 33.12. SEE ALSO. ........................................................................................................................... 96 33.13. LOCATION. .......................................................................................................................... 97 33.14. PURPOSE.............................................................................................................................. 97 33.15. ENTRY. ................................................................................................................................ 97 33.15.1. Direction to move the first column of the report. ........................................................ 97 33.16. EXIT. ................................................................................................................................... 97 33.17. CALLED BY. ........................................................................................................................ 97 33.18. CALLS.................................................................................................................................. 97 33.19. TABLES................................................................................................................................ 97 33.20. SYSTEM VARIABLES. ........................................................................................................... 97 33.21. DESCRIPTION. ...................................................................................................................... 97 33.22. EXAMPLES. .......................................................................................................................... 97 33.23. SOURCECODE. ..................................................................................................................... 98 33.24. SEE ALSO. ........................................................................................................................... 98 Page 7 34. FORMATKEY .......................................................................................................................... 99 34.1. LOCATION. .............................................................................................................................. 99 34.2. PURPOSE.................................................................................................................................. 99 34.3. ENTRY. .................................................................................................................................... 99 34.3.1. Value to format ........................................................................................................... 99 34.4. EXIT. ....................................................................................................................................... 99 34.4.1. Formatted value .......................................................................................................... 99 34.5. CALLED BY. ............................................................................................................................ 99 34.6. CALLS...................................................................................................................................... 99 34.7. TABLES.................................................................................................................................... 99 34.8. SYSTEM VARIABLES. ............................................................................................................... 99 34.9. DESCRIPTION. .......................................................................................................................... 99 34.10. EXAMPLES. .......................................................................................................................... 99 34.11. SOURCECODE. ..................................................................................................................... 99 34.12. SEE ALSO. ......................................................................................................................... 100 35. FORMATREPORT ................................................................................................................ 101 35.1. 35.2. 35.3. 35.4. 35.5. 35.6. 35.7. 35.8. 35.9. 35.10. 35.11. 35.12. 36. LOCATION. ............................................................................................................................ 101 PURPOSE................................................................................................................................ 101 ENTRY. .................................................................................................................................. 101 EXIT. ..................................................................................................................................... 101 CALLED BY. .......................................................................................................................... 101 CALLS.................................................................................................................................... 101 TABLES.................................................................................................................................. 101 SYSTEM VARIABLES. ............................................................................................................. 101 DESCRIPTION. ........................................................................................................................ 101 EXAMPLES. ........................................................................................................................ 101 SOURCECODE. ................................................................................................................... 101 SEE ALSO. ......................................................................................................................... 103 GETMASK .............................................................................................................................. 104 36.1. LOCATION. ............................................................................................................................ 104 36.2. PURPOSE................................................................................................................................ 104 36.3. ENTRY. .................................................................................................................................. 104 36.3.1. Variable or literal mask ............................................................................................ 104 36.4. EXIT. ..................................................................................................................................... 104 36.4.1. Actual mask to use. ................................................................................................... 104 36.5. CALLED BY. .......................................................................................................................... 104 36.6. CALLS.................................................................................................................................... 104 36.7. TABLES.................................................................................................................................. 104 36.8. SYSTEM VARIABLES. ............................................................................................................. 104 36.9. DESCRIPTION. ........................................................................................................................ 104 36.10. EXAMPLES. ........................................................................................................................ 104 36.11. SOURCECODE. ................................................................................................................... 105 36.12. SEE ALSO. ......................................................................................................................... 105 37. GET_LOCAL_HOST............................................................................................................. 106 37.1. LOCATION. ............................................................................................................................ 106 37.2. PURPOSE................................................................................................................................ 106 37.3. ENTRY. .................................................................................................................................. 106 37.4. EXIT. ..................................................................................................................................... 106 37.4.1. Host Name ................................................................................................................ 106 37.4.2. Server Name ............................................................................................................. 106 37.5. CALLED BY. .......................................................................................................................... 106 37.6. CALLS.................................................................................................................................... 106 37.7. TABLES.................................................................................................................................. 106 37.8. SYSTEM VARIABLES. ............................................................................................................. 106 37.9. DESCRIPTION. ........................................................................................................................ 106 Page 8 37.10. 37.11. 37.12. 38. EXAMPLES. ........................................................................................................................ 106 SOURCECODE. ................................................................................................................... 106 SEE ALSO. ......................................................................................................................... 107 GIVELINE .............................................................................................................................. 108 38.1. LOCATION. ............................................................................................................................ 108 38.2. PURPOSE................................................................................................................................ 108 38.3. ENTRY. .................................................................................................................................. 108 38.3.1. Line Number of required line in text. ........................................................................ 108 38.3.2. Width of column. ....................................................................................................... 108 38.3.3. Text to split ............................................................................................................... 108 38.4. EXIT. ..................................................................................................................................... 108 38.4.1. Line N ....................................................................................................................... 108 38.5. CALLED BY. .......................................................................................................................... 108 38.6. CALLS.................................................................................................................................... 108 38.7. TABLES.................................................................................................................................. 108 38.8. SYSTEM VARIABLES. ............................................................................................................. 108 38.9. DESCRIPTION. ........................................................................................................................ 108 38.10. EXAMPLES. ........................................................................................................................ 108 38.11. SOURCECODE. ................................................................................................................... 109 38.12. SEE ALSO. ......................................................................................................................... 110 39. ICON, SYMBOL OR GRAPHIC ......................................................................................... 111 39.1. LOCATION. ............................................................................................................................ 111 39.2. PURPOSE................................................................................................................................ 111 39.3. ENTRY. .................................................................................................................................. 111 39.3.1. Icon: Icon Name to print ........................................................................................ 111 39.3.2. Symbol: Symbol Name to print ............................................................................... 111 39.3.3. Graphic: Icon/symbol name, name type ................................................................ 111 39.4. EXIT. ..................................................................................................................................... 111 39.4.1. None .......................................................................................................................... 111 39.5. CALLED BY. .......................................................................................................................... 111 39.6. CALLS.................................................................................................................................... 111 39.7. TABLES.................................................................................................................................. 111 39.8. SYSTEM VARIABLES. ............................................................................................................. 111 39.9. DESCRIPTION. ........................................................................................................................ 111 39.10. EXAMPLES. ........................................................................................................................ 112 39.11. SOURCECODE. ................................................................................................................... 112 39.12. SEE ALSO. ......................................................................................................................... 113 40. GROUPHEADER ................................................................................................................... 114 40.1. LOCATION. ............................................................................................................................ 114 40.2. PURPOSE................................................................................................................................ 114 40.3. ENTRY. .................................................................................................................................. 114 40.3.1. Group Header Title................................................................................................... 114 40.3.2. Group Header Value. ............................................................................................... 114 40.4. EXIT. ..................................................................................................................................... 114 40.5. CALLED BY. .......................................................................................................................... 114 40.6. CALLS.................................................................................................................................... 114 40.7. TABLES.................................................................................................................................. 114 40.8. SYSTEM VARIABLES. ............................................................................................................. 114 40.9. DESCRIPTION. ........................................................................................................................ 114 40.10. EXAMPLES. ........................................................................................................................ 115 40.11. SOURCECODE. ................................................................................................................... 115 40.12. SEE ALSO. ......................................................................................................................... 116 41. INITBREAK ........................................................................................................................... 117 41.1. LOCATION. ............................................................................................................................ 117 41.2. PURPOSE................................................................................................................................ 117 Page 9 41.3. ENTRY. .................................................................................................................................. 117 41.3.1. Field to break on....................................................................................................... 117 41.3.2. Title of field. .............................................................................................................. 117 41.4. EXIT. ..................................................................................................................................... 117 41.5. CALLED BY. .......................................................................................................................... 117 41.6. CALLS.................................................................................................................................... 117 41.7. TABLES.................................................................................................................................. 117 41.8. SYSTEM VARIABLES. ............................................................................................................. 117 41.9. DESCRIPTION. ........................................................................................................................ 117 41.10. EXAMPLES. ........................................................................................................................ 117 41.11. SOURCECODE. ................................................................................................................... 117 41.12. SEE ALSO. ......................................................................................................................... 118 42. INIT_GLOBAL ...................................................................................................................... 119 42.1. 42.2. 42.3. 42.4. 42.5. 42.6. 42.7. 42.8. 42.9. 42.10. 42.11. 42.12. 43. LOCATION. ............................................................................................................................ 119 PURPOSE................................................................................................................................ 119 ENTRY. .................................................................................................................................. 119 EXIT. ..................................................................................................................................... 119 CALLED BY. .......................................................................................................................... 119 CALLS.................................................................................................................................... 119 TABLES.................................................................................................................................. 119 SYSTEM VARIABLES. ............................................................................................................. 119 DESCRIPTION. ........................................................................................................................ 119 EXAMPLES. ........................................................................................................................ 119 SOURCECODE. ................................................................................................................... 119 SEE ALSO. ......................................................................................................................... 121 IS_SERVICE_ACTIVE ......................................................................................................... 122 43.1. LOCATION. ............................................................................................................................ 122 43.2. PURPOSE................................................................................................................................ 122 43.3. ENTRY. .................................................................................................................................. 122 43.3.1. Service Name to Check ............................................................................................. 122 43.4. EXIT. ..................................................................................................................................... 122 43.4.1. True - Service Active ................................................................................................ 122 43.4.2. False - Service not available .................................................................................... 122 43.5. CALLED BY. .......................................................................................................................... 122 43.6. CALLS.................................................................................................................................... 122 43.7. TABLES.................................................................................................................................. 122 43.8. SYSTEM VARIABLES. ............................................................................................................. 122 43.9. DESCRIPTION. ........................................................................................................................ 122 43.10. EXAMPLES. ........................................................................................................................ 122 43.11. SOURCECODE. ................................................................................................................... 122 43.12. SEE ALSO. ......................................................................................................................... 123 44. NEWBDC ................................................................................................................................ 124 44.1. LOCATION. ............................................................................................................................ 124 44.2. PURPOSE................................................................................................................................ 124 44.3. ENTRY. .................................................................................................................................. 124 44.3.1. None .......................................................................................................................... 124 44.4. EXIT. ..................................................................................................................................... 124 44.5. CALLED BY. .......................................................................................................................... 124 44.6. CALLS.................................................................................................................................... 124 44.7. TABLES.................................................................................................................................. 124 44.8. SYSTEM VARIABLES. ............................................................................................................. 124 44.9. DESCRIPTION. ........................................................................................................................ 124 44.10. EXAMPLES. ........................................................................................................................ 124 44.11. SOURCECODE. ................................................................................................................... 124 44.12. SEE ALSO. ......................................................................................................................... 125 Page 10 45. PRINTTITLES ....................................................................................................................... 126 45.1. 45.2. 45.3. 45.4. 45.5. 45.6. 45.7. 45.8. 45.9. 45.10. 45.11. 45.12. 46. LOCATION. ............................................................................................................................ 126 PURPOSE................................................................................................................................ 126 ENTRY. .................................................................................................................................. 126 EXIT. ..................................................................................................................................... 126 CALLED BY. .......................................................................................................................... 126 CALLS.................................................................................................................................... 126 TABLES.................................................................................................................................. 126 SYSTEM VARIABLES. ............................................................................................................. 126 DESCRIPTION. ........................................................................................................................ 126 EXAMPLES. ........................................................................................................................ 126 SOURCECODE. ................................................................................................................... 126 SEE ALSO. ......................................................................................................................... 128 PRINTTOTALS...................................................................................................................... 129 46.1. LOCATION. ............................................................................................................................ 129 46.2. PURPOSE................................................................................................................................ 129 46.3. ENTRY. .................................................................................................................................. 129 46.3.1. Data tables to print totals for ................................................................................... 129 46.3.2. Current total level ..................................................................................................... 129 46.4. EXIT. ..................................................................................................................................... 129 46.5. CALLED BY. .......................................................................................................................... 129 46.6. CALLS.................................................................................................................................... 129 46.7. TABLES.................................................................................................................................. 129 46.8. SYSTEM VARIABLES. ............................................................................................................. 129 46.9. DESCRIPTION. ........................................................................................................................ 129 46.10. EXAMPLES. ........................................................................................................................ 129 46.11. SOURCECODE. ................................................................................................................... 129 46.12. SEE ALSO. ......................................................................................................................... 131 47. PRG_DOC_HELP .................................................................................................................. 132 47.1. 47.2. 47.3. 47.4. 47.5. 47.6. 47.7. 47.8. 47.9. 47.10. 47.11. 47.12. 48. READ_SCREEN_VALUES ................................................................................................... 134 48.1. 48.2. 48.3. 48.4. 48.5. 48.6. 48.7. 48.8. 48.9. 48.10. 48.11. 48.12. 49. LOCATION. ............................................................................................................................ 132 PURPOSE................................................................................................................................ 132 ENTRY. .................................................................................................................................. 132 EXIT. ..................................................................................................................................... 132 CALLED BY. .......................................................................................................................... 132 CALLS.................................................................................................................................... 132 TABLES.................................................................................................................................. 132 SYSTEM VARIABLES. ............................................................................................................. 132 DESCRIPTION. ........................................................................................................................ 132 EXAMPLES. ........................................................................................................................ 132 SOURCECODE. ................................................................................................................... 132 SEE ALSO. ......................................................................................................................... 133 LOCATION. ............................................................................................................................ 134 PURPOSE................................................................................................................................ 134 ENTRY. .................................................................................................................................. 134 EXIT. ..................................................................................................................................... 134 CALLED BY. .......................................................................................................................... 134 CALLS.................................................................................................................................... 134 TABLES.................................................................................................................................. 134 SYSTEM VARIABLES. ............................................................................................................. 134 DESCRIPTION. ........................................................................................................................ 134 EXAMPLES. ........................................................................................................................ 134 SOURCECODE. ................................................................................................................... 134 SEE ALSO. ......................................................................................................................... 135 READ_YDCSET ..................................................................................................................... 136 Page 11 49.1. LOCATION. ............................................................................................................................ 136 49.2. PURPOSE................................................................................................................................ 136 49.3. ENTRY. .................................................................................................................................. 136 49.3.1. Function Name ......................................................................................................... 136 49.3.2. User Name. ............................................................................................................... 136 49.4. EXIT. ..................................................................................................................................... 136 49.4.1. YDCSET structure populated.................................................................................... 136 49.5. CALLED BY. .......................................................................................................................... 136 49.6. CALLS.................................................................................................................................... 136 49.7. TABLES.................................................................................................................................. 136 49.8. SYSTEM VARIABLES. ............................................................................................................. 136 49.9. DESCRIPTION. ........................................................................................................................ 136 49.10. EXAMPLES. ........................................................................................................................ 136 49.11. SOURCECODE. ................................................................................................................... 137 49.12. SEE ALSO. ......................................................................................................................... 137 50. REPHEADER ......................................................................................................................... 138 50.1. LOCATION. ............................................................................................................................ 138 50.2. PURPOSE................................................................................................................................ 138 50.3. ENTRY. .................................................................................................................................. 138 50.3.1. Company Code ......................................................................................................... 138 50.3.2. Report Title ............................................................................................................... 138 50.4. EXIT. ..................................................................................................................................... 138 50.4.1. Report header produced for current report .............................................................. 138 50.5. CALLED BY. .......................................................................................................................... 138 50.6. CALLS.................................................................................................................................... 138 50.7. TABLES.................................................................................................................................. 138 50.8. SYSTEM VARIABLES. ............................................................................................................. 138 50.9. DESCRIPTION. ........................................................................................................................ 138 50.10. EXAMPLES. ........................................................................................................................ 138 50.11. SOURCECODE. ................................................................................................................... 139 50.12. SEE ALSO. ......................................................................................................................... 140 51. RUNTOTALS ......................................................................................................................... 141 51.1. 51.2. 51.3. 51.4. 51.5. 51.6. 51.7. 51.8. 51.9. 51.10. 51.11. 51.12. 52. LOCATION. ............................................................................................................................ 141 PURPOSE................................................................................................................................ 141 ENTRY. .................................................................................................................................. 141 EXIT. ..................................................................................................................................... 141 CALLED BY. .......................................................................................................................... 141 CALLS.................................................................................................................................... 141 TABLES.................................................................................................................................. 141 SYSTEM VARIABLES. ............................................................................................................. 141 DESCRIPTION. ........................................................................................................................ 141 EXAMPLES. ........................................................................................................................ 141 SOURCECODE. ................................................................................................................... 141 SEE ALSO. ......................................................................................................................... 142 SAVEREPORT ....................................................................................................................... 143 52.1. LOCATION. ............................................................................................................................ 143 52.2. PURPOSE................................................................................................................................ 143 52.3. ENTRY. .................................................................................................................................. 143 52.3.1. Report Name ............................................................................................................. 143 52.4. EXIT. ..................................................................................................................................... 143 52.5. CALLED BY. .......................................................................................................................... 143 52.6. CALLS.................................................................................................................................... 143 52.7. TABLES.................................................................................................................................. 143 52.8. SYSTEM VARIABLES. ............................................................................................................. 143 52.9. DESCRIPTION. ........................................................................................................................ 143 52.10. EXAMPLES. ........................................................................................................................ 143 Page 12 52.11. 52.12. 53. SOURCECODE. ................................................................................................................... 144 SEE ALSO. ......................................................................................................................... 144 SETCOLOUR ......................................................................................................................... 145 53.1. LOCATION. ............................................................................................................................ 145 53.2. PURPOSE................................................................................................................................ 145 53.3. ENTRY. .................................................................................................................................. 145 53.3.1. Colour to set ............................................................................................................. 145 53.4. EXIT. ..................................................................................................................................... 145 53.5. CALLED BY. .......................................................................................................................... 145 53.6. CALLS.................................................................................................................................... 145 53.7. TABLES.................................................................................................................................. 145 53.8. SYSTEM VARIABLES. ............................................................................................................. 145 53.9. DESCRIPTION. ........................................................................................................................ 145 53.10. EXAMPLES. ........................................................................................................................ 145 53.11. SOURCECODE. ................................................................................................................... 145 53.12. SEE ALSO. ......................................................................................................................... 146 54. SHOW_PROGRESS .............................................................................................................. 147 54.1. LOCATION. ............................................................................................................................ 147 54.2. PURPOSE................................................................................................................................ 147 54.3. ENTRY. .................................................................................................................................. 147 54.3.1. Message to display .................................................................................................... 147 54.4. EXIT. ..................................................................................................................................... 147 54.5. CALLED BY. .......................................................................................................................... 147 54.6. CALLS.................................................................................................................................... 147 54.7. TABLES.................................................................................................................................. 147 54.8. SYSTEM VARIABLES. ............................................................................................................. 147 54.9. DESCRIPTION. ........................................................................................................................ 147 54.10. EXAMPLES. ........................................................................................................................ 147 54.11. SOURCECODE. ................................................................................................................... 147 54.12. SEE ALSO. ......................................................................................................................... 148 55. SORTREP ............................................................................................................................... 149 55.1. LOCATION. ............................................................................................................................ 149 55.2. PURPOSE................................................................................................................................ 149 55.3. ENTRY. .................................................................................................................................. 149 55.3.1. Table to sort. ............................................................................................................. 149 55.4. EXIT. ..................................................................................................................................... 149 55.4.1. Table Sorted. ............................................................................................................. 149 55.4.2. Report column table sorted on .................................................................................. 149 55.4.3. Sort direction 'A' or 'D' ............................................................................................. 149 55.5. CALLED BY. .......................................................................................................................... 149 55.6. CALLS.................................................................................................................................... 149 55.7. TABLES.................................................................................................................................. 149 55.8. SYSTEM VARIABLES. ............................................................................................................. 149 55.9. DESCRIPTION. ........................................................................................................................ 149 55.10. EXAMPLES. ........................................................................................................................ 149 55.11. SOURCECODE. ................................................................................................................... 150 55.12. SEE ALSO. ......................................................................................................................... 151 56. STRIPSTRING ....................................................................................................................... 152 56.1. LOCATION. ............................................................................................................................ 152 56.2. PURPOSE................................................................................................................................ 152 56.3. ENTRY. .................................................................................................................................. 152 56.3.1. String to remove characters from. ............................................................................ 152 56.3.2. String of characters to remove.................................................................................. 152 56.4. EXIT. ..................................................................................................................................... 152 56.4.1. Entry string with strip chars removed ...................................................................... 152 Page 13 56.5. 56.6. 56.7. 56.8. 56.9. 56.10. 56.11. 56.12. 57. SUBTITLES ............................................................................................................................ 154 57.1. 57.2. 57.3. 57.4. 57.5. 57.6. 57.7. 57.8. 57.9. 57.10. 57.11. 57.12. 58. CALLED BY. .......................................................................................................................... 152 CALLS.................................................................................................................................... 152 TABLES.................................................................................................................................. 152 SYSTEM VARIABLES. ............................................................................................................. 152 DESCRIPTION. ........................................................................................................................ 152 EXAMPLES. ........................................................................................................................ 152 SOURCECODE. ................................................................................................................... 152 SEE ALSO. ......................................................................................................................... 153 LOCATION. ............................................................................................................................ 154 PURPOSE................................................................................................................................ 154 ENTRY. .................................................................................................................................. 154 EXIT. ..................................................................................................................................... 154 CALLED BY. .......................................................................................................................... 154 CALLS.................................................................................................................................... 154 TABLES.................................................................................................................................. 154 SYSTEM VARIABLES. ............................................................................................................. 154 DESCRIPTION. ........................................................................................................................ 154 EXAMPLES. ........................................................................................................................ 154 SOURCECODE. ................................................................................................................... 154 SEE ALSO. ......................................................................................................................... 155 TABLELINE ........................................................................................................................... 156 58.1. LOCATION. ............................................................................................................................ 156 58.2. PURPOSE................................................................................................................................ 156 58.3. ENTRY. .................................................................................................................................. 156 58.4. EXIT. ..................................................................................................................................... 156 58.4.1. Global flag w__line printed set to true. .................................................................... 156 58.5. CALLED BY. .......................................................................................................................... 156 58.6. CALLS.................................................................................................................................... 156 58.7. TABLES.................................................................................................................................. 156 58.8. SYSTEM VARIABLES. ............................................................................................................. 156 58.9. DESCRIPTION. ........................................................................................................................ 156 58.10. EXAMPLES. ........................................................................................................................ 156 58.11. SOURCECODE. ................................................................................................................... 156 58.12. SEE ALSO. ......................................................................................................................... 157 59. UNDERLINE .......................................................................................................................... 158 59.1. LOCATION. ............................................................................................................................ 158 59.2. PURPOSE................................................................................................................................ 158 59.3. ENTRY. .................................................................................................................................. 158 59.3.1. Start position............................................................................................................. 158 59.3.2. Width ......................................................................................................................... 158 59.4. EXIT. ..................................................................................................................................... 158 59.4.1. Global flag w__line printed set to true. .................................................................... 158 59.5. CALLED BY. .......................................................................................................................... 158 59.6. CALLS.................................................................................................................................... 158 59.7. TABLES.................................................................................................................................. 158 59.8. SYSTEM VARIABLES. ............................................................................................................. 158 59.9. DESCRIPTION. ........................................................................................................................ 158 59.10. EXAMPLES. ........................................................................................................................ 158 59.11. SOURCECODE. ................................................................................................................... 158 59.12. SEE ALSO. ......................................................................................................................... 159 60. USEREPORT .......................................................................................................................... 160 60.1. LOCATION. ............................................................................................................................ 160 60.2. PURPOSE................................................................................................................................ 160 60.3. ENTRY. .................................................................................................................................. 160 Page 14 60.3.1. Report Name ............................................................................................................. 160 60.4. EXIT. ..................................................................................................................................... 160 60.5. CALLED BY. .......................................................................................................................... 160 60.6. CALLS.................................................................................................................................... 160 60.7. TABLES.................................................................................................................................. 160 60.8. SYSTEM VARIABLES. ............................................................................................................. 160 60.9. DESCRIPTION. ........................................................................................................................ 160 60.10. EXAMPLES. ........................................................................................................................ 160 60.11. SOURCECODE. ................................................................................................................... 160 60.12. SEE ALSO. ......................................................................................................................... 161 61. WLINE .................................................................................................................................... 162 61.1. LOCATION. ............................................................................................................................ 162 61.2. PURPOSE................................................................................................................................ 162 61.3. ENTRY. .................................................................................................................................. 162 61.3.1. Dataline to print ....................................................................................................... 162 61.3.2. Colour of line. ........................................................................................................... 162 61.4. EXIT. ..................................................................................................................................... 163 61.5. CALLED BY. .......................................................................................................................... 163 61.6. CALLS.................................................................................................................................... 163 61.7. TABLES.................................................................................................................................. 163 61.8. SYSTEM VARIABLES. ............................................................................................................. 163 61.9. DESCRIPTION. ........................................................................................................................ 163 61.10. EXAMPLES. ........................................................................................................................ 163 61.11. SOURCECODE. ................................................................................................................... 163 61.12. SEE ALSO. ......................................................................................................................... 164 62. WRITECENTRE .................................................................................................................... 165 62.1. LOCATION. ............................................................................................................................ 165 62.2. PURPOSE................................................................................................................................ 165 62.3. ENTRY. .................................................................................................................................. 165 62.3.1. Text to centre ............................................................................................................ 165 62.4. EXIT. ..................................................................................................................................... 165 62.5. CALLED BY. .......................................................................................................................... 165 62.6. CALLS.................................................................................................................................... 165 62.7. TABLES.................................................................................................................................. 165 62.8. SYSTEM VARIABLES. ............................................................................................................. 165 62.9. DESCRIPTION. ........................................................................................................................ 165 62.10. EXAMPLES. ........................................................................................................................ 165 62.11. SOURCECODE. ................................................................................................................... 165 62.12. SEE ALSO. ......................................................................................................................... 166 63. WRITECOL ............................................................................................................................ 167 63.1. LOCATION. ............................................................................................................................ 167 63.2. PURPOSE................................................................................................................................ 167 63.3. ENTRY. .................................................................................................................................. 167 63.3.1. Data line and column to print ................................................................................... 167 63.3.2. Column to use. .......................................................................................................... 167 63.4. EXIT. ..................................................................................................................................... 167 63.5. CALLED BY. .......................................................................................................................... 167 63.6. CALLS.................................................................................................................................... 167 63.7. TABLES.................................................................................................................................. 167 63.8. SYSTEM VARIABLES. ............................................................................................................. 167 63.9. DESCRIPTION. ........................................................................................................................ 167 63.10. EXAMPLES. ........................................................................................................................ 167 63.11. SOURCECODE. ................................................................................................................... 167 63.12. SEE ALSO. ......................................................................................................................... 168 64. WRITELINE ........................................................................................................................... 169 Page 15 64.1. LOCATION. ............................................................................................................................ 169 64.2. PURPOSE................................................................................................................................ 169 64.3. ENTRY. .................................................................................................................................. 169 64.3.1. Table work area containing report data ................................................................... 169 64.3.2. Colour to use to print the data in. ............................................................................. 169 64.4. EXIT. ..................................................................................................................................... 169 64.5. CALLED BY. .......................................................................................................................... 169 64.6. CALLS.................................................................................................................................... 169 64.7. TABLES.................................................................................................................................. 169 64.8. SYSTEM VARIABLES. ............................................................................................................. 169 64.9. DESCRIPTION. ........................................................................................................................ 169 64.10. EXAMPLES. ........................................................................................................................ 170 64.11. SOURCECODE. ................................................................................................................... 170 64.12. SEE ALSO. ......................................................................................................................... 172 65. WRITESYMBOL ................................................................................................................... 173 65.1. LOCATION. ............................................................................................................................ 173 65.2. PURPOSE................................................................................................................................ 173 65.3. ENTRY. .................................................................................................................................. 173 65.3.1. Symbol name to use. ................................................................................................. 173 65.3.2. Hotspot flag. ............................................................................................................. 173 65.4. EXIT. ..................................................................................................................................... 173 65.5. CALLED BY. .......................................................................................................................... 173 65.6. CALLS.................................................................................................................................... 173 65.7. TABLES.................................................................................................................................. 173 65.8. SYSTEM VARIABLES. ............................................................................................................. 173 65.9. DESCRIPTION. ........................................................................................................................ 173 65.10. EXAMPLES. ........................................................................................................................ 173 65.11. SOURCECODE. ................................................................................................................... 173 65.12. SEE ALSO. ......................................................................................................................... 174 66. WRITEVALUE....................................................................................................................... 175 66.1. LOCATION. ............................................................................................................................ 175 66.2. PURPOSE................................................................................................................................ 175 66.3. ENTRY. .................................................................................................................................. 175 66.3.1. Width of output field ................................................................................................. 175 66.3.2. Value to write............................................................................................................ 175 66.3.3. Conversion exit routine............................................................................................. 175 66.3.4. Currency Field .......................................................................................................... 175 66.3.5. Unit field ................................................................................................................... 175 66.3.6. Other Format field. ................................................................................................... 175 66.4. EXIT. ..................................................................................................................................... 175 66.5. CALLED BY. .......................................................................................................................... 175 66.6. CALLS.................................................................................................................................... 175 66.7. TABLES.................................................................................................................................. 176 66.8. SYSTEM VARIABLES. ............................................................................................................. 176 66.9. DESCRIPTION. ........................................................................................................................ 176 66.10. EXAMPLES. ........................................................................................................................ 176 66.11. SOURCECODE. ................................................................................................................... 176 66.12. SEE ALSO. ......................................................................................................................... 177 67. ZBDC_BATCH_ON ............................................................................................................... 178 67.1. 67.2. 67.3. 67.4. 67.5. 67.6. 67.7. Page 16 LOCATION. ............................................................................................................................ 178 PURPOSE................................................................................................................................ 178 ENTRY. .................................................................................................................................. 178 EXIT. ..................................................................................................................................... 178 CALLED BY. .......................................................................................................................... 178 CALLS.................................................................................................................................... 178 TABLES.................................................................................................................................. 178 67.8. SYSTEM VARIABLES. ............................................................................................................. 178 67.9. DESCRIPTION. ........................................................................................................................ 178 67.10. EXAMPLES. ........................................................................................................................ 178 67.11. SOURCECODE. ................................................................................................................... 178 67.12. SEE ALSO. ......................................................................................................................... 178 68. ZBDC_CLOSE_GROUP ....................................................................................................... 180 68.1. LOCATION. ............................................................................................................................ 180 68.2. PURPOSE................................................................................................................................ 180 68.3. ENTRY. .................................................................................................................................. 180 68.3.1. None. ......................................................................................................................... 180 68.4. EXIT. ..................................................................................................................................... 180 68.4.1. Status 0 - Ok. ........................................................................................................... 180 68.5. CALLED BY. .......................................................................................................................... 180 68.6. CALLS.................................................................................................................................... 180 68.7. TABLES.................................................................................................................................. 180 68.8. SYSTEM VARIABLES. ............................................................................................................. 180 68.9. DESCRIPTION. ........................................................................................................................ 180 68.10. EXAMPLES. ........................................................................................................................ 180 68.11. SOURCECODE. ................................................................................................................... 180 68.12. SEE ALSO. ......................................................................................................................... 181 69. ZBDC_DUMP_ON ................................................................................................................. 182 69.1. LOCATION. ............................................................................................................................ 182 69.2. PURPOSE................................................................................................................................ 182 69.3. ENTRY. .................................................................................................................................. 182 69.3.1. None .......................................................................................................................... 182 69.4. EXIT. ..................................................................................................................................... 182 69.4.1. None .......................................................................................................................... 182 69.5. CALLED BY. .......................................................................................................................... 182 69.6. CALLS.................................................................................................................................... 182 69.7. TABLES.................................................................................................................................. 182 69.8. SYSTEM VARIABLES. ............................................................................................................. 182 69.9. DESCRIPTION. ........................................................................................................................ 182 69.10. EXAMPLES. ........................................................................................................................ 182 69.11. SOURCECODE. ................................................................................................................... 182 69.12. SEE ALSO. ......................................................................................................................... 183 70. ZBDC_FIELD ......................................................................................................................... 184 70.1. LOCATION. ............................................................................................................................ 184 70.2. PURPOSE................................................................................................................................ 184 70.3. ENTRY. .................................................................................................................................. 184 70.3.1. Field name ................................................................................................................ 184 70.3.2. Field Value ............................................................................................................... 184 70.4. EXIT. ..................................................................................................................................... 185 70.5. CALLED BY. .......................................................................................................................... 185 70.6. CALLS.................................................................................................................................... 185 70.7. TABLES.................................................................................................................................. 185 70.8. SYSTEM VARIABLES. ............................................................................................................. 185 70.9. DESCRIPTION. ........................................................................................................................ 185 70.10. EXAMPLES. ........................................................................................................................ 185 70.11. SOURCECODE. ................................................................................................................... 185 70.12. SEE ALSO. ......................................................................................................................... 186 71. ZBDC_FILLSCREEN ............................................................................................................ 187 71.1. LOCATION. ............................................................................................................................ 187 71.2. PURPOSE................................................................................................................................ 187 71.3. ENTRY. .................................................................................................................................. 187 71.3.1. Program name, ......................................................................................................... 187 Page 17 71.3.2. Screen number/actual screen No .............................................................................. 187 71.3.3. Structure to use. ........................................................................................................ 187 71.4. EXIT. ..................................................................................................................................... 187 71.5. CALLED BY. .......................................................................................................................... 187 71.6. CALLS.................................................................................................................................... 187 71.7. TABLES.................................................................................................................................. 187 71.8. SYSTEM VARIABLES. ............................................................................................................. 187 71.9. DESCRIPTION. ........................................................................................................................ 187 71.10. EXAMPLES. ........................................................................................................................ 188 71.11. SOURCECODE. ................................................................................................................... 188 71.12. SEE ALSO. ......................................................................................................................... 190 72. ZBDC_INSERT ...................................................................................................................... 191 72.1. LOCATION. ............................................................................................................................ 191 72.2. PURPOSE................................................................................................................................ 191 72.3. ENTRY. .................................................................................................................................. 191 72.3.1. Transaction code ...................................................................................................... 191 72.4. EXIT. ..................................................................................................................................... 191 72.4.1. Status of Insert .......................................................................................................... 191 72.5. CALLED BY. .......................................................................................................................... 191 72.6. CALLS.................................................................................................................................... 191 72.7. TABLES.................................................................................................................................. 191 72.8. SYSTEM VARIABLES. ............................................................................................................. 191 72.9. DESCRIPTION. ........................................................................................................................ 191 72.10. EXAMPLES. ........................................................................................................................ 191 72.11. SOURCECODE. ................................................................................................................... 191 72.12. SEE ALSO. ......................................................................................................................... 192 73. ZBDC_OPEN_GROUP .......................................................................................................... 193 73.1. LOCATION. ............................................................................................................................ 193 73.2. PURPOSE................................................................................................................................ 193 73.3. ENTRY. .................................................................................................................................. 193 73.3.1. Group Name to use for batch .................................................................................... 193 73.4. EXIT. ..................................................................................................................................... 193 73.4.1. Status of open: .......................................................................................................... 193 73.5. CALLED BY. .......................................................................................................................... 193 73.6. CALLS.................................................................................................................................... 193 73.7. TABLES.................................................................................................................................. 193 73.8. SYSTEM VARIABLES. ............................................................................................................. 193 73.9. DESCRIPTION. ........................................................................................................................ 193 73.10. EXAMPLES. ........................................................................................................................ 193 73.11. SOURCECODE. ................................................................................................................... 194 73.12. SEE ALSO. ......................................................................................................................... 194 74. ZBDC_SCREEN ..................................................................................................................... 195 74.1. LOCATION. ............................................................................................................................ 195 74.2. PURPOSE................................................................................................................................ 195 74.3. ENTRY. .................................................................................................................................. 195 74.3.1. Program name to run. .............................................................................................. 195 74.3.2. Screen number to use. ............................................................................................... 195 74.4. EXIT. ..................................................................................................................................... 195 74.5. CALLED BY. .......................................................................................................................... 195 74.6. CALLS.................................................................................................................................... 195 74.7. TABLES.................................................................................................................................. 195 74.8. SYSTEM VARIABLES. ............................................................................................................. 195 74.9. DESCRIPTION. ........................................................................................................................ 195 74.10. EXAMPLES. ........................................................................................................................ 195 74.11. SOURCECODE. ................................................................................................................... 195 74.12. SEE ALSO. ......................................................................................................................... 196 Page 18 75. ZBDC_SCROLL ..................................................................................................................... 197 75.1. LOCATION. ............................................................................................................................ 197 75.2. PURPOSE................................................................................................................................ 197 75.3. ENTRY. .................................................................................................................................. 197 75.3.1. Program name. ......................................................................................................... 197 75.3.2. Screen number. ......................................................................................................... 197 75.3.3. BDC Code for 'One down'. ....................................................................................... 197 75.3.4. Maximum number of lines displayed on the screen. ................................................. 197 75.3.5. The position of the required record in the displayed table. ...................................... 197 75.4. EXIT. ..................................................................................................................................... 197 75.4.1. The offset on the current page of the required record. ............................................. 197 75.5. CALLED BY. .......................................................................................................................... 197 75.6. CALLS.................................................................................................................................... 197 75.7. TABLES.................................................................................................................................. 197 75.8. SYSTEM VARIABLES. ............................................................................................................. 197 75.9. DESCRIPTION. ........................................................................................................................ 197 75.10. EXAMPLES. ........................................................................................................................ 198 75.11. SOURCECODE. ................................................................................................................... 198 75.12. SEE ALSO. ......................................................................................................................... 199 76. ZBDC_SUBSCRIPT ............................................................................................................... 200 76.1. LOCATION. ............................................................................................................................ 200 76.2. PURPOSE................................................................................................................................ 200 76.3. ENTRY. .................................................................................................................................. 200 76.3.1. Field name as a string .............................................................................................. 200 76.3.2. Subscript to use ......................................................................................................... 200 76.3.3. Value to use .............................................................................................................. 200 76.4. EXIT. ..................................................................................................................................... 200 76.4.1. BDC Table updated. ................................................................................................. 200 76.5. CALLED BY. .......................................................................................................................... 200 76.6. CALLS.................................................................................................................................... 200 76.7. TABLES.................................................................................................................................. 200 76.8. SYSTEM VARIABLES. ............................................................................................................. 200 76.9. DESCRIPTION. ........................................................................................................................ 200 76.10. EXAMPLES. ........................................................................................................................ 200 76.11. SOURCECODE. ................................................................................................................... 200 76.12. SEE ALSO. ......................................................................................................................... 201 77. ZDO_BDC ............................................................................................................................... 202 77.1. LOCATION. ............................................................................................................................ 202 77.2. PURPOSE................................................................................................................................ 202 77.3. ENTRY. .................................................................................................................................. 202 77.3.1. Transaction Code ..................................................................................................... 202 77.3.2. Mode ......................................................................................................................... 202 77.3.3. Update Type .............................................................................................................. 202 77.3.4. Table - p_messages - contains batch msgs ............................................................... 202 77.4. EXIT. ..................................................................................................................................... 202 77.4.1. MsgId, Error and message if failed. ........................................................................ 202 77.5. CALLED BY. .......................................................................................................................... 202 77.6. CALLS.................................................................................................................................... 202 77.7. TABLES.................................................................................................................................. 202 77.8. SYSTEM VARIABLES. ............................................................................................................. 202 77.9. DESCRIPTION. ........................................................................................................................ 203 77.10. EXAMPLES. ........................................................................................................................ 203 77.11. SOURCECODE. ................................................................................................................... 203 77.12. SEE ALSO. ......................................................................................................................... 205 78. Z_CALL_BDC ........................................................................................................................ 206 Page 19 78.1. LOCATION. ............................................................................................................................ 206 78.2. PURPOSE................................................................................................................................ 206 78.3. ENTRY. .................................................................................................................................. 206 78.3.1. Message Table .......................................................................................................... 206 78.3.2. Transaction to use .................................................................................................... 206 78.3.3. Table - p_messages - contains batch msgs ............................................................... 206 78.4. EXIT. ..................................................................................................................................... 206 78.4.1. Table p_messages filled with BDC Messages ........................................................... 206 78.5. CALLED BY. .......................................................................................................................... 206 78.6. CALLS.................................................................................................................................... 206 78.7. TABLES.................................................................................................................................. 206 78.8. SYSTEM VARIABLES. ............................................................................................................. 206 78.9. DESCRIPTION. ........................................................................................................................ 206 78.10. EXAMPLES. ........................................................................................................................ 206 78.11. SOURCECODE. ................................................................................................................... 206 78.12. SEE ALSO. ......................................................................................................................... 207 List Of Tables Table 1 - List of Routines ....................................................................................................................... 25 Table 2 -YDCSET Table Structure ........................................................................................................ 29 Table 3 - System Variables Affected By Drill Down Reports ................................................................ 33 Table 4 - Custom Authorisation Objects ................................................................................................ 37 Table 5 Common BDC OK Codes ....................................................................................................... 185 Changes Pending. Page 20 1. About this document. This document is in itself an aid to documentation, and can be used to easily document routines written by yourself. Within this document are a series of Macros which were used to extract and format the pages which detail the routines shown in the following pages. These routines are callable as a routine that will provide almost complete documentation on a specified routine. These routines are not perfect, and in some cases contain bugs, however, they do 99% of the work in providing procedure documentation. 1.1. Procedure Format. These routines rely on the SAP routines conforming to the following constraints: Each routine has a header that is as follows: *EJECT ******************************************************************** * * Procedure: * * Purpose: * * Entry: * * Exit: * * Called By: * * Calls: * * Modification History: * * Date Reason Version Who * The macros search for various keywords and extract the relevant text from the header. The sections can be formatted as follows: 1.1.1.1.Procedure. The procedure heading can only occupy one line, and is used as a trigger for the start of all routines that require to search the procedure. This should be the same as the name specified in the Forms Statement. 1.1.1.2.Purpose. The Purpose header can extend across multiple lines up to the first 'Entry' statement.. The text 'Purpose:' and all comment markers up to this line are removed and the remaining texts concatenated into a single string. This string is then output as a single paragraph under the 'Purpose' Sub heading. 1.1.1.3.Entry. There must be an 'Entry:' heading for each 'TABLE' or 'USING' parameter defined on the form. These have the comment markers stripped and the word 'Entry:' removed from them and are used as the Level 3 sub headings under the heading 'Entry'. Page 21 Any text below the line containing the word 'Entry:', up until the next 'Entry:', or the first 'Exit:' line will be concatenated together, minus the comment markers and extra spaces to form an explanation for the parameter that has just been specified. 1.1.1.4.Exit. There must be an 'Exit:' heading for each 'CHANGING' defined on the form. These have the comment markers stripped and the word 'Exit:' removed from them and are used as the Level 3 sub headings under the heading 'Exit'. Any text below the line containing the word 'Exit:', up until the next 'Exit:', or the first 'Called By:' line will be concatenated together, minus the comment markers and extra spaces to form an explanation for the parameter that has just been specified. 1.1.1.5.Called By. The Called by line contains all the procedures that are dependant on the current procedure being documentented. However... the macros DO NOT take any entries in the 'Called By' lines as gospel, but scans the supplied source file for references to the procedure and enters these references into the documentation instead. The documentation also contains a 'model' procedure call for the the form being called, however this 'model' call needs manual formating. 1.1.1.6.Calls. The Calls Line again is not used by the macros, but can be updated by the results of the macros if you wish. The macros scan the source code and extract and 'PERFORM' calls between the Form Declaration and the next 'ENDFORM'. These are then output under a Level 2 heading 'CALLS'. 1.1.1.7. Other Entries. Other entries appear in the documentation that are not required in the header. These are: ï‚· ï‚· ï‚· ï‚· ï‚· ï‚· Tables System Variables Description Example Source Code See Also 1.1.1.7.1.Tables: The macros will scan the source code for the routine and parse any tables statements between the FORM...ENDFORM statements into a comma seperated list as a Level 2 paragraph. 1.1.1.7.2.System Variables. The next heading in the document is 'System variables'. This contains a list of all system variables, and a truncated description, or all system variables referenced in the form. 1.1.1.7.3.Description. This entry in the documentation should describe the routine, how and why it works, any funnies or occasions when it will not work. The level 2 header is entered, but no text. This is for you to do. Page 22 1.1.1.7.4.Examples. The example is taken from the file that you specify for example files. In my own copy, I have the routine run Grep, searching all directories for occurances below the main directory, and then read the file produced to retrieve the file name. The routine then scans this file and extracts the source code 7 lines either side of the reference to the routine and inserts it into the document. The number of lines that are extracted for the example can be modified by changing the subscript in the line: Dim SourceBuffer(7) As String In subroutine 'Examples'. 1.1.1.7.5.Source Code. The macro then extracts the source code from the source file and inserts it into the document. 1.1.1.7.6.See Also. A place where you can insert references to other similarly minded forms. 1.2. Running the macro. For each section in a procedure document, there is a macro. The main entry point for these routines is a macro called 'NewRoutine', which can be seen on the menu at the top on the menu bar. All files accessed have to have been downloaded to a directory somewhere under the 'C_HEADDIR' directory specified in the macro codes definition module. Clicking this button will request three items: ï‚· ï‚· ï‚· The Routine to document The file containing the routine The file containing an example of that routine. Enter the routine name to document. Clickng the cancel button, or leaving the input field blank will cause the routine to exit. Enter the name of the file containing the routine. This does not have to be the only routine in the file. Enter the name of the file containing the example that you wish to use for the usage of the routine. Ta-dahhhh.... Page 23 2. Using the Routines. The routines used have been split into functional modules as they have grown quite monolithic since they were created. No doubt other splits will occur as time goes on. There are four include routines. One is mandatory and contains constant definitions used by both the other include routines. YREPINC contains routines that apperation to reporting. They include such things as formatting a report, report breaks, title printing and so forth. YBDCINC contains routines that are aimed at BDC programming such as loading the report table, debugging routines, and filling entire screens in one call. YGRAPH contains macros aimed at making the writing of packages using SAP Graphics a little more pain free. To make the routines available to your program, include the lines: Include Yrbinc. Include YREPINC|YBDCINC|YGRAPH. At the top of your program after the Report statement. All three includes can be included if required. The table below shows the split of the various functions across the include files. Include File Routine Name YRBINC Constants YREPINC Allhdrs Buildreport CentreReport Checkbox Checkbreaks Firstcol Formatreport Getmask Giveline Graphic Groupheader Icon Initbreak Printtitles Printtotals Psub Repheader Runtotals Savereport Setcolour Sortrep Stripstring Subtitle. Symbol Tableline. Underline Usereport Wline Writecol Writecentre Writeline Page 24 Function Various constants defined here. The ones with single underscores can be used in your own programs. Prints all group headers for a report Adds columns to a report definition, locates column titles and format from data dictionary. Centres a report or leaves it left justified Prints a report element as a check box Checks column breaks and prints totals if required Sets the first column displayed Takes a defined report and calculates the required spacing. Gets a Unit or Currency mask Returns the Nth line of a string of text to fit a column M characters wide. Inserts an icon or symbol graphic on a report Prints out group headers. Inserts an Icon on a report Initialises Report breaks. Prints the column titles on a report Prints break totals Macro. Prints select option sub titles Prints a Report Header Prints the run totals for a report Saves report format on report stack Sets the output colour Sorts a report by a specified column Removes specified characters from a string Called by PSUB to print subtitles containing selection criteria for a report Inserts a symbol on a report Draws a line across the current report. Draws a line of specified width from a specified startpoint Uses a previously stacked report Outputs a line to the report Writes to a specific column on the report Prints the specified text centrally on a defined report. Outputs a line of data onto the report Include File YBDCINC YGRAPH Routine Name WriteSymbol Writevalue Get_Local_Host Function Writes a symbol to the report Writes a single value to a report Gets the name of the local SAP host Init_Global Is_Service_Active Newbdc Read_YDCSET Zbdc_Batch_On Zbdc_Close_Group Initialises Global variables Checks to see if a named service is active Initialises a BDC session Reads BDC Defaults settings Sets Batch create for BDC's on Closes an SM35 session Zbdc_Dump_On Sets BDC Dump table on Zbdc_Field ZBDC_Fillscreen Zbdc_Insert Zbdc_Open_Group Zbdc_Screen Inserts a BDC Field Completes a BDC screen from screen name/number and structure Inserts a BDC session Opens a new SM35 session Inserts a new screen into a BDC session Zbdc_Scroll Zdo_BDC Z_Call_BDC Curve_Category Curve_Colour Curve_Type Curve_Width Legend_Text Next_Curve Scrolls a table in place of =POPO Runs a BDC Transaction Runs a BDC transaction making use of YDC Set. Defines the typeof curve to be displayed The colour of the curve The type of curve – solid, dashed The width of the line used to make up the curve Specifies the legend text Introduces the next curve on the graph Table 1 - List of Routines Below is an example of how the routines are used: *Eject *********************************************************************** * * Procedure: Build_Revenue_Report * * Purpose: Formats the standard revenue report. * * Entry: * * Exit: * * Called By: * * Calls: * * Modification History: * * Date Reason Version Who * Form Build_Revenue_Report. * Zap ReportTable. Perform BuildReport using 'TSPACE' '' 40 '' ''. Perform BuildReport using 'CATSDB-WORKDATE' '' 0 'DD/MM/YY' ''. Perform BuildReport using 'CHOURS' Text-013 5 '' ''. Perform BuildReport using 'BUYC' Text-002 11 '' ''. Perform BuildReport using 'BUYTOTAL' text-003 15 'CURRENCY' 'BWAERK'. Perform BuildReport using 'BWAERK' Text-012 0 '' ''. Page 25 Perform BuildReport using 'SELLC' Text-004 11 '' ''. Perform BuildReport using 'SELLTOTAL' text-005 15 'CURRENCY' 'WAERK'. Perform BuildReport using 'NETWR' text-014 15 'CURRENCY' 'WAERK'. Perform BuildReport using 'WAERK' Text-012 0 '' ''. Perform FormatReport. Read Table t_revenue Index 1. Perform InitBreak using 'T_REVENUE-CENDNG' Text-015 Perform InitBreak using 'T_REVENUE-VB' Text-006 Perform InitBreak using 'T_REVENUE-ENAME' Text-007 Perform InitBreak using 'T_REVENUE-ABTEI' Text-008 Perform InitBreak using 'T_REVENUE-KTEXT' Text-009 Perform SaveReport using c_main_report. * * * c_no c_no c_no c_no c_no c_yes. c_yes. c_yes. c_yes. c_yes. And the billing report. Zap ReportTable. Perform BuildReport using 'VBELN0' Text-019 10 '' ''. Perform BuildReport using 'ERDAT0' Text-020 8 'DD/MM/YY' ''. Perform BuildReport using 'CREDT0' Text-021 11 '' ''. Perform BuildReport using 'DEBIT0' Text-022 11 '' ''. Perform BuildReport using 'VBELN1' Text-019 10 '' ''. Perform BuildReport using 'ERDAT1' Text-020 8 'DD/MM/YY' ''. Perform BuildReport using 'CREDT1' Text-021 11 '' ''. Perform BuildReport using 'DEBIT1' Text-022 11 '' ''. Perform BuildReport using 'VBELN2' Text-019 10 '' ''. Perform BuildReport using 'ERDAT2' Text-020 8 'DD/MM/YY' ''. Perform BuildReport using 'CREDT2' Text-021 11 '' ''. Perform BuildReport using 'DEBIT2' Text-022 11 '' ''. Perform FormatReport. Perform SaveReport using c_billing_rep. EndForm. *Eject *********************************************************************** * * Procedure: Print_Revenue_Report * * Purpose: Prints the standard revenue report. * * Entry: * * Exit: * * Called By: * * Calls: * * Modification History: * * Date Reason Version Who * Form Print_Revenue_Report. * Data: w_lines type i, w_prted type i, w_vbeln like vbak-vbeln. * Read Table t_revenue index 1. * * Initial group headers. * Set pf-status '001'. Perform UseReport using c_main_report. Perform GroupHeader using Text-009 T_REVENUE-KTEXT. Perform GroupHeader using Text-008 T_REVENUE-ABTEI. Perform GroupHeader using Text-007 T_REVENUE-ENAME. Perform GroupHeader using Text-006 T_REVENUE-VB. Perform GroupHeader using Text-015 T_REVENUE-CENDNG. Move t_revenue-vbeln to w_vbeln. * Loop at t_revenue. * Page 26 * * * Change in Vbeln ?? Check if there are any unprinted billing docs. If w_vbeln <> t_revenue-vbeln. Perform billing_rep using 0 changing w_prted. Move t_revenue-vbeln to w_vbeln. EndIf. Perform CheckBreaks using t_revenue. Perform WriteLine using t_revenue col_normal. * * * Any billing information ? If t_revenue-netwr <> 0. Perform Billing_Rep using t_revenue-workdate changing w_prted. EndIf. EndLoop. Perform RunTotals. * * * Any unprinted documents ? Describe table t_bill_rep lines w_lines. If w_prted <> w_lines. Perform UseReport using c_billing_rep. Move Text-023 to sy-title. New-Page. Loop at t_bill_rep Where prted = False. Perform WriteLine using t_bill_rep col_background. Endloop. Perform TableLine. EndIf. Perform WriteCentre using Text-011. EndForm. Page 27 3. Dependancies Should it be required to track all uses of routines defined in ZBOSSINC, open a program containing references to the routines and place the cursor on the Perform calling the routine. Click the ‘Where Used’ display it. Page 28 button. This will locate all occurances of that routine in any ABAP program and 4. BDC Operations. The BDC routines have the ability to modify their behaviour without changing any code. This enables such operations as debugging, or e-mail notification to be carried out. Note that at the present time some options are not operation. In order to support this, a table called YDCSET has to be built and populated. The structure of this table is as follows: Field Name Key Data Element MANDT X MANDT FUNCNAME X RS38L_FNAM BDCMODE BDCMODE BDCUPMODE BDCUPMODE CRBATCH INHIBITCHK DUMPBDC DUMPMSG GENMAIL MAILPROG PNAME Type Length CHAR 3 CHAR 30 CHAR 1 CHAR 1 CHAR 1 CHAR 1 CHAR 1 CHAR 1 CHAR 64 CHAR 8 Table 2 -YDCSET Table Structure 4.1. MANDT. Client, the standard client field for SAP 4.2. FUNCNAME This is the function name of the RFC that this record applies to. 4.3. BDCMODE. The BDC Mode is the standard screen mode that you wish the BDC to run in. This can be: ï‚· 'A'. Display all screens and wait for <enter> between each screen ï‚· 'E'. Display only erroneous screens. ï‚· 'N'. Display no screens. 4.4. BDCUPMODE. This is the standard BDC database update mode for the function. This can be either: ï‚· 'A'. Asynchronous update - ie update in the back ground ï‚· 'S'. Synchronous update. Wait for the database update to occur before returning from the BDC. 4.5. CRBATCH. The CRBATCH field is a single character field, and can have two values, 'X' or ' '. If the field contains an X, the BDC routines will create an SM35 batch session should the BDC fail. 4.6. INHIBITCHK. In some cases, it can be helpful to inhibit validation checks within a BDC, for example where the validation becomes too long or is not required in certain circumstances. This field is again a single character field with a value of 'X' or ''. If the field has a value of 'X', then data validation can be controlled using the following type of code: If W__Ydcset-Inhibitchk = False. Page 29 Select Lgnum From T320 Into W_Lgnm1 Up To 1 Rows Where Werks = W_Werks And Lgnum = W_Lgnum. Endselect. If Sy-Subrc <> 0. Move C_Invalid_Warehouse To Pc_Status. Endif. Endif. 4.7. DUMPBDC. During the development of BDC sessions, it can be useful to see what is actually in the BDC table itself prior to the call. Again, a single character field, this field determines whether a rudimentary report detailing the contents of the BDC table should be printed out. 'X' causes the system to print the table, '' not. 4.8. DUMPMSG. In the same manner that DUMPBDC causes the BDC table to be dumped to the nearest printer, this flag causes the message table to be dumped to the printer should the BDC fail. 'X' causes the system to dump the table, '' not. 4.9. GENMAIL. This field contains a procedure name. This procedure name coupled with the MailProg field is used to call a specified procedure, passing as parameters the transaction code, the error message and the user name. The Procedure call is error trapped so that if the procedure cannot be found, the program still continues. 4.10. MAILPROG. This field contains the name of the file which holds the procedure used to send mail. Page 30 5. Macros and Forms. What is the difference between a macro and a Perform ? In technical terms, macros are expanded in-line, whereas a Perform is out of line..... Macros have to be defined in the same way that Performs have to be with ‘Define’ and ‘End-Of-Definition’. They are generally used for short pieces of code that cannot be called using a perform. 5.1. An Example. The subroutine ‘Subtitles’ prints the report criteria based upon the values passed to in by the caller. The caller has to loop around the select-options table and pass the relevant data. This is due to the fact that although Select-Options tables have the same field names, the field definitions differ depending on the table you have set the select options up for. As you have to specify the structure in the Perform definition, this makes the writing of a generic routine using Performs impossible: Form Subtitles Tables p_selects structure s_vkorg using p_title. The actual definition is: FORM SUBTITLES using p_text p_sign p_option p_low p_high. This requires the calling program to loop around the relevant select options table: Loop at s_vkorg. Perform Subtitles using ‘Title Text’ s_vkorg-sign s_vkorg-option s_vkorg-low s_vkorg-high. EndLoop. Obviously when this occurs once, the few extra lines of code are no problem, however, eight or nine selection options can become a bore. By using a macro, this problem can be alleviated by expanding the code in-line so that all variables etc are available as normal. Define PSub. Loop at &1. Page 31 Perform Subtitles using &2 &1-Sign &1-option &1-low &1-high. EndLoop. End-Of-Definition. The macro expands any arguments by replacing the &n parameter with the relevant parameter passed by the calling program. Therefore, the lines of code above become: Psub s_vkorg Text-021. In a real application, this would look like: Top-Of-Page. * * If Only one company, use that otherwise use Boss Group Holding. * Describe table s_vkorg lines w_lines. if w_lines > 1. Perform Repheader using 'BG00' w_title. Else. if s_vkorg-high = ''. Perform RepHeader using s_vkorg-low w_title. Else. Perform Repheader using 'BG00' w_title. endif. endif. * * Print out the selection criteria * Psub s_vkorg text-023. Psub s_vkgrp text-024. Psub s_vkbur text-025. Psub s_vtweg text-026. Psub s_spart text-027. * * Material Selections * Perform Matsub. PSub s_audat text-029. Perform PrintTitles. See Psub (23 below) for more information. Page 32 6. Drill Down Reports. SAP has the ability to provide a ‘Drill Down’ capability where clicking a column on the report provides further information on the item clicked. This is catered for by these routines. Clicking an item on the report will call (if present) the At Line-Selection. routine of the calling program. The routines return all variables used to construct the report line to the state when the report line was produced. In addition, the following system variables are set: Variable Name Runtime SY-TITLE List Generation SY-COLNO SY-LINCT SY-LINNO SY-LINSZ SY-PAGNO SY-SCOLS SY-SROWS Interactive Reporting SY-CPAGE SY-CUCOL SY-CUROW SY-LILLI SY-LISEL SY-LISTI SY-LSIND SY-LSTAT SY-MSGLI SY-STACO SY-STARO SY-UCOMM Contents The title of the report The current column in the list. Page length in lines Current line in list Page width in columns Current page in list Number of columns in window Number of lines in window Current Page Number Cursor column position on screen. Cursor Row position on screen. Number of selected list line Contents of the selected line as a string Index of selected list (0 = base, 1=detail 1 etc) Index of displayed list (0=base, 1=detail 1 etc) Status information for each list level Contents of the message line Number of first displayed column Number of first displayed line on this page Command field function entry. Table 3 - System Variables Affected By Drill Down Reports Page 33 7. Arrays. Arrays are available in ABAP disguised as internal tables. However, the problem occurs when you try to define an Array within an existing table. This is handy when you are dealing series of data that are identical but perhaps are part of a time series for instance. By using an array the amount of program code can be cut down quite considerably. As a simple example, the psuedo code below shows how the invoice totals for each month can be totalled. Assume that a record has a customer number, an invoice total and a month number. For Each Record In The File Do InvoiceTotal(MonthNumber):=InvoiceTotal(MonthNumber)+This Invoice EndDo Without subscripts, the code would look like this: For Each Record In The File do case MonthNumber When 1 InvoiceTotal1 := InvoiceTotal1 + When 2 InvoiceTotal2 := InvoiceTotal2 + When 3 InvoiceTotal3 := InvoiceTotal3 + When .... When 12 InvoiceTotal12 := InvoiceTotal12 end case enddo This Invoice This Invoice This Invoice + This Invoice As you can see, the amount of code increases dramatically without arrays. Arrays (or tables) can be referenced like so: Read Table t_mytab index w_index. This will place the w_index’th record from t_mytab in the tables header line so that the information can be accessed directly. 7.1. Tables Within Tables. An array can be implemented in ABAP within a table by using a second table. The methods used are obscure and thanks goes to Harald Mauchert [hmauchert@mbase.de] for this information. 7.1.1. Defining An Array. The procedure for defining an array (I’ll use the word array to denote a table within a table) is simple (and logical) you just define another internal table... Data: Begin Of MyTab Occurs 0, kunnr like vbak-kunnr, count type i, totals type i occurs 0, End Of MyTab. “ Data Dict definition “ Normal definition... “ Internal table. 7.1.2. Accessing An Array. Accessing these arrays is not as simple as above. Basically, the data in the array is transferred to an internal table, any operations carried out on the internal table and then the whole table is moved back into the array: Page 34 Data: i_totals type i occurs 0 with header line. Loop at MyTab. * * Get at the data in the array * Refresh i_totals. Move MyTab-Totals[] to i_totals[]. * Write: / MyTab-kunnr, MyTab-Count, at 50 ‘ ‘. Loop At i_totals Write i_totals. Write /50 ‘ ‘. EndLoop. EndLoop. To Get data out of an array to process: Move TableName-ArrayName[] to InternalTable[]. To store data back to the array: Move InternalTable[] to TableName-ArrayName[]. Page 35 8. Select-Options. Select Options provide a very flexible method of defining the report search criteria. Select Options are available on any field where this icon is displayed: The user can then select a wide range of criteria. By using these criteria, reports can be produced that can contain contiguous ranges, discrete records, exclusions and even pattern matched results. Selection criteria are stored in a table created when the program runs. There can be many seperate selection criteria within one selection option table. Due to this, reports should have the selection criteria printed at the top of each page so that the user can see what selection criteria were used to produce the report. In order to do this, a routine called ‘Subtitle’ should be used. This will print out in plain language what the report criteria for a specific record in the selection criteria table has. It is not possible to actually pass the table to the routine as the structure has to be declared as a separate statement. Each selection criteria table, although having the same field names has a different definition. For more information on Selection criteria see below. Page 36 9. Authorisation Checks. SAP has the ability to provide authorisation checks for users to enable them to access differing parts of programs or reports based upon their access code. To carry out an authorisation check, use the following code: Authority-Check Object 'AuthorisationObject' ID ‘Authorisation-id' Field 'Authorisation Field'. if sy-subrc = 0. * * User has authorised access to this object * Else. * * User is not authorised for this object. * endif. If the user has authorisation for this object, SY-SUBRC will be 0. Any other value means that the user is not authorised. (Some values mean that the object is not present, but if you are protecting sensitive data then treating that as unauthorised as well is good practice). There are a huge number of predefined Authorisation Objects, so before creating one of your own, check in Tools->Administration->Maintain Users->Authorization to see if an appropriate object exists. If one does not exist there, create your authorisation object and complete the table below which details in house authorisations: Authorisation Check Is the user a dealer ? Object Class Object Sales & Distribution Dealer Authorisation Technical Name ZDEALER Authorisation ID USR10_1 Table 4 - Custom Authorisation Objects Page 37 Field V:ZDEAL+DI JSB Aware Y 10. Sub-Totals. The majority of reports require totals at certain places. ABAP provides the ‘AT NEW’ commands which are difficult, if not exasperatingly impossible to use. YREPINC implements a set of routines that will provide subtotals for columnar style reports. After formatting the report using BuildReport and FormatReport, a list of break points is setup using InitBreak. Break points are listed in reverse order - ie the lowest break point first working up to a report total. As the report is printed, calling CheckBreaks before the printing of each line causes the break points to be checked and updated, with sub-totals and new group headings being printed as required. Once the report has been printed, calling RunTotals prints the final set of totals for the report. All numeric columns on the report will be sub-totalled. implemented: Perform Perform Perform Perform Perform BuildReport BuildReport BuildReport BuildReport BuildReport using using using using using Perform BuildReport using Perform BuildReport using Perform BuildReport using Perform BuildReport using 'TSPACE' '' 40 '' ''. 'CATSDB-WORKDATE' '' 0 'DD/MM/YY' ''. 'CHOURS' Text-013 5 '' ''. 'BUYC' Text-002 11 '' ''. 'BUYTOTAL' text-003 15 'CURRENCY' 'BWAERK'. 'BWAERK' Text-012 0 '' ''. 'SELLC' Text-004 11 '' ''. 'SELLTOTAL' text-005 15 'CURRENCY' 'WAERK'. 'NETWR' text-014 15 'CURRENCY' 'WAERK'. 'WAERK' Text-012 0 '' ''. Perform BuildReport using Perform FormatReport. Read Table t_revenue Index 1. Perform InitBreak using 'T_REVENUE-CENDNG' Perform InitBreak using 'T_REVENUE-VB' Perform InitBreak using 'T_REVENUE-ENAME' Perform InitBreak using 'T_REVENUE-ABTEI' Perform InitBreak using 'T_REVENUE-KTEXT' Page 38 The code below shows how this should be Text-015 Text-006 Text-007 Text-008 Text-009 c_no c_no c_no c_no c_no c_yes. c_yes. c_yes. c_yes. c_yes. 11. Real-Time Displays. There may be occasions where a report is showing real time data (for example the status of a queue). If the operator used the data displayed on the screen, invalid decisions may be made due to the data not being up to date. This can be alleviated by having a ‘Refresh’ button on the button bar which the operator must remember to press if they require the latest information. This however places the onus for getting the correct information on the operator. There is however, a way to provide an ‘Auto-Refresh’ capability within a report, which can be expanded to include other functions. Primarily, a timer is set running as a totally separate task, even in a different processor. SAP provides the ability to notify the calling program when this Remote Function Call (RFC) completes. Function Z_WAIT_X_SECS has been written as an RFC capable function which waits a defined number of seconds before it exits. As this is a remote function call, the original program continues rather than waiting for the RFC to complete. The call to Z_WAIT_X_SECS looks like this: Call Function 'Z_WAIT_X_SECS' Starting New Task 'IF' Performing Start_Refresh On Exporting WAIT_TIME = w_pollrate Exceptions COMMUNICATION_FAILURE = SYSTEM_FAILURE = OTHERS = End Of Task 1 Message w_RFCText 2 Message w_RFCText 3. This introduces some new parameters to the ‘Call Function’ statement. ï‚· Starting New Task: This addition starts a new task with the task id specified in quotes. This is a separate remote process to run this function. ï‚· Performing …. On End Of Task This addition signifies that a ‘call back’ is required when the task completes. The routine specified (in this case start_refresh) is called when this routine exits. ï‚· Message Any explanatory text will be placed in this variable if there is an exception. Once the time limit has been reached, the RFC exits. The calling program is then notified of this and takes appropriate action. 11.1. Pushing Keys in ABAP. Having set up the timer, using the statement : Set User-Command ‘RFSH’. Will cause the button ‘RFSH’ to be pushed. By including this statement in the ‘On End Of Task’ call causes the program to automatically carry out whatever action is specified by the function code. Thanks to Ted Hoffman [hoffmantt@hotmail.com] for this information Page 39 12. Information Sources. http://www.sapfans.com/sapfans/ http://src.thehub.com.au/ http://207.105.30.51/simpweb/index.html SAP User group with forums on all areas of SAP SAP Resource Centre. SAP Simplification Centre Harald Mauchert hmauchert@mbase.de Section 1.1 Information on Arrays within ABAP Ted Hoffman Section 5 - Z_WAIT_X_SECS hoffmantt@hotmail.com John Campbell johnallancampbell@hotmail.com The CHR/Ascii convertion routine in Initialise_Function. Page 40 13. AddRange, AddDiscrete, AddConsec - Macros 13.1. Location. YREPINC. 13.2. Purpose. Adds entries to a Range table 13.3. Entry. 13.3.1. Item To Add. This is the range value that you wish to add to the range table. Applicable to AddRange, AddDiscrete and AddConsec. 13.3.2. Range Table to add to. This is the name of the range table that you want the entry added to. Applicable to AddRange, AddDiscrete and AddConsec. 13.3.3. Item High, Item Low. This is the range that you wish to use. Applicable to AddConsec only. 13.4. Exit. 13.5. Called By. AddDiscrete 'ABC' r_mara. AddConsec 'A' 'Z' r_range. 13.6. Calls. 13.7. Tables. 13.8. System Variables. 13.9. Description. These three macros add records to a select option table. The Macro AddRange is obsolete, replaced by AddDiscrete, however, it has been left in the code for backwards compatability. AddDiscrete adds single entries to a range table. AddConsec adds a consecutive Range to a range table. 13.10. Examples. Move i_matnr to w_matnr. Move c_ok to w_status. Move '' to e_text. Move '' to e_xchpf. Zap t_ekpo. * * Document types to include in the search: * Addrange: 'NB' r_fbsart, 'UB' r_fbsart, 'ZUB' r_fbsart, Page 41 'LP' r_lbsart. * * Check Valid material, and that the material has been provided. * 13.11. Source. *Eject *********************************************************************** * * macro: AddRange, AddDiscrete, AddConsec. * * Purpose: Adds an 'EQ' entry to a range table * AddDiscrete - copied version of addrange for * backwards compatability. * AddConsec - adds a 'BT' entry to a range table * * Entry: Value to add, * Range table to use * * Exit: * * * Called By: AddRange r_value r_table. * * Calls: * * Modification History: * * Date Reason Version Who * Define AddRange. Move 'I' to &2-sign. Move 'EQ' to &2-option. Move &1 to &2-low. Append &2. End-Of-Definition. * Define AddDiscrete. Move 'I' to &2-sign. Move 'EQ' to &2-option. Move &1 to &2-low. Append &2. End-Of-Definition. * Define AddConsec. Move 'I' to &3-sign. Move 'BT' to &3-option. Move &1 to &3-low. Move &2 to &3-high. Append &3. End-Of-Definition. 13.12. See Also. Page 42 14. Begin_Of_Block, End_of_Block - Macros 14.1. Location. YREPINC. 14.2. Purpose Simplifies the typing when constructing Selection screen blocks. Note these macros are used by SAPAG (Well….that's where I got them from….) 14.3. Entry 14.3.1.Begin_Of_Block - Block name and Frame title. These are the standard parameters that you would use when you write the 'Selection Screen Begin Of Block' statement in full. 14.3.2.End_Of_Block - Block name These are the standard parameters that you would use when you write the 'Selection Screen End Of Block' statement in full. 14.4. Exit 14.5. Called By Begin_Of_Block BlockName Text-012 14.6. Calls None 14.7. Tables. None 14.8. System Variables. None 14.9. Description. These two macros simplify the coding required to set up block structures within a selection screen. 14.10. Examples. Begin_of_block PARAMS Text-001. Selection-Screen Comment 1(17) Text-016. Select-options: s_kdgrp for vbkd-kdgrp, s_kostl for pa0001-kostl no-extension, s_pernr for pa0001-pernr no-extension, s_vbeln for vbak-vbeln no-extension, s_wdate for catsdb-workdate obligatory. BlankLine. Selection-Screen Comment 1(17) Text-017. CheckLeft 1 19 Text-018 p_summry. End_Of_Block PARAMS. 14.11. Source. *Eject *********************************************************************** * * macro: Various Macros for Selection Screens. Page 43 * * Macro Arguments Function * Begin_Of_Block, Block Name Simplifies creation of * Block Title Screen blocks * * BlankLine None Puts a line on a screen * * End_Of_Block Block Name Simplifies creation of * Screen blocks * * RadioLeft Position Places a radio button * Title Length on a selection screen * Title with comment to left. * Parameter * Group. * * RadioRight Position Places a radio button * Title Length on a selection screen * Title with comment to right * Parameter * Group. * * CheckLeft Position Places a check box * Title Length on a selection screen * Title with comment to left. * Parameter * * CheckRight Position Places a check box * Title Length on a selection screen * Title with comment to right * Parameter Define Begin_Of_Block. Selection-Screen Begin Of Block &1 With Frame Title &2. End-Of-Definition. * Define BlankLine. Selection-Screen Uline. Selection-Screen Skip 1. End-Of-Definition. * Define End_Of_Block. Selection-Screen End Of Block &1. End-Of-Definition. * Define RadioLeft. Selection-Screen Begin Of Line. Selection-Screen Position &1. Selection-Screen Comment (&2) &3 Parameter &4 as RadioButton Group &5. Selection-Screen End Of Line. End-Of-Definition. * Define RadioRight. Selection-Screen Begin Of Line. Selection-Screen Position &1. Parameter &4 RadioButton Group &5. Selection-Screen Comment (&2) &3. Selection-Screen End Of Line. End-Of-Definition. * Define CheckLeft. Selection-Screen Begin Of Line. Selection-Screen Position &1. Selection-Screen Comment (&2) &3. Parameter &4 as CheckBox. Selection-Screen End Of Line. End-Of-Definition. * Define CheckRight. Selection-Screen Begin Of Line. Selection-Screen Position &1. Parameter &4 as checkbox. Selection-Screen Comment (&2) &3. Page 44 Selection-Screen End Of Line. End-Of-Definition. 14.12. See Also. BlankLine CheckLeft CheckRight RadioLeft RadioRight Page 45 15. BLANKLINE - Macro 15.1. Location. YREPINC. 15.2. Purpose. Inserts a line across a selection screen. 15.3. Entry. 15.4. Exit. 15.5. Called By. BlankLine 15.6. Calls. 15.7. Tables. 15.8. System Variables. 15.9. Description. This macro simplifies report screen generation by removing cimbersome commands. Itis used to place a line on the screen. 15.10. Examples. 15.11. SourceCode. See Begin_Of_Block. 15.12. See Also. Begin_Of_Block End_of_Block CheckLeft CheckRight RadioLeft RadioRight Page 46 16. CHECKLEFT, CHECKRIGHT - Macro 16.1. Location. YREPINC. 16.2. Purpose. This macro inserts a check box into a selection screen with the text to the left or right of the check box. 16.3. Entry. 16.3.1.Position. The position in characters to the start of the comment or check box from the left edge of the screen or block. 16.3.2.Title Length. The length of the title in characters 16.3.3.Title The Title or comment to be applied to the check box 16.3.4.Parameter The parameter name for the check box. 16.4. Exit. 16.5. Called By. CheckLeft 40 15 Text-015 p_check. 16.6. Calls. 16.7. Tables. 16.8. System Variables. 16.9. Description. This macro handles the required screen statements to place a check box on a selection screen with the text to the left of the check box. 16.10. Examples. Begin_of_block PARAMS Text-001. Selection-Screen Comment 1(17) Text-016. Select-options: s_kdgrp for vbkd-kdgrp, s_kostl for pa0001-kostl no-extension, s_pernr for pa0001-pernr no-extension, s_vbeln for vbak-vbeln no-extension, s_wdate for catsdb-workdate obligatory. BlankLine. Selection-Screen Comment 1(17) Text-017. CheckLeft 1 19 Text-018 p_summry. End_Of_Block PARAMS. Page 47 16.11. SourceCode. See Begin_Of_Block 16.12. See Also. Begin_Of_Block End_of_Block BlankLine RadioLeft RadioRight Page 48 17. RADIOLEFT, RADIORIGHT - Macro 17.1. Location. YREPINC. 17.2. Purpose. This macro inserts a radio button into a selection screen with the text to the left or right of the check box. 17.3. Entry. 17.3.1.Position. The position in characters to the start of the comment or radio button from the left edge of the screen or block. 17.3.2.Title Length. The length of the title in characters 17.3.3.Title The Title or comment to be applied to the radio button 17.3.4.Parameter The parameter name for the radio button 17.3.5. Group. The group that the radio button belongs to. 17.4. Exit. 17.5. Called By. RadioLeft 40 15 Text-015 p_check Group_One. 17.6. Calls. 17.7. Tables. 17.8. System Variables. 17.9. Description. This macro handles the required screen statements to place a radio button on a selection screen with the text to the left of the check box. 17.10. Examples. Begin_of_block PARAMS Text-001. Selection-Screen Comment 1(17) Select-options: s_kdgrp for s_kostl for s_pernr for s_vbeln for s_wdate for BlankLine. Selection-Screen Comment 1(17) Page 49 Text-016. vbkd-kdgrp, pa0001-kostl no-extension, pa0001-pernr no-extension, vbak-vbeln no-extension, catsdb-workdate obligatory. Text-017. RadioLeft 1 19 Text-018 p_summry group_1. RadioLeft 1 19 text-019 p_detail group_1. End_Of_Block PARAMS. 17.11. SourceCode. See Begin_Of_Block 17.12. See Also. Begin_Of_Block End_of_Block BlankLine CheckLeft CheckRight Page 50 18. COPYBOOK - Macro 18.1. Location. YRBINC. 18.2. Purpose. This macro copys the structure of an SAP table into an internal table of the same name prefixed by tb_. 18.3. Entry. 18.3.1. Table name to use. This is the table name that should be copied from the data dictionary 18.4. Exit. 18.5. Called By. CopyBook Lqua. 18.6. Calls. 18.7. Tables. 18.8. System Variables. 18.9. Description. This macro takes the repetitiveness out of creating an internal table for a dictionary structure. 18.10. Examples. Form Unload_Docs Using Pu_Funcname Pu_Outdir Pu_Program. * CopyBook: dokhl, doktl. 18.11. SourceCode. *eject *********************************************************************** * * macro: CopyBook * * Purpose: Copies the structure of a specified table into * an internal table of the same name prefixed with * t_ * * Entry: Table name to copy * * Exit: Declaration for table t_nnnnnn * * Called By: * * Calls: * * Modification History: * * Date Reason Version Who * Define CopyBook. Copy_Structure &1 &1. Page 51 End-Of-Definition. 18.12. See Also. Copy_Structure Page 52 19. COPY_STRUCTURE - Macro 19.1. Location. YRBINC. 19.2. Purpose. Copies a data dictionary structure into a specified internal table 19.3. Entry. 19.3.1.Structure Name to extract from the data dictionary. 19.3.2.Internal table name to copy strcuture to. 19.4. Exit. 19.5. Called By. Copy_Structure Lqua Lqua_Copy. 19.6. Calls. 19.7. Tables. 19.8. System Variables. 19.9. Description. 19.10. Examples. 19.11. SourceCode. *eject *********************************************************************** * * macro: Copy_Structure * * Purpose: Copies the structure of a specified table into * an internal table of a specified name prefixed * with a t_ * * Entry: Table name to copy * Internal declaration name minus t_ prefix * * Exit: Declaration for table t_nnnnnn * * Called By: * * Calls: * * Modification History: * * Date Reason Version Who * Define Copy_Structure. Data Begin of t_&1 occurs 0. Include Structure &2. Data End Of t_&1. End-Of-Definition. Page 53 19.12. See Also. CopyBook. Page 54 20. END_OF_REPORT - Macro 20.1. Location. YREPINC. 20.2. Purpose. Performs End of Report Processing. 20.3. Entry. 20.3.1.Select option table to use This parameter is the select option table the code is to process. These are the same arguments that are used in PSUB. 20.3.2.Title for this selection block. The title used for the selection block 20.4. Exit. 20.4.1.Report Footer printed 20.5. Called By. End_Of_Report s_selopt t_title. 20.6. Calls. RUNTOTALS TABLELINE SUBTITLES WRITECENTRE 20.7. Tables. 20.8. System Variables. SY-SUBRC 20.9. Description. This macro performs all end of report processing, including the printing of select option values that have more than 5 entries. This prevents a recursive call to the page heading routines due to the subtitles filling complete pages. 20.10. Examples. * Read Table t_sflight index 1. Perform InitBreak using 'T_SFLIGHT-CARRID' Text-002 c_no c_yes. Loop at t_sflight. Perform CheckBreaks using t_sflight. Perform WriteLine using t_sflight col_normal. EndLoop. End_Of_Report: s_carrid text-002. 20.11. SourceCode. *EJECT Define End_Of_Report. Page 55 * * * * If there are any totals to print then reportbrreaks record count will be > 1...... Read Table Reportbreaks index 2. If sy-subrc = 0. Perform RunTotals. Else. Perform TableLine. EndIf. Perform WriteCentre using 'End Of Report'. * * * Any select options ? Describe table &1 lines w__sublines. If w__sublines > 4. Skip 1. If w__eor_done = False. Write :/ 'The following select options were also used', 'during the selection process:'. Move True to w__eor_done. Else. Perform TableLine. Skip 1. EndIf. Loop at &1. Perform Subtitles using &2 &1-Sign &1-option &1-low &1-high true. EndLoop. EndIf. End-Of-Definition. 20.12. See Also. Psub Page 56 21. Format_Selects - Macro 21.1. Location. YREPINC. 21.2. Purpose. Formats a select table using 'FormatKey'. 21.3. Entry. 21.3.1.Select Option Tables to use. 21.4. Exit. All select options for that specified table formatted 21.5. Called By. Format_Selects select-optionstable. 21.6. Calls. FormatKey 21.7. Tables. 21.8. System Variables. 21.9. Description. Select Options tables although they have the same field names, have a structure dependant on the table specified in the select options statement and therefore cannot be passed to a generic subroutine as the structure of the passed table has to be specified. Format_Selects provides the loop to call FormatKey so that the programmer does not have to be concerned with this. 21.10. Examples. 21.11. SourceCode. *Eject *********************************************************************** * * macro: Format_Selects * * Purpose: Formats Select options using fornmat key * * Entry: Select option to format * * Exit: Select options formatted as per format key * * Called By: Format_Selects s_options * * Calls: * * Modification History: * * Date Reason Version Who * Define Format_Selects. Page 57 Loop at &1. Perform formatkey using &1-low changing &1-low. Perform formatkey using &1-high changing &1-high. Modify &1. EndLoop. End-Of-Definition. 21.12. See Also. Psub. FormatKey. SubTitles. Page 58 22. INIT_FUNC - Macro 22.1. Location. YBDCINC. 22.2. Purpose. Initialises a function's parameters when called via RFC from a different language other than SAP. 22.3. Entry. The Function name to be initialised in Quotes 22.4. Exit. Entry parameters to the function that are optional, have a proposed value and are passed in empty are set to the proposed value. Entry parameters that are strings are changed to upper case. Exit parameters are cleared to their initial state. Global parameters are initialised. 22.5. Called By. Init_Func 'Y_MOVE_FIBER_TO_BIN_RFC'. 22.6. Calls. 22.6.1.Functions: Function_Get. 22.6.2.Forms: Init_Global Read_YDCSet 22.7. Tables. 22.8. System Variables. SY-UNAME CHAR C 12 Session: SAP user from SA 22.9. Description. Functions can be called with a variety of parameters. These parameters can be optional, they can also have a proposal or default associated with them, so that if they are not provided by the calling routine, then SAP provides them with the value defined in the proposal. However, when functions are called as RFC's, from another language, more often than not, the languages do not support named parameters, rather they support positional parameters in which the meaning of the parameter is defined by it's position in the argument list rather than the name. As all the parameters must be specified in the call to the RFC, SAP does not carry out the default processing correctly. This macro will carry out that default processing and also, initailise any exported parameters with INITIAL. Many thanks to John Campbell, (John.campbell@54marine-avenue.freeserve.co.uk) for the Ascii/Char translation. Page 59 22.10. Examples. FUNCTION Y_CHECK_PO_AND_RETURN_SPLR_RFC. *"---------------------------------------------------------------------*"*"Local interface: *" IMPORTING *" VALUE(I_EBELN) LIKE YFIBER-EBELN *" EXPORTING *" VALUE(E_LIFNR) LIKE YFIBER-LIFNR *" EXCEPTIONS *" X_NO_PO_NUMBER *" X_PO_NOT_FOUND *"---------------------------------------------------------------------* * Data: w_status type status_code, " RFC Status w_ebeln like i_ebeln, " P/O Number w_lifnr like e_lifnr, " Supplier code w_text type status_text. * Init_func 'Y_CHECK_PO_AND_RETURN_SPLR_RFC'. * Move c_ok to w_status. Move i_ebeln to w_ebeln. Move '' to w_lifnr. * 22.11. SourceCode. *Eject *********************************************************************** * * macro: Init_Func * * Purpose: Initialises a function where it is called by * an RFC that uses positional parameters. * * ABAP uses named parameters when communicating * with a function. If any of these parameters are * specified as optional they do not need to be * passed. If these parameters also have a * Proposal, then the value of the parameter that * has not been passed is set to the value of the * proposal. * * However, when calling RFC's, many languages * do not have named parameters. As such these * languages which use positional parameters cannot * exclude any parameters at all. * * This then causes SAP to think that the parameter * has been passed (which it has), and that it is * blank (which it is), and not substitute the * proposal. * * This macro will collect the various optional * parameters and if the parameter passed is initial * will set it to the default. * * Additionally all export variables are initialised * * Entry: 'Function Name' * * Exit: * * Called By: Init_Func 'FUNCTION_NAME' * * Calls: * * Modification History: * * Date Reason Version Who * Page 60 Define Init_Func. * Constants: c_param_import like catfu-paramtype value '1', "Import parameter flag c_param_export like catfu-paramtype value '2', "Export parameter flag. * c_apostrophe type x value 39. " String delimiter * Field-Symbols: <f_param>. * Data: Begin of t__prmtab occurs 0. Include Structure CatFu. Data: End Of t__prmtab, * w__impdefault like catfu-impdefault, w__name like catfu-name, w__dump(30) type c, w__apost like c_apostrophe, w__fname like tfdir-funcname. * Perform Init_Global. Move &1 to w__fname. Translate w__fname to upper case. Perform Read_YDCSET using w__fname sy-uname changing w__ydcset. Zap t_bdcmsg. * * Get the function details and loop through the parameter list. If * the variable is an export variable then initialise it. If it is an * import variable that is optional with a proposal, set the variable * to the value of the proposal if the value passed is blank. * Call Function 'FUNCTION_GET' Exporting Funcname = W__Fname Tables Prmtab = T__Prmtab Exceptions Fm_Not_Found = 1 Nametab_Fault = 2 Ref_Field_Missing = 3 Ref_Structure_Missing = 4 Others = 5. If sy-subrc <> 0. Message E000 with 'FUNCTION_GET Failure ' &1 '' ''. Exit. EndIf. Loop at t__prmtab. * * If this parameter is an export parameter then initialise it. * If it's an import, check the proposal... * Case t__prmtab-paramtype. When c_param_import. * * Proposal here ?? * Assign (t__prmtab-name) to <f_param>. If not t__prmtab-impdefault is initial. If <f_param> is initial. * * Is this a quote ? (The start of a string) * Perform AscChar using t__prmtab-impdefault+0(1) changing w__apost. If w__apost = c_apostrophe. * * This is a string. Get rid of the quotes... * Move t__prmtab-impdefault+1 to w__impdefault. Split w__impdefault at t__prmtab-impdefault+0(1) into <f_param> w__dump. Page 61 Else. Move t__prmtab-impdefault to <f_param>. EndIf. EndIf. EndIf. * * * * If this parameter has a character component then change it to upper case. If not C__Numeric Cs T__Prmtab-Inttype. Translate <f_param> to upper case. EndIf. When c_param_export. Assign (t__prmtab-name) to <f_param>. Clear <f_param>. EndCase. EndLoop. End-of-Definition. 22.12. See Also. Init_Global Read_YDCSet. Page 62 23. PSUB - Macro 23.1. Location. YREPINC. 23.2. Purpose. Prints all select options for a given select-options table. 23.3. Entry. 23.3.1.Select Option Tables to use. 23.3.2.Description of data held in select options table. 23.4. Exit. All select options for that specified table printed. 23.5. Called By. Psub select-optionstable Datadescription. 23.6. Calls. SubTitles 23.7. Tables. 23.8. System Variables. 23.9. Description. Select Options tables although they have the same field names, have a structure dependant on the table specified in the select options statement and therefore cannot be passed to a generic subroutine as the structure of the passed table has to be specified. Psub provides the loop to call Subtitles so that the programmer does not have to be concerned with this. Psub will not print select options with more than 5 entries. (See End_Of_Report). 23.10. Examples. *eject ********************************************************************** * * Procedure: RHeader * * Purpose: Prints report header/sub titles etc * * Entry: * * Exit: * * Called By: * * Calls: * * Modification History: * * Date Reason Version Who * Form RHeader using p_sortby p_sortdir. Page 63 * Data: w_sutitle(50) w_srttitle(50) w_textno(3) w_srtfld(10) type type type type c, c, n, c. " " " " Sub title string. Sorted by Sort field text no Sort by text field * Field-Symbols <F_ColText>. " Sort text pointer. * Perform RepHeader Using c_vkorg sy-title. * * * Search Criteria Psub s_kondm text-019. Concatenate Text-007 p_pltyp into w_sutitle separated by ' '. Perform WriteCentre using w_sutitle. Psub s_lifnr Text-024. Psub s_ekgrp Text-025. Psub s_maabc Text-026. * * * Exceptions. If Not p_prat9 is Initial. Perform WriteCentre using text-011. Endif. If Not p_prata is Initial. Perform WriteCentre using Text-012. EndIf. If Not p_nil is Initial. Perform WriteCentre using Text-013. EndIf. * * * Sorted By ... Compute w_textno = p_sortby + 16. Concatenate 'TEXT-' w_textno into w_srtfld. Assign (w_srtfld) to <F_ColText>. Concatenate Text-014 <F_ColText> Into w_srttitle Separated by ' '. if w_sortdir = 'A'. Concatenate w_srttitle text-015 into w_srttitle separated by ' '. else. Concatenate w_srttitle text-016 into w_srttitle separated by ' '. endif. Perform WriteCentre using w_srttitle. Perform TableLine. Skip 1. Perform PrintTitles. Perform GHeader using p_sortby. EndForm. 23.11. SourceCode. *Eject *********************************************************************** * * macro: Psub. * * Purpose: Prints a set of sub titles. * * Entry: Select option table to use * Entry: Title for this selection block. * * Exit: Report header produced for current report * * * Called By: Psub s_vkorg text-021 * * Calls: Subtitles. Page 64 * * Modification History: * * Date Reason Version Who * Define PSub. * * Note that these are normally printed in the top of page event. * * In some cases where there are loads of criteria (more than a page * length then this will cause a top of page longer than one page * which means that the top of page is called again... and so on and * so forth. * * Check how many lines there are and if there are more than a * pages worth then display them at the end of the report. * Describe table &1 lines w__sublines. If w__sublines < 5. Loop at &1. Perform Subtitles using &2 &1-Sign &1-option &1-low &1-high False. EndLoop. Else. * * Too many options here - print them at the end of the report. * Perform Param_Subtitle using &2 'See option list at end of report' . EndIf. End-Of-Definition. 23.12. See Also. Ednd_Of_Report SubTitles. Page 65 24. WRITETABLE - Macro 24.1. Location. YREPINC. 24.2. Purpose. Writes an entire table to a specified column on a report 24.3. Entry. 24.3.1.Table to use 24.3.2. Field name of column to put text in.. 24.4. Exit. 24.5. Called By. WriteTable TableName fieldname. 24.6. Calls. WriteCol 24.7. Tables. 24.8. System Variables. 24.9. Description. This Macro will write a sub-table to a defined column on a report. The macro loops around the table calling WriteCol for each entry. 24.10. Examples. 24.11. SourceCode. *eject ********************************************************************** * * Procedure: WriteTable * * Purpose: Writes a table into asingle column * * Entry: Table to print * Column to use. * Exit: * * Called By: WriteTable t_table 'vbeln'. * * Calls: * * Modification History: * * Date Reason Version Who * Define WriteTable. Loop at &1. Perform WriteCol using &1 &2. EndLoop. Page 66 End-Of-Definition. 24.12. See Also. WriteCol. Page 67 25. ZAP - Macro 25.1. Location. YREPINC. 25.2. Purpose. Clears the header area and the table area of an internal user defined table. 25.3. Entry. 25.3.1.Table to clear 25.4. Exit. 25.5. Called By. Zap internal_table. 25.6. Calls. 25.7. Tables. 25.8. System Variables. 25.9. Description. Two statements are required completely clear an internal table. These are Clear (for the header area) and refresh for the main table. Zap allows these to be specified in one go. 25.10. Examples. Zap t_vbbp. 25.11. SourceCode. *Eject *********************************************************************** * * macro: Zap. * * Purpose: Clears and refreshes a table * * Entry: Table to clear * * Exit: Table header cleared * Table contents deleted * * Called By: Zap t_table * * Calls: * * Modification History: * * Date Reason Version Who * Define Zap. Clear &1. Refresh &1. End-Of-Definition. Page 68 25.12. See Also. Page 69 26. ALLHDRS 26.1. Location. YREPINC. 26.2. Purpose. Prints all group headers 26.3. Entry. 26.4. Exit. 26.5. Called By. 26.6. Calls. GROUPHEADER 26.7. Tables. 26.8. System Variables. 26.9. Description. Prints any group headers defined by InitBreak 26.10. Examples. 26.11. SourceCode. *EJECT *********************************************************************** * * Procedure: AllHdrs. * * Purpose: Prints all group headers * * Entry: * * Exit: * * Called By: * * Calls: * * Modification History: * * Date Reason Version Who * FORM AllHdrs. * Data w__lines type i. Describe Table ReportBreaks Lines w__lines. * * Don't print run totals here. * While w__lines > 0. Read table ReportBreaks Index w__lines. Perform GroupHeader Using ReportBreaks-Title ReportBreaks-Value. Compute w__lines = w__lines - 1. Page 70 EndWhile. EndForm. 26.12. See Also. Page 71 27. ASCCHAR 27.1. Location. YRBINC. 27.2. Purpose. Ascii(C$) or Chr$(N) 27.3. Entry. 27.3.1.Character to return Ascii code for Or Number to return character for 27.4. Exit. Opposite of above 27.5. Called By. 27.6. Calls. 27.7. Tables. 27.8. System Variables. 27.9. Description. This routine provides the same facility as that provided by the "ASC" and the "CHR$" functions in Basic. ie it returns the Ascii value of a character or the character associated with an Ascii value. In ALL languages that enable structures to be used, the value of a structure is always a character string. The values of the individual fields within the structure are always the correct type. By defining a structure of a single byte, Asc/Char conversion becomes easy. By assigning a character to the structure, and reading the field you obtain the ascii value. By assigning the field a value and reading the structure you obtain the character. 27.10. Examples. * Assign (t__prmtab-name) to <f_param>. If not t__prmtab-impdefault is initial. If <f_param> is initial. * * * Is this a quote ? (The start of a string) Perform AscChar using t__prmtab-impdefault+0(1) changing w__apost. If w__apost = c_apostrophe. * * * This is a string. Get rid of the quotes... Move t__prmtab-impdefault+1 to w__impdefault. Split w__impdefault 27.11. SourceCode. *EJECT *********************************************************************** Page 72 * * Procedure: AscChar * * Purpose: Ascii(C$) or Chr$(N) * * Entry: Character to return Ascii code for * Or Number to return character for * * Exit: Opposite of above * * * Called By: Perform AscChar using 98 changing w_char * Perform AscChar using 'A' changing w_num. * * Calls: * * Modification History: * * Date Reason Version Who * Form AscChar Using pu_in changing pc_out. * Data: Begin of t__chr, "ASCII/CHR Converter asc type x, End of t__chr, * w__len type i, w__type(1) type c. * * If pu_in is a character, return the ascii value, if it's * a value return the character. * Move 0 to pc_out. Describe field pu_in type w__type. Case w__type. When 'C'. Compute w__len = strlen( pu_in ). If w__len = 1. Move pu_in to t__chr. Move t__chr-asc to pc_out. EndIf. When Others. If pu_in > 0 and pu_in < 256. Move pu_in to t__chr-asc. Move t__chr to pc_out. EndIf. EndCase. EndForm. 27.12. See Also. Page 73 28. BUILDREPORT 28.1. Location. YREPINC. 28.2. Purpose. Adds report data field to table 28.3. Entry. 28.3.1.Data-field name. This is the name of the table field that should be included in the report. If you include a valid SAP table name as part of the field name, the routine matches up the field with the corresponding field in the data table, but at the same time obtains default values from the Data Dictionary for the full Table-Field combination. If the field does not occur anywhere other than in the internal table, then the only specification required is the field name 28.3.2.Data field title. This parameter contains the title that you wish to apply to the column. If this field is blank and the field name contains a valid table-field combination, then a title is supplied from the SAP data Dictionary. 28.3.3.Data field length. This parameter contains the output length for the field. If this field is zero, and the field name contains a valid table-field combination, then a length is supplied from the SAP data Dictionary. 28.3.4.FormatType. 'Unit' or 'Currency' or Format mask. This field defines the format of the output field. If the field is blank, then the output is via the conversion exit defined for the data-type of the field name in the Data Dictionary. If the format type is a valid format type, then the format is applied to the data field value before output. When the keyword 'Unit' or 'Currency' is specified, the Format Field (See 24.3.5 below) specifies the Unit or Currency format code. This may either be a literal code such as 'M', or a field which contains the relevant code within either the internal table used provide the report data, or a global variable. This field is optional and can be left blank if required. 28.3.4.1. Abap Documentation - Format Types. WRITE - Formatting options Options: ... ... ... ... ... ... ... ... ... ... ... ... ... ... NO-ZERO NO-SIGN DD/MM/YY MM/DD/YY DD/MM/YYYY MM/DD/YYYY DDMMYY MMDDYY YYMMDD CURRENCY w DECIMALS d ROUND r UNIT u EXPONENT e ... USING EDIT MASK mask ... USING NO EDIT MASK ... UNDER g ... NO-GAP (only with WRITE) (only with WRITE) ... LEFT-JUSTIFIED Page 74 ... CENTERED ... RIGHT-JUSTIFIED Note The formatting options UNDER g and NO-GAP are intended only output to lists and therefore cannot be used with WRITE ... TO. Option ... NO-ZERO Effect If the contents of f are equal to zero, only blanks are output; if f is of type C or N, leading zeros are replaced by blanks. Option ... NO-SIGN Effect The leading sign is not output if f is of type I, P or F. Option Option ... DD/MM/YY ... MM/DD/YY Effect If f is a date field (type D), the date is output with a 2-character year as specified in the user's master record. Both of these formatting options have the same value. Option Option ... DD/MM/YYYY ... MM/DD/YYYY Effect If f is a date field (type D), the date is output with a 4-character year as specified in the user's master record. Both of these formatting options have the same value. Option Option ... DDMMYY ... MMDDYY Effect Date formatting like the additions ... DD/MM/YY and ... MM/DD/YY, but without separators. Option ... YYMMDD Effect If f is a date field (type D), the date is output in the format YYMMDD (YY = year, MM = month, DD = Day). Option ... CURRENCY w Effect Correct format for currency specified in the field w. Treats the contents of f as a currency amount. The currency specified in w determines how many decimal places this amount should have. The contents of w are used as a currency key for the table TCURX; if there is no entry for w, the system assumes that the currency amount has 2 decimal places. Option ... DECIMALS d Effect d specifies the number of decimal places for a number field (type I, P or F) in d. If this value is smaller than the number of decimal places in the number, the number is rounded. If the value is greater, the number is padded with zeros. Since accuracy with floating point arithmetic is up to about 15 decimal places (see ABAP/4 number types), up to 17 digits are output with floating point numbers (type F). (In some circumstances, 17 digits are needed to differentiate between two neighboring floating point numbers.) If the output length is not sufficient, as many decimal places as possible are output. Negative DECIMALS specifications are treated as DECIMALS 0. Example Effect of different DECIMALS specifications: DATA: X TYPE P DECIMALS 3 VALUE '1.267', Y TYPE F VALUE '125.456E2'. WRITE: /X /X /X /Y /Y /Y DECIMALS DECIMALS DECIMALS DECIMALS DECIMALS DECIMALS 0, 2, 5, 1, 5, 20. "output: "output: "output: "output: "output: "output: 1 1.27 1.26700 1.3E+04 1.25456E+04 1.25456000000000E+04 Option ... ROUND r Effect Scaled output of a field of type P. The decimal point is first moved r places to the left (r > 0) or to the right (r < 0); this is the same as dividing with the appropriate exponent 10**r. The value determined in this way is output with the valid number of digits before and after the decimal point. If the decimal point is moved to the left, the number is rounded. For further information about the interaction between the formatting options CURRENCY and DECIMALS, see the notes below. Effect of different ROUND specifications: DATA: X TYPE P DECIMALS 2 VALUE '12493.97'. WRITE: /X /X /X /X ROUND -2, ROUND 0, ROUND 2, ROUND 5, "output: 1,249,397.00 "output: 12,493,97 "output: 124.94 "output: 0.12 Option ... UNIT u Effect Formats a value according to the unit specified in the field u. The contents of f are treated as a quantity. The unit specified in u determines how many decimal places should be output. If f has more places after the decimal point than determined in u, the output value will only have the number of decimal places determined by u, unless the operation truncates digits other than zero. If f has fewer places after the decimal point than determined by u, the option has no effect. The contents of u are used as a unit in the table T006, but if there is no entry, the formatting option has no effect. The field f which is to be output must have the type P. This option is used for table fields which have the Dictionary type QUAN, or for fields defined with reference to such fields (DATA ... LIKE ...). This formatting option excludes the options DECIMALS and ROUND. Example Suppose the unit 'STD' has 3 decimals DATA HOUR TYPE P DECIMALS 3 VALUE '1.200'. WRITE (6) HOUR UNIT 'STD'. "output: 1,2 HOUR = '1.230'. WRITE (6) HOUR UNIT 'STD'. "output: 1,230 Page 75 Option ... EXPONENT e Effect The field e defines a fixed exponent for a floating point number (type F). The mantissa is adjusted to the exponent by moving the decimal point and padding with zeros. With EXPONENT 0, the exponent specification is suppressed. However, if the output length is too short to accommodate all digits before the decimal point, the standard output format is used. Example Effect of different EXPONENT specifications: DATA: X TYPE P VALUE '123456789E2'. WRITE: /X /X(10) /X /Y /Y /Y /Y EXPONENT EXPONENT EXPONENT EXPONENT EXPONENT EXPONENT DECIMALS 0, 0, 3, -3, 9, 2 4. "output: "output: "output: "output: "output: 12345678900,000000 1,235E+10 12345678,90000000E+03 12345678900000,00E-03 12,34567890000000E+09 "output: 123456789,0000E+02 Option ... USING EDIT MASK mask Effect Outputs f according to the formatting template mask. Without this addition, f is output in the standard format for that particular type or with a format defined in the ABAP/4 Dictionary. The addition allows you to define a different format. You can specify the formatting template as follows: - '_' represents one character of the field f or one digit with type P or I - 'V' only with fields of type P or I: output of leading sign - 'LL' at beginning of template: left justify (standard) - 'RR' at beginning of template: right justify - '==conv' perform output conversion conv - ':', ... separator - (all other characters) When formatting, the characters '_' in the template are replaced from the left ('LL') or from the right ('RR') by the characters or digits (type P or I) of the field f. Notes 1. When using a template, you must specify the an explicit output length because otherwise the implicit output length of the field f is used. Usually, the template is longer than the implicit output length. 2. If the leading sign is to be output with a field of type P or I, you must specify the wildcard character V at the desired place. If this character does not appear in the template, no leading sign will be output if the value of f is negative. 3. When formatting a field of type P with decimal places, the value is not aligned with a character in the template representing the decimal point (either a period or a comma). If you want to have this character in the output, you must insert it in the correct position in the template and define the formatting from the right. If there is no character for the decimal point in the template, no such character is output. 4. Fields of type F are first converted to the standard format and the resulting sequence is then copied to the template in the case of a field of type C. 5. You implement the user-specific conversion conv with a function module called CONVERSION_EXIT_conv_OUTPUT, e.g. COONVERSION_EXIT_ALPHA_OUTPUT for the conversion of numeric values with leading zeros to a format without leading zeros for type C fields. If a Dictionary field is output and the domain of that field defines a conversion routine, this is executed automatically. For a description of the conversion, refer to the documentation of the appropriate function module. Example Formatted output of the time: DATA TIME TYPE T VALUE '154633'. WRITE (8) TIME USING EDIT MASK '__:__:__'. "Output: 15:46:33 If the output length "(8)" was not specified here, the output would be "15:46:" because the implicit output length for the type T is 6. Option ... USING NO EDIT MASK Effect Switches off a conversion routine specified in the ABAP/4 Dictionary. Option ... UNDER g Effect Output of the field f begins at the column from which the field g was output. If this happens in the same output line, the output of the field g is overwritten. Note After UNDER, the field g must be written exactly as the reference field in the previous WRITE statement, i.e. with an offset and length if necessary. The exception to this rule is if g is a text symbol. In this case, the reference field is determined by the number of the text symbol (not by the text stored there). Example Align output to the reference fields: FIELD-SYMBOLS <FNAME>. ASSIGN 'First Name' TO <FNAME>. WRITE: /3 'Name'(001), 15 <FNAME>, 30 'RoomNo', 40 'Age'(002). ... WRITE: / 'Peterson' UNDER 'Name'(001), 'Ron' UNDER <FNAME>, '5.1' UNDER 'RoomNo', (5) 24 UNDER TEXT-002. This produces the following output (numbers appear right-justified in their output fields!): Name Page 76 First Name RoomNo Age Peterson Ron 5.1 24 Option ... NO-GAP Effect Suppresses the blank after the field f. Fields output one after the other are then displayed without gaps. Example Output several literals without gaps: WRITE: 'A' NO-GAP, 'B' NO-GAP, 'C'. "Output: ABC If NO-GAP was not specified here, the output would have been "A B C" because one blank is always implicitly generated between consecutive output fields. Option ... LEFT-JUSTIFIED ... CENTERED ... RIGHT-JUSTIFIED Effect Left-justified, centered or For number fields (types I, standard output format, but other types, as well as for Examples Output to a list (WRITE): right-justified output. P and F), RIGHT-JUSTIFIED is the LEFT-JUSTIFIED is used for all templates. DATA: FIELD(10) VALUE 'abcde'. WRITE: / '|' NO-GAP, FIELD LEFT-JUSTIFIED NO-GAP, '|', / '|' NO-GAP, FIELD CENTERED NO-GAP, '|', / '|' NO-GAP, FIELD RIGHT-JUSTIFIED NO-GAP, '|'. * Output: |abcde | * | abcde | * | abcde| Formatting in a program field (WRITE...TO...) DATA: TARGET_FIELD1(10), TARGET_FIELD2 LIKE TARGET-FIELD1, TARGET_FIELD3 LIKE TARGET-FIELD1. WRITE: '123' LEFT-JUSTIFIED TO TARGET-FIELD1, '456' CENTERED TO TARGET-FIELD2, '789' RIGHT-JUSTIFIED TO TARGET-FIELD3. WRITE: / '|' NO-GAP, TARGET_FIELD1 NO-GAP, '|', / '|' NO-GAP, TARGET-FIELD2 NO-GAP, '|', / '|' NO-GAP, TARGET_FIELD3 NO-GAP, '|'. * Output: |123 | * | 456 | * | 789| Note Setting date format und decimal character Every user can specify in his/her master record (User defaults) how the date is to be formatted on output and whether the decimal character should be a comma or a period. You can also set these output parameters for a particular program by using the statement SET COUNTRY. Notes Specifying several formatting options You can use the additions of the first group (NO-ZERO, NO-SIGN, DD/MM/YY etc., CURRENCY, DECIMALS, ROUND, EXPONENT) simultaneously, provided it makes sense. You can combine the additions UNDER and NO-GAP with all other additions in any permutation; however, they are not taken into account until the field f has been formatted according to all the other options. Templates, conversion routines and alignment If you want to format a field using a special conversion routine, all the other additions (apart from UNDER and NO-GAP) are ignored. This also applies if the conversion routine is not explicitly specified, but comes from the ABAP/4 Dictionary. If you want to format a field using a template, the system first takes into account the options of the first group, and then places the result in the template. However, if you specify one of the date-related formatting options (DD/MM/YY etc.), the template is ignored. Finally, the formatted field or the template is copied to the target field according to the requested alignment. For type C fields, it is the occupied length that is relevant, not the defined length; this means that trailing blanks are not taken into account. Combined usage of CURRENCY, DECIMALS and ROUND The rounding factor (from the right) in WRITE price CURRENCY c ROUND r DECIMALS d results from the formula rounding factor = c + r - d. If DECIMALS is not specified, d = c applies. You read this formula in the following manner: The field price is supposed to be of ABAP/4 type P (or I); it contains a currency amount. The CURRENCY specification expresses how many decimal places price is to have and may differ from the definition of price (the decimal point is not stored internally, but comes from the type attributes of price). Normally, price is output with as many decimal places as the field has internally according to the type attributes or the CURRENCY specification. You can override this number of output decimal places with DECIMALS. The addition ROUND addition moves the decimal point r places to the left, if r is positive, otherwise to the right. This means that a $ amount is output with ROUND 3 in the unit 1000 $. According to the above formula, there can also be a "negative" rounding factor; then, the corresponding number of zeros is appended to the amount price on the right using the "rounding factor". However, the value of "rounding factor" must be at least equal to -14. Currency fields and DATA with DECIMALS If the field price is normally formatted with decimal places (e.g. fields for currency amounts), these are treated like a CURRENCY specification when rounding, if CURRENCY was not expressly specified. If present, the DECIMALS specification defines how many decimal Page 77 places are to be output after rounding. If the DECIMALS and the (explicit or implicit) CURRENCY specifications are different, rounding takes place according to the above formula, even if no ROUND specification was made (i.e. r = 0). If a field in the DATA statement was declared with DECIMALS n, WRITE treats it like a currency field with n decimal places. Examples Sales in pfennigs or lira: 246260 Unit TDM or TLira with 1 decimal place. DATA SALES TYPE P VALUE 246260. WRITE SALES CURRENCY 'DEM' ROUND 3 DECIMALS 1. " WRITE SALES CURRENCY 'ITL' ROUND 3 DECIMALS 1. " 2,5 246,3 TDM TLira Sales in pfennigs or lira: 99990 Unit TDM or TLira with 1 decimal place. SALES = 99990. WRITE SALES CURRENCY 'DEM' ROUND 3 DECIMALS 1. " 1,0 WRITE SALES CURRENCY 'ITL' ROUND 3 DECIMALS 1. " 100,0 TDM TLira Sales in pfennigs or lira: 93860 Unit 100 DM or 100 lira with 2 decimal places: SALES = 93860. WRITE SALES CURRENCY 'DEM' ROUND 2 DECIMALS 2. " 9,38 HDM WRITE SALES CURRENCY 'ITL' ROUND 2 DECIMALS 2. " 938,60 HLira Sales in pfennigs: 93840 Unit 1 DM without decimal places. SALES = 93860 WRITE SALES CURRENCY 'DEM' DECIMALS 0. " 938 DM DECIMALS 0. " 939 DM Sales in pfennigs: 93860 Unit 1 DM without decimal places. SALES = 93860. WRITE SALES CURRENCY 'DEM' Note Runtime errors: - WRITE_CURRENCY_ILLEGAL_TYPE: CURRENCY parameter with WRITE is not type C WRITE_ROUND_TOO_SMALL: Rounding parameter is less than -14 WRITE_UNIT-ILLEGAL_TYPE: UNIT parameter with WRITE is not type C Return -> ABAP/4 Editor Other additional formats are available. These are generally colour specifications. following colours can be used by specifying the text shown: The Figure 1 - Colour Codes 28.3.5.Format field. This field is used in conjunction with the Format Type field see 28.3.4 above. If the Format type field contains the words 'Unit' or 'Currency', then this field should contain either a valid Unit or Currency Code, or a variable that contains one of these codes. The variable may either be a field in the same record of the internal table that holds the data being reported on, or a variable defined within the report itself. 28.3.5.1.Abap Documentation - Unit. Page 78 Option ... UNIT u Effect Formats a value according to the unit specified in the field u. The contents of f are treated as a quantity. The unit specified in u determines how many decimal places should be output. If f has more places after the decimal point than determined in u, the output value will only have the number of decimal places determined by u, unless the operation truncates digits other than zero. If f has fewer places after the decimal point than determined by u, the option has no effect. The contents of u are used as a unit in the table T006, but if there is no entry, the formatting option has no effect. The field f which is to be output must have the type P. This option is used for table fields which have the Dictionary type QUAN, or for fields defined with reference to such fields (DATA ... LIKE ...). This formatting option excludes the options DECIMALS and ROUND. Example Suppose the unit 'STD' has 3 decimals DATA HOUR TYPE P DECIMALS 3 VALUE '1.200'. WRITE (6) HOUR UNIT 'STD'. "output: 1,2 HOUR = '1.230'. WRITE (6) HOUR UNIT 'STD'. "output: 1,230 28.3.5.2. Abap Documentation - Currency. Option ... CURRENCY w Effect Correct format for currency specified in the field w. Treats the contents of f as a currency amount. The currency specified in w determines how many decimal places this amount should have. The contents of w are used as a currency key for the table TCURX; if there is no entry for w, the system assumes that the currency amount has 2 decimal places. 28.4. Exit. None 28.5. Called By. CHECKBOX Perform BuildReport using p_name p_title p_length '' ''. 28.6. Calls. 28.7. Tables. dd01l dd03l dd04t - Domains Table Fields R/3 DD: Data element texts 28.8. System Variables. SY-SUBRC SY-LANGU INT4 X LANG C 4 1 Return value after specif SAP logon language key 28.9. Description. BuildReport populates an internal table prior to using the data stored in the table to format a report. Field and table names are converted to upper case before being stored in the table. The Table name if present and the field name are then used to locate the field entry in the SAP Data dictionary. The Data dictionary provides a ‘Domain’ name for the variable which is used to access the Domains table. The domains table provides the physical attributes of the field such as print width and conversion routines. The routine also uses information obtained from the Data dictionary to locate the field title. If the title parameter passed to the routine is blank, then the title retrieved is stored for use. In any case, the print parameters (Width and conversion routines) are stored in the table. The routine then examines the title of the field (either that passed, or that retrieved) to make sure that the column width is at least wide enough to accommodate the longest word in the title. The table used by this routine must be initialised before adding the first entry by using: Page 79 Refresh ReportTable. There must be one call to this routine for each column of information in the report. 28.10. Examples. Form Report_BadData Tables t_zisid Structure t_zisid. * Data: w_ermsg like t_zisid-ermsg, " Group heading.... w_matnr like t_zisid-matnr, w_text like dd04t-ddtext. " Concatenate Group hdr * Zap ReportTable. Perform BuildReport using 'ZISID-ZZSHIPNO' '' 0 '' ''. Perform BuildReport using 'ZISID-PRONU' '' 0 '' ''. Perform BuildReport using 'ZISID-EBELN' '' 0 '' ''. Perform BuildReport using 'ZISID-EBELP' '' 0 '' ''. Perform BuildReport using 'EKBE-MENGE' '' 0 '' ''. Perform BuildReport using 'MSEG-MBLNR' '' 0 '' ''. Perform BuildReport using 'MSEG-MJAHR' '' 0 '' ''. Perform BuildReport using 'MSEG-ZEILE' '' 0 '' ''. 28.11. SourceCode. *EJECT *********************************************************************** * * Procedure: BuildReport. * * Purpose: Adds report data field to table * * Entry: Data-field name * Data field title * Data field length * FormatType. 'Unit' or 'Currency' or format mask * Format field * * Exit: None * * Called By: Perform BuildReport * using field title format field * Format-field * * Calls: * * Modification History: * * Date Reason Version Who * FORM BUILDREPORT using p_field p_title like dd04t-ddtext p_len like dd03l-leng p_formattype like datatype-char0016 p_formatfield like dd03l-fieldname. * Tables: dd01l, dd03l, dd04t. Data: Begin Of t_dd01l occurs 0, DataType like dd01l-datatype, Convexit like dd01l-convexit, End Of t_dd01l, * Begin of t_dd03l occurs 0, Domname like dd03l-domname, As4local like dd03l-as4local, As4vers like dd03l-as4vers, Rollname like dd03l-rollname, leng like dd03l-leng, End Of t_dd03l, * Begin Of SplitTab occurs 0, word(50) type c, End Of SplitTab, Page 80 * w__table w__field w__fmask(30) w__ffield(30) w__tlen like like type type type dd03l-tabname, dd03l-fieldname, c, c, i. * clear ReportTable. * * * Check for table-field name or just field name..... Search p_field for '-'. If sy-subrc = 0. Split p_field at '-' into w__table w__field. Else. Move p_field to w__field. EndIf. Translate w__table to upper case. Translate w__field to upper case. * Move p_formattype to w__fmask. Translate w__fmask to upper case. Move p_formatfield to w__ffield. Translate w__ffield to upper case. * ReportTable-Table = w__table. ReportTable-FieldName = w__field. ReportTable-Title = p_title. ReportTable-ColWidth = p_len. ReportTable-Startpos = 0. ReportTable-ConvExit = ''. ReportTable-DataType = ''. Case w__fmask. When 'UNIT'. Move w__ffield to ReportTable-Unit. When 'CURRENCY'. Move w__ffield to ReportTable-Currency. When Others. Move w__fmask to ReportTable-Format. EndCase. * * * Get the details from the data dictionary ? if w__table <> ' '. Zap t_dd01l. Zap t_dd03l. Select domname as4local as4vers rollname leng into corresponding fields of table t_dd03l from dd03l where tabname = w__table and fieldname = w__field and as4local = 'A' and as4vers = '0000'. * * * Variable Characteristics Read Table t_dd03l index 1. Select single datatype convexit into corresponding fields of t_dd01l from dd01l where domname = t_dd03l-domname and as4local = t_dd03l-as4local and as4vers = t_dd03l-as4vers. * * * Title Texts Read Table t_dd01l index 1. if ReportTable-Title = ' '. Select ddtext Up to 1 rows Into ReportTable-Title From dd04t where rollname = t_dd03l-rollname and ddlanguage = sy-langu and as4local = 'A'. EndSelect. Page 81 endif. if p_len = 0. Move t_dd03l-leng to ReportTable-ColWidth. else. Move p_len to ReportTable-ColWidth. EndIf. If not t_dd01l-convexit is initial. Concatenate '==' t_dd01l-convexit into ReportTable-Convexit. EndIf. Move t_dd01l-datatype to ReportTable-DataType. endif. * * * Is column width less than an individual word in the title ? Clear SplitTab. Split ReportTable-Title at ' ' into table SplitTab. Loop at SplitTab. Compute w__tlen = strlen( SplitTab-Word ). if w__tlen >= ReportTable-ColWidth. ReportTable-ColWidth = w__tlen + 2. endif. endloop. Append ReportTable. ENDFORM. "BUILDREPORT. 28.12. See Also. CheckBox CheckBreaks FormatReport InitBreaks WriteLine PrintTotals 29. 30. Page 82 31. CENTREREPORT 31.1. Location. YREPINC. 31.2. Purpose. Sets a flag to tell formatreport to centre the report on the page or not. 31.3. Entry. 31.3.1.True or False 31.4. Exit. 31.5. Called By. NEWREPORT. Perform CentreReport using True. 31.6. Calls. 31.7. Tables. 31.8. System Variables. 31.9. Description. 31.10. Examples. * Modification History: * * Date Reason Version Who * Form NewReport. Zap ReportTable. Zap ReportBreaks. Perform CentreReport using True. Move True to w__runtotal. Move False to w__grouphdr. Move False to w__lineprinted. EndForm. *Eject *********************************************************************** * 31.11. SourceCode. *EJECT *********************************************************************** * * Procedure: CentreReport. * * Purpose: Sets a flag to tell formatreport to centre the * report on the page or not. * * Entry: True or False * * Exit: * Page 83 * Called By: Perform CentreReport using True * * Calls: * * Modification History: * * Date Reason * * Form CentreReport using pu_centre like true. Move pu_centre to w__centre. EndForm. 31.12. See Also. Page 84 Version Who 32. CHECKBOX 32.1. Location. YREPINC. 32.2. Purpose. Adds report data field to table as a check box . Figure 2Report With Check Boxes. 32.3. Entry. 32.3.1.Data-field table. This is the name of the table field that should be included in the report. If you include a valid SAP table name as part of the field name, the routine matches up the field with the corresponding field in the data table, but at the same time obtains default values from the Data Dictionary for the full Table-Field combination. If the field does not occur anywhere other than in the internal table, then the only specification required is the field name 32.3.2.Data field title. This parameter contains the title that you wish to apply to the column. If this field is blank and the field name contains a valid table-field combination, then a title is supplied from the SAP data Dictionary. 32.3.3.Data field length. This is the width of the column you wish the Check box to be centred in. The minimum (and the default width is 3) 32.4. Exit. None 32.5. Called By. 32.6. Calls. BUILDREPORT 32.7. Tables. 32.8. System Variables. SY-SUBRC SY-TABIX Page 85 INT4 X INT4 X 4 4 Return value after specif Runtime: Current line of 32.9. Description. CheckBox inserts a check box onto a report. The check box will appear in a column with a minimum width of three spaces. The check box can be used to allow end-users to select multiple lines from a report. 32.10. Examples. EndIf. Psub s_bname 'Developer'. Perform PrintTitles. EndForm. * Form UserRep. Zap ReportTable. Perform CheckBox using 'Selct' 'Process' 3. Perform BuildReport using 'usr01-bname' '' 0 '' ''. Perform BuildReport using 'Fulln' 'Full Name' 40 '' ''. Perform FormatReport. Set Pf-Status 'ZDLARTHR'. Move '0' to w_state. Loop at t_users. Perform WriteLine using t_users col_normal. 32.11. SourceCode. *EJECT *********************************************************************** * * Procedure: CheckBox. * * Purpose: Adds report data field to table as a check box * * Entry: Data-field table * Data field title * Data field length * * Exit: None * * Called By: Perform CheckBox * using table name title length * * Calls: BuildReport * * Modification History: * * Date Reason Version Who * Form CheckBox using p_name like dd03l-fieldname p_title like dd04t-ddtext p_length like dd03l-leng. * Constants: c__cboxwidth type i value 3. * Data: w__table(20) type c, w__name(20) type c. * Perform BuildReport using p_name p_title p_length '' ''. * * Locate this record and set the check box flag. * Search p_name for '-'. If sy-subrc = 0. Split p_name at '-' into w__table w__name. Else. Move p_name to w__name. EndIf. Translate w__table to upper case. Translate w__name to upper case. Read Table ReportTable with key Table = w__table FieldName = w__name. Page 86 if sy-subrc = 0. Move True to ReportTable-CheckBox. If ReportTable-ColWidth < c__cboxwidth. Move c__cboxwidth to ReportTable-ColWidth. EndIf. Modify ReportTable Index sy-tabix. EndIf. EndForm. 32.12. See Also. BuildReport CheckBreaks InitBreaks WriteLine PrintTotals Page 87 33. CHECKBREAKS 33.1. Location. YREPINC. 33.2. Purpose. Checks and prints total breaks 33.3. Entry. ReportData Table. 33.4. Exit. 33.5. Called By. Perform CheckBreaks tables datatable. 33.6. Calls. TABLELINE GROUPHEADER 33.7. Tables. 33.8. System Variables. SY-TABIX SY-INDEX SY-SUBRC INT4 X INT4 X INT4 X 4 4 4 Runtime: Current line of Number of loop passes Return value after specif 33.9. Description. CheckBreaks examines the table initialised by sequential calls to InitBreak. The values stored against the various break levels are checked. If these are the same as the current data line the numeric values on the data line are accumulated against the relevant break level. If a value in the break table is different from the corresponding value in the data line, the search terminates and all sub totals up to and including the subtotal check value that has changed are printed and the variables reset. The initial call to CheckBreaks also prints any group headers required. If any subtotals are printed, the corresponding group headers are then printed. 33.10. Examples. * if w_repid = c_zso0620. Perform CheckBreaks tables t_repdata. Endif. Perform Writeline tables t_repdata using Col_Normal. EndLoop. * * * Final totals. Perform RunTotals Tables t_repdata. 33.11. SourceCode. *Eject *********************************************************************** Page 88 * * Procedure: Checkbreaks * * Purpose: Checks and prints total breaks * * Entry: breakTotals table established * Entry ReportData Table. * * Exit: * * Called By: Perform CheckBreaks using p_datatable. * * Calls: * * Modification History: * * Date Reason Version Who * Form Checkbreaks using p_datatable. * Field-Symbols: <F_Group>. Data: t__coltotals type Decimal_Value occurs 0 with header line, t__carry type Decimal_Value occurs 0 with header line, w__breaklevel type i value -1, w__totprint type i, W__Pos Type i, W__Ffeed like c_yes, w__datatable(2000) type c. * Move p_datatable to w__datatable. If w__allhdr_done = False. Perform AllHdrs. Move True to w__allhdr_done. EndIf. Loop at ReportBreaks. * * Any value from a lower sub total ? * Don't do run totals here.... * if ReportBreaks-Title <> 'Run Total:'. Assign (ReportBreaks-field) to <F_Group>. if <F_group> <> ReportBreaks-value. * * Print a group total. * Move sy-tabix to w__breaklevel. * * Form Feed ? * If ReportBreaks-Ffeed = c_yes. Move c_yes to w__ffeed. Endif. Endif. Endif. EndLoop. * * Break at what level ? * If w__breaklevel <> -1. Zap t__carry. Compute w__totprint = w__breaklevel + 1. do w__totprint times. * * Add the totals from the previous level. * Read Table ReportBreaks Index sy-index. Move Reportbreaks-Totals[] to t__coltotals[]. Loop at t__coltotals. Move sy-tabix to w__pos. Read Table t__carry index w__pos. if sy-subrc = 0. Compute t__coltotals = t__coltotals + t__carry. Modify t__coltotals index w__pos. Page 89 Move t__coltotals to t__carry. Modify t__carry index w__pos. else. Clear t__carry. Move t__coltotals to t__carry. Append t__carry. Endif. EndLoop. Move t__coltotals[] to ReportBreaks-Totals[]. Modify ReportBreaks Index sy-index. * * * Print the totals at this level. if sy-index <= w__breaklevel. Perform PrintTotals using sy-index. Read Table ReportBreaks Index sy-index. * * * Update the break value and set the totals to 0. Assign (ReportBreaks-field) to <F_Group>. Move <F_group> to ReportBreaks-value. Loop at t__coltotals. Clear t__coltotals. Modify t__coltotals. EndLoop. Move t__coltotals[] to Reportbreaks-totals[]. Modify ReportBreaks index sy-index. EndIf. EndDo. * * * Form feed required ? If w__ffeed = c_yes. Perform TableLine. New-Page. EndIf. * * * Group Headers. Compute w__totprint = w__breaklevel. while w__totprint > 0. Read Table ReportBreaks Index w__totprint. Perform GroupHeader using ReportBreaks-Title ReportBreaks-Value. Compute w__totprint = w__totprint - 1. EndWhile. EndIf. Move w__datatable to p_datatable. EndForm. 33.12. See Also. AllHdrs BuildReport CheckBox InitBreaks WriteLine PrintTotals Page 90 34. CHECK_DOMAIN_VALUES 34.1. Location. YRBINC. 34.2. Purpose. This routine checks a domains entities to see if the specified value exists is one of those entities. 34.3. Entry. 34.3.1. Domain Name To Check 34.3.2. Value To Check 34.4. Exit. One parameter is returned by this routine and can have the following values: True: False: The domain contains the value specified The Domain name is wrong, or the value does not exist 34.5. Called By. 34.6. Calls. 34.7. Tables. 34.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 34.9. Description. This routine can be used to check values passed into functionns and forms via RFC's and so forth, rather than the more normal method of entry via a screen. 34.10. Examples. 34.11. SourceCode. *Exit ********************************************************************** * * Procedure: Check_Domain_Values * * Purpose: Checks that a value exists in the * specified domain * * Entry: Domain name to use * Value to check * * Exit: True - domain contains value * False - domain does not contain value * * Called By: Perform Check_Domain_Values * using w_domain w_value * changing w_valid. * * Calls: Page 91 * * Modification History: * * Date Reason Version * Form check_domain_values using pu_domain like dd07l-domname pu_value like dd07l-domvalue_l Changing pc_valid like true. * Call Function 'CHECK_DOMAIN_VALUES' Exporting domname = pu_domain value = pu_value Exceptions no_domname = 1 wrong_value = 2 dom_not_found = 3 Others = 4. If sy-subrc = 0. Move true To pc_valid. Else. Move false To pc_valid. Endif. Endform. 34.12. See Also. Page 92 Who 35. COLUMN_COLOUR 35.1. Location. YREPINC. 35.2. Purpose. Sets the colour of a specific column 35.3. Entry. 35.3.1.Column width 35.3.2.Colour to set 35.3.3.Value to write 35.3.4.Actual colour code to use. 35.4. Exit. 35.5. Called By. WRITEVALUE Perform Column_Colour using p_width p_value p_format col_heading. 35.6. Calls. SETCOLOUR 35.7. Tables. 35.8. System Variables. 35.9. Description. This procedure sets the back ground colour for the currently selected column. 35.10. Examples. * * Colours.... When 'COL_BACKGROUND' or 'GREY'. Perform Setcolour using Col_background. Write at (p_width) p_value no-gap. Perform SetColour using w__last_colour. When 'COL_HEADING' or 'BLUE' or 'DARK_BLUE'. Perform Column_Colour using p_width p_value p_format col_heading. When 'COL_NORMAL' or 'WHITE' or 'BEIGE'. If p_format <> 'BEIGE'. Perform Column_Colour using p_width p_value Page 93 35.11. SourceCode. *EJECT *********************************************************************** * * Procedure: Column_Colour * * Purpose: Sets the colour of a specific column * * Entry: Column width * Entry: Colour to set * Entry: Value to write * Entry: Actual colour code to use. * * Exit: Actual mask to use. * * Called By: Perform Getmask using mask_in changing mask_out * * Calls: * * Modification History: * * Date Reason Version Who * Form Column_Colour using p_width p_value p_format p_colour. * * Need to set intensified on for dark colours ?? * Data w__format(20) type c. * Move p_format to w__format. If w__format+0(4) = 'DARK'. Format Intensified on. Else. Format Intensified off. EndIf. * Perform Setcolour using p_colour. Write at (p_width) p_value no-gap. * * Ok, put intensity back to what it should be..... * * w__intense_flag is the NEXT not the CURRENT intensity setting * for the line....so if it's False, intensity is already on, * If it's True then intensity is off..... * * oh my gawd..... * If w__format+0(4) = 'DARK'. If w__intense_flag = True. Format Intensified off. EndIf. Else. If w__intense_flag = False. Format Intensified on. EndIf. EndIf. Perform SetColour using w__last_colour. EndForm. 35.12. See Also. Page 94 36. DUMP_TABLE 36.1. Location. YREPINC. 36.2. Purpose. This routine dumps the specified table one full record at a time. 36.3. Entry. 36.3.1.None 36.3.2. Tables: Unstructured table for dump 36.4. Exit. 36.4.1.None 36.5. Called By. 36.6. Calls. SAVEREPORT NEWREPORT BUILDREPORT 36.7. Tables. 36.8. System Variables. SY-LINSZ SY-INDEX SY-SUBRC SY-LSIND INT4 INT4 INT4 INT4 X X X X 4 4 4 4 Line size of list Number of loop passes Return value after specif Number of secondary list 36.9. Description. A debugging tool that will dump as much of the table as possible to the screen. 36.10. Examples. SELECT SINGLE WRKST FROM MARA INTO T_COLOR_LIST-WRKST WHERE MATNR = TB_RESERVE-PMTNR. APPEND T_COLOR_LIST. ENDIF. ENDLOOP. PERFORM DUMP_TABLE TABLES TB_RESERVE. EXIT. * * Send any non-coloured fiber to the colouring shop. * * Find the coloring shop order first. Take the first shop order * that has an order type of CLOR and the dates are this month. * Page 95 36.11. SourceCode. *EJECT *********************************************************************** * * Procedure: Dump_Table * * Purpose: This routine dumps the specified table * one full record at a time. * * Entry: None * * Tables: Unstructured table for dump * * Exit: None * * Called By: Perform DumpTable Tables t_tabname. * * Calls: * * Modification History: * * Date Reason Version Who * Form Dump_Table tables t_dumptable. * Field-Symbols <f_table_field>. * Data: w__fwidth like dd03l-leng, w__twidth like w__fwidth, w__nwidth like w__fwidth, w__linsz like sy-linsz. * Move sy-linsz to w__linsz. Perform SaveReport using 'DumpTab'. Perform NewReport. * * Get the table field details. * Read Table t_dumptable index 1. Do. Assign component sy-index of structure t_dumptable to <f_table_field>. If sy-subrc = 0. Describe field <f_table_field> output-length w__fwidth. Compute w__nwidth = w__twidth + w__fwidth + 2. If w__nwidth < 255. Perform BuildReport using sy-index '' w__fwidth '' ''. Move w__nwidth to w__twidth. Else. Exit. EndIf. Else. Exit. EndIf. EndDo. New-page line-size 255. Perform FormatReport. * Loop at t_dumptable. Perform WriteLine using t_dumptable col_normal. EndLoop. Move 1 to sy-lsind. New-Page line-size w__linsz. EndForm. 36.12. See Also. Page 96 37. FIRSTCOL 37.1. Location. YREPINC. 37.2. Purpose. Sets the first column of the report 37.3. Entry. 37.3.1. Direction to move the first column of the report. The first column displayed for the report is set in a relative fashion. Either the first or last column on the report, or plus or minus one column. These movements are decided upon by the value of this parameter: ï‚· ï‚· ï‚· ï‚· '<<' - Move to the left margin. '<' - Move Left 0ne column '>' - Move Right one column. '>>' - Move to Right margin. 37.4. Exit. 37.5. Called By. 37.6. Calls. 37.7. Tables. 37.8. System Variables. 37.9. Description. This routine sets the first column displayed at the left edge of the screen. This is the Report Column, rather than the column of characters. If for example the 2 nd column of the report starts at physical column 20 of the display, then perfoming Firstcol once with a value of '>' will display the 19 th actual column as the first column of the display. 37.10. Examples. Case w_ucomm. When 'PROCESS'. Perform Process_Selections using w_mode. Perform Message_Report. Perform Setup_Proposal. When 'PICK'. Break-Point. When 'SELECT'. Perform Chngall using 'X'. When 'DESELECT'. Perform Chngall using ' '. When 'LEFTMARGIN'. Perform FirstCol using '<<'. When 'ONEL'. Perform FirstCol using '<'. When 'ONER'. Perform FirstCol using '>'. When 'RIGHTMARGI'. Perform FirstCol using '>>'. EndCase. * Start-Of-Selection. * Page 97 37.11. SourceCode. *EJECT *********************************************************************** * * Procedure: FirstCol. * * Purpose: Sets the first column of the report * * Entry: '<<' - Move to the left margin. * '<' - Move Left 0ne column * '>' - Move Right one column. * '>>' - Move to Right margin. * * Exit: * * Called By: Perform FirstCol using '>>'. * * Calls: * * Modification History: * Form FirstCol using p_action. * Statics: w__macol like sy-macol, " Current Margin w__Cols type i. " Number of columns * Data: w__newm like sy-macol. " New column * Move 0 to w__newm. if w__macol is Initial. Move 1 to w__macol. Describe Table reportTable lines w__cols. EndIf. Case p_action. When '<<'. Move 0 to w__macol. " Left Margin When '<'. If w__macol > 0. Subtract 1 from w__macol. EndIf. When '>'. If w__macol < w__cols. Add 1 to w__macol. EndIf. When '>>'. Move w__cols to w__macol. " Right Margin EndCase. If w__macol <> 0. Read Table ReportTable Index w__macol. Compute w__newm = ReportTable-StartPos + 2. Scroll List To Column w__newm. Else. Scroll List to Column 0. EndIf. EndForm. 37.12. See Also. Page 98 38. FORMATKEY 38.1. Location. YRBINC. 38.2. Purpose. Formats a key. If it is all zeroes, then it is right justfied and padded with zeroes If it is alpha-numeric then it is left justified and padded with spaces 38.3. Entry. 38.3.1.Value to format 38.4. Exit. 38.4.1.Formatted value 38.5. Called By. 38.6. Calls. 38.7. Tables. 38.8. System Variables. 38.9. Description. When reading rows from SAP tables, it can happen that even though you specifiy a valid key, the relevant rows are not returned. This is due to the formatting of the key, and primarily happens with numeric type variables that are prefixed with zeroes. Having checked if the string contains only numbers, the routine then puts the key in an N type variable, and then takes the rightmost number of characters upto the key length. If the key contains alpha characters then it is placed in a C type variable and the left most keylength characters will be taken. 38.10. Examples. Move text-020 to t_zisid-ermsg. Modify t_zisid. Move True to w_baddata. Else. * * * Check that the 902 bin is empty for this item... Perform FormatKey using t_zisid-matnr changing w_lgpla. Zap t_lqua. Select lgnum lqnum letyp matnr from lqua into table t_lqua where lgpla = w_lgpla. EndIf. 38.11. SourceCode. *EJECT Page 99 ********************************************************************** * * Procedure: FormatKey * * Purpose: Formats a key. If it is all zeroes, then * it is right justfied and padded with * zeroes * * If it is alpha-numeric then it is left * justified and padded with spaces * * Entry: Value to format * * Exit: Formatted value * * Called By: Perform FormatKey using w_key changing * w_newkey. * * Calls: * * Modification History: * * Date Reason Version Who * Form FormatKey using pu_key changing pc_key. * Data: w_flen type i, " Field Length w_nkey(132) type n, " Numeric Key w_ckey(132) type c, " Character w_start type i. " Read key from * Describe field pu_key length w_flen. If pu_key co c_numbers. Move pu_key to w_nkey. * * This is right justified..... * Compute w_start = 132 - w_flen. Move w_nkey+w_start(w_flen) to pc_key. Else. Move pu_key to w_ckey. Move W_Ckey+0(w_flen) to pc_key. Translate pc_key to upper case. EndIf. EndForm. 38.12. See Also. Page 100 39. FORMATREPORT 39.1. Location. YREPINC. 39.2. Purpose. Calculates the positions of the report columns specified in table reptab. 39.3. Entry. 39.4. Exit. 39.5. Called By. 39.6. Calls. 39.7. Tables. 39.8. System Variables. SY-TABIX SY-LINSZ INT4 X INT4 X 4 4 Runtime: Current line of Line size of list 39.9. Description. This routine calculates the positioning of columns of information based upon column widths retrieved from the SAP Data dictionary or passed during calls to BuildReport. Having calculated the maximum width of the report, the routine then checks that width against the current report width, aborting with an error if the calculated report width is larger. If the report will fit in the currently defined report width, the system then calculates the offsets required to provide a columnar report centralised on the page. The FormatReport should be called once all the BuildReport calls for the columns have been processed. 39.10. Examples. Perform Perform Perform Perform Perform Perform Perform Perform BuildReport using BuildReport using BuildReport using BuildReport using BuildReport using BuildReport using BuildReport using FormatReport. 'ZISID-EBELN' 'ZISID-EBELP' 'EKBE-MENGE' 'MSEG-MBLNR' 'MSEG-MJAHR' 'MSEG-ZEILE' 'GRMNGE' '' 0 '' ''. '' 0 '' ''. '' 0 '' ''. '' 0 '' ''. '' 0 '' ''. '' 0 '' ''. Text-022 15 '' ''. * Sort t_zisid by ermsg zzshipno matnr ebeln ebelp. Loop at t_zisid Where ErMsg <> ''. If t_zisid-ErMsg <> w_ErMsg. Perform GroupHeader Using Text-019 t_zisid-ErMsg. Move t_zisid-ErMsg to w_ErMsg. 39.11. SourceCode. *Eject *********************************************************************** * Page 101 * Procedure: FormatReport. * * Purpose: Calculates the positions of the report columns * specified in table reptab. * * Entry: None Reptable is global * * Exit: None * * Called By: Perform FormatReport. * * Calls: * * Modification History: * * Date Reason Version Who * FORM FORMATREPORT. Data: w__maxlen type i, w__numcols type i, w__prevpos type i, w__width type i, w__gap type i, w__first type i. * * Find the maximum width of the report. Allow for vertical lines * Move 0 to w__maxlen. Move 1 to w__numcols. * * Centralise the report or not ?? * Loop At ReportTable. if sy-tabix = 1. Compute ReportTable-StartPos = 1. else. Compute ReportTable-StartPos = w__prevpos + w__Width + 1. endif. Modify ReportTable. w__prevpos = ReportTable-StartPos. w__width = ReportTable-ColWidth. Compute w__maxlen = w__maxlen + ReportTable-ColWidth + 1. Endloop. * if w__maxlen > sy-linsz. Message id 'SU' type 'E' number 0 with 'Report Width > Defined Width:' w__maxlen sy-linsz. endif. * * Centralise the report * Compute w__numcols = w__numcols + 1. Compute w__gap = ( sy-linsz - w__maxlen ) / 2. Read Table ReportTable Index 1. If w__centre = True. Move w__gap to w__first. Else. Move 1 to w__first. EndIf. Loop at ReportTable. If w__centre = True. Compute ReportTable-StartPos = ReportTable-StartPos + w__gap. EndIf. Move w__first to ReportTable-First. Move w__maxlen to ReportTable-Maxwidth. Modify ReportTable. Endloop. ENDFORM. "FORMATREPORT Page 102 39.12. See Also. BuildReport CentreReport CheckBox CheckBreaks InitBreaks WriteLine PrintTotals Page 103 40. GETMASK 40.1. Location. YREPINC. 40.2. Purpose. Locates a currency or unit mask 40.3. Entry. 40.3.1.Variable or literal mask This parameter can be either a literal mask - a string defining the mask directly, or a variable (in both cases these are strings) which contains a mask string. 40.4. Exit. 40.4.1.Actual mask to use. 40.5. Called By. WRITEVALUE Perform GetMask using p_currency changing w__fcode. 40.6. Calls. 40.7. Tables. 40.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 40.9. Description. Unit and Currency values have a format mask applied to them prior to output. The reporting routines can accept either literal masks, or variables containing a mask. This routine attempts to assign the passed variable to a field symbol. If an error occurs then this means that the value passed must be a literal. In that case the literal is passed straight back to the calling routine, otherwise the contents of the variable are passed back to the caller. 40.10. Examples. * * Now write out the value. If Not p_ConvExit is initial. Write at (p_width) p_value no-gap using edit mask p_ConvExit. Else. If Not p_Currency is Initial. Perform GetMask using p_currency changing w__fcode. Write at (p_width) p_value Currency w__fcode no-gap. Else. If Not p_Unit is Initial. Perform GetMask using p_unit changing w__fcode. Write at (p_width) p_value Unit w__fcode no-gap. Else. If p_format is initial. Page 104 40.11. SourceCode. *********************************************************************** * * Procedure: GetMask * * Purpose: Locates a currency or unit mask * * Entry: Variable or literal mask * * Exit: Actual mask to use. * * Called By: Perform Getmask using mask_in changing mask_out * * Calls: * * Modification History: * * Date Reason Version Who * Form getMask using p_mvin changing p_mvout. * Field-Symbols <f_fcode>. * Move '' to p_mvout. If not p_mvin is initial. Assign (p_mvin) to <f_Fcode>. * * Is this a variable or a literal... * If sy-subrc = 0. Move <F_Fcode> to p_mvout. " Is a variable. Else. Move p_mvin to p_mvout. " Is a literal. EndIf. EndIf. EndForm. 40.12. See Also. Page 105 41. GET_LOCAL_HOST 41.1. Location. YBDCINC. 41.2. Purpose. Gets / returns the current local host 41.3. Entry. 41.4. Exit. 41.4.1.Host Name 41.4.2.Server Name 41.5. Called By. IS_SERVICE_ACTIVE Perform Get_Local_Host Changing W__Local_Host W__Local_Serv. 41.6. Calls. GWY_READ-CONNECTIONS 41.7. Tables. 41.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 41.9. Description. This function returns the local server hosting the SAP system. 41.10. Examples. Data: End Of T__Conn, * W__Local_Host Like Gwy_Struct-Gwhost, W__Local_Serv Like Gwy_Struct-Gwserv, W__Tp Like Pu_Tp. * Move False To Pc_Active. Perform Get_Local_Host Changing W__Local_Host W__Local_Serv. Call Function 'GWY_READ-CONNECTIONS' Exporting Gwhost = W__Local_Host Gwserv = W__Local_Serv Tables Connections = T__Conn Exceptions 41.11. SourceCode. *EJECT ********************************************************************** * * Procedure: Get_Local_Host Page 106 * * Purpose: Gets / returns the current local host * * Entry: * * Exit: Host Name * Server Name * * Called By: Perform Get_Local_Host * changing w_host w_server * * Calls: * * Modification History: * * Date Reason Version Who * Form Get_Local_Host Changing Pc_Local_Host Like Gwy_Struct-Gwhost Pc_Local_Serv Like Gwy_Struct-Gwserv. Data: W__Sapsys(2). Call 'C_Sapgparam' Id 'NAME' Field 'SAPLOCALHOST' Id 'VALUE' Field Pc_Local_Host. Call 'C_Sapgparam' Id 'NAME' Field 'SAPSYSTEM' Id 'VALUE' Field W__Sapsys. Pc_Local_Serv = 'SAPGW'. Pc_Local_Serv+5 = W__Sapsys. Endform. 41.12. See Also. Page 107 42. GIVELINE 42.1. Location. YRBINC. 42.2. Purpose. Provides text on line number 'N' from a line of text within a specified column width 42.3. Entry. 42.3.1.Line Number of required line in text. This is the logical line number that you require. The lines are made up of the text split into the column width specified below. 42.3.2.Width of column. This is the width of the column that the line has to fit into. 42.3.3.Text to split This is the string of text that has to be split into lines of the specified width. 42.4. Exit. 42.4.1.Line N Line Nof specified text within a specified column width 42.5. Called By. YREPINC 42.6. Calls. 42.7. Tables. 42.8. System Variables. 42.9. Description. 42.10. Examples. Move Space to w__repline. Move False to w__more. Loop At ReportTable. Move Space to w__title. * * * Get a title for this column Perform GiveLine using w__hdrline ReportTable-ColWidth ReportTable-Title changing w__title. Compute w__offset = ReportTable-StartPos. Move Sy-Vline to w__repline+w__offset. if w__title <> ' '. Page 108 42.11. SourceCode. *EJECT *********************************************************************** * * Procedure: GiveLine. * * Purpose: Provides text on line number 'N' from a line of * text within a specified column width * * Entry: Line Number of required line in text * Width of column * Text to split * * Exit: Line N of specified text within a specified * Line width * * Called By: Perform GiveLine * Using LineNo ColWidth FullText * Changing Text * * Calls: * * Modification History: * * Date Reason Version Who * Form GiveLine using p_lineno type i p_colwidth type i p_fulltext changing p_text. Data: Begin of w__TextTable occurs 0, Word(20) type c, End Of w__TextTable, w__linecount type i, w__linelen type i, w__wordlen type i, w__totallen type i. * * Split the incoming text into seperate words. * Clear w__Texttable. split p_fulltext at ' ' into table w__TextTable. Move 1 to w__linecount. Move Space to p_text. Loop at w__TextTable. Compute w__linelen = Strlen( p_text ). Compute w__wordlen = Strlen( w__TextTable-Word ). Compute w__totallen = w__linelen + w__wordlen + 1. * * Space to add this word onto the line ? * if w__Totallen < p_colwidth. if w__linelen <> 0. Compute w__linelen = w__linelen + 1. endif. Move w__TextTable-Word to p_text+w__linelen. else. Compute w__linecount = w__linecount + 1. if w__linecount > p_lineno. Exit. else. Move w__TextTable-Word to p_text. endif. endif. endloop. * * End of the table ? * if w__linecount < p_lineno. move space to p_text. endif. Endform. Page 109 42.12. See Also. Page 110 43. ICON, SYMBOL or GRAPHIC 43.1. Location. YREPINC. 43.2. Purpose. Adds an icon or a symbol to a report 43.3. Entry. 43.3.1.Icon: Icon Name to print 43.3.2.Symbol: Symbol Name to print 43.3.3.Graphic: Icon/symbol name, name type Not callable directly by user 43.4. Exit. 43.4.1.None 43.5. Called By. ICON SYMBOL Perform Graphic using p_iconname True. 43.6. Calls. 43.7. Tables. 43.8. System Variables. 43.9. Description. The routine makes an entry into the internal report definition table ReportTable and flags the entry as either an icon or a symbol. When the report is printed, Writeline prints the data using the correct formatting process. The graphics can be also described as hot spots or check boxes. Hot spots are items in a report that can be activated by the click of a mouse button and are standard SAP items. However, Checkboxes are limited in that you cannot cause an 'At Line Selection' event using them. The best way is to use hot spot graphics. Additional files need to be included in your program before you can use this facility. If you wish to print only icons, include the following line in your program: Include <icon>. If you wish to use just symbols, insert ‘Include <Symbol>.’ In your program. comprehensive set, substitute <list> in the include statement. Page 111 For a more Below is an example report using icons. Figure 3 Icons on a report 43.10. Examples. * Calls: * * Modification History: * * Date Reason * Form Icon using p_iconname p_hotspot. Perform Graphic using p_iconname True. EndForm. * Form Symbol using p_symbolname. Perform Graphic Using p_symbolname False. EndForm. * Form Graphic using p_name p_icon. Version Who 43.11. SourceCode. *Eject *********************************************************************** * * Procedure: Icon, Symbol, Graphic * * Purpose: Adds an icon or a symbol to a report * * Entry: Icon: Icon Name to print * Entry: Symbol: Symbol Name to print when check field * is true. * Entry: Graphic: Icon/symbol name, name type * Not callable directly by user * * Entry: Hotspot - True or False * Entry: Symbol: Field for symbol value check * Entry: Symbol: Symbol Name to print when check fld is * false. * Exit: None * * Called By: Perform Icon using ICON_CHANGE. * * Calls: * * Modification History: * * Date Reason Version Who * Form Icon using p_iconname p_hotspot like true. Perform Graphic using p_iconname True p_hotspot '' ''. EndForm. * Page 112 Form Symbol using p_True_symbol p_hotspot like True p_check_field p_False_symbol. Perform Graphic Using p_True_symbol False p_hotspot p_check_field p_false_symbol. EndForm. * Form Graphic using p_name p_icon p_hotspot like true p_check_field p_false_symbol. Clear ReportTable. if p_icon = True. Move True to ReportTable-Icon. Else. Move True to ReportTable-Symbol. Endif. Move p_hotspot to ReportTable-hotspot. Move p_false_symbol to ReportTable-FalseSym. Move p_name to ReportTable-Isyname. Move p_check_field to ReportTable-FieldName. Move 3 to ReportTable-ColWidth. Append ReportTable. EndForm. 43.12. See Also. Page 113 44. GROUPHEADER 44.1. Location. YREPINC. 44.2. Purpose. Prints a Group Header line. The group header line is the purple line shown on the report extract below: Figure 4 A Report Group Header Line 44.3. Entry. 44.3.1. Group Header Title. This is the title of the header. Normally a column title, this is printed to the left of the group header. 44.3.2. Group Header Value. This is the value associated with this group header 44.4. Exit. 44.5. Called By. ALLHDRS CHECKBREAKS Perform GroupHeader using ReportBreaks-Title ReportBreaks-Value. 44.6. Calls. TABLELINE WLINE 44.7. Tables. 44.8. System Variables. SY-VLINE CHAR C 1 Constant: Vertical bar 44.9. Description. The SAP GUI performs various actions when scrolling based upon the colour of the line. Using Group headings will cause all the data lines under that group heading to scroll up, keeping the existing group heading in view until it is superseded by another group header. This routine formats a data line with the relevant information and vertical lines to enable it to be integrated into the current report format then outputs that line using the Col_Group colour. Page 114 44.10. Examples. * * Single field.... Compute w_textno = 16 + p_sortby. Concatenate 'TEXT-' w_textno into w_hdrt. Assign (w_hdrt) to <f_hdrtext>. * Assign Component p_sortby of Structure t_repdata to <f_hdrval>. Perform GroupHeader using <F_Hdrtext> <F_HdrVal>. Else. * * * Material... if p_sortby = 1. Concatenate text-017 t_repdata-matnr '(' t_repdata-maktx ')' into w_hdrtitle separated by ' '. 44.11. SourceCode. *EJECT *********************************************************************** * * Procedure: GroupHdr. * * Purpose: Prints a Group Header line * * Entry: Group Header Title * Entry: Group Header value * * Exit: None * * Called By: Perform GroupHeader using Title Value. * * Calls: wline * PrintTitles * * Modification History: * * Date Reason Version Who * FORM GROUPHEADER using p_title p_value. Data: w__repline(255) type c, w__offset type i, w__required type i. * If w__lineprinted = True. Perform TableLine. EndIf. * * Have we enough room to print this plus column titles * * * If MaxTline is 0, then the titles have not been printed, and * we must be at the top of the page so we don't really care anyway. * * However, if MaxTline<>0 then the titles have been printed at * least once and we can be anywhere on the page.... * if w__grouphdr = False. Read Table ReportTable Index 1. Move True to w__grouphdr. If ReportTable-MaxTline <> 0. Compute w__Required = ReportTable-MaxTLine + 3. Reserve w__Required Lines. Endif. Move space to w__repline. Compute w__offset = ReportTable-StartPos. Move sy-vline to w__repline+w__offset. Compute w__offset = w__offset + 1. Move p_title to w__repline+w__offset. Compute w__offset = w__offset + Strlen( p_title ) + 1. Page 115 Move p_value to w__repline+w__offset. Compute w__offset = ReportTable-StartPos + ReportTable-MaxWidth. Move sy-vline to w__repline+w__offset. Perform WLine Using w__repline Col_Group. Perform TableLine. Move False to w__grouphdr. Move False to w__lineprinted. Endif. ENDFORM. " Group Header. 44.12. See Also. Page 116 45. INITBREAK 45.1. Location. YREPINC. 45.2. Purpose. Initialises report breaks table 45.3. Entry. 45.3.1.Field to break on. 45.3.2.Title of field. 45.4. Exit. 45.5. Called By. WRITELINE Perform Initbreak using '*' 'Run Total:' c_no c_yes. 45.6. Calls. 45.7. Tables. 45.8. System Variables. 45.9. Description. The routine makes an entry in an internal tables containing the field name of the report break, it’s title and initial value. The routine then scans the report data table and provides an entry for each numeric column in the report so that totals can be stored at each break level. 45.10. Examples. Perform BuildReport using 'SELLTOTAL' text-005 15 'CURRENCY' 'WAERK'. Perform BuildReport using 'NETWR' text-014 15 'CURRENCY' 'WAERK'. Perform BuildReport using 'WAERK' Text-012 0 '' ''. Perform FormatReport. Read Table t_revenue Index 1. Perform InitBreak using 'T_REVENUE-CENDNG' Text-015 Perform InitBreak using 'T_REVENUE-VB' Text-006 Perform InitBreak using 'T_REVENUE-ENAME' Text-007 Perform InitBreak using 'T_REVENUE-ABTEI' Text-008 Perform InitBreak using 'T_REVENUE-KTEXT' Text-009 Perform SaveReport using c_main_report. * * c_no c_no c_no c_no c_no c_yes. c_yes. c_yes. c_yes. c_yes. And the billing report. 45.11. SourceCode. *EJECT *********************************************************************** * * Procedure: InitBreak * Page 117 * Purpose: Initialises report breaks table * * Entry: Field to break on. * Entry: Title of field. * * Exit: * * Called By: Perform InitBreak using 'fieldname' * 'title' * FormFeed Yes/No * Print Break Yes/No * * Calls: * * Modification History: * * Date Reason Version * * * Initialise a report break. * Form InitBreak Using p_field p_title p_formfeed p_print. Field-Symbols <TField>. * Data: t__cols like vbak-netwr occurs 0 with header line. * * Get access to the field value to set the initial break value * clear ReportBreaks. * * Get the table name.... * Move p_field to ReportBreaks-field. Move p_title to ReportBreaks-title. Move p_formfeed to ReportBreaks-Ffeed. Move p_print to ReportBreaks-Print. If p_field <> '*'. Assign (p_field) to <TField>. Move <TField> to ReportBreaks-value. Else. Move '*' to ReportBreaks-Value. EndIf. * * Set up the totals columns. * Zap T__Cols. Loop at ReportTable. Clear T__Cols. Move 0 to t__cols. Append t__cols. EndLoop. Move t__cols[] to ReportBreaks-Totals[]. Append ReportBreaks. EndForm. 45.12. See Also. Page 118 Who 46. INIT_GLOBAL 46.1. Location. YBDCINC. 46.2. Purpose. Initialises all globally declared variables 46.3. Entry. 46.4. Exit. Global variables (with some exceptions) set to Initial values 46.5. Called By. Init_Func - macro Perform Init_Global. 46.6. Calls. 46.7. Tables. 46.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 46.9. Description. This routine scans the current SAP Instance's memory space for variables that are defined at a global level. If these variable names are not found in the list of exceptions defined in the routine, then these variables are cleared. The reason behind this occured when a large group of programmers were working on a project. One of the programmers insisted on using global variables, which the others did not. Instead of having to keep track of what this one programmer was upto, this routine was written so that he could be forgotten..... 46.10. Examples. Data: End Of t__prmtab, * w__impdefault w__name w__dump(30) w__fname like like type like catfu-impdefault, catfu-name, c, tfdir-funcname. * Perform Init_Global. Move &1 to w__fname. Translate w__fname to upper case. Perform Read_YDCSET using w__fname sy-uname changing w__ydcset. Zap t_bdcmsg. * * * Get the function details and loop through the parameter list. If the variable is an export variable then initialise it. If it is an 46.11. SourceCode. *EJECT *********************************************************************** * Page 119 * Procedure: Init_Global * * Purpose: Initialises all globally declared variables * * Entry: * * Exit: Global variables (with some exceptions) set to * Initial values * * Called By: Perform Init_Global * * Calls: * * Modification History: * * Date Reason Version Who * Form INIT_GLOBAL. * Field-Symbols: <F_GLOBAL>, <F_LITL>. " This occurs in 40A and above it " specifies that a field is a " fixed literal. For systems <40a " assign it to a dummy var " that is always false. * Data: Begin Of T_Fieldlist Occurs 0. Include Structure Rfieldlist. Data: End Of T_Fieldlist, * W_Clearit(1) Type C, W_Strlen Type I, W_First2(2) Type C, W_Flitl(18) Type C. * * Get A List Of Global Variables For The Zabaco Function Module. * The Program Name For This Is Saplzabaco * Call Function 'GET_GLOBAL_SYMBOLS' Exporting Program = C_Main_Program Tables Fieldlist = T_Fieldlist Exceptions Others = 1. If Sy-Subrc = 0. * * Set Up The Fixed Literal Field Symbol. * If Sy-Saprl+0(2) < '40'. Move 'False' To W_Flitl. Else. Move 'T_Fieldlist-Flitl' To W_Flitl. Endif. Assign (W_Flitl) To <F_Litl>. * Loop At T_Fieldlist. * * Only Look At W_ Or Wt_ Style Variables, Or Tables. * Move True To W_Clearit. Move T_Fieldlist-Name+0(2) To W_First2. * * If The Variable Is A Fixed Literal Ignore It (A Constant) * If <F_Litl> Is Initial. * * Clear It Unless..... * Case W_First2. When '$$'. Clear W_Clearit. When '%_'. Clear W_Clearit. When '<%'. Clear W_Clearit. Page 120 When When When When When When When When * * * * * 'C_'. 'RE'. 'RS'. 'SY'. 'SC'. 'TE'. 'ZB'. Others. Clear Clear Clear Clear Clear Clear Clear W_Clearit. W_Clearit. W_Clearit. W_Clearit. W_Clearit. w_Clearit. W_Clearit. Check To See If The 2nd & 3rd Characters Are __. If So These Are Zbdccinc Variables So Don't Clear Them. Search T_Fieldlist-Name For '__'. If Sy-Subrc = 0 And Sy-Fdpos = 1. Clear W_Clearit. Else. If T_Fieldlist-Name+0(1) = '?'. Clear W_Clearit. Else. If T_Fieldlist-Name+0(4) = 'COL_'. Clear W_Clearit. Else. If T_Fieldlist-Name = 'TRUE' Or T_Fieldlist-Name = 'FALSE' Or T_Fieldlist-Name = 'SPACE'. Clear W_Clearit. Endif. Endif. Endif. Endif. Endcase. If W_Clearit = True. Assign (T_Fieldlist-Name) To <F_Global>. Clear <F_Global>. Endif. Endif. Endloop. Endif. Endform. 46.12. See Also. Page 121 47. IS_SERVICE_ACTIVE 47.1. Location. YBDCINC. 47.2. Purpose. Check to see if a specified service is Active. NOTE: This routine checks to see if the specified service is active. If that service is loaded but currently stopped then it is still considered active by SAP (RSMONGWY) However, if the service is unloaded then this function returns false. 47.3. Entry. 47.3.1.Service Name to Check 47.4. Exit. 47.4.1.True - Service Active 47.4.2.False - Service not available 47.5. Called By. 47.6. Calls. GWY_READ_CONNECTIONS GET_LOCAL_HOST 47.7. Tables. 47.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 47.9. Description. This procedure verifies if a given system is active or not. 47.10. Examples. FUNCTION Z_IS_ABACO_ACTIVE. *"---------------------------------------------------------------------*"*"Local interface: *" EXPORTING *" VALUE(E_ACTIVE) LIKE DATATYPE-CHAR0001 *"---------------------------------------------------------------------* PERFORM IS_SERVICE_ACTIVE USING 'ABACO' CHANGING E_ACTIVE. ENDFUNCTION. 47.11. SourceCode. *EJECT ********************************************************************** * * Procedure: Is_Service_Active * Page 122 * Purpose: Check to see if a specified service is * Active. * * NOTE: This routine checks to see if the * specified service is active. If * that service is loaded but * currently stopped then it is still * considered active by SAP (RSMONGWY) * However, if the service is * unloaded then this function returns * false. * * Entry: Service Name to Check * * Exit: True - Service Active * false - Service not available * * Called By: Perform Is_Service_Active using 'ABACO' * changing w_active. * * Calls: * * Modification History: * * Date Reason Version Who * Form Is_Service_Active Using Pu_Tp Like Gwy_Conn-Tp Changing Pc_Active Like True. * Data: Begin Of T__Conn Occurs 0. Include Structure Gwy_Conn. Data: End Of T__Conn, * W__Local_Host Like Gwy_Struct-Gwhost, W__Local_Serv Like Gwy_Struct-Gwserv, W__Tp Like Pu_Tp. * Move False To Pc_Active. Perform Get_Local_Host Changing W__Local_Host W__Local_Serv. Call Function 'GWY_READ_CONNECTIONS' Exporting Gwhost = W__Local_Host Gwserv = W__Local_Serv Tables Connections = T__Conn Exceptions Gwy_Unknown_Opcode = 01 Gwy_Communication_Failure = 02 Gwy_Get_Tab_Failed = 03 Gwy_Newline_Failed = 04 Gwy_Tablen_Too_Short = 05 Gwy_Get_Opcode_Failed = 06 Gwy_Get_Gwhost_Failed = 07 Gwy_Get_Gwserv_Failed = 08. If Sy-Subrc = 0. Move Pu_Tp To W__Tp. Translate W__Tp To Upper Case. Loop At T__Conn Where Tp = W__Tp And State = 'CONNECTED'. Move True To Pc_Active. Endloop. Endif. Endform. 47.12. See Also. Page 123 48. NEWBDC 48.1. Location. YBDCINC. 48.2. Purpose. Starts a new BDC session 48.3. Entry. 48.3.1.None 48.4. Exit. 48.5. Called By. 48.6. Calls. 48.7. Tables. 48.8. System Variables. 48.9. Description. Just sets a flag..... 48.10. Examples. C_LT12 Type Transaction_Code Value 'LT12', C_SAPML03T Type Program_Name VALUE 'SAPML03T'. * Data: w_trans type Transaction_Code, w_text like t100-text, w_tanum like ltap-tanum. * Perform NewBdc. If not pu_lt01-Matnr is initial. Perform ZBDC_FillScreen using c_sapml03t 0101 pu_lt01. Perform ZBDC_Field using 'BDC_OKCODE' c_enter. Perform ZBDC_FillScreen using c_sapml03t 0102 pu_lt01. Perform ZBDC_Field using 'BDC_OKCODE' c_enter. Perform Z_Call_bdc tables t_bdcmsg using c_lt01. Else. 48.11. SourceCode. ********************************************************************** * * Procedure: NewBDC * * Purpose: Starts a new BDC session * * Entry: None * * Exit: * * Called By: Perform NewBDC * * Calls: * Page 124 * Modification History: * * Date Reason * Form NewBDC. Move False to w__BDCOpen. EndForm. 48.12. See Also. Page 125 Version Who 49. PRINTTITLES 49.1. Location. YREPINC. 49.2. Purpose. Prints titles for the columns of the report 49.3. Entry. 49.4. Exit. 49.5. Called By. 49.6. Calls. TABLELINE GIVELINE WLINE 49.7. Tables. 49.8. System Variables. SY-VLINE CHAR C 1 Constant: Vertical bar 49.9. Description. Using data previously built up from calls to BuildReport and FormatReport, this routine loops through the table constructed by these calls, printing one line of each column title. This process continues until nothing is printed across all columns. PrintTitles should only be called after all calls to BuildReport and FormatReport have been processed. 49.10. Examples. Perform WriteCentre using w_title. EndIf. * Describe table r_vbeln lines w_lines. if w_lines <> 0. Psub r_vbeln Text-011. EndIf. * Describe table r_bwart lines w_lines. if w_lines <> 0. Psub r_bwart Text-016. EndIf. * Write p_close to w_title. Concatenate Text-017 w_title into w_title. Perform WriteCentre using w_title. Perform PrintTitles. *eject. End-Of-Page. Perform TableLine. *eject Start-Of-Selection. 49.11. SourceCode. *EJECT *********************************************************************** Page 126 * * Procedure: PrintTitles. * * Purpose: Prints titles for the columns of the report * * Entry: * * Exit: None * * Called By: Perform PrintTitles * * Calls: wline * GiveLine * * Modification History: * * Date Reason Version Who * FORM PRINTTITLES. data: w__repline(255) type c, " Data line to print w__title like dd04t-ddtext, " Column title w__offset type i, " Offset to start of column w__hdrline type i, " Number of title line w__lastpos type i, " Last column of report w__more like " More to print ? datatype-char0001. * Perform TableLine. Move 1 to w__hdrline. * * Get the last report column position * Read Table ReportTable Index 1. Compute w__LastPos = ReportTable-StartPos + ReportTable-MaxWidth. do. Move Space to w__repline. Move False to w__more. Loop At ReportTable. Move Space to w__title. * * Get a title for this column * Perform GiveLine using w__hdrline ReportTable-ColWidth ReportTable-Title changing w__title. Compute w__offset = ReportTable-StartPos. Move Sy-Vline to w__repline+w__offset. if w__title <> ' '. Compute w__offset = w__offset + 1. Move w__title to w__repline+w__offset. Move True to w__more. endif. EndLoop. * * Anything to print ? * if w__more = True. Compute w__hdrline = w__hdrline + 1. Move sy-vline to w__repline+w__lastpos. Perform WLine Using w__repline Col_Heading. else. exit. endif. enddo. * * Update the max title line field ? * Read Table ReportTable Index 1. if ReportTable-MaxTline = 0. Loop At ReportTable. Compute ReportTable-MaxTline = w__hdrline + 1. Page 127 Modify ReportTable. EndLoop. Endif. Perform TableLine. ENDFORM. " PrintTitles 49.12. See Also. Page 128 50. PRINTTOTALS 50.1. Location. YREPINC. 50.2. Purpose. Prints break level totals. 50.3. Entry. 50.3.1.Data tables to print totals for 50.3.2.Current total level 50.4. Exit. 50.5. Called By. CHECKBREAKS RUNTOTALS. Perform PrintTotals using sy-index. 50.6. Calls. TABLELINE SETCOLOUR WRITEVALUE 50.7. Tables. 50.8. System Variables. SY-VLINE SY-TABIX CHAR C INT4 X 1 4 Constant: Vertical bar Runtime: Current line of 50.9. Description. PrintTotals prints the totals accumulated during calls to Checkbreaks upto and including the break level passed. 50.10. Examples. * * * * Don't do a run total here - as run totals are not required. Force a check break. Describe Table ReportBreaks lines w_lines. Subtract 1 from w_lines. Do w_lines times. Perform PrintTotals tables t_adjust using sy-index. EndDo. Perform TableLine. Perform WriteCentre using Text-019. Else. Message W000 with Text-022. EndIf. *Eject 50.11. SourceCode. *EJECT Page 129 *********************************************************************** * * Procedure: PrintTotals * * Purpose: Prints break level totals. * * Entry: Data tables to print totals for * Entry: Current total level * * Exit: * * Called By: Perform PrintTotals * using p_totallevel * * Calls: * * Modification History: * * Date Reason Version Who * Form PrintTotals using p_totallevel. * Data: t__coltotals like vbak-netwr occurs 0 with header line, w__pos type i, w__pos1 type i, w__title(50) type c. * * Loop around the totals tables at the specified level. * Read table ReportBreaks index p_totallevel. * * Print this Break ? * If ReportBreaks-Print = c_yes. If w__lineprinted = True. Perform TableLine. EndIf. Write /001 ''. Read table ReportTable index 1. Compute w__pos = ReportTable-StartPos + 1. Compute w__pos1 = ReportTable-First + ReportTable-MaxWidth + 1. If ReportBreaks-Title <> 'Run Total:'. Concatenate ReportBreaks-Title ReportBreaks-Value 'Total:' into w__title separated by ' '. Else. Move ReportBreaks-Title to w__title. EndIf. Write: At w__pos sy-vline no-gap, w__title no-gap, at w__pos1 sy-vline no-gap. Move ReportBreaks-Totals[] to t__coltotals[]. Loop at t__coltotals. If not t__coltotals is initial. * * Get the column positions to print at and also the * decimal places. * Read table ReportTable index sy-tabix. Compute w__pos = ReportTable-StartPos + 1. Write At w__pos sy-vline no-gap. Perform SetColour using Col_Total. Perform WriteValue using ReportTable-ColWidth t__coltotals ReportTable-ConvExit ReportTable-Currency ReportTable-Unit ReportTable-Format. Write sy-vline no-gap. Format Color Off. Endif. EndLoop. Position w__pos1. Page 130 Write sy-vline. EndIf. EndForm. 50.12. See Also. Page 131 51. PRG_DOC_HELP 51.1. Location. YRBINC. 51.2. Purpose. Displays help for current program 51.3. Entry. 51.4. Exit. 51.5. Called By. 51.6. Calls. 51.7. Tables. TTCDS 51.8. System Variables. SY-SUBRC SY-REPID INT4 X CHAR C 4 8 Return value after specif Program: Name of ABAP/4 p 51.9. Description. This procedure displays the help associated with a program in a pop up window. 51.10. Examples. WHEN 'FUN8'. IF IT_STAT-STATUS = C_FINISHED. SUBMIT YUPDSEQ AND RETURN WITH P_JOBNO = JOBNO. ELSE. MESSAGE W000 WITH TEXT-401. ENDIF. WHEN 'FUN9'. PERFORM PRG_DOC_HELP. * Update current job ENDCASE. * * If a user double clicks a line and the line status is failed, * down to the log report. * AT LINE-SELECTION. drill 51.11. SourceCode. *EJECT *********************************************************************** * * Procedure: Prg_Doc_Help * * Purpose: Displays help for current program * * Entry: * * Exit: * * Called By: Perform Prg_Doc_Help * Page 132 * Calls: * * Modification History: * * Date Reason * form prg_doc_help. * Tables: ttcds. * Data: w_abapname like dokhl-object, w_pf15 type c, w_hometext like dsygh-doktitle, * begin of t_pline occurs 100, text(80), end of t_pline. * Select single * from ttcds where progname = sy-repid . If sy-subrc = 0. Call function 'DSYS_SHOW' Exporting dokclass = ttcds-dokclass doklangu = space dokname = ttcds-dokname doktitle = ' ' hometext = w_hometext outline = ttcds-dsysgldrg Importing pf15 = w_pf15 Exceptions class_unknown = 01 object_not_found = 02. else. * * Display ABAP documentation text * Move sy-repid to w_abapname. Call function 'DOCU_PRINT' exporting dialog = 'X' form = 'S' id = 'RE' langu = sy-langu new_page = space object = w_abapname operation = 'P' printer = space typ = 'E' tables line = t_pline. Endif. Endform. 51.12. See Also. Page 133 Version Who 52. READ_SCREEN_VALUES 52.1. Location. YREPINC. 52.2. Purpose. Provides access to screen fields before users presses enter..... 52.3. Entry. 52.4. Exit. 52.5. Called By. Perform Read_Screen_Values 52.6. Calls. 52.7. Tables. 52.8. System Variables. 52.9. Description. During the entry of report parameters, the parameters themselves are not accessable to variables within the program until the user either hits the return key, or the process button. This is because that that moment in time, the action is all happening on the presentation server and has not been passed to SAP. This procedure forces the values in the parameter variables to become available for use by other procedures before return is hit, or the process button clicked. 52.10. Examples. Data: Begin of tb_werks Occurs 0, Werks like t001w-werks, col1(3) type c, Name1 like t001w-name1, End Of tb_werks, w_tabix like sy-tabix. " Table for Werks lookup " Selected row in table. * Perform Read_Screen_Values. Zap tb_werks. Move &3 to tb_werks-werks. Move &4 to tb_werks-name1. Append tb_werks. Move sy-uline to tb_werks-werks. Move sy-uline to tb_werks-col1. Move sy-uline to tb_werks-name1. 52.11. SourceCode. *EJECT *********************************************************************** * * Procedure: Read_Screen_Values * * Purpose: Provides access to screen fields before users * presses enter..... * * Entry: Page 134 * * Exit: Screen fields are available to the calling * program * * Called By: Perform Read_Screen_Values * * Calls: * * Modification History: * * Date Reason Version * Form Read_Screen_Values. * Field-Symbols <f_fieldname>. * Data: Begin of t_dynpread occurs 0. Include Structure dynpread. Data: End of t_Dynpread. * Zap t_dynpread. Call Function 'DYNP_VALUES_READ' Exporting Dyname = syst-cprog Dynumb = syst-dynnr Request = 'A' Tables Dynpfields = t_dynpread Exceptions Invalid_Abapworkarea = 1 Invalid_Dynprofield = 2 Invalid_Dynproname = 3 Invalid_Dynpronummer = 4 Invalid_Request = 5 No_Fielddescription = 6 Invalid_Parameter = 7 Undefind_Error = 8 Others = 9. Loop at t_dynpread. Assign (t_dynpread-fieldname) to <f_fieldname>. Move t_dynpread-fieldvalue to <f_fieldname>. EndLoop. EndForm. 52.12. See Also. Page 135 Who 53. READ_YDCSET 53.1. Location. YBDCINC. 53.2. Purpose. Gets the BDC profile to run 53.3. Entry. 53.3.1.Function Name This is the function name to get settings for. 53.3.2.User Name. Settings for a particular user only. 53.4. Exit. 53.4.1.YDCSET structure populated 53.5. Called By. READ_YDCSET Z_CALL_BDC Perform Read_YDCSET using w__fname sy-uname changing w__ydcset. 53.6. Calls. 53.7. Tables. 53.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 53.9. Description. The BDC Routines that are processed through these routines can be controlled by settings made in thable YDCSET. The table is keyed by RFC/Transaction name and user name. If during initialisation an entry is found for the current RFC or Transaction, then the various entries in the YDCSET structure are completed. See section 4 above for an explanation of the YDCSET structure and table. 53.10. Examples. w__name w__dump(30) w__fname like catfu-name, type c, like tfdir-funcname. * Perform Init_Global. Move &1 to w__fname. Translate w__fname to upper case. Perform Read_YDCSET using w__fname sy-uname changing w__ydcset. Zap t_bdcmsg. * * Page 136 Get the function details and loop through the parameter list. If * * * * the variable is an export variable then initialise it. If it is an import variable that is optional with a proposal, set the variable to the value of the proposal if the value passed is blank. 53.11. SourceCode. *EJECT ********************************************************************** * * Procedure: Read_YDCSet * * Purpose: Gets the BDC profile to run * * Entry: Function Name * This is the function name to get settings * for. * * User Name. * Settings for a particular user only * * Exit: YDCSET structure populated * * Called By: Perform Read_YDCSET using w_fname sy-uname * changing w_ydcset. * * Calls: * * Modification History: * * Date Reason Version Who * * Form Read_YDCSET using pu_funcname like tfdir-funcname pu_uname like sy-uname changing pc_ydcset structure ydcset. * Select single * from ydcset into pc_ydcset where funcname = pu_funcname and uname = pu_uname. * * No setting for a particular function/programmer. Look for the * generic function...... * If sy-subrc <> 0. Select single * from ydcset into pc_ydcset where funcname = pu_funcname and uname = ''. * * No entry - use the default... * If sy-subrc <> 0. Select single * from ydcset into pc_ydcset where funcname = 'DEFAULT'. Endif. EndIf. If pc_ydcset-bdcmode is initial. Move 'N' to pc_ydcset-bdcmode. EndIf. If w__ydcset-bdcupmode is initial. Move 'S' to pc_ydcset-bdcupmode. EndIf. EndForm. 53.12. See Also. Page 137 54. REPHEADER 54.1. Location. YREPINC. 54.2. Purpose. Provides a standardized report header for use in printed reports 54.3. Entry. 54.3.1.Company Code 54.3.2.Report Title 54.4. Exit. 54.4.1.Report header produced for current report 54.5. Called By. 54.6. Calls. UNDERLINE 54.7. Tables. T001 54.8. System Variables. SY-LINSZ SY-REPID SY-UNAME SY-SYSID SY-SAPRL SY-DATUM SY-PAGNO SY-UZEIT INT4 CHAR CHAR CHAR CHAR DATS INT4 TIMS X C C C C D X T 4 8 12 8 4 8 4 6 Line size of list Program: Name of ABAP/4 p Session: SAP user from SA System: SAP System ID System: SAP Release System: Date Runtime: Current page in System: Time 54.9. Description. 54.10. Examples. * * Modification History: * Form Top_Of_Page. * Data: w_title(60) type c. * Perform RepHeader using '' sy-title. Concatenate Text-018 ':' p_lgnum into w_title. Perform WriteCentre using w_title. Psub s_matnr Text-022. Psub s_charg Text-023. Psub s_vltyp Text-024. Psub s_vlpla Text-025. Case c_on. Page 138 54.11. SourceCode. *EJECT *********************************************************************** * * Procedure: Repheader. * * Purpose: Provides a standardized report header for use * in printed reports * * Entry: Company Code * Entry: Report Title * * Exit: Report header produced for current report * * * Called By: Perform Repheader using Company Code Title. * * Calls: * * Modification History: * * Date Reason Version Who * Form RepHeader using p_cocode like t001-bukrs p_reptitle like sy-title. Tables: T001. Data: w__offset type i. Move False to w__grouphdr. Move False to w__lineprinted. * * Top Line - Report - co - User * Perform UnderLine using 0 sy-linsz. Write: / 'Report:' no-gap,sy-repid. * * Get the company name and centralise this within the report line * width * Select single * from T001 where bukrs = P_COCODE. compute w__offset = ( sy-linsz - strlen( t001-butxt ) ) / 2. Position w__offset. Write T001-butxt. * * User Details * compute w__offset = sy-linsz - 17. Position w__offset. Write: 'User:' no-gap,sy-uname. * * Line 2 - SysID and Date. * Write: / ' Sysid:' no-gap, sy-sysid. compute w__offset = ( sy-linsz - 10 ) / 2. Position w__offset. Write: 'SAP R/' no-gap, sy-saprl. Compute w__offset = sy-linsz - 17. Position w__offset. Write: 'Date:' no-gap,sy-datum. * * Line 3 - Page - Report Title - time. * write: / ' Page:' no-gap,sy-pagno. * * Report title. * compute w__offset = ( sy-linsz - STRLEN( p_reptitle ) ) / 2. Position w__offset. Write p_reptitle. * * Time * compute w__offset = sy-linsz - 17. Page 139 Position w__offset. write: 'Time:' No-gap,sy-uzeit. * Perform UnderLine using 0 sy-linsz. ENDFORM. 54.12. See Also. Page 140 55. RUNTOTALS 55.1. Location. YREPINC. 55.2. Purpose. Prints All sub total levels and a final run total 55.3. Entry. 55.4. Exit. 55.5. Called By. 55.6. Calls. PRINTTOTALS TABLELINE 55.7. Tables. 55.8. System Variables. SY-TABIX SY-SUBRC INT4 X INT4 X 4 4 Runtime: Current line of Return value after specif 55.9. Description. RunTotals loops around the table of report break points initialised by calls to INITBREAK. The current values are printed out for each numeric column on the report and then these values are added to the next highest break level. This continues until the last record in the Break table is processed where upon the the totals for the entire report will be printed. 55.10. Examples. Perform CheckBreaks tables t_repdata. Endif. Perform Writeline tables t_repdata using Col_Normal. EndLoop. * * * Final totals. Perform RunTotals Tables t_repdata. * * * Any Error reports ? Perform DisplayErrors. Perform Writecentre using Text-013. ENDFORM. " DISPLAYREPORT *&---------------------------------------------------------------------* 55.11. SourceCode. *EJECT *********************************************************************** * * Procedure: RunTotals * * Purpose: Prints All sub total levels and a final run total * * Entry: Report data table * * Exit: Page 141 * * Called By: Perform RunTotals. * * Calls: * * Modification History: * * Date Reason Version Who * Form RunTotals. * Data: w__pos type i, w__breaklevel type i, t__coltotals like vbak-netwr occurs 0 with header line, t__carry like vbak-netwr occurs 0 with header line. * Zap t__coltotals. Zap t__carry. Loop at ReportBreaks. * * Carry forward previous level totals * Move sy-tabix to w__breaklevel. Move ReportBreaks-Totals[] to t__carry[]. Loop at t__carry. Move sy-tabix to w__pos. Read Table t__coltotals index w__pos. if sy-subrc = 0. Compute t__coltotals = t__coltotals + t__carry. Modify t__coltotals index w__pos. Else. Move t__carry to t__coltotals. Append T__Coltotals. EndIf. EndLoop. Move t__coltotals[] to ReportBreaks-totals[]. Modify ReportBreaks index w__breaklevel. Perform PrintTotals using w__breaklevel. EndLoop. Perform TableLine. EndForm. 55.12. See Also. Page 142 56. SAVEREPORT 56.1. Location. YREPINC. 56.2. Purpose. Takes the currently defined report and places it in the report stack. If the report already exists in the stack then the current record is overwritten 56.3. Entry. 56.3.1.Report Name 56.4. Exit. 56.5. Called By. USEREPORT Perform SaveReport using w__currep. 56.6. Calls. 56.7. Tables. 56.8. System Variables. SY-SUBRC SY-TABIX INT4 X INT4 X 4 4 Return value after specif Runtime: Current line of 56.9. Description. The reporting routines can only use one report format at a time, however, in some cases a second or third format is required, for example where a ledger listing is being produced and the user requires a list of all the sub-items that make up the account total. This routine takes the currently defined report and saves it in a table, along with other information defined in the current break tables. This ensures that the total breaks are not disturbed when report formats are switched back and forth. 56.10. Examples. Perform FormatReport. Read Table t_revenue Index 1. Perform InitBreak using 'T_REVENUE-CENDNG' Perform InitBreak using 'T_REVENUE-VB' Perform InitBreak using 'T_REVENUE-ENAME' Perform InitBreak using 'T_REVENUE-ABTEI' Perform InitBreak using 'T_REVENUE-KTEXT' Perform SaveReport using c_main_report. * * * Text-015 Text-006 Text-007 Text-008 Text-009 c_no c_no c_no c_no c_no c_yes. c_yes. c_yes. c_yes. c_yes. And the billing report. Zap ReportTable. Perform BuildReport using 'VBELN0' Text-019 10 '' ''. Perform BuildReport using 'ERDAT0' Text-020 8 'DD/MM/YY' ''. Perform BuildReport using 'CREDT0' Text-021 11 '' ''. Page 143 56.11. SourceCode. *EJECT *********************************************************************** * * Procedure: SaveReport * * Purpose: Takes the currently defined report * and places it in the report stack. If the * report already exists in the stack then * the current record is overwritten * * Entry: Report Name * * Exit: * * Called By: Perform Namereport using 'RepName' * * Calls: * * Modification History: * * Date Reason Version Who * Form SaveReport using pu_repname like t__reportstack-repname. * Data: w__repname like t__reportstack-repname. * * IS the report already here ? * Move pu_repname to w__repname. Translate w__repname to upper case. Read Table t__reportstack with key repname = w__repname. If sy-subrc = 0. Move ReportTable[] to t__reportstack-reports[]. Move ReportBreaks[] to t__reportstack-repbreaks[]. Modify t__reportstack index sy-tabix. Else. Move w__repname to t__reportstack-repname. Move ReportTable[] to t__reportstack-reports[]. Move ReportBreaks[] to t__reportstack-repbreaks[]. Append t__reportstack. EndIf. Move w__repname to w__currep. EndForm. 56.12. See Also. UseReport Page 144 57. SETCOLOUR 57.1. Location. YREPINC. 57.2. Purpose. Sets the output colour 57.3. Entry. 57.3.1.Colour to set 57.4. Exit. 57.5. Called By. WRITELINE WLINE PRINTTOTALS Perform SetColour using P_Colour. 57.6. Calls. 57.7. Tables. 57.8. System Variables. 57.9. Description. Sets the output colour to one of the standard pre-defined reporting colours used by ABAP. 57.10. Examples. Else. If ReportTable-Symbol = True. Write: ' ' no-gap, ReportTable-Isyname as Symbol. Else. * * * Set the output colour. Perform SetColour using P_Colour. Perform WriteValue using ReportTable-ColWidth <RField> ReportTable-ConvExit ReportTable-Currency ReportTable-Unit ReportTable-Format. Hide <RField>. 57.11. SourceCode. *EJECT *********************************************************************** * * Procedure: SetColour * * Purpose: Sets the output colour * * Entry: Colour to set Page 145 * * Exit: * * Called By: Perform SetColour Using P_Colour * * Calls: * * Modification History: * * Date Reason * Form SetColour using P_Colour. * Data: w_colour like col_heading. * Move p_colour to w_colour. Format Color = w_colour. EndForm. 57.12. See Also. Page 146 Version Who 58. SHOW_PROGRESS 58.1. Location. YREPINC. 58.2. Purpose. Displays a progress message on the status line 58.3. Entry. 58.3.1.Message to display 58.4. Exit. 58.5. Called By. Perform Show_Progress using text-023. 58.6. Calls. 58.7. Tables. 58.8. System Variables. 58.9. Description. This routine outputs a text message to the status bar, only doing so if the message has changed. 58.10. Examples. 58.11. SourceCode. *EJECT *********************************************************************** * * Procedure: Show_Progress * * Purpose: Displays a progress message on the status line * * Entry: Message to display * * Exit: * * Called By: Perform Show_Progress * * Calls: * * Modification History: * Form Show_Progress using pu_text. * Statics w_text like t100-text. * If w_text <> pu_text. Move pu_text to w_text. Call Function 'SAPGUI_PROGRESS_INDICATOR' Exporting * PERCENTAGE = 0 TEXT = w_text Exceptions Page 147 OTHERS Endif. EndForm. 58.12. See Also. Page 148 = 1. 59. SORTREP 59.1. Location. YREPINC. 59.2. Purpose. Sorts a report based upon at user-command. 59.3. Entry. 59.3.1.Table to sort. 59.4. Exit. 59.4.1.Table Sorted. 59.4.2.Report column table sorted on 59.4.3.Sort direction 'A' or 'D' 59.5. Called By. WLINE 59.6. Calls. 59.7. Tables. 59.8. System Variables. SY-STACO SY-CUCOL SY-INDEX SY-SUBRC SY-UCOMM INT4 INT4 INT4 INT4 CHAR X X X X C 4 4 4 4 70 Interact.: List displayed Cursor position (column) Number of loop passes Return value after specif Interact.: Command field 59.9. Description. By placing this call in the ‘At User-Command’ section of the program, the routine will detect the actual report column that the user wishes to sort on and then sort the report. The report displaying procedure must then be called once more to re-display the report. The calling program is responsible for setting ‘PF-STATUS’. The GUI named in the SET PFSTATUS call must have the sort up and sort down buttons named STUP and STDN. 59.10. Examples. *Eject At User-Command. Data w_ucomm like sy-ucomm. * Move sy-ucomm to w_ucomm. Case w_ucomm. When 'STUP'. Perform SortRep Tables T_Repdata changing w_sortfield Page 149 w_sortdir. When 'STDN'. Perform SortRep Tables t_repdata changing w_sortfield w_sortdir. When 'SELA'. Perform Selects using 'X'. When 'DSEL'. 59.11. SourceCode. *EJECT *********************************************************************** * * Procedure: SortRep * * Purpose: Sorts a report based upon at user-command. * * Entry: Table to sort. * * Exit: Table Sorted. * Exit: Report column table sorted on * Exit: Sort direction 'A' or 'D' * * Called By: At user-Command. * Perform SortRep * Tables RData * changing p_field p_dir * * Calls: * * Modification History: * * Date Reason Version Who * * Get the column to sort by. * Form SortRep Tables p_table changing p_sortfd p_sortdir. Field-Symbols: <SortField>, <TestField>. Data: w__fpos type i, " Position on screen where field is. w__sortfd type i, " Number of sort field in data table. w__dist type i, " Distance between fields w__cucol like sy-cucol." Cursor position on report * * Find the report column they want to sort on. Sy-cucol is the * current screen cursor position. * Move 0 to w__sortfd. * * add the first displayed column + the actual column on screen * Compute w__cucol = sy-staco + sy-cucol. Loop At ReportTable. Compute w__fpos = ReportTable-StartPos + ReportTable-ColWidth. if w__fpos >= w__cucol. Assign Component ReportTable-FieldName of Structure p_table to <SortField>. Exit. EndIf. EndLoop. * * If this is a valid sort field then translate the report field * to the data table. * Do. Assign Component sy-index of Structure p_table to <TestField>. if sy-subrc <> 0. exit. Endif. Describe Distance between <SortField> and <TestField> into w__dist. if w__dist = 0. If <TestField> = <SortField>. Page 150 Move sy-index to w__sortfd. Exit. EndIf. EndIf. EndDo. If not w__sortfd is Initial. * * * Retrieve the field name from ReportTable and Sort on it. Move w__sortfd to p_sortfd. Assign component ReportTable-FieldName of structure p_table to <SortField>. Case sy-ucomm. When 'STUP'. Sort p_table By <SortField>. Move 'A' to p_sortdir. When 'STDN'. Sort p_table Descending By <SortField>. Move 'D' to p_sortdir. EndCase. Endif. EndForm. 59.12. See Also. Page 151 60. STRIPSTRING 60.1. Location. YRBINC. 60.2. Purpose. Removes specified characters from string 60.3. Entry. 60.3.1.String to remove characters from. 60.3.2.String of characters to remove 60.4. Exit. 60.4.1.Entry string with strip chars removed 60.5. Called By. 60.6. Calls. 60.7. Tables. 60.8. System Variables. SY-INDEX SY-SUBRC SY-FDPOS INT4 X INT4 X INT4 X 4 4 4 Number of loop passes Return value after specif Location of a string 60.9. Description. The routine loops around the string containing the list of characters to remove. For each character in the ‘Remove’ string, the input string is searched. If the character exists in the input string, then the character is removed from the input string, shortening the input string by one character. This continues until the character from the ‘Remove’ string no longer exists in the input string. The routine then moves onto the next character in the ‘remove’ string. 60.10. Examples. 60.11. SourceCode. *EJECT *********************************************************************** * * Procedure: StripString. * * Purpose: Removes specified characters from string * * Entry: String to remove characters from. * Entry: String of characters to remove * * Exit: Entry string with strip chars removed * * Called By: Perform striptring * using p_string p_remove * changing p_out Page 152 * * Calls: * * Modification History: * * Date Reason Version Who * Form StripString using p_string p_remove changing p_out. Data: w__remchar(1) type c, " The character to remove w__rempos type i, " remove character pos w__remlen type i, " length of p_remove w__fdpos like sy-fdpos, " position of remchar w__cpstr(255) type c. * Move p_string to p_out. Compute w__remlen = Strlen( p_remove ). Do w__remlen times. * * Get the character to remove from the string. * Compute w__rempos = sy-index - 1. Move p_remove+w__rempos to w__remchar. Search p_out for w__remchar. While sy-subrc = 0. Compute w__fdpos = sy-fdpos. Move p_out to w__cpstr+0(w__fdpos). Compute w__fdpos = sy-fdpos + 1. Move p_out+w__fdpos to w__cpstr+sy-fdpos. Move w__cpstr to p_out. Search p_out for w__remchar. EndWhile. EndDo. EndForm. 60.12. See Also. Page 153 61. SUBTITLES 61.1. Location. YREPINC. 61.2. Purpose. Prints a list of search criteria. This routine should not be called via a user program. 61.3. Entry. 61.4. Exit. 61.5. Called By. SORTREP 61.6. Calls. WRITECENTRE 61.7. Tables. 61.8. System Variables. 61.9. Description. The routine looks at the option field passed by the calling program. This contains a code which specifies the search criteria to apply. This is then changed into words and topped/tailed with parameter information. This is then written out. 61.10. Examples. * * Modification History: * * Date Reason Version Who * Define PSub. Loop at &1. Perform Subtitles using &2 &1-Sign &1-option &1-low &1-high. EndLoop. End-Of-Definition. *Eject *********************************************************************** * 61.11. SourceCode. *EJECT *********************************************************************** * * Procedure: SubTitle * * Purpose: Prints a list of search criteria * * Entry: Search Criteria * * Exit: * * Called By: loop at t_opts. Page 154 * Perform Subtitles Sort sign option low high * * Calls: WriteCentre * ReportLine * * Modification History: * * Date Reason Version Who * FORM SUBTITLES using p_text p_sign p_option p_low p_high. * * Get the column to sort by. * Data: w__subtitle(150) type c, w__option(50) type c, w__join(4) type c, w__sign(20) type c, w__plural(60) type c, w__low(150) type c, w__high(150) type c. * * Format the input parameters. * Write p_low to w__low. Write p_high to w__high. * * Decide on the initial wording. * move 'that' to w__join. Case p_option. When 'EQ'. Move 'are equal to' to w__option. When 'NE'. Move 'are not equal to' to w__option. When 'CP'. Move 'contains pattern' to w__option. When 'NP'. Move 'does not contain pattern' to w__option. When 'GE'. Move 'are greater than or equal to' to w__option. When 'LT'. Move 'are less than' to w__option. When 'LE'. Move 'are less than or equal to' to w__option. When 'GT'. Move 'are greater than' to w__option. When 'BT'. Move 'are between' to w__option. When 'NB'. Move 'are not between' to w__option. EndCase. * * Inclusive or exclusive. * if p_sign = 'I'. Move 'Inclusive' to w__sign. else. Move 'Exclusive' to w__sign. endif. * * Form the sentence. * Concatenate p_text 's' into w__plural. if p_option <> 'BT' and p_option <> 'NB'. Concatenate 'For all' w__plural w__join w__option w__low w__sign into w__subtitle separated by ' '. else. Concatenate 'For all' w__plural w__join w__option w__low 'and' w__high w__sign into w__subtitle separated by ' '. Endif. Perform WriteCentre using w__subtitle. EndForm. 61.12. See Also. Psub Page 155 62. TABLELINE 62.1. Location. YREPINC. 62.2. Purpose. Places a line on a report spanning the current report. 62.3. Entry. 62.4. Exit. 62.4.1.Global flag w__line printed set to true. 62.5. Called By. GROUPHEADER PRINTTITLES. USEREPORT CHECKBREAKS PRINTTOTALS RUNTOTALS. Perform TableLine. 62.6. Calls. UNDERLINE 62.7. Tables. 62.8. System Variables. 62.9. Description. Prints an underline from the start position of the currently defined table to the last column of the currently defined table. 62.10. Examples. FORM GROUPHEADER using p_title p_value. Data: w__repline(255) type c, w__offset type i, w__required type i. * If w__lineprinted = True. Perform TableLine. EndIf. * * Have we enough room to print this plus column titles * * * If MaxTline is 0, then the titles have not been printed, and * we must be at the top of the page so we don't really care anyway. 62.11. SourceCode. *EJECT *********************************************************************** Page 156 * * Procedure: Tableline. * * Purpose: Places a line on a report spanning the current * report. * * Entry: none * * Exit: Global flag w__line printed set to true. * * Called By: Perform TableLine * * Calls: * * Modification History: * * Date Reason Version Who * FORM TABLELINE. Data: w__maxwidth type i. Read Table ReportTable Index 1. Compute w__maxwidth = ReportTable-Maxwidth + 1. Perform UnderLine using ReportTable-StartPos w__MaxWidth. ENDFORM. 62.12. See Also. Underline Page 157 63. UNDERLINE 63.1. Location. YREPINC. 63.2. Purpose. Places a line on a report 63.3. Entry. 63.3.1.Start position 63.3.2.Width 63.4. Exit. 63.4.1.Global flag w__line printed set to true. 63.5. Called By. REPHEADER TABLELINE. Perform UnderLine using 0 sy-linsz. 63.6. Calls. 63.7. Tables. 63.8. System Variables. SY-ULINE CHAR C 255 Constant: Underline (---- 63.9. Description. Prints a line on the report from absolute co-ordinates. 63.10. Examples. Tables: T001. Data: w__offset type i. Move False to w__grouphdr. Move False to w__lineprinted. * * * Top Line - Report - co - User Perform UnderLine using 0 sy-linsz. Write: / 'Report:' no-gap,sy-repid. * * * * Get the company name and centralise this within the report line width Select single * from T001 where bukrs = P_COCODE. compute w__offset = ( sy-linsz - strlen( t001-butxt ) ) / 2. 63.11. SourceCode. *EJECT Page 158 *********************************************************************** * * Procedure: Underline. * * Purpose: Places a line on a report * * Entry: Startposition * Entry: Width * * Exit: Global flag w__line printed set to true. * * Called By: Perform Underline using Start,Width. * * Calls: * * Modification History: * * Date Reason Version Who * FORM UNDERLINE using p_start type i p_width type i. * Statics: w__lastline like sy-linno, " last underline w__lastwidth type i. " and length * Data: w__repline(255) type c. * * If the current line is an underline, * don't do another one. This aids in joining up reports of * different formats, unless the last line was shorter than the * current line. * If w__lastline <> sy-linno or w__lastwidth < p_width. Move space to w__repline. Move sy-uline to w__repline+p_start(P_width). Move sy-linno to w__lastline. Move p_width to w__lastwidth. If w__lastline = sy-linno. Write / w__repline. Else. Position 1. write w__repline. EndIf. Else. Skip 2. EndIf. ENDFORM. "UNDERLINE 63.12. See Also. TableLine Page 159 64. USEREPORT 64.1. Location. YREPINC. 64.2. Purpose. Retreives a specified report from the report stack after saving the current report 64.3. Entry. 64.3.1.Report Name 64.4. Exit. 64.5. Called By. 64.6. Calls. TABLELINE SAVEREPORT 64.7. Tables. 64.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 64.9. Description. This procedure readies the reporting routines to start prining a report format that has previously been saved using SaveReport. The break-points and totals are all restored to their previous state, and the report formating is also save to the state prior to the call to save report. This enables multi-format reports to be produced whilst keeping the run totals and so forth intact. 64.10. Examples. w_vbeln like vbak-vbeln. * Read Table t_revenue index 1. * * * Initial group headers. Set pf-status '001'. Perform UseReport using c_main_report. Perform GroupHeader using Text-009 T_REVENUE-KTEXT. Perform GroupHeader using Text-008 T_REVENUE-ABTEI. Perform GroupHeader using Text-007 T_REVENUE-ENAME. Perform GroupHeader using Text-006 T_REVENUE-VB. Perform GroupHeader using Text-015 T_REVENUE-CENDNG. Move t_revenue-vbeln to w_vbeln. * 64.11. SourceCode. *EJECT Form UseReport using pu_repname like t__reportstack-repname. * Data: w__repname like t__reportstack-repname. * Move pu_repname to w__repname. Translate w__repname to upper case. Page 160 If w__repname <> w__currep. * * * Save the current report. If not w__currep is initial. * * * Underline the current report, but don't cause a new line If w__lineprinted = True. Perform TableLine. EndIf. Perform SaveReport using w__currep. EndIf. Read Table t__reportstack with key repname = w__repname. If sy-subrc = 0. Zap: ReportTable, ReportBreaks. Move t__reportstack-Reports[] to ReportTable[]. Move t__reportstack-Repbreaks[] to ReportBreaks[]. Move w__repname to w__currep. EndIf. EndIf. EndForm. 64.12. See Also. Page 161 65. WLINE 65.1. Location. YREPINC. 65.2. Purpose. Prints the supplied data line to the report 65.3. Entry. 65.3.1.Dataline to print 65.3.2.Colour of line. The colour of the line should be specified using one of the colour constants defined by SAP: ï‚· ï‚· ï‚· ï‚· ï‚· ï‚· ï‚· ï‚· col_background col_heading col_normal col_total col_key col_positive col_negative col_group The default colours supplied by SAP are: Figure 5 Default Colours Provided By SAP Page 162 65.4. Exit. 65.5. Called By. GROUPHEADER PRINTTITLES. Perform WLine Using w__repline Col_Group. 65.6. Calls. SETCOLOUR 65.7. Tables. 65.8. System Variables. SY-VLINE SY-SUBRC SY-FDPOS SY-LINSZ CHAR INT4 INT4 INT4 C X X X 1 4 4 4 Constant: Vertical bar Return value after specif Location of a string Line size of list 65.9. Description. This routine outputs data to the report, making certain that the colour attributs work correctly and do not extend back to the start of the line. 65.10. Examples. Move sy-vline to w__repline+w__offset. Compute w__offset = w__offset + 1. Move p_title to w__repline+w__offset. Compute w__offset = w__offset + Strlen( p_title ) + 1. Move p_value to w__repline+w__offset. Compute w__offset = ReportTable-StartPos + ReportTable-MaxWidth. Move sy-vline to w__repline+w__offset. Perform WLine Using w__repline Col_Group. Perform TableLine. Move False to w__grouphdr. Move False to w__lineprinted. Endif. ENDFORM. " Group Header. *Eject *********************************************************************** 65.11. SourceCode. *EJECT *********************************************************************** * * Procedure: WLine. * * Purpose: Prints the supplied data line to the report * * Entry: Dataline to print * Entry: colour of line * * Exit: * * Called By: Perform WLine using w__dataline Col_Group * * Calls: * * Modification History: * * Date Reason Version Who * FORM WLINE Using p_dataline p_colour. Data: w__repline(255) type c, Page 163 w__filler(255) w__offset w__count * * * * * * * type c, type i, type i. When you write data lines to the screen the colour formatting extends back to column 1. This routine attempts to get rid of it And you can't specify parameters for the colour statement. Another byte yer bum from SAP! Search p_dataline for sy-vline. if sy-subrc = 0. compute w__offset = sy-fdpos + 1. Move p_dataline+0(w__offset) to w__filler. Move p_dataline to w__repline. * * * Add on a final vertical line. Read Table ReportTable Index 1. compute w__offset = ReportTable-First + ReportTable-Maxwidth. Move sy-vline to w__repline+w__offset. else. Move p_dataline to w__repline. endif. Perform Setcolour using P_Colour. Write: / w__repline. Format Color Off. * * * * * * * * * * Here's another bum byter. You can't specify a variable position in a write statement - like write varpos variable...... However, there is the 'POSITION' statement which I've only just discovered after writing this the hard way. All I want to do is clear a few spaces at the start of the line and at the end of the line. compute w__count = strlen( w__repline ) + 1. do. Position w__count. write ' ' no-gap. compute w__count = w__count + 1. if w__count > sy-linsz. exit. endif. enddo. * write 001 ' ' no-gap. compute w__count = sy-fdpos - 1. do w__count times. write ' ' no-gap. enddo. ENDFORM. 65.12. See Also. Page 164 66. WRITECENTRE 66.1. Location. YREPINC. 66.2. Purpose. Centres and writes the text across the current report width 66.3. Entry. 66.3.1.Text to centre 66.4. Exit. 66.5. Called By. SUBTITLES Perform WriteCentre using w__subtitle. 66.6. Calls. 66.7. Tables. 66.8. System Variables. SY-LINSZ INT4 X 4 Line size of list 66.9. Description. This routine centres the specified text below the current report. 66.10. Examples. separated by ' '. else. Concatenate 'For all' w__plural w__join w__option w__low 'and' w__high w__sign into w__subtitle separated by ' '. Endif. Perform WriteCentre using w__subtitle. EndForm. *Eject *********************************************************************** * * Procedure: Checkbreaks * * Purpose: Checks and prints total breaks 66.11. SourceCode. *EJECT *********************************************************************** * * Procedure: WriteCentre. * * Purpose: Centres and writes the text across the current * report width * * Entry: Text to centre * Page 165 * Exit: * * Called By: Perform WriteCentre using w__text * * Calls: * * Modification History: * * Date Reason Version * FORM WRITECENTRE using p_text. Data: w__offset type i, w__repline(255) type c. Move space to w__repline. Compute w__offset = ( sy-linsz - strlen( p_text ) ) / 2. Move p_text to w__repline+w__offset. Write /001 w__repline. ENDFORM. 66.12. See Also. Page 166 Who 67. WRITECOL 67.1. Location. YREPINC. 67.2. Purpose. Writes a single column. 67.3. Entry. 67.3.1.Data line and column to print 67.3.2.Column to use. 67.4. Exit. 67.5. Called By. INITBREAK Perform WriteCol using &1 &2. 67.6. Calls. 67.7. Tables. 67.8. System Variables. SY-SUBRC SY-VLINE INT4 X CHAR C 4 1 Return value after specif Constant: Vertical bar 67.9. Description. This subroutine takes a line of text and places it in a specific column on the current report. 67.10. Examples. * * Modification History: * * Date Reason Version Who * Define WriteTable. Loop at &1. Perform WriteCol using &1 &2. EndLoop. End-Of-Definition. *eject ********************************************************************** * * Procedure: WriteColumn * 67.11. SourceCode. *EJECT ********************************************************************** * * Procedure: WriteColumn * Page 167 * Purpose: Writes a single column. * * Entry: Data line and column to print * Entry: Column to use. * * Exit: * * Called By: Perform WriteCol using p_column p_data. * * Calls: * * Modification History: * * Date Reason Version Who * Form WriteCol using p_data p_fieldname. * Data: w__fieldname(10) type c, " Upper case column name w__data(255) type c, " Data to print w__pos type i. * Move p_fieldname to w__fieldname. Move p_data to w__data. Translate w__fieldname to upper case. * * Find the Report table entry for this column. * if sy-subrc = 0. Write /001 ''. Loop at ReportTable. Compute w__pos = ReportTable-StartPos + 1. Write at w__pos sy-vline no-gap. If ReportTable-FieldName = w__fieldname. Format Color Col_Normal. Write at (ReportTable-ColWidth) w__data. Format Color Off. EndIf. EndLoop. Read table ReportTable Index 1. Compute w__pos = ReportTable-StartPos + ReportTable-MaxWidth + 1. Write at w__pos sy-vline no-gap. EndIf. EndForm. 67.12. See Also. Page 168 68. WRITELINE 68.1. Location. YREPINC. 68.2. Purpose. Writes a data line to the screen, creating hide fields at the same time. 68.3. Entry. 68.3.1.Table work area containing report data 68.3.2.Colour to use to print the data in. 68.4. Exit. 68.5. Called By. 68.6. Calls. 68.7. Tables. 68.8. System Variables. SY-VLINE SY-TABIX CHAR C INT4 X 1 4 Constant: Vertical bar Runtime: Current line of 68.9. Description. Looping through a table structure defined by successive calls to BuildReport the WriteLine routine takes positioning information and places the relevant information on the report. This is achieved by using ASSIGN to indirectly access the fields in the table structure itself. An entire line is output complete with vertical bars. At the same time this is occuring, the routine 'Hides' the variables output to the report for later use should the report have drill-down capabilities. 'Hidden' variables can be recalled in the following manner: At Line-Selection. * * If the user selects a line, take them to the programmers screen. * Data: w_bname like usr02-bname, w_pname like trdir-name. * If w_state = '0'. Move '' to w_bname. Read Line sy-lilli field value t_users-bname into w_bname. if not w_bname is initial. Perform DoUsers using w_bname. EndIf. Else. Move '' to w_pname. Read Line sy-lilli field value t_programs-name into w_pname t_programs-bname into w_gname. if not w_pname is initial. Page 169 Perform DoDl using w_pname p_outdir. EndIf. EndIf. * 68.10. Examples. Sort t_lqua by matnr. Loop at t_lqua. If w_matnr <> t_lqua-matnr. Concatenate t_lqua-matnr ':' t_lqua-maktx into w_text. Perform GroupHeader using Text-022 w_text. Move t_lqua-matnr to w_matnr. EndIf. Perform WriteLine using t_lqua Col_Normal. EndLoop. Perform EndReport. EndForm. * Form EndReport. Perform TableLine. Perform WriteCentre using text-015. 68.11. SourceCode. *Eject *********************************************************************** * * Procedure: WriteLine * * Purpose: Writes a data line to the screen, creating * hide fields at the same time. * * Entry: Table containing report data * Entry: Colour to use to print the data in. * * Exit: * * Called By: Perform WriteLine using TableName P_Colour * * Calls: * * Modification History: * * Date Reason Version Who * Form WriteLine using P_DataTable P_Colour. * Constants: c__blanks(100) type c value ' '. * Data: t__coltotals like vbak-netwr occurs 0 with header line, w__pos Type i, w__spaces type i, w__type(1) type c, w__symbol(2) type c. * * Do we need to add a run total break ? * If w__runtotal = True. Perform Initbreak using '*' 'Run Total:' c_no c_yes. Move False to w__runtotal. EndIf. Write /001 ''. Loop at ReportTable. * * Point to the relevant field. * Assign Component ReportTable-FieldName of structure P_DataTable to <RField>. Compute w__pos = reportTable-StartPos + 1. Position w__Pos. Write: sy-vline no-gap. * Page 170 * * Check box ? Case True. When ReportTable-CheckBox. * * * Centre the check box within the column w__spaces = ( ReportTable-ColWidth - 1 ) / 2. Write at (w__spaces) c__blanks no-gap. Write <RField> as CheckBox no-gap. Hide <Rfield>. When ReportTable-Icon. If ReportTable-hotspot <> True. Write: ' ' no-gap, ReportTable-Isyname as icon. Else. Write: ' ' no-gap, ReportTable-Isyname as icon Hotspot on. EndIf. When ReportTable-Symbol. * * * * Check to see if this is a variable symbol and set the symbol value accordingly. If ReportTable-FieldName is initial. Perform WriteSymbol using ReportTable-Isyname ReportTable-Hotspot. Else. * * * * * This is a variable symbol. The symbol to use for true is in Isyname, false_Sym is false The field to check the value of is in FieldName If <Rfield> is initial. Perform WriteSymbol using ReportTable-falsesym ReportTable-hotspot. Else. Perform WriteSymbol using ReportTable-Isyname ReportTable-hotspot. EndIf. EndIf. When Others. * * * Set the output colour. Perform SetColour using P_Colour. Perform WriteValue using ReportTable-ColWidth <RField> ReportTable-ConvExit ReportTable-Currency ReportTable-Unit ReportTable-Format. Hide <RField>. EndCase. Format Color Off. * * * Total Breaks ? Describe field <RField> type w__type. if c__numeric cs w__type. * * * Update report totals at level 1. Move Read Move Read sy-tabix to w__pos. table ReportBreaks index 1. ReportBreaks-totals[] to t__coltotals[]. Table t__coltotals index w__pos. * Compute t__coltotals = t__coltotals + <RField>. Modify t__coltotals index w__pos. Move t__coltotals[] to ReportBreaks-Totals[]. Modify ReportBreaks index 1. EndIf. Page 171 EndLoop. Read table ReportTable Index 1. Compute w__pos = ReportTable-StartPos + ReportTable-MaxWidth + 1. Write at w__pos sy-vline. Move True to w__lineprinted. EndForm. 68.12. See Also. Page 172 69. WRITESYMBOL 69.1. Location. YREPINC. 69.2. Purpose. Writes symbol to the screen. The symbol can be written as a hotspot. 69.3. Entry. 69.3.1.Symbol name to use. This is one of the symbols declared by the standard ABAP include <symbols> 69.3.2.Hotspot flag. This should either be True or False. True enables the symbol as a hotspot. 69.4. Exit. 69.5. Called By. WRITELINE Perform WriteSymbol using ReportTable-Isyname ReportTable-Hotspot. 69.6. Calls. 69.7. Tables. 69.8. System Variables. 69.9. Description. This routine writes a pre-defined symbol to the screen or report. If required, the symbo, can also be designated as a hotspot. 69.10. Examples. EndIf. When ReportTable-Symbol. * * * * Check to see if this is a variable symbol and set the symbol value accordingly. If ReportTable-FieldName is initial. Perform WriteSymbol using ReportTable-Isyname ReportTable-Hotspot. Else. * * * * * This is a variable symbol. The symbol to use for true is in Isyname, false_Sym is false The field to check the value of is in FieldName 69.11. SourceCode. *EJECT *********************************************************************** * * Procedure: WriteSymbol Page 173 * * Purpose: Writes symbol to the screen. The symbol can * be written as a hotspot. * * Entry: Symbol name to use * Entry: Hotspot flag. * * Exit: * * Called By: Perform WriteSymbol using w_symbol w_hotspot. * * Calls: * * Modification History: * * Date Reason Version Who * Form WriteSymbol using p_symbol p_hotspot. If p_hotspot <> True. Write: ' ' no-gap, p_symbol as Symbol. Else. Write: ' ' no-gap, p_symbol as Symbol Hotspot on. EndIf. EndForm. 69.12. See Also. Page 174 70. WRITEVALUE 70.1. Location. YREPINC. 70.2. Purpose. Outputs a specific value to the report paying attention to formatting masks etc 70.3. Entry. 70.3.1.Width of output field This is the width of the output field in characters. 70.3.2.Value to write The value to write to the report 70.3.3.Conversion exit routine If you wish to use a conversion -exit routine to modify the data before it is output, then the routine should be specified here. This and the following three fields are exclusive. Only one of these options will be used to output the variable. 70.3.4.Currency Field This parameter must be a string, however, it can either specify a currency mask literal or a variable or field name containing a currency mask 70.3.5.Unit field In the same manner as the currency field above, this field specifies a Unit mask to use when writing the value to the report. 70.3.6.Other Format field. This can be a standard ABAP format string. See section 28.3.4 above and 28.3.5 above for more information on this. 70.4. Exit. 70.5. Called By. WRITELINE PRINTTOTALS Perform WriteValue using ReportTable-ColWidth <RField> ReportTable-ConvExit ReportTable-Currency ReportTable-Unit ReportTable-Format. 70.6. Calls. GETMASK Page 175 70.7. Tables. 70.8. System Variables. 70.9. Description. This routine outputs a report variable to a specific column on the report. In doing so, any formatting options specified are applied. 70.10. Examples. If ReportTable-Symbol = True. Write: ' ' no-gap, ReportTable-Isyname as Symbol. Else. * * * Set the output colour. Perform SetColour using P_Colour. Perform WriteValue using ReportTable-ColWidth <RField> ReportTable-ConvExit ReportTable-Currency ReportTable-Unit ReportTable-Format. Hide <RField>. EndIf. 70.11. SourceCode. *EJECT *********************************************************************** * * Procedure: WriteValue * * Purpose: Outputs a specific value to the report paying * attention to formatting masks etc * * Entry: Width of output field * Entry: Value to write * Entry: Conversion exit routine * Entry: Currency Field * Entry: Unit field * Entry: Other Format field. * * Exit: * * Called By: Perform WriteValue using p_width * p_value * p_convexit * p_currency * p_unit * p_format. * * Calls: * * Modification History: * * Date Reason Version Who * * * Print Hierachy. * * 1. If there is a convexit use that * 2. Check currency - use if present * 3. Check Unit - use if present * 4. Just print it. * Form Writevalue using p_width p_value p_convexit p_currency p_unit p_format. * Data w__fcode(10) type c. " Unit/Currency code Page 176 * * * Now write out the value. If Not p_ConvExit is initial. Write at (p_width) p_value no-gap using edit mask p_ConvExit. Else. If Not p_Currency is Initial. Perform GetMask using p_currency changing w__fcode. Write at (p_width) p_value Currency w__fcode no-gap. Else. If Not p_Unit is Initial. Perform GetMask using p_unit changing w__fcode. Write at (p_width) p_value Unit w__fcode no-gap. Else. If p_format is initial. Write at (p_width) p_value no-gap. Else. Case p_format. When 'NO-ZERO'. Write at (p_width) p_value no-gap no-zero. When 'NO-SIGN'. Write at (p_width) p_value no-gap no-sign. * When 'NO GROUPING'. * Write at (p_width) p_value no-gap * no-grouping. When 'DD/MM/YY'. Write at (p_width) p_value no-gap DD/MM/YY. When 'MM/DD/YY'. Write at (p_width) p_value no-gap MM/DD/YY. When 'DD/MM/YYYY'. Write at (p_width) p_value no-gap DD/MM/YYYY. When 'MM/DD/YYYY'. Write at (p_width) p_value no-gap MM/DD/YYYY. EndCase. EndIf. EndIf. EndIf. EndIf. EndForm. 70.12. See Also. Page 177 71. ZBDC_BATCH_ON 71.1. Location. YBDCINC. 71.2. Purpose. Sets a flag that causes the BDC routines to create a batch table if the BDC errors 71.3. Entry. 71.4. Exit. 71.5. Called By. 71.6. Calls. 71.7. Tables. 71.8. System Variables. 71.9. Description. Signifies that should this BDC session fail, a Batch (SM35) session should be created. This applies for this one BDC call only. This routine is now obsolete, but is here for backwards compatability. See BDC Options in section 4 above and Read_YDCSet in section 53 above 71.10. Examples. 71.11. SourceCode. *EJECT ********************************************************************** * * Procedure: ZBDC_Batch_On * * Purpose: Sets a flag that causes the BDC routines * to create a batch table if the BDC errors * * Entry: None * * Exit: None * * Called By: Perform ZBDC_Batch_On * * Calls: * * Modification History: * * Date Reason Version Who * Form ZBDC_Batch_On. Move True to w__bdcbatch. EndForm. 71.12. See Also. ZBDC_CLOSE_GROUP Page 178 ZBDC_OPEN_GROUP ZBDC_INSERT_GROUP ZDO_BDC Page 179 72. ZBDC_CLOSE_GROUP 72.1. Location. YBDCINC. 72.2. Purpose. Closes a BDC Batch group 72.3. Entry. 72.3.1.None. 72.4. Exit. 72.4.1.Status 0 - Ok. 1 - BDC Group not open 2 - Queue Error 3 - Other problems 72.5. Called By. ZDO_BDC Perform ZBDC_Close_Group changing w__istat. 72.6. Calls. 72.7. Tables. 72.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 72.9. Description. After creating a BDC session this routine should be called to close the group. 72.10. Examples. If w__bdcbatch = True. Get Time. Concatenate p_trans '_' sy-uname sy-uzeit+0(5) into w__group. Perform ZBDC_Open_Group using w__group changing w__istat. If w__istat = 0. Perform ZBDC_Insert using p_trans changing w__istat. If w__istat = 0. Perform ZBDC_Close_Group changing w__istat. EndIf. EndIf. EndIf. * * * Mail a user ? If not w__ydcset-genmail is initial. 72.11. SourceCode. *EJECT ********************************************************************** * Page 180 * Procedure: ZBDC_CLOSE_GROUP * * Purpose: Closes a BDC Batch group * * Entry: None. * * Exit: Status 0 - Ok. * 1 - BDC Group not open * 2 - Queue Error * 3 - Other problems * * Called By: Perform ZBDC_Close_Group * changing w_status * * Calls: * * Modification History: * * Date Reason Version * Form ZBDC_Close_Group changing p_status like sy-subrc. Move 0 to p_status. Call Function 'BDC_CLOSE_GROUP' Exceptions NOT_OPEN = 1 QUEUE_ERROR = 2 OTHERS = 3. Move sy-subrc to p_status. Endform. " BDC_CLOSE_GROUP 72.12. See Also. ZBDC_BATCH_ON ZBDC_OPEN_GROUP ZBDC_INSERT_GROUP ZDO_BDC Page 181 Who 73. ZBDC_DUMP_ON 73.1. Location. YBDCINC. 73.2. Purpose. Sets a flag that causes the BDC routines to dump the BDC table to the printer before running it. As it's reset at the start of each new bdc the 'off' is not required. 73.3. Entry. 73.3.1.None 73.4. Exit. 73.4.1.None 73.5. Called By. 73.6. Calls. 73.7. Tables. 73.8. System Variables. 73.9. Description. Sets a flag that causes the BDC routines to dump the BDC table to the printer before running it. As it's reset at the start of each new bdc the 'off' is not required. This routine is now obsolete, but is here for backwards compatability. See BDC Options in section 4 above and Read_YDCSet in section 53 above 73.10. Examples. 73.11. SourceCode. *EJECT ********************************************************************** * * Procedure: ZBDC_Dump_on * * Purpose: Sets a flag that causes the BDC routines * to dump the BDC table to the printer * before running it. As it's reset at the * start of each new bdc the 'off' is * not required. * * Entry: None * * Exit: None * * Called By: Perform ZBDC_Dump_On * * Calls: * * Modification History: Page 182 * * Date Reason * Form ZBDC_Dump_On. Move True to w__dumpbdc. EndForm. 73.12. See Also. ZBDC_BATCH_ON Page 183 Version Who 74. ZBDC_FIELD 74.1. Location. YBDCINC. 74.2. Purpose. Fills BDC Data table with field info 74.3. Entry. 74.3.1.Field name This is the field name that should be filled with the specified value. 74.3.2.Field Value The value field contains the value to be placed on the screen. Note that numeric data fields of types F, P and I should be written to a character field first before calling this routine, as should date fields. The command line can be accessed using the field name 'BDC_OKCODE'. 74.3.2.1. BDC_OKCODES. BDC Ok codes are used to 'press buttons' on screens displayed by SAP. Various codes can be specified, either as numeric codes in the form '/nn', or as alpha codes of the format '=aaaa'. BDC Codes can be found by running the relevant transaction to the point just prior to clicking the button you want to use in the session. Enter the command '/H' in the command line and press the enter key. Click the button you are interested in. The program will then break. Examine variable sy-ucomm. This normally contains the code you require. The table below contains some commonly used BDC codes. Numeric /0 /1 /2 /3 /4 /8 /10 /11 /12 /13 /14 /15 Page 184 Alpha =ENT =HELP =CS =BACK =BU =SICH =RW =PRI DLT =EXIT %EX %SC =P-=P- FKey F1 F2 F3 F4 F8 F10 F11 F11 F12 F13 F14 F15 Action Enter Help Select (Previously PICK) Back List possible entries Execute Menu Post Save Cancel or Roll Back Worl Print Delete Return to previous screen Exit Find By Top Of List Previous page =P++ =P+ Bottom of list Next Page Table 5 Common BDC OK Codes 74.4. Exit. 74.5. Called By. ZBDC_FILLSCREEN ZBDC_SCROLL Perform ZBDC_Field using t__d021s-fnam <f__field>. 74.6. Calls. 74.7. Tables. 74.8. System Variables. 74.9. Description. This routine checks to see if there is an open BDC session. If not, the BDC tables used to contain the BDC data are cleared. Then the standard BDC using the field name and value provided are entered into the table. 74.10. Examples. * * Ok to proceed with this ? * If w_status = c_ok. Zap t_bdcmsg. Perform NewBdc. Perform ZBDC_Screen using 'SAPLCORU' 0100. Perform ZBDC_Field using 'CORUF-AUFNR' w_aufnr. Perform ZBDC_Field using 'CORUF-VORNR' w_vornr. Perform ZBDC_Field using 'BDC_OKCODE' c_enter. Perform ZBDC_Screen using 'SAPLCORU' 0150. If not w_endru is initial. Perform ZBDC_Field using 'CORUF-ENDRU' True. Else. Perform ZBDC_Field using 'CORUF-TEILR' True. 74.11. SourceCode. *EJECT ********************************************************************** * * Procedure: ZBDC_Field * * Purpose: Fills BDC Data table with field info * * Entry: Field name * Field Value * Exit: * * Called By: Perform BDC_field using 'FIELD' 'VALUE' * * Calls: * * Modification History: Page 185 * * Date Reason * Form ZBDC_Field using p_fname p_fvalue. * * New BDC Session ?? * If W__BDCOpen = False. Zap ZBDC_Table. Move True to w__BDCOpen. EndIf. Clear ZBDC_Table. Move p_fname to zbdc_table-fnam. Move p_fvalue to zbdc_table-fval. Append zbdc_table. EndForm. 74.12. See Also. ZBDC_FILLSCREEN ZBDC_SCREEN Page 186 Version Who 75. ZBDC_FILLSCREEN 75.1. Location. YBDCINC. 75.2. Purpose. Creates a screen group and then the relevant field entries from a structure 75.3. Entry. 75.3.1.Program name, This is the program name of the Transaction you are calling. This is normally of the form 'SAPLY.....'. 75.3.2.Screen number/actual screen No SAP has the ability to provide sub-screens and so forth. In some cases, the batch screen number actaully uses another screen definition. Therefore in the above, the first screen number is the number to use in the BDC calls, the second is the number where the actual fields are defined. 75.3.3.Structure to use. This is the screen structure that is used by the transaction as it populates the fields on the screen. 75.4. Exit. 75.5. Called By. 75.6. Calls. 75.7. Tables. 75.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 75.9. Description. The routine first retrieves the dynpro field listing for the relevant screen. This details all the fields on the screen. Using this field list, the routine first checks to see if the field is editable. This is signalled by two flags in the d021 structure: Dependant on the bits set in t__d021s-flg1 and t_-d021s-fmb1, the field is either editable or not. If the field is editable, the routine then checks to see if there is a value for the field. If a value is found, the value is formatted accordingly (Dates and numbers written to char fields etc) and then output to the field. The routine also recognises the differences between 3.x and 4.x screen fields and acts accordingly. Page 187 75.10. Examples. * Data: w_trans type Transaction_Code, w_text like t100-text, w_tanum like ltap-tanum. * Perform NewBdc. If not pu_lt01-Matnr is initial. Perform ZBDC_FillScreen using c_sapml03t 0101 pu_lt01. Perform ZBDC_Field using 'BDC_OKCODE' c_enter. Perform ZBDC_FillScreen using c_sapml03t 0102 pu_lt01. Perform ZBDC_Field using 'BDC_OKCODE' c_enter. Perform Z_Call_bdc tables t_bdcmsg using c_lt01. Else. * * LT09 - create su. No Werks.... 75.11. SourceCode. *EJECT ********************************************************************** * * Procedure: ZBDC_FillScreen * * Purpose: Creates a screen group and then the * relevant field entries from a structure * * Entry: Program name, * Screen number/actual screen No * * SAP has the ability to provide sub-screens * and so forth. In some cases, the batch * screen number actaully uses another * screen definition. * * Therefore in the above, the first screen * number is the number to use in the BDC * calls, the second is the number where the * actual fields are defined. * * Structure to use. * * Exit: * * Called By: Perform ZBDC_FillScreen using 'SAPML04I' * '0223' * w_stru. * * Calls: ZBDC_Screen * ZBDC_Field * * Modification History: * * Date Reason Version Who * Form ZBDC_FillScreen using p_program type Program_Name p_screen p_struc. * Constants: c_flg1edt type x value '80', " Field edit flags c_fmb1ges type x value '20'. * Data: Begin Of w__dynpro_30, " Screen name FOR 30+ Name(8) type c, Scrn(4) type n, End of w__dynpro_30, Begin Of w__dynpro_40, " Screen name FOR 40+ Name(40) type c, Scrn(4) type n, End of w__dynpro_40, w__d020s like d020s, " Screen header t__d021s like d021s occurs 0 " Field List Page 188 t__d022s t__d023s with header line, like d022S occurs 0, like d023s occurs 0, " Flow Logic " Match code * w__sfnam w__stble w__type(1) w__dfield(10) w__nfield(20) w_scrn(4) w_subscrn(4) like d021s-fnam, like d021s-fnam, type c, type c, type c, type n, type n. " " " " " " " Structure name Table name (Dumped) Field type Fld for date trans Fld for nc trans Screen for BDC Data Actual screen def * Field-Symbols <f__field>. * * * Get the screen information. If p_screen ca '/'. Split p_screen at '/' into w_scrn w_subscrn. Else. Move p_screen to w_scrn. Move p_screen to w_subscrn. Endif. If sy-saprl+0(1) = 3. Move p_program to w__dynpro_30-name. Move w_subscrn to w__dynpro_30-scrn. Import Dynpro w__d020s t__d021s t__d022s t__d023s id w__dynpro_30. Else. Move p_program to w__dynpro_40-name. Move w_subscrn to w__dynpro_40-scrn. Import Dynpro w__d020s t__d021s t__d022s t__d023s id w__dynpro_40. EndIf. * * * Set up the screen bdc record. Perform ZBDC_Screen using p_program w_scrn. * * * And loop round the field list. Loop at t__d021s. * * * Process this field ? if t__d021s-flg1 o c_flg1edt. if t__d021s-fmb1 z c_fmb1ges. * * * Get the actual field name.... Split t__d021s-fnam at '-' into w__stble w__sfnam. If not w__sfnam is Initial. Assign component w__sfnam of structure p_struc to <f__field>. If sy-subrc = 0. If not <f__field> is initial. * * * * If this is a numeric or a date field then it needs to be written to a character field first. Describe field <f__field> type w__type. Case w__type. When 'C'. Perform ZBDC_Field using t__d021s-fnam <f__field>. Move '' to <f__field>. When 'D'. Write <f__field> to w__dfield. Perform ZBDC_Field using t__d021s-fnam w__dfield. Move '' to <f__field>. When others. Page 189 Write <f__field> to w__nfield. Condense w__nfield. Perform ZBDC_Field using t__d021s-fnam w__nfield. Move 0 to <f__field>. Endcase. EndIf. EndIf. EndIf. Endif. Endif. EndLoop. EndForm. 75.12. See Also. ZBDC_FIELD ZBDC_SCREEN Page 190 76. ZBDC_INSERT 76.1. Location. YBDCINC. 76.2. Purpose. Starts a new BDC session 76.3. Entry. 76.3.1.Transaction code 76.4. Exit. 76.4.1.Status of Insert 76.5. Called By. ZDO_BDC Perform ZBDC_Insert using p_trans changing w__istat. 76.6. Calls. 76.7. Tables. 76.8. System Variables. SY-SUBRC INT4 X 4 Return value after specif 76.9. Description. This function creates a new BDC batch session. 76.10. Examples. * * Make a batch of this session ?? If w__bdcbatch = True. Get Time. Concatenate p_trans '_' sy-uname sy-uzeit+0(5) into w__group. Perform ZBDC_Open_Group using w__group changing w__istat. If w__istat = 0. Perform ZBDC_Insert using p_trans changing w__istat. If w__istat = 0. Perform ZBDC_Close_Group changing w__istat. EndIf. EndIf. EndIf. * * Mail a user ? 76.11. SourceCode. *eject ********************************************************************** * * Procedure: ZBDC_INSERT * * Purpose: Starts a new BDC session * Page 191 * Entry: Transaction code, * BDC Table is full. * * Exit: Status of Insert! * * Called By: Perform ZBDC_INSERT using w_trans * Changing w_status * FORM ZBDC_INSERT using p_trans Like TSTC-TCODE changing p_status like sy-subrc. Move 0 to p_status. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = p_trans TABLES DYNPROTAB = ZBDC_Table EXCEPTIONS INTERNAL_ERROR = 1 NOT_OPEN = 2 QUEUE_ERROR = 3 TCODE_INVALID = 4 OTHERS = 5. Move sy-subrc to p_status. ENDFORM. " BDC_INSERT 76.12. See Also. ZBDC_OPEN_GROUP ZBDC_CLOSE_GROUP Page 192 77. ZBDC_OPEN_GROUP 77.1. Location. YBDCINC. 77.2. Purpose. Starts a new BDC session 77.3. Entry. 77.3.1.Group Name to use for batch 77.4. Exit. 77.4.1.Status of open: CLIENT_INVALID =1 DESTINATION_INVALID = 2 GROUP_INVALID =3 GROUP_IS_LOCKED = 4 HOLDDATE_INVALID = 5 INTERNAL_ERROR =6 QUEUE_ERROR =7 RUNNING =8 SYSTEM_LOCK_ERROR = 9 USER_INVALID = 10 OTHERS = 11. 77.5. Called By. ZDO_BDC Perform ZBDC_Open_Group using w__group changing w__istat. 77.6. Calls. 77.7. Tables. 77.8. System Variables. SY-UNAME SY-MANDT SY-SUBRC CHAR C CLNT C INT4 X 12 3 4 Session: SAP user from SA Client number from SAP lo Return value after specif 77.9. Description. Starts a new BDC Session. 77.10. Examples. Importing MESSAGE_TEXT_OUTPUT = p_text. * * * Make a batch of this session ?? If w__bdcbatch = True. Get Time. Concatenate p_trans '_' sy-uname sy-uzeit+0(5) into w__group. Perform ZBDC_Open_Group using w__group changing w__istat. If w__istat = 0. Page 193 Perform ZBDC_Insert using p_trans changing w__istat. If w__istat = 0. Perform ZBDC_Close_Group changing w__istat. EndIf. EndIf. EndIf. 77.11. SourceCode. *EJECT ********************************************************************** * * Procedure: ZBDC_Open_Group * * Purpose: Starts a new BDC session * * Entry: Group Name to use for batch * * Exit: Status of open! * * Called By: Perform ZBDC_OPEN_GROUP using w_group * Changing p_status * Form ZBDC_OPEN_GROUP using p_group like apqi-groupid changing p_status like sy-subrc. * Data: w_user like apqi-userid. " Avoid ex check errors * Move 0 to p_status. Move sy-uname to w_user. CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING * CLIENT = SY-MANDT * DEST = FILLER8 GROUP = p_group * HOLDDATE = FILLER8 KEEP = True USER = w_user EXCEPTIONS CLIENT_INVALID = 1 DESTINATION_INVALID = 2 GROUP_INVALID = 3 GROUP_IS_LOCKED = 4 HOLDDATE_INVALID = 5 INTERNAL_ERROR = 6 QUEUE_ERROR = 7 RUNNING = 8 SYSTEM_LOCK_ERROR = 9 USER_INVALID = 10 OTHERS = 11. Move sy-subrc to p_status. EndForm. 77.12. See Also. ZBDC_INSERT ZBDC_CLOSE_GROUP Page 194 78. ZBDC_SCREEN 78.1. Location. YBDCINC. 78.2. Purpose. Starts a new screen in a BDC Session 78.3. Entry. 78.3.1.Program name to run. 78.3.2.Screen number to use. 78.4. Exit. 78.5. Called By. ZBDC_FILLSCREEN ZBDC_SCROLL Perform ZBDC_Screen using p_program w_scrn. 78.6. Calls. 78.7. Tables. 78.8. System Variables. 78.9. Description. Adds a new Screen to a BDC table. 78.10. Examples. EndIf. * * Ok to proceed with this ? * If w_status = c_ok. Zap t_bdcmsg. Perform NewBdc. Perform ZBDC_Screen using 'SAPLCORU' 0100. Perform ZBDC_Field using 'CORUF-AUFNR' w_aufnr. Perform ZBDC_Field using 'CORUF-VORNR' w_vornr. Perform ZBDC_Field using 'BDC_OKCODE' c_enter. Perform ZBDC_Screen using 'SAPLCORU' 0150. If not w_endru is initial. Perform ZBDC_Field using 'CORUF-ENDRU' True. Else. 78.11. SourceCode. *EJECT ********************************************************************** * * Procedure: ZBDC_Screen * * Purpose: Starts a new screen in a BDC Session Page 195 * * Entry: Program name to run. * Screen number to use. * Exit: * * Called By: Perform BDC_Screen using 'SAPSSYM0' ,0103' * * Calls: * * Modification History: * * Date Reason Version Who * Form ZBDC_Screen using p_program like bdcdata-program p_dynpro like bdcdata-dynpro. * * New BDC Session ?? * If W__BDCOpen = False. Zap ZBDC_Table. Move True to w__bdcopen. EndIf. Clear zbdc_table. Move p_program to zbdc_table-program. Move p_dynpro to zbdc_table-dynpro. Move True to zbdc_table-dynbegin. Append zbdc_table. EndForm. 78.12. See Also. Page 196 79. ZBDC_SCROLL 79.1. Location. YBDCINC. 79.2. Purpose. Scrolls a screen so that the relevant row of the displayed table becomes visible. 79.3. Entry. 79.3.1.Program name. The program name that would be specified for ZBDC_Screen (See 78 above) 79.3.2.Screen number. The screen number for the BDC Screen as would be specified for ZBDC Screen. 79.3.3.BDC Code for 'One down'. This is the alpha code placed in the command field when the relevant button on the screen is pressed. Common codes and methods for finding these codes are outlined in section 74.3.2.1 above. 79.3.4.Maximum number of lines displayed on the screen. This is the maximum number of lines that are displayed on the table. 79.3.5.The position of the required record in the displayed table. Note: The position of the required record in the table must be found by constructing the table in the same manner that SAP uses. 79.4. Exit. 79.4.1.The offset on the current page of the required record. 79.5. Called By. 79.6. Calls. ZBDC_FIELD ZBDC_SCREEN 79.7. Tables. 79.8. System Variables. 79.9. Description. This function produces the relevant BDC Table entries to scroll a table to a required position. The function then returns the offset into the table display for the required row that was being sought. In order for this to work, the data has to be collated in the same manner as it is in the table field. The routine calculates the 'page' in which the required record lies by using the maximum number of displayed lines. The remainder from that calculation is the offset into the displayed table, which is passed back tot he calling routine. Page 197 Note, you should always check to make certain there is not a 'Move To' function available with the command. This is generally called '=POPO'. 79.10. Examples. * PERFORM ZBDC_SCREEN USING C_SAPML03T '0142'. if w_lgpla_ix <> 0. * * * * Direct match. screen. Scroll down until the relevant line is on the PERFORM ZBDC_SCROLL USING C_SAPML03T '0142' '=P+' C_MAXLINES w_lgpla_ix changing w_offset. Perform Write_Selkz using w_offset w_menge. Else. * * * Use the bins listed in t_binindex. 79.11. SourceCode. *EJECT ********************************************************************** * * Procedure: ZBDC_Scroll * * Purpose: Scrolls a screen so that the relevant row * of the displayed table becomes visible. * * Entry: Program name, * Screen number, * BDC Code for 'One down' * Maximum number of lines displayed on the * screen. * The position of the required record in * the displayed table. * * Note: The position of the required record in the * table must be found by constructing the * table in the same manner that SAP uses. * * Exit: The offset on the current page of the * required record * * Called By: Perform ZBDC_scroll 'SAPML04I' * '0223' * "=Down" * 15 * 31 * * Calls: ZBDC_Screen * ZBDC_Field * * Modification History: * * Date Reason Version Who * Form ZBDC_Scroll using p_prog type Program_Name p_screen p_down p_maxlines type i p_index like sy-tabix changing p_offset type i. * * Scrolling behaviour. * * When a table is scrolled up or down using the scroll buttons the * table moves up or down one page at a time unless the number of * lines left in the table is less than the number of lines Page 198 * * * displayable in which case the remainder (or the start) of the table is displayed. Data: w__pages type i. " No of lines to scrol * Compute w__pages = p_index / p_maxlines. Compute p_offset = p_index - ( w__pages * p_maxlines ). * If w__pages > 0. Subtract 1 from p_offset. * do. Perform Zbdc_Field using 'BDC_OKCODE' p_down. Perform Zbdc_Screen using p_prog p_screen. Subtract 1 from w__pages. If w__pages <= p_maxlines. Exit. EndIf. enddo. EndIf. * EndForm. 79.12. See Also. Page 199 80. ZBDC_SUBSCRIPT 80.1. Location. YBDCINC. 80.2. Purpose. Creates a subscripted entry in the BDC table. 80.3. Entry. 80.3.1.Field name as a string 80.3.2.Subscript to use 80.3.3.Value to use 80.4. Exit. 80.4.1.BDC Table updated. 80.5. Called By. 80.6. Calls. ZBDC_FIELD USING W_FIELD P_VALUE 80.7. Tables. 80.8. System Variables. 80.9. Description. Formats a subscripted variable for use in a BDC. 80.10. Examples. * * * And scroll the BDC...back to the top of the page first Perform Zbdc_field using 'BDC_OKCODE' 'P--'. Perform ZBDC_Screen using c_saplcomk 0120. Perform zbdc_scroll using c_saplcomk '0120' 'P+' 8 w_fiber changing w_offset. Perform ZBDC_Subscript using 'RC27X-FLG_SEL' w_offset True. Perform zbdc_field using 'BDC_OKCODE' c_batch_splt. Add 1 to w_offset. Write t_allocations-plen to w_char using no edit mask. Condense w_char. Perform ZBDC_Subscript using 'RESBD-MENGE' w_offset w_char. Perform ZBDC_Subscript using 'RESBD-CHARG' w_offset t_allocations-charg. 80.11. SourceCode. *EJECT ********************************************************************** * * Procedure: ZBDC_Subscript Page 200 * * Purpose: Creates a subscripted entry in the * BDC table. * * Entry: Field name as a string * Entry: Subscript to use * Entry: Value to use * * Exit: BDC Table updated. * * Called By: Perform ZBDC_Subscript using 'RM07M-SELKZ' * 7 * w_selkz. * * Calls: ZBDC_Field. * * Modification History: * * Date Reason Version Who * Form ZBDC_Subscript using p_fname p_subscript p_value. * Data: w_subscript(2) type n, w_field(30) type c. * Move p_subscript to w_subscript. Concatenate p_fname '(' w_subscript ')' into w_field. Perform ZBDC_Field using w_field p_value. EndForm. 80.12. See Also. Page 201 81. ZDO_BDC 81.1. Location. YBDCINC. 81.2. Purpose. Runs a specified BDC Session 81.3. Entry. 81.3.1.Transaction Code 81.3.2.Mode ‘A’ ‘E’ ‘N’ - Display all steps of the transaction. Display erroneous screens only. Displays no screens. 81.3.3.Update Type ‘A’ ‘S’ - Asynchronous (Back ground) Synchronous (Foreground) 81.3.4.Table - p_messages - contains batch msgs 81.4. Exit. 81.4.1.MsgId, Error and message if failed. 81.5. Called By. Z_CALL_BDC Perform ZDo_BDC Tables tb_messages using pu_trans w__ydcset-bdcmode w__ydcset-bdcupmode changing w__msgid w__msgno w__text. 81.6. Calls. ZBDC_OPEN_GROUP ZBDC_INSERT ZBDC_CLOSE_GROUP 81.7. Tables. 81.8. System Variables. SY-SUBRC SY-MSGID SY-MSGNO SY-MSGV2 SY-MSGV3 SY-MSGV4 SY-UNAME Page 202 INT4 CHAR NUMC CHAR CHAR CHAR CHAR X C N C C C C 4 2 3 50 50 50 12 Return value after specif Message ID Message number Message variable Message variable Message variable Session: SAP user from SA 81.9. Description. Using the ‘Call transaction’ command the specifed transaction is run. If there are any errors, signified by sy-subrc not being zero, then the appropriate text message is retrieved. If sy-subrc is zero, then the message log is scanned for any Error ('E' class) messages, or aborts. ('A' class). If one is found then the appropriate message is extracted from the message table. If an error occurs and the batch create flag is set then a batch is created automatically. 81.10. Examples. * Perform Perform Perform Perform Perform NewBdc. ZBDC_FillScreen ZBDC_Field ZBDC_FillScreen ZBDC_Field using using using using c_sapml03t 0101 pu_lt01. 'BDC_OKCODE' '/00'. c_sapml03t 0102 pu_lt01. 'BDC_OKCODE' '/00'. * Perform Zdo_bdc tables t_bdcmsg using c_lt01 pu_bdcmode pu_bdcupmode changing w_msgid w_err w_text. EndForm. *Eject *********************************************************************** * * Procedure: LT01_FNC 81.11. SourceCode. *EJECT ********************************************************************** * * Procedure: ZDo_BDC * * Purpose: Runs a specified BDC Session * * Entry: Transaction Code * Mode: * Update Type * * Table - p_messages - contains batch msgs * * Exit: MsgId, Error and message if failed. * * Called By: Perform ZDo_BDC Using 'MM02' 'N' 'S' * Changing w_msgid w_err w_errt * * Calls: * * Modification History: * * Date Reason Version Who * Form ZDo_BDC Tables p_messages structure bdcmsgcoll using p_trans like tstc-tcode p_mode like bdc_struc-bdcmode p_update like bdc_struc-bdcupmode changing p_msgid like sy-msgid p_msgno like sy-msgno p_text type status_text. * Data: w__msgv1 like sy-msgv1, " Message variables w__msgv2 like sy-msgv2, w__msgv3 like sy-msgv3, w__msgv4 like sy-msgv4, w__subrc like sy-subrc, w__exmsg type status_text, w__group like apqi-groupid, " BDC Group name w__istat type i. " BDC Insert status * Zap p_messages. Page 203 Clear p_msgid. Clear p_msgno. Clear p_text. * * * Dump the contents of the BDC table ? If w__dumpbdc = True. New-page print on immediately True with-title with-heading Line-size 255 Line-count 64. Loop at zbdc_table. Write :/ zbdc_table-Program, zbdc_table-dynpro, zbdc_table-dynbegin. Write :/ zbdc_table-fnam. Write :/ zbdc_table-fval. EndLoop. New-page print off. EndIf. Call Transaction p_trans using ZBDC_Table Mode p_mode Update p_update Messages into p_messages. Move sy-subrc to w__subrc. * * * Dump the message table ? If w__ydcset-dumpmsg = True. New-page print on immediately True with-title with-heading Line-size 255 Line-count 64. Loop at p_messages. Call Function 'MESSAGE_TEXT_BUILD' Exporting Msgid = p_messages-msgid Msgnr = p_messages-msgnr Msgv1 = p_messages-msgv1 Msgv2 = p_messages-msgv2 Msgv3 = p_messages-msgv3 Msgv4 = p_messages-msgv4 Importing Message_Text_Output = w__exmsg. Write :/ p_messages-tcode, p_messages-dyname, p_messages-dynumb, p_messages-msgtyp, p_messages-msgid, p_messages-msgnr, w__exmsg. EndLoop. New-Page Print Off. EndIf. * * * Did the BDC work ? If w__subrc <> 0. Move sy-msgid to Move sy-msgno to Move sy-msgv1 to Move sy-msgv2 to Move sy-msgv3 to Move sy-msgv4 to Else. * * * p_msgid. p_msgno. w__msgv1. w__msgv2. w__msgv3. w__msgv4. Scan the messages for A or E class messages ? Read Table p_messages with key msgtyp = 'E'. If sy-subrc <> 0. Read Table p_messages with key msgtyp = 'A'. EndIf. If sy-subrc = 0. Move p_messages-msgid to p_msgid. Move p_messages-msgnr to p_msgno. Move p_messages-msgv1 to w__msgv1. Page 204 Move p_messages-msgv2 to w__msgv2. Move p_messages-msgv3 to w__msgv3. Move p_messages-msgv4 to w__msgv4. EndIf. EndIf. * * * Do we need to build an error message ? If not p_msgno is initial. * * * Get the message text. Call Function 'MESSAGE_TEXT_BUILD' Exporting MSGID = p_msgid MSGNR = p_msgno MSGV1 = w__msgv1 MSGV2 = w__msgv2 MSGV3 = w__msgv3 MSGV4 = w__msgv4 Importing MESSAGE_TEXT_OUTPUT = p_text. * * * Make a batch of this session ?? If w__bdcbatch = True. Get Time. Concatenate p_trans '_' sy-uname sy-uzeit+0(5) into w__group. Perform ZBDC_Open_Group using w__group changing w__istat. If w__istat = 0. Perform ZBDC_Insert using p_trans changing w__istat. If w__istat = 0. Perform ZBDC_Close_Group changing w__istat. EndIf. EndIf. EndIf. * * * Mail a user ? If not w__ydcset-genmail is initial. If not w__ydcset-mailprog is initial. Perform (w__ydcset-genmail) in program (w__ydcset-mailprog) using p_trans p_text sy-uname if found. EndIf. EndIf. EndIf. EndForm. 81.12. See Also. Page 205 82. Z_CALL_BDC 82.1. Location. YBDCINC. 82.2. Purpose. Runs BDC with new style parameters and taking default settings from ydcset 82.3. Entry. 82.3.1.Message Table 82.3.2.Transaction to use 82.3.3.Table - p_messages - contains batch msgs 82.4. Exit. 82.4.1.Table p_messages filled with BDC Messages 82.5. Called By. 82.6. Calls. READ_YDCSET ZDO_BDC 82.7. Tables. 82.8. System Variables. SY-UNAME CHAR C 12 Session: SAP user from SA 82.9. Description. 82.10. Examples. * Perform NewBdc. If not pu_lt01-Matnr is initial. Perform ZBDC_FillScreen using c_sapml03t 0101 pu_lt01. Perform ZBDC_Field using 'BDC_OKCODE' c_enter. Perform ZBDC_FillScreen using c_sapml03t 0102 pu_lt01. Perform ZBDC_Field using 'BDC_OKCODE' c_enter. Perform Z_Call_bdc tables t_bdcmsg using c_lt01. Else. * * * LT09 - create su. No Werks.... Move '' to pu_lt01-werks. Condense pu_lt01-lenum. Perform ZBDC_FillScreen using c_sapml03t 0173 pu_lt01. 82.11. SourceCode. *eject ********************************************************************** * Page 206 * Procedure: Z_Call_BDC * * Purpose: Runs BDC with new style parameters and * taking default settings from ydcset * * Entry: Message Table * Transaction to use * * Table - p_messages - contains batch msgs * * Exit: Table p_messages filled with BDC Messages * * Called By: Perform Z_Call_BDC * Tables t_messages using w_tcode * * Calls: * * Modification History: * * Date Reason Version Who * Form z_Call_BDC Tables tb_messages structure bdcmsgcoll using pu_trans type Transaction_Code. * Data: w__msgid like sy-msgid, " BDC Status result w__msgno like sy-msgno, w__fname like tfdir-funcname, w__text like t100-text. * * BDC Defaults set ?? * If w__ydcset-funcname is initial. Move pu_trans to w__fname. Perform Read_YDCSET using w__fname sy-uname changing w__ydcset. Move False to w__BDCBatch. Move False to w__dumpbdc. Else. Move w__ydcset-crbatch to w__BDCBatch. Move w__ydcset-dumpbdc to w__dumpbdc. EndIf. * Perform ZDo_BDC Tables tb_messages using pu_trans w__ydcset-bdcmode w__ydcset-bdcupmode changing w__msgid w__msgno w__text. * EndForm. 82.12. See Also. Page 207