abap training

83
Simple ABAP/4 for trouble shooting May 25th, 2004

Upload: rajesh-kumar

Post on 03-Oct-2015

221 views

Category:

Documents


0 download

DESCRIPTION

hi

TRANSCRIPT

  • Simple ABAP/4 for trouble shooting

    May 25th, 2004

  • Objectives: Understand and get an idea on what ABAP/4 programming does, and what is the component in ABAP workbench

    Get to know common statement, understand the ABAP program logic roughly.

    Able to do the basic investigation when facing the problem.

  • Content Introduction R/3 Basis system overview ABAP/4 overviewComponent, Program, ABAP dictionary, Function Module , Message/Transaction code, etc. Common Statement / Command- Main event in ABAP program- General ABAP command Transportation for ABAP objects Type of problem and how to investigateProgram bug, ABAP runtime error, Update terminate, Unexpected error message.

  • Introduction R/3 Basis system overviewR/3 Basis systemR/3 userR/3 userPresentation componentABAPWorkbenchR/3 userKernel & Basis servicesDatabase Management SystemDatabase

  • Content Introduction R/3 Basis system overview ABAP/4 overviewComponent, Program, ABAP dictionary, Function Module , Message/Transaction code, etc. Common Statement / Command- Main event in ABAP program- General ABAP command Transportation for ABAP objects Type of problem and how to investigateProgram bug, ABAP runtime error, Update terminate, Unexpected error message.

  • ABAP/4 overview Often used transactions What is ABAP/4 program? ABAP dictionary Function Module Message Transaction code Authorization in ABAP objectTopics:

  • Often used transactions SE80 - Repository Browser: Used to display and edit hierarchical lists of development objects. SE11 - Dictionary : Used to define and save data definitions You can also store documentation, help information, data relationships, and other information. You also use the Dictionary to generate database objects like tables and indexes.The Dictionary is a central storage area for system-wide data definitions. Because definitions are stored centrally, they are available for use anywhere in any program throughout the system SE38 - ABAP editor : Create/edit/Display program code SE37 - Function Builder : define and store function modules, use the library to write new modules and look up information on existing modules

  • Often used transactions (cont) SE51 - Screen Painter : Used to design the screens in an application's graphical user interface. SE41 - Menu Painter : Used to design the menus that appear in your interface SE16 - Data browser : Display data in Transparent table or Database view SM30 - Table maintenance : Maintain data

  • ABAP/4 overview Often used transactions What is ABAP/4 program? ABAP dictionary Function Module Message Transaction code Authorization in ABAP objectTopics:

  • What is ABAP/4 program?ABAP/4 : Advance Business Application ProgrammingType of ABAP/4 program

    1Executable program(Report/Interface) Can be started with transaction code/directly/background (via SE38 or SA38 - For example: RMCB0100 )IINCLUDE programCan not run on its own, has been included in other program MModule poolProcessing step of screens, can be executed via transaction code or Menu function (For example: SAPMV45A - Sale order processing)FFunction groupContain function modules (SE37) SSubroutine poolExternally-called subroutines

  • ABAP/4 overview Often used transactions What is ABAP/4 program? ABAP dictionary Function Module Message Transaction code Authorization in ABAP objectTopics:

  • ABAP DictionaryABAP DictionaryTableViewData elementDomainStructureLock objectSearch helpSE11 - Data dictionary

  • ABAP/4 overview Often used transactions What is ABAP/4 program? ABAP dictionary Function Module Message Transaction code Authorization in ABAP objectTopics:

  • Function moduleFunction Module- ABAP/4 program: Include program- Special external subroutines (include) stored in a central library- Different from normal ABAP routine is the clearly defined interfacefor passing data to and from the function module. The calling programand the called function module have separate work areas - Located in Function group (main program start with SAPLxxxx)- Can be tested separately in SE37- Statement in ABAP to call function module are:- CALL FUNCTION xxxxx

  • ABAP/4 overview Often used transactions What is ABAP/4 program? ABAP dictionary Function Module Message Transaction code Authorization in ABAP objectTopics:

  • MessageThere are several different types of message:W - Warning (Correction possible)E - Error (Correction required)S - Success (message on next screen)I - Information (press Enter to continue)A - Abend (Transaction terminated)X - Exit (Terminated with short dump)Note : Transaction code for message maintenance is SE91, Table store the message text is T100, language dependent.ABAP key word - MESSAGE

  • ABAP/4 overview Often used transactions What is ABAP/4 program? ABAP dictionary Function Module Message Transaction code Authorization in ABAP objectTopics:

  • Transaction codeTransaction code is: Sequence of alphanumeric characters forming a code for business task. Transaction type:Dialog transaction - Flow by sequence of screens (for example FB03)Report transaction - Start program with type 1 (for example MCBA)Variant transaction - (client specific) start another transaction with variant (for example UPAR)Area menu - Menu which contain the group of frequently-used transactions (for example S001)Parameter transaction - pre-assign values in the initial screen and suppress the screen when transaction is executed (for example OB22)Note : All transactions are stored in table TSTC, Maintain via SE93

  • ABAP/4 overview Often used transactions What is ABAP/4 program? ABAP dictionary Function Module Message Transaction code Authorization in ABAP objectTopics:

  • Authorization in ABAP object Program authorization Transaction code Table maintenance/Data browser

  • Program authorization groupAuthorization group is field of the authorization objects S_DEVELOP (program development and program execution) and S_PROGRAM (program maintenance).This field contains the name of a program group that allows users to execute programs schedule jobs for background processing maintain programs maintain variants When creating a program, you can specify an authorization group as one of the program attributes. This allows you to group together programs for the purposes of authorization checking.

  • Transaction authorization groupAuthorization object in transaction code will be checked whenever the transaction is started. The following object will be checkedS_TCODE(Authorization check for transaction start )The authorization checks defined by the developer with transaction SE93 (transaction maintenance) or in the ABAP/4 source code continue to be performed.Field to be checked is TCD: Transaction code

  • Table maintenance/Data browserAuthorizations for displaying or maintaining tables. The object onlycontrols access using the standard table maintenance tool (SM31), enhanced table maintenance (SM30) or the Data Browser (SE16), including access in Customizing.Object S_TABU_DIS -Table Maintenance (via standard tools such as SM31) will be checked for the following fields:

    Authorization group for DD objects: Authorization for tables byauthorization class according to table TDDAT. (Using SM31 to display the authorization group table)Activity: Allowed operations.Possible values are:- 02: Create, change or delete (Maintain) table entries- 03: Display table entries only

  • Content Introduction R/3 Basis system overview ABAP/4 overviewComponent, Program, ABAP dictionary, Function Module , Message/Transaction code, etc. Common Statement / Command- Main event in ABAP program- General ABAP command Transportation for ABAP objects Type of problem and how to investigateProgram bug, ABAP runtime error, Update terminate, Unexpected error message.

  • Common Statement / Command Event in ABAP/4 program- Dialog module- Executable program (Selection screen, lists) ABAP statement and Keyword

    Topics:

  • Event in ABAP/4 programEvent in Dialog Module100200300Transaction code has been requested from R/3 userDialog screen chainModule poolPBO Module. Module xxxx Module yyyyPAI Module Module aaaa Module bbbbPBO Module. Module xxxx Module yyyyPAI Module Module aaaa Module bbbbPBO Module. Module xxxx Module yyyyPAI Module Module aaaa Module bbbbPBO = Process Before OutputPAI = Process After Input

  • Question??

  • Common Statement / Command Event in ABAP/4 program- Dialog module- Executable program (Selection screen, lists) ABAP statement and Keyword

    Topics:

  • ABAP statement and KeywordAn ABAP program consists of individual ABAP statements. Each statement begins with a keyword and ends with a period. There might be comment in the same line as a statementFor example: PROGRAM ZTEST. WRITE Hello world.In this case program ZTEST will generate the list consist of line Hello world.StatementThe ABAP programming language consists of the following element types: STATEMENT, KEYWORD, COMMENT.

  • ABAP statement and Keyword(cont)KeywordsDeclarative keywords : define data types or declare the data objects Modularization keywords : define processing blocks in an ABAP program Event keyword :The respective processing blocks are processed as soon as a particular event occurs Define keyword: define processing blocks that are processed as soon as they are called by an explicit statement in an ABAP program or in a screen flow logicControl keywords: control the flow of an ABAP program according to certain conditionsCalling keywords: call processing blocks (defined by modularization keywords) in the same or other ABAP programs or branch completely to other ABAP programsExpression and Operation keywords: Process the data

  • ABAP statement and Keyword(cont)Declarative keywordsTYPES create user-defined elementary data types and structured data typesExample TYPES: surname(20) TYPE C.DATA define local/global variable for structure/internal table/memory blockExample DATA: BEGIN OF address,address_number(10) TYPE C,street(30),country LIKE T001-LAND1, END OF address.TABLES create a data object called a table work area refer to ABAP dictionary(tables, structure,view)Example TABLES: KNA1, KNB1.CONSTANTS declare it as a fixed value variable Example CONSTANTS: name(10) VALUE Exxon Mobilstructure

  • ABAP statement and Keyword(cont)Modularization keywordsEvent define keywordsINITIALIZATION Before selection screen is displayedAT SELECTION-SCREEN After input selection screen + selection screen is activeSTART-OF-SELECTION After process selection screenGET when logical DB offer a line of database tableEND-OF-SELECTION After all selection has been doneTOP-OF-PAGE Process when new page is startedEND-OF-PAGE Process when page is endedAT LINE-SELECTION When user select line in the listAT USER-COMMAND When user press function key/enter command in command field

  • ABAP statement and Keyword(cont)Modularization keywords (cont)Process define key word for statement blockFORM...ENDFORMDefine subroutine

    FUNCTION...ENDFUNCTION Define Function module MODULE...ENDMODULE After process selection screen

  • ABAP statement and Keyword(cont)Built in functionArithmetic & string function

    ABSAmount (absolute value) x von xSIGNSign of x; SIGN( x ) = 1 if x > 0 SIGN( x ) = 0 if x = 0 SIGN( x ) = -1 if x < 0

    CEILSmallest integer value that is not less than xFLOORLargest integer value that is not greater than xTRUNCInterger part of xFRACDecimal part of xSTRLEN String length

  • SELECT statementsSAP tables vs. Internal TablesLOOP-ENDLOOPWRITE statementsComment in ABAPExpressions and Operations in ABAPSubroutines: FORMS, FUNCTION MODULEABAP statement and Keyword(cont)

  • to read table entries (records) from a table (database) the return code is stored in system field SY-SUBRC 0: if one or more table entries were retrieved 4: if no table entries were retrieved (table is empty/ no data match the criteria)ABAP statement and Keyword(cont)SELECT statement

  • ABAP statement and Keyword(cont)SELECT statement

  • For selecting individual columns from a table:ABAP statement and Keyword(cont)SELECT statement

  • SELECT DISTINCT . . . INTO ( . . . ) FROM . . . For excluding duplicates: Aggregate expressions:SELECT AVG( )COUNT( DISTINCT )COUNT( * )MAX( )MIN( )SUM( FROM . . .INTO ( . . . )ABAP statement and Keyword(cont)SELECT statement

  • Two dimensional matrix describing relationship in database systemComponents:Table fieldsForeign keysTechnical SettingsIndexesABAP statement and Keyword(cont)SAP Table

  • One way to process large quantities of data in ABAPInternal table is a dynamic sequential dataset in which all records have the same structure and a keyThe data is taken from a fixed structure, stored line by line in the memoryABAP statement and Keyword(cont)Internal Table

  • TYPES:BEGIN OF T_T001K, BWKEY LIKE T001K-BWKEY,BUKRS LIKE T001K-BUKRS,END OF T_T001K.

    DATA:IT_T001K TYPE T_T001K OCCURS 0.ABAP statement and Keyword(cont)Internal Table Declaration

  • DATA:BEGIN OF IT_T001K OCCURS 0,BWKEY LIKE T001K-BWKEY,BUKRS LIKE T001K-BUKRS,END OF IT_T001K.

    WITH HEADER LINEABAP statement and Keyword(cont)Internal Table Declaration

  • Allows us to get contents of table and put it into internal table

    SELECT .. FROM INTO TABLE WHERE ABAP statement and Keyword(cont)SAP --> Internal table

  • To perform looping operation in the flow logicFour kinds of loops in ABAP:Unconditional loops using the DO statementConditional loops using the WHILE statementLoops through internal tables and extract datasets using the LOOP statementLoops through datasets from database tables using SELECT statementABAP statement and Keyword(cont)LOOP Command

  • DOTIMES.

    ENDDO.Loop indexstatementsABAP statement and Keyword(cont)DO Command

  • WHILE .

    ENDWHILE.WHILE COUNTER > 0....SUBTRACT 1 FROM COUNTER.ENDWHILE.statementsLoop indexABAP statement and Keyword(cont)WHILE Command

  • LOOP AT IT_T001K.WRITE: / IT_T001K-BWKEY.ENDLOOP.ABAP statement and Keyword(cont)LOOP Command Example

  • The basic ABAP statement for displaying data on the screenWRITE

    ABAP statement and Keyword(cont)WRITE Command

  • behind the WRITE statement is for formatting optionsE.g. : ..NO-ZERO, NO-SIGN, No GROUPING, DD/MM/YY, LEFT-JUSTIFIED, CENTERED, RIGHT-JUSTIFIEDThe most commonly used options:CURRENCY wto treat the content of field as a currency amount with w as a currency key

    DECIMALS dto determine number of decimals to be displayed

    UNIT uto format the value according to the unit specified in the field u. The content of field is treated as a quantity.

    ABAP statement and Keyword(cont)WRITE Command

  • WRITE: / Write.WRITE: it_bseg-dmbtr CURRENCY it_bkpf-hwaer.WRITE: text-t01 LEFT-JUSTIFIED.ABAP statement and Keyword(cont)WRITE Command Example

  • Written between statements of the ABAP program to explain its purpose to a reader / for internal documentationHelps to understand and change the programFlagged by special character:Asterisk (*) entire line to be a commentDouble quotation mark () part of a line to be a commentIgnored by the system

    ABAP statement and Keyword(cont)Comment

  • * Write Sales Order number to the screenWrite: Sales Order : , 20 it_vbak-vbeln. Sales Order NumberABAP statement and Keyword(cont)Comment example

  • Relational Operator String Comparison Logical Expression If/Case/Check Statement Exit/Continue Statement

    ABAP statement and Keyword(cont)Expression & Operation

  • ABAP statement and Keyword(cont)Relational Operator

  • ABAP statement and Keyword(cont)String Comparison

  • Logical Expression1. AND2. OR3. NOTABAP statement and Keyword(cont)

  • IF StatementABAP statement and Keyword(cont)

  • Execute different statement blocks depending on the contents of particular data fieldsWHEN OTHERS:contents of does not equal to any of the contentsABAP statement and Keyword(cont)CASE statement

  • Within Loop:to terminate looppass conditionallyABAP statement and Keyword(cont)CHECK statement

  • Terminate loop entirely without any conditionTerminate a subroutine without any conditionABAP statement and Keyword(cont)

  • Terminate loop pass immediately without any conditionABAP statement and Keyword(cont)

  • Avoid redundancyModularization:easy to readeasy to callABAP statement and Keyword(cont)

  • DefineFORM []. ENDFORM.Calling internallyPERFORM [].Calling external subroutinePERFORM (program name) [IF FOUND]

    ABAP statement and Keyword(cont)

  • form f_check_file_exists using filename..............endform.Parameters: p_path like rlgrap-filename...............................perform f_check_file_exists using p_path.ABAP statement and Keyword(cont)

  • Content Introduction R/3 Basis system overview ABAP/4 overviewComponent, Program, ABAP dictionary, Function Module , Message/Transaction code, etc. Common Statement / Command- Main event in ABAP program- General ABAP command Transportation for ABAP objects Type of problem and how to investigateProgram bug, ABAP runtime error, Update terminate, Unexpected error message.

  • Transportation of ABAP objectsType of ABAP objectIn Workbench organizer, there are several ABAP objects which are transportableObject In Transport request contain the following key

    PgmID: Program Id in request and task, normally there are 2 types for ABAP objectsR3TR - name for R/3 Repository objects and Customizing objectsLIMU - enables transport of R/3 Repository object componentsObj:Object type (for example, DOMA, DTEL, FORM, PROG..)Object name:Name of the each objectFunct.:Function D,K,MObjStatus: LOCKED,ERR_IMP,OK_IMP and OK_GEN

  • Transportation of ABAP objects (cont)Version management serves different purposes and user groups:

    - The developer can keep track of his or her work ("What have I changed?")- The developer can restore a previous version by reactivating it.- The system administrator can monitor work ("Which objects were changed and how were they changed in a specific time interval?")- It provides the basis for the auditor, who requires a complete history of changes.- It enables customers to adjust data with the help of the system after upgrading to a new Release.

  • Transportation of ABAP objects (cont)ABAP object Version compare

    ABAP programTransaction code SE38, Under menu Utilities-->Version management Function moduleTransaction code SE37, Under menu Utilities-->Version management Data Dictionary Transaction code SE11, Under menu Utilities-->Version management Object BrowserTransaction code SE80, Go to specific object and under menu utilities, Version managementWorkbench OrganizationTransaction code SE09, under menu Environment

  • Transportation of ABAP objects (cont)ABAP object Version compare From Version management, you can1. Display the object in other version2. Compare the object in 2 versions3. Retrieve the content of older version 4. Remote compare with another system5. Display Transport Request

  • Content Introduction R/3 Basis system overview ABAP/4 overviewComponent, Program, ABAP dictionary, Function Module , Message/Transaction code, etc. Common Statement / Command- Main event in ABAP program- General ABAP command Transportation for ABAP objects Type of problem and how to investigateProgram bug, ABAP runtime error, Update terminate, Unexpected error message.

  • Type of problem & How to investigateType of problems

    ABAP Runtime ErrorCause: Program error, system exception, database process error, etc.Using transaction code ST22 to analyze error.Unexpected messageUpdate TerminateCause: Update module can not be completedProgram bug Cause: Written code is not correct

  • ABAP Runtime error - AnalysisError IDDate and timeDouble click to display detail

  • Unexpected messageHow to deal with unexpected message?1. Go to Message long text if available.2. Read through the section in the message help text, process where appropriate.Message help text component Diagnosis System response Procedure3. Find the message location, the logic that drive the message appearance. Debugging Use Where used list function to find out the code where message is located (Not applicable for dynamic call)

  • Unexpected message (cont)How to debug and locate the message in the program?1. Debugging Set Debugger ON In Debugging screen, Set dynamic breakpoint on command Message Select debugging -> Continue (F8) When program reach MESSAGE command, cursor will be stopped Check the above logic before get into the current command, see the related data/value from debugging screen.

    2. Using Where used list Function in message workbench SE91/SE80 When message is displayed, Double click on the status bar(if the message appear only in status bar , not popup) OR press F1 for popup message. Go to transaction code SE91/SE80 to find the location of the message call.

  • Update terminateUpdate terminate: Message/SAP internal mail will be sent to the transaction owner, either Error message Or ABAP runtime error (short dump) might be created.

    Analyzing the errorGo to transaction code SM13 to analyze the update error.(Or Select Tools --> Administration --> Monitoring --> Update)

    Go to detail in update modules, You will get the following information:Where the error occurred: Program name, function module, line number and error text. (go to ABAP short dump Or Editor to locate the position)Why the error occurred:

  • Program bugAnalyzing the error1. Find out what went wrong.2. Locate the position in the ABAP program

    How to find the right place?1. Debugging 2. Use Call Hierarchy (SE48)3. Use find function in ABAP editor

  • Simple DebuggingHow to: Switch on the debugger. Set and delete static and dynamic breakpoints. Set Watch points. Stop a program at specific key words or events or when a fields contents change. Continue processing after an interrupt. Display field contents during runtime. Display the contents of an internal table. Change field contents for testing purposes. Change the contents of an internal table. Display and use the debuggers six different views.

  • Simple DebuggingStart debugging:/h Start the debugger in Normal mode. Press enter to start./hs Start the Debugger in System mode, for example, in order to debug the system program (program with type S)Appropriate menu options under system -> Utilities -> Debug ABAPBreak-points Command.SE38 Start of programs in the debugging of transaction code SE38 SM50/SM51 via debugging menuSE80 - Object browser

  • Simple Debugging Set and delete static and dynamic breakpointsStatic break-point Command BREAK-POINT. Or BREAK Dynamic break-pointIn ABAP Editor SE38 --> Utilities --> Breakpoints --> Display/SetIn Debugging mode Place the cursor on the statement Choosing break-point -> Set/DeleteAt ABAP commandAt Event/SubroutineAt Function moduleSystem exception

  • Simple DebuggingSingle step (F5)Execute (F6)Return (F7)Continue (F8)

    Field : Display content of fields up to 8 fieldsTable: Display content of internal tableWatchpoints: Manage watchpoint during debug modeCalls : Display Call stack up to current statement (in sequence)Overview: structure of program, display event, sub routine, module and current statementStepping Display mode

  • Simple Debugging Caution when debugging in Production system

    Since only a restricted number of dialog work processes can be switched to debugging mode, you should leave the debugger as soon as possible when you have finished working with it. Otherwise, the work process is not released for other users

  • Question ??

    **All application programs, along with parts of the R/3 Basis system, are written in the ABAP Workbench using ABAP, SAPs programming language. The individual components of application programs are stored in a special section of the database called the R/3 Repository.

    **********ABAP dictionary object integreated in ABAP development workbench: Program, screen, interface, dialog.consists of:1. Table:Table field, Foreign key(relationship b/n table and other), technical setting(coontrol how table should be created on theDB),indexSTD table can be modified using Append structure(Customizing include)2. View Database view, Projection view, Help view(used in Search help), Maintenance view.3. Data element - describe technical attribute, format specification - data type/length/decimal place copied from Domain), semantic field info - Text, document, label, parameter id4. Structures- mainly used in ABAP program, structure will contain data during program runtime5. Domains- Define data type/length/Value range- either from table or fixed value, Ensure the consistency of data field,6. Search help: Be used to assign an input help (F4) User F4-> system offer Search path -> select-> enter restriction ->find and output as list -> select -> value copied into screen(possible with other value)7 Lock object: Synchronizes access of several user to the same data (lock at the SAP level) 8. Type groups:

    **************PBO - Process Before OutputPAI - Process After Input**********You can use the SELECT statement to read table entries (records) from a table (database).Because the SELECT statement can potentially read more than one record from a table, an ENDSELECT statement is required to build a processing loop for the table. You can display the structure (field names, field attributes) of a table via the Help pushbutton (or Utilities -> Help on...). If you are using the editor in Command mode, you can type the command SHOW on the editor command line.Once you are on the table structure display screen, you can enter SHOW on the command line to view another tables structure.You use the TABLES statement, to declare the structure of a table to the ABAP/4 program.Reference the fields of a table by specifying the table name followed by the field name separated by a hiphen. For example: TABNA-COUNTRYThe System field SY-SUBRC holds a return code from the SELECT operation. It will have a value of: 0 if one or more table entries were retrieved 4 if no table entries were retrieved (table is empty)

    ***When using SELECT DISTINCT or aggregate expressions, the sequence/placement of the FROM and INTO additions is unimportant. *Table fields: defines the field names and data types of the fields contained in the tableForeign Keys: defines the relationships between the table and other tablesTechnical settings: control how the table should be created on the databaseIndexes: speed up the selection of data from the tale*Standard tables:To address the individual entries using the index.The access time increases in a linear relationship with the number of table entriesUseful if we want to fill and process the table in separate steps.

    Sorted tables:Sorted as we fill it.Entries are inserted according to the sort sequence defined through the table key.Particularly useful for partially sequential processing in a LOOP if we specify the beginning of the table key in the WHERE condition

    Hashed tables:The main operation is key accessUseful if we want to construct and use an internal table which resembles a database table or for processing large amounts of data****You can specify the value for the number of loop passes in the form of a constant or field.Parameter TIMES is optional. If you do not specify this parameter, you must include a termination condition within the loop statement (see EXIT statement).There is no limit to the number of nesting levels for loop statements.The system field SY-INDEX holds the value of the current loop pass. The first time that the statements within the loop are processed, SY-INDEX will have a value of 1.The number of loop passes cannot be controlled via the SY-INDEX system field.*In a WHILE loop, the statement sequence will continue to be executed for as long as the conditions of the logical expression are fulfilled.There is no limit to the number of nesting levels for loop statements.The system field SY-INDEX holds the value of the current loop pass. The first time that the statements within the loop are processed, SY-INDEX will have a value of 1.The number of loop passes cannot be controlled via the SY-INDEX system field.*This form of LOOP loops through the internal table, performing for each row. For each internal table row, the system transfers the relevant program fields to or from the corresponding screen table row.When using step loops, omit the CURSOR parameter in the PAI event. The FROM and TO parameters are only possible with step loops. (For further information, refer to Using Step Loops.) The WITH CONTROL parameter is only for use with table controls.

    *Statement WRITE writes field to the current list in its standard output format. By default, the list is displayed on the screen. can be: any data object, field symbol, parameter, or text symbol

    ******************Describes 4 types of problem (regular basis)*Describes 4 types of problem (regular basis)*Describes 4 types of problem (regular basis)*Describes 4 types of problem (regular basis)**Describes 4 types of problem (regular basis)*(Go through all sections)Current practices.When the Termination is occurred during the transaction,>> What happened, section to see what is going on that make the problem occurred>> Error analysis, To see possible reason why this error happen>> How to correct the error, suggestion by SAP as a default. >> Information on where terminate is occurred>> Source code extract, Display ABAP source code where the error is occurred>> Content of field: Used for checking and get the condition that cause the error>> Active calls/events: Program active call stack.

    PracticeShow the real example :: in APP maybe?*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.*When there is an unexpected message appeared in transaction, the first thing to check is Long description of the message. Double click on the status bar to see whether the message itself contain more information or not, for some message Message with Long text maintained, The structure is below:1. Message2. Diagnosis3. Procedure

    If the long text doesnt help, and need to find out the root cause why the message has been issuedThere are several options:1. Use the message number and use where used list function for the specify message. If message has been issued statically and easy to find out the exact location, then go to the program that call this message and read the logic behind the scene2. Process the transaction again, If able do so, and debug program with keyword MESSAGE.