Friday, September 9, 2011

Reading data from B2 Cluster

1. Retrieving data from B2 cluster using Function module.

Function module name is - HR_FORMS_TIM_GET_B2_RESULTS

Sample Code -

*&---------------------------------------------------------------------*
*& Report  YTEST_B2_CLUSTER
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ytest_b2_cluster.

TABLES: pernr.

infotypes: 0000, 0001.

DATA: lv_begda TYPE dats,
      lv_endda TYPE dats.

DATA: ls_tim_b2 TYPE hrf_tim_b2.

lv_begda = '20110101'.
lv_endda = '20110830'.
START-OF-SELECTION.
GET pernr.

  CALL FUNCTION 'HR_FORMS_TIM_GET_B2_RESULTS'
    EXPORTING
      pernr                 = pernr-pernr
      begda                 = lv_begda
      endda                 = lv_endda
    IMPORTING
      tim_b2                = ls_tim_b2
    EXCEPTIONS
      wrong_cluster_version = 1
      no_read_authority     = 2
      cluster_archived      = 3
      technical_error       = 4
      OTHERS                = 5.

END-OF-SELECTION.

2.  Retrieving data from B2 cluster using Import statement.

*--->>> INCLUDE rpc2b200 ( RPCnxxy0)
*--->>> n = 1, 2, 3 or 4 (for PCL1, PCL2, PCL3, PCL4)
*--->>> xx = cluster ID
*--->>> y = country grouping (0 for international otherwise country indicator T500L)

INCLUDE rpc2b200. ( so here we are using PCL2, B2 cluster and country key international )
TABLES: pernr, pcl2.
INFOTYPES00000001.
DATA: lv_begda TYPE dats,
      lv_endda TYPE dats.
DATA: lit_saldo TYPE STANDARD TABLE OF pc2b5.
START-OF-SELECTION.

GET pernr.
  b2-key-pernr = pernr-pernr.
  b2-key-pabrj = '2011'.
  b2-key-pabrp = '05'.
  b2-key-cltyp = '1'.
  IF pernr-pernr EQ '00010673'.
    IMPORT SALDO FROM DATABASE pcl2(b2) ID b2-key.
    IF sy-subrc EQ 0.
      LOOP AT saldo. " saldo is a table in cluster b2
       APPEND saldo TO lit_saldo.
      ENDLOOP.
    ENDIF.
   ENDIF.
END-OF-SELECTION.


3.  Retrieving data from B2 cluster using Macro statement.

TABLES: pernr, pcl2, pcl1.*  Buffer definition
INCLUDE rpppxd00.
DATA: BEGIN OF COMMON PART.
INCLUDE rpppxd10.
DATA: END OF COMMON PART.

INCLUDE rpc2b200.  " Same as explained for Import statement

INCLUDE rpppxm00.  " all macro definitions
DATA: lit_saldo TYPE STANDARD TABLE OF pc2b5.

START-OF-SELECTION.

GET pernr.
  b2-key-pernr = pernr-pernr.
  b2-key-pabrj = '2011'.
  b2-key-pabrp = '05'.
  b2-key-cltyp = '1'.
  IF pernr-pernr EQ '00010673'.
** reset macro
    rp-init-buffer.
** import macro
    rp-imp-c2-b2.
    IF sy-subrc EQ 0.
      LOOP AT saldo.  " saldo is a table in cluster b2
       APPEND saldo TO lit_saldo.
      ENDLOOP.
    ENDIF.
  ENDIF.

END-OF-SELECTION.







Tuesday, July 19, 2011

Adding Multiple line text in ALV

*&---------------------------------------------------------------------*
*& Report YTEST_ALV1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ytest_alv1.
tables: ekpo.
***************************************************************
* type pools
***************************************************************
TYPE-POOLS : slis.
***************************************************************
* type declaration
***************************************************************
TYPES: BEGIN OF t_polist,
ebeln TYPE ebeln,
END OF t_polist.

TYPES: BEGIN OF t_display,
ebeln TYPE ebeln,
remark TYPE tdline,
END OF t_display.

***************************************************************
* Internal Table declaration
***************************************************************
DATA: git_polist TYPE STANDARD TABLE OF t_polist,
git_display TYPE STANDARD TABLE OF t_display.

***************************************************************
* Work area declaration
***************************************************************
DATA: gwa_polist TYPE t_polist,
gwa_display TYPE t_display.


