Saturday, January 29, 2011

Call Transaction using BDC Data

******** Data Declaration******
DATA: bdcdata_wa TYPE bdcdata,
bdcdata_tab TYPE TABLE OF bdcdata.
DATA opt TYPE ctu_params.
*******************************
CLEAR bdcdata_wa.
bdcdata_wa-program = 'SAPMM61X'.
bdcdata_wa-dynpro = '0100'.
bdcdata_wa-dynbegin = 'X'.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-WERKS'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'RM61X-WERKS'.
bdcdata_wa-fval = p_werks.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-VERSL'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'RM61X-VERSL'.
bdcdata_wa-fval = 'NETCH'.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-BANER'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'RM61X-BANER'.
bdcdata_wa-fval = '1'.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-LIFKZ'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'RM61X-LIFKZ'.
bdcdata_wa-fval = '3'.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-DISER'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'RM61X-DISER'.
bdcdata_wa-fval = '1'.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-PLMOD'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'RM61X-PLMOD'.
bdcdata_wa-fval = '1'.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-TRMPL'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'RM61X-TRMPL'.
bdcdata_wa-fval = '1'.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-DISPD'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = lv_tpdat.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-ANZLS'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'RM61X-ANZLS'.
bdcdata_wa-fval = 'X'.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_CURSOR'.
bdcdata_wa-fval = 'RM61X-UXKEY'.
APPEND bdcdata_wa TO bdcdata_tab.

CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'RM61X-UXKEY'.
bdcdata_wa-fval = p_uxkey.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>
CLEAR bdcdata_wa.
bdcdata_wa-fnam = 'BDC_OKCODE'.
bdcdata_wa-fval = '/00'.
APPEND bdcdata_wa TO bdcdata_tab.

*--->>>
opt-dismode = 'E'.
opt-defsize = 'X'.

*--->>>
CALL TRANSACTION 'MD01' USING bdcdata_tab OPTIONS FROM opt.

Friday, January 28, 2011

Dynamic Selection Screen in Report

The input screen will vary based on the radio button selected,

Find the screen output based on the radio button selected.

screen 1.


screen2.


Code for the same.

***********SELECTION-SCREENS**********************
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001 .
PARAMETERS :dele RADIOBUTTON GROUP mod1 USER-COMMAND com DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: cre RADIOBUTTON GROUP mod1 .
SELECTION-SCREEN COMMENT (15) text-007.
SELECTION-SCREEN COMMENT 40(20) text-008.
PARAMETERS: lv_scen TYPE plscn.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-003.
PARAMETER : p_param LIKE rlgrap-filename MODIF ID mod.
SELECTION-SCREEN END OF BLOCK blk3.

SELECTION-SCREEN BEGIN OF BLOCK blk4 WITH FRAME TITLE text-004.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (15) text-005 MODIF ID mod.
PARAMETERS: lv_plnrd TYPE pasch DEFAULT 'LA' MODIF ID mod.
SELECTION-SCREEN POSITION 40.
PARAMETERS: lv_month TYPE c AS CHECKBOX MODIF ID mod .
SELECTION-SCREEN COMMENT (30) text-006 MODIF ID mod.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK blk4.

SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
SELECT-OPTIONS : lv_plant FOR plaf-plwrk MODIF ID rad,
lv_matnr FOR plaf-matnr MODIF ID rad,
lv_fini FOR plaf-pedtr MODIF ID rad.

SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN END OF BLOCK blk1.

AT SELECTION-SCREEN OUTPUT.
PERFORM input_screen. " Validation

AT SELECTION-SCREEN ON p_param.
IF cre = 'X' AND sy-ucomm = 'ONLI'.
IF p_param IS INITIAL.
MESSAGE e001(zmrp).
ENDIF.
ENDIF.

AT SELECTION-SCREEN ON lv_plant.
IF dele = 'X' AND sy-ucomm = 'ONLI'.
IF lv_plant IS INITIAL.
MESSAGE e002(zmrp).
ENDIF.
ENDIF.

AT SELECTION-SCREEN ON lv_matnr.
IF dele = 'X' AND sy-ucomm = 'ONLI'.
IF lv_matnr IS INITIAL.
MESSAGE e003(zmrp).
ENDIF.
ENDIF.
*--->>> For F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_param.

PERFORM f4_for_file_path.
*--->>>
FORM f4_for_file_path .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_param.
ENDFORM.

