Monday, July 19, 2010

System Debugging

System Debuggin is used to debug a system program. Debugger will skip this program if System Debugging is not turned on even though you had set the session breakpoint.
How to check the program is system program or not? Go to -> Attribute, Look for Program Status field, "S" represent System Program.



How to turn on System Debugging?
  1. Enter "/hs" instead of "/h" in Command Field.
  2. Go to System -> Utilities -> Debug System.
  3. In debugging session, before reaching the system program, go to Setting -> Display/Change Debugger Settings, and change the debugger setting
  4. In debugging session, before reaching the system program, go to Setting -> System Debugging On/Off.

Friday, June 25, 2010

Application Form: Create Link to other clients


During Unit Testing/ System Integration Testing period, it is advisable to create application form link in other clients instead of creating application for each and every client. Thus, changes in development client are reflected in other clients. (Please take note this is simple a link, no objects are copied).


You can specify the target client and existing active application form that you want to create link to.

Tuesday, June 22, 2010

FREE_SELECTIONS_EX_2_WHERE


This FM helps to construct WHERE conditions of a select statement. This is useful if you have the requirement to  implement a dynamic select statement.

How to implement it?
You have to initiate Type Group RSDS by using TYPE-POOL keyword. After that, you need a internal table and structure of type RSDS_EXPR. This will store the expression of the selection:

RSDS_EXPR-TABLENAME -> Table Name
RSDS_EXPR-EXPR_TAB-> Itab stores the expressions
  • RSDS_EXPR-EXPR_TAB-LOGOP              -> Logical Operation ("AND", "OR", "NOT", only)
  • RSDS_EXPR-EXPR_TAB-ARITY                -> Priority of Logical Operation
  • RSDS_EXPR-EXPR_TAB-FIELDNAME     -> Table's field name for selection
  • RSDS_EXPR-EXPR_TAB-OPTION             -> Selection Option ("EQ", "BT", "CP", "GT", and etc.)
  • RSDS_EXPR-EXPR_TAB-LOW                   -> Value - Low
  • RSDS_EXPR-EXPR_TAB-HIGH                  -> Value - High
Note: If the intended WHERE condition is:
WHERE hvorg EQ '0600'
   AND ( tvorg EQ '0010'
        OR tvorg EQ '0011' )
   AND augst EQ ''
  AND augrd NE '05'.

RSDS_EXPR-EXPR_TAB shall be populated in this manner:

The result would be:

Monday, June 21, 2010

How to debug Background Job (Part 3)

1. During implement your code, Call FM 'C160_HOLD_FOR_DEBUG'.
2. Go to System -> User Profile -> Own Data or T-Code SU03.

3. Add a User Master Parameter ID, 'ESN' and flag it with 'X'. Data stored in Table USR05.

4. This FM will run a infinite loop now and you can debug via SM50.

Thursday, June 17, 2010

How to debug Background Job (Part 2)

1. Write an infinite loop in your code.
DATA: lv_infinite TYPE i.

WHILE lv_infinite EQ 0.
ENDWHILE.
2. Then go to SM50, select the program and then go to:
Program/Session -> Program ->Debugging

Tuesday, June 15, 2010

How to debug Background Job (Part 1)


1. Go to SM37, choose the background job that you want to debug.
2. Enter 'JDBG' (Without '/') at Command Field.

Saturday, June 12, 2010

CRM_ORDER_READ

  1. When you have the BP Number, Get the HEADER_GUID and ITEM_GUID from CRMD_ORDER_INDEX table.
  2. Call FM 'CRM_ORDER_READ' and export these HEADER_GUID and ITEM_GUID to IT_HEADER_GUID and IT_ITEM_GUID.
  3. Set the calling mode to IV_MODE:
    • A = Create
    • B = Change
    • C = Display
    • D = Delete
  4. Export object name such as 'TEXTS', 'ORDERADM_H'  and etc. to IT_REQUESTED_OBJECTS, this is important steps on the performance tuning.
  5. Import the results from the ET_ internal table, suchs as ET_TEXT, ET_ORDERADM_H, and etc.