************************************************************
* Text Declaration
************************************************************
DATA: lv_name TYPE tdobname,
lv_id TYPE tdid,
lv_lang TYPE spras,
lv_object TYPE tdobject.
DATA: lit_lines TYPE STANDARD TABLE OF tline,
lwa_lines TYPE tline.
************************************************************
* ALV Data Declaration
************************************************************
DATA : g_repid LIKE sy-repid,
gs_layout TYPE slis_layout_alv,
gs_print TYPE slis_print_alv,
gt_list_top_of_page TYPE slis_t_listheader,
gt_events TYPE slis_t_event,
gt_sort TYPE slis_t_sortinfo_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
fieldcat_ln LIKE LINE OF gt_fieldcat,
fieldcat_in TYPE slis_fieldcat_alv,
lwa_sort TYPE LINE OF slis_t_sortinfo_alv,
col_pos TYPE i.
DATA : gs_variant LIKE disvariant,
g_save.
DATA: it_evt TYPE slis_t_event,
wa_evt TYPE slis_alv_event.
************************************************************
**Macro for Field Catelogue
************************************************************
DEFINE build_cat.
clear: fieldcat_ln.
fieldcat_ln-fieldname = &1.
fieldcat_ln-tabname = 'GIT_DISPLAY'.
fieldcat_ln-seltext_l = &2.
fieldcat_ln-col_pos = &3.
fieldcat_ln-outputlen = &4.
append fieldcat_ln to gt_fieldcat.
END-OF-DEFINITION.
************************************************************
* Selection screen
************************************************************
select-OPTIONS: p_ebeln for ekpo-ebeln.
************************************************************
* Start of program
************************************************************
START-OF-SELECTION.
*--->>> selecting the PO document no
SELECT ebeln FROM ekpo
INTO TABLE git_polist where ebeln in p_ebeln.
*--->>>
SORT git_polist BY ebeln.
*--->>>
DELETE ADJACENT DUPLICATES FROM git_polist COMPARING ALL FIELDS.
*--->>> reading the first line of text, if multiple lines are present, we will add it later
LOOP AT git_polist INTO gwa_polist .
gwa_display-ebeln = gwa_polist-ebeln.
lv_id = 'F02'.
lv_lang = 'E'.
lv_object = 'EKKO'.
CLEAR: lv_name.
lv_name = gwa_polist-ebeln.
CLEAR: lit_lines[].
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = lv_id
language = lv_lang
name = lv_name
object = lv_object
TABLES
lines = lit_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
ELSE.
READ TABLE lit_lines INTO lwa_lines INDEX 1.
ENDIF.
gwa_display-remark = lwa_lines-tdline.
CLEAR: lwa_lines.
APPEND gwa_display TO git_display.
CLEAR: gwa_display.
ENDLOOP.
*--->>> field cat
build_cat 'EBELN' 'PO Document No' '1' '20'.
build_cat 'REMARK' 'Remark' '2' '125'.
*--->>> alv
g_repid = sy-repid.
gs_variant-report = g_repid.
g_save = 'A'.

*--->>> this event for displaying mutiple lines

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
et_events = it_evt.
*
READ TABLE it_evt INTO wa_evt
WITH KEY name = slis_ev_after_line_output .
wa_evt-form = slis_ev_after_line_output .
MODIFY it_evt FROM wa_evt INDEX sy-tabix .
*
READ TABLE it_evt INTO wa_evt
WITH KEY name = slis_ev_top_of_page .
wa_evt-form = slis_ev_top_of_page .
MODIFY it_evt FROM wa_evt INDEX sy-tabix .
*--->>> end of event setting

*--->>> call the list display
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_structure_name = 'GIT_FINAL'
it_fieldcat = gt_fieldcat[]
is_variant = gs_variant
it_events = it_evt
TABLES
t_outtab = git_display
EXCEPTIONS
program_error = 1
OTHERS = 2.

*&---------------------------------------------------------------------*
*& Form after_line_output
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RS_LINEINFO text
*----------------------------------------------------------------------*
FORM after_line_output USING rs_lineinfo TYPE slis_lineinfo .
DATA: v_tabix TYPE syst-tabix .
*--->>>
CLEAR : gwa_display .
*--->>>
READ TABLE git_display INTO gwa_display INDEX rs_lineinfo-tabindex .
CHECK sy-subrc = 0 .
*--->>>
lv_id = 'F02'.
lv_lang = 'E'.
lv_object = 'EKKO'.
CLEAR: lv_name.
lv_name = gwa_polist-ebeln.
CLEAR: lit_lines[].
*--->>>
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = lv_id
language = lv_lang
name = lv_name
object = lv_object
TABLES
lines = lit_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
ENDIF.
*--->>>
DESCRIBE TABLE lit_lines LINES v_tabix .
CHECK v_tabix > 1 .
*--->>>
LOOP AT lit_lines INTO lwa_lines FROM 2 .
WRITE: / sy-vline ,
22 sy-vline ,
23 lwa_lines-tdline ,
148 sy-vline .
ENDLOOP.
ENDFORM . "after_line_output

Monday, June 6, 2011

Print Control in Block List ALV

If we take a printout of Block list ALV, each block will come in separate pages, to avoid that, we can control the print functionality in ALV block list.

*--->>> Data declaration
data: w_print TYPE slis_print_alv. " for print control

*--->>> print control information
w_print-no_print_selinfos = 'X'.
w_print-no_new_page = 'X'.
w_print-no_coverpage = 'X'.
w_print-no_change_print_params = 'X'.
w_print-no_print_listinfos = 'X'.
*--->>> for display and print
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
is_print = w_print. " print control info
*--->>>

Saturday, April 30, 2011

Sunday, March 6, 2011

SAP DMS Upload program

Program to upload documents in DMS

*&---------------------------------------------------------------------*
*& Report ZBAPI_DMS_CV01N
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zbapi_dms_cv01n.