*--->>>
FORM input_screen .
IF cre = 'X'.
LOOP AT SCREEN.
IF screen-name = 'LV_PLNRD'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'MOD'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'RAD'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

IF dele = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'MOD'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'RAD'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.

SAP MRP User Exit

MRP Run Exit Name - M61X0001 --> EXIT_SAPMM61X_001

This exit will trigger only when MRP Exit is specified in the input screen.

eg. code.

IF sy-subrc EQ 0.
CASE user_key.
WHEN ' '.
stop_planning = 'X'. "Execute Stop Planning
WHEN 'R100'. " Exit Name
IF mt61d-dispo NE 'R100'. " MRP Controller
no_planning = 'X'.
ENDIF.
WHEN 'R101'. " Exit Name
IF mt61d-dispo NE 'R101'. " MRP Controller
no_planning = 'X'.
ENDIF.
WHEN 'P10'. " Exit Name
IF mt61d-dispo NE 'FOR' AND " all are MRP controllers
mt61d-dispo NE 'HMT' AND
mt61d-dispo NE 'SNF' AND
mt61d-dispo NE 'RSN' AND
mt61d-dispo NE 'PRA' AND
mt61d-dispo NE 'PTA'.
no_planning = 'X'.
ENDIF.
ENDCASE.

Sunday, January 16, 2011

SAP Math Functions

Mathematical functions
ABAP contains a range of built-in functions that you can use as mathematical expressions, or as part of a mathematical expression:
[COMPUTE] n = func( m ).
The blanks between the parentheses and the argument m are obligatory. The result of calling the function func with the argument m is assigned to m.
Functions for all Numeric Data Types
The following built-in functions work with all three numeric data types (f, i, p) as arguments.
Functions for all Numeric Data Types
Function Result
abs Absolute value of argument.
sign Prefix of the argument : 1 x > 0
SIGN( x ) = 0 if x = 0
-1 x < 0
ceil Smallest integer value not smaller than the argument.
floor Largest integer value not larger than the argument.
trunc Integer part of argument.
FRAC Fraction part of argument.
The argument of these functions does not have to be a numeric data type. If you choose another type, it is converted to a numeric type. For performance reasons, however, you should use the correct type whenever possible. The functions itself do not have a data type of their own. They do not change the numerical precision of a numerical operation.

DATA n TYPE p DECIMALS 2.
DATA m TYPE p DECIMALS 2 VALUE '-5.55'.
n = abs( m ). WRITE: 'ABS: ', n.
n = sign( m ). WRITE: / 'SIGN: ', n.
n = ceil( m ). WRITE: / 'CEIL: ', n.
n = floor( m ). WRITE: / 'FLOOR:', n.
n = trunc( m ). WRITE: / 'TRUNC:', n.
n = frac( m ). WRITE: / 'FRAC: ', n.
The output appears as follows:
ABS: 5.55
SIGN: 1.00-
CEIL: 5.00-
FLOOR: 6.00-
TRUNC: 5.00-
FRAC: 0.55-

DATA: t1(10) TYPE c,
t2(10) TYPE c VALUE '-100'.
t1 = ABS( t2 ).
WRITE t1.
Result:
100
Two conversions are performed. First, the contents of field t2 (type c) are converted to type p. Then the system processes the abs function using the results of the conversion. Then, during the assignment to the type c field t1, the result of the function is converted back to type c.
Floating-Point Functions
The following built-in functions work with floating point numbers (data type f) as an argument.
Floating point functions
Function Meaning
acos, asin, atan; cos, sin, tan Trigonometric functions.
cosh, sinh, tanh Hyperbolic functions.
exp Exponential function with base e (e=2.7182818285).
log Natural logarithm with base e.
log10 Logarithm with base 10.
sqrt Square root.
For all functions, the normal mathematical constraints apply (for example, square root is only possible for positive numbers). If you fail to observe them, a runtime error occurs.
The argument of these functions does not have to be a floating point field. If you choose another type, it is converted to type f. The functions themselves have the data type f. This can change the numerical precision of a numerical operation.

DATA: result TYPE f,
pi(10) TYPE c VALUE '3.14159265'.
result = cos( pi ).
WRITE result.
The output is -1.00000000000000E+00. The character field pi is automatically converted to a type f field before the calculation is performed.