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
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.
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.2. Then go to SM50, select the program and then go to:
WHILE lv_infinite EQ 0.
ENDWHILE.
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
- When you have the BP Number, Get the HEADER_GUID and ITEM_GUID from CRMD_ORDER_INDEX table.
- Call FM 'CRM_ORDER_READ' and export these HEADER_GUID and ITEM_GUID to IT_HEADER_GUID and IT_ITEM_GUID.
- Set the calling mode to IV_MODE:
- A = Create
- B = Change
- C = Display
- D = Delete
- Export object name such as 'TEXTS', 'ORDERADM_H' and etc. to IT_REQUESTED_OBJECTS, this is important steps on the performance tuning.
- Import the results from the ET_
internal table, suchs as ET_TEXT, ET_ORDERADM_H, and etc.
Tuesday, June 1, 2010
ZUT_GET_LOCAL_TIME_BY_UNAME
LOGIC
----------------------------------------------------------------------
Purpose: Get Local Time according to the user's time zone, or time zone provided.
----------------------------------------------------------------------
SAMPLE CODE
----------------------------------------------------------------------
FUNCTION zut_get_local_time_by_uname.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(IM_UNAME) TYPE SYUNAME OPTIONAL
*" REFERENCE(IM_TZONE) TYPE TZNZONE OPTIONAL
*" REFERENCE(IM_TIMESTAMP) TYPE TZNTIMESTP OPTIONAL
*" EXPORTING
*" REFERENCE(EX_LOCAL_DATE) TYPE SYSTDATLO
*" REFERENCE(EX_LOCAL_TIME) TYPE SYSTTIMLO
*" REFERENCE(EX_LOCAL_TIMESTAMP) TYPE TZNTIMESTP
*"----------------------------------------------------------------------
*--------------------------------------*
* DECLARATION *
*--------------------------------------*
DATA: lv_tzone LIKE ttzdata-tzone,
lv_timestamp TYPE ttzdata-timestamp.
*--------------------------------------*
* TIME ZONE PREPARATION *
*--------------------------------------*
IF im_uname IS NOT INITIAL.
SELECT SINGLE tzone
INTO lv_tzone
FROM usr02
WHERE bname EQ im_uname.
IF sy-subrc NE 0.
IF im_tzone IS NOT INITIAL.
lv_tzone = im_tzone.
ELSE.
lv_tzone = 'UTC'.
ENDIF.
----------------------------------------------------------------------
Purpose: Get Local Time according to the user's time zone, or time zone provided.
----------------------------------------------------------------------
- Get Time Zone
- IF im_uname is provided, get tzone from table usr02.
- ELSEIF im_tzone is provided, tzone = im_tzone.
- ELSE default tzone to 'UTC'
- Get Current Time Stamp
- IF im_timestamp is not provided, call FM 'TZ_UTC_SYSTEMCLOCK' => UTC timestamp
- Get Local Time
- Call FM 'TZ_GLOBAL_TO_LOCAL' to get local time.
SAMPLE CODE
----------------------------------------------------------------------
FUNCTION zut_get_local_time_by_uname.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(IM_UNAME) TYPE SYUNAME OPTIONAL
*" REFERENCE(IM_TZONE) TYPE TZNZONE OPTIONAL
*" REFERENCE(IM_TIMESTAMP) TYPE TZNTIMESTP OPTIONAL
*" EXPORTING
*" REFERENCE(EX_LOCAL_DATE) TYPE SYSTDATLO
*" REFERENCE(EX_LOCAL_TIME) TYPE SYSTTIMLO
*" REFERENCE(EX_LOCAL_TIMESTAMP) TYPE TZNTIMESTP
*"----------------------------------------------------------------------
*--------------------------------------*
* DECLARATION *
*--------------------------------------*
DATA: lv_tzone LIKE ttzdata-tzone,
lv_timestamp TYPE ttzdata-timestamp.
*--------------------------------------*
* TIME ZONE PREPARATION *
*--------------------------------------*
IF im_uname IS NOT INITIAL.
SELECT SINGLE tzone
INTO lv_tzone
FROM usr02
WHERE bname EQ im_uname.
IF sy-subrc NE 0.
IF im_tzone IS NOT INITIAL.
lv_tzone = im_tzone.
ELSE.
lv_tzone = 'UTC'.
ENDIF.
ELSE.
IF lv_tzone IS INITIAL.
IF im_tzone IS NOT INITIAL.
lv_tzone = im_tzone.
ELSE.
lv_tzone = 'UTC'.
ENDIF.
ENDIF.
ENDIF.
ELSEIF im_tzone IS NOT INITIAL.
lv_tzone = im_tzone.
ELSE.
lv_tzone = 'UTC'.
ENDIF.
*--------------------------------------*
* TIMESTAMP PREPARATION *
*--------------------------------------*
IF im_timestamp IS NOT INITIAL.
lv_timestamp = im_timestamp.
ELSE.
CALL FUNCTION 'TZ_UTC_SYSTEMCLOCK'
IMPORTING
* UTC_DATE =
* UTC_TIME =
utc_timestamp = lv_timestamp
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
lv_timestamp = sy-datum.
lv_timestamp+8 = sy-uzeit.
ENDIF.
ENDIF.
*--------------------------------------*
* GET LOCAL TIME *
*--------------------------------------*
CALL FUNCTION 'TZ_GLOBAL_TO_LOCAL'
EXPORTING
* DATE_GLOBAL = '00000000'
timestamp_global = lv_timestamp
timezone = lv_tzone
* TIME_GLOBAL = '000000'
IMPORTING
date_local = ex_local_date
timestamp_local = ex_local_timestamp
time_local = ex_local_time
EXCEPTIONS
OTHERS = 4.
ENDFUNCTION.
IF lv_tzone IS INITIAL.
IF im_tzone IS NOT INITIAL.
lv_tzone = im_tzone.
ELSE.
lv_tzone = 'UTC'.
ENDIF.
ENDIF.
ENDIF.
ELSEIF im_tzone IS NOT INITIAL.
lv_tzone = im_tzone.
ELSE.
lv_tzone = 'UTC'.
ENDIF.
*--------------------------------------*
* TIMESTAMP PREPARATION *
*--------------------------------------*
IF im_timestamp IS NOT INITIAL.
lv_timestamp = im_timestamp.
ELSE.
CALL FUNCTION 'TZ_UTC_SYSTEMCLOCK'
IMPORTING
* UTC_DATE =
* UTC_TIME =
utc_timestamp = lv_timestamp
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
lv_timestamp = sy-datum.
lv_timestamp+8 = sy-uzeit.
ENDIF.
ENDIF.
*--------------------------------------*
* GET LOCAL TIME *
*--------------------------------------*
CALL FUNCTION 'TZ_GLOBAL_TO_LOCAL'
EXPORTING
* DATE_GLOBAL = '00000000'
timestamp_global = lv_timestamp
timezone = lv_tzone
* TIME_GLOBAL = '000000'
IMPORTING
date_local = ex_local_date
timestamp_local = ex_local_timestamp
time_local = ex_local_time
EXCEPTIONS
OTHERS = 4.
ENDFUNCTION.
Subscribe to:
Posts (Atom)