TYPES: BEGIN OF t_record,
gv_descripcion(40), " Description
documentversion(2), " Documet version
documentpart(3), " Document part
created_by(12), " Creator
wsapplication(3), " Document type
docfile(255), " File path
charname(30), " Characteristic Name
charvalue(30) , " Plant maintenance Document
doctyp(3), " Document Type
END OF t_record.

DATA: record TYPE STANDARD TABLE OF t_record WITH HEADER LINE.

DATA: gv_documento LIKE draw-doknr,
* gv_clase LIKE draw-dokar VALUE 'PMD',
gv_version LIKE draw-dokvr VALUE '00',
gv_part LIKE draw-doktl VALUE '000',
gv_descripcion LIKE drat-dktxt,
gv_return LIKE bapiret2,
gv_ruta LIKE bapi_doc_files2-docfile.

DATA: gs_documentdata LIKE bapi_doc_draw2,
gt_characteristicvalues LIKE bapi_characteristic_values OCCURS 0 WITH HEADER LINE,
gt_classallocations LIKE bapi_class_allocation OCCURS 0 WITH HEADER LINE,
gt_documentfiles LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE.

DATA : l_path TYPE string,
length TYPE i.
*--->>> selection Screen
SELECTION-SCREEN BEGIN OF BLOCK rad1 WITH FRAME TITLE text-002.
PARAMETERS: pa_fname LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK rad1.

*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_fname.
*&---------------------------------------------------------------------*

CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
mask = ',*.TXT,*.TXT.'
mode = 'O'
IMPORTING
filename = pa_fname
EXCEPTIONS
inv_winsys = 01
no_batch = 02
selection_cancel = 03
selection_error = 04.

START-OF-SELECTION.

l_path = pa_fname.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = l_path
* FILETYPE = 'ASC'
has_field_separator = 'X'
IMPORTING
filelength = length
TABLES
data_tab = record
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.

IF sy-subrc <> 0.
MESSAGE i016(pg) WITH 'Invalid file. Please check again'.
STOP.
ENDIF.

LOOP AT record.

CLEAR: gs_documentdata.

gs_documentdata-documenttype = record-doctyp.
gs_documentdata-documentnumber = gv_documento.
gs_documentdata-documentversion = record-documentversion.
gs_documentdata-documentpart = record-documentpart.
gs_documentdata-description = record-gv_descripcion.

CLEAR: gt_characteristicvalues, gt_characteristicvalues[].
gt_characteristicvalues-classtype = '017'.
gt_characteristicvalues-classname = 'PM_DOCUMENT'.
gt_characteristicvalues-charname = record-charname.
gt_characteristicvalues-charvalue = record-charvalue.
APPEND gt_characteristicvalues.

CLEAR: gt_classallocations, gt_classallocations[].
gt_classallocations-classtype = '017'.
gt_classallocations-classname = 'PM_DOCUMENT'.
APPEND gt_classallocations.

CLEAR: gt_documentfiles, gt_documentfiles[].
gt_documentfiles-wsapplication = record-wsapplication."'XLS'.
*--->>>
* CONCATENATE record-docfile '.' record-wsapplication INTO record-docfile.
* CONDENSE record-docfile.
*--->>>
gt_documentfiles-docfile = record-docfile. " file path
gt_documentfiles-created_by = gt_documentfiles-created_by.
gt_documentfiles-storagecategory = 'Z5'.
gt_documentfiles-checkedin = 'X'.
APPEND gt_documentfiles.

*--->>>
CLEAR: gv_return.
CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
EXPORTING
documentdata = gs_documentdata
IMPORTING
return = gv_return
TABLES
characteristicvalues = gt_characteristicvalues
classallocations = gt_classallocations
documentfiles = gt_documentfiles.
IF gv_return-type CA 'AE'.
* WRITE gv_return-message.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
CLEAR: gs_documentdata, gv_return, gt_characteristicvalues[], gt_classallocations[], gt_documentfiles[].
ENDLOOP.

************************************************************************************
Data Uploading Format







Description Documet version Document partCreatorDocument typeFile pathCharacteristic NamePlant maintenance DocumentDocument Type
Description test00000developer1PPT\\172.17.9.151\DMS-Upload\Mobile SafetyMACHINEDRAWINGSPLANNING & RELIABILITYPMD


Permitted document types



















Doc TypeText
DOCMicrosoft Word file
DOXMS word 2007
DRWAutocad files
HTMHTML Files
IMGScanned Files (Image)
JPGScanned Files
MPPMS Project
PDFAcrobat Reader
PPTMicrosoft Powerpoint
PPXMicrosoft Powerpoint
SIMSAP Tutor Application
TXTText Files
VSDMicrosoft Visio files
WWIWinword 6.0
XLSMicrosoft EXCEL
XLXMS excel 2007
ZTFTIFF formatt - Scanned Files

SAP Dynamic Action

This Link is very good

http://wiki.sdn.sap.com/wiki/display/Snippets/Dynamic+Action

Saturday, February 12, 2011

HR Links

Payroll schema and rule basics
http://www.insightcp.com

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.