Friday, January 23, 2015

Utility to download all programs in a package

&--------------------------------------------------------------------*
*& Program To Download All The Programs Present In A Package (Dev. Class) To Desktop
*&--------------------------------------------------------------------*
REPORT  z_downloadall_to_desktop.
***********************************************************************
*                           Table declaration                         *
***********************************************************************
TABLES: tadir.
***********************************************************************
*                           Data declaration                          *
***********************************************************************
TYPES: abapline(255) TYPE c.
TYPES: BEGIN OF ty_reposit,
         pgmid    TYPE tadir-pgmid,
         object   TYPE tadir-object,
         obj_name TYPE tadir-obj_name,
         devclass TYPE tadir-devclass,
      END OF ty_reposit.
DATA: it_reposit TYPE STANDARD TABLE OF ty_reposit,
      wa_reposit TYPE ty_reposit.
DATA: it_repsrc TYPE STANDARD TABLE OF abapline,
      wa_repsrc TYPE abapline.
DATA: prog(60)    TYPE c,
      mc_filename TYPE rlgrap-filename,
      filename    TYPE string.
***********************************************************************
*                           Selection Screen                          *
***********************************************************************
PARAMETERS: p_dev TYPE tadir-devclass.                    "Package Name
*****Program Logic
SELECT pgmid
       object
       obj_name
       devclass
  FROM tadir
  INTO TABLE it_reposit
  WHERE pgmid    = 'R3TR' AND
        object   = 'PROG' AND
        devclass = p_dev.

IF sy-subrc NE 0.
  MESSAGE s001(00) WITH 'No programs available in the given package'.
  EXIT.
ENDIF.
LOOP AT it_reposit INTO wa_reposit.
  prog = wa_reposit-obj_name.
  READ REPORT prog INTO it_repsrc.
  CONCATENATE 'C:\Documents and Settings\Administrator\Desktop\My ABAP Programs\Report'
              prog
              '.txt'
         INTO mc_filename.
  filename = mc_filename.
*****Function module for download files into local system
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename                = filename
    TABLES
      data_tab                = it_repsrc
    EXCEPTIONS
      file_write_error        = 1
      no_batch                = 2
      gui_refuse_filetransfer = 3
      invalid_type            = 4
      no_authority            = 5
      unknown_error           = 6
      header_not_allowed      = 7
      separator_not_allowed   = 8
      filesize_not_allowed    = 9
      header_too_long         = 10
      dp_error_create         = 11
      dp_error_send           = 12
      dp_error_write          = 13
      unknown_dp_error        = 14
      access_denied           = 15
      dp_out_of_memory        = 16
      disk_full               = 17
      dp_timeout              = 18
      file_not_found          = 19
      dataprovider_exception  = 20
      control_flush_error     = 21
      OTHERS                  = 22.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CLEAR prog.
  CLEAR wa_repsrc.
ENDLOOP.
*****After download all the programs to intimate user.
MESSAGE S001(00) WITH 'Check your folder for the Programs downloaded'.

Saturday, September 13, 2014

How to Debug a Smart form ?

One way to debug smart form is to debug the Function Module of those smart forms. If you want to debug particular smart form node then the solution would be, insert a "Program Line" just above the node you want to debug and this program line write a normal ABAP breakpoint. So whenever you call the smart forms, it will stop at this breakpoint and you can debug onwards.

Friday, February 14, 2014

standard HR forms


Standard HR forms ( PE51 transaction )



BRF1 Remuneration statement
BRRE Remuneration statement
CF01 Remuneration statement for Switzerland
FF01 Example wage/salary form
FFS1 Payment of garnishment claim
GB01 Alternative sample pay slip
GF01 Alternative sample pay slip
IN01 Standard remuneration form (India)
IN02 Standard remuneration form (India)
IR01 Sample pay slip
JF01 Payroll Pay Slip
BK01 Payroll account
CK01 Payroll account for Switzerland
CNK1 Standard SAP payroll account

Monday, August 26, 2013

Program to find status of transport request in different servers

*&---------------------------------------------------------------------* *& Report ZTRANSPORT *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZTRANSPORT NO STANDARD PAGE HEADING LINE-COUNT 30. TABLES: tmsbufreq, tstrfcofil, e070. TYPE-POOLS: ctslg, slis. SELECTION-SCREEN BEGIN OF BLOCK b1 . SELECT-OPTIONS: request FOR e070-trkorr, date FOR e070-as4date, user FOR e070-as4user NO INTERVALS NO-EXTENSION, sys1 FOR tstrfcofil-tarsystem NO INTERVALS DEFAULT 'DEV', sys2 FOR tstrfcofil-tarsystem NO INTERVALS DEFAULT 'TST'. SELECTION-SCREEN END OF BLOCK b1. TYPES: BEGIN OF info, indicator TYPE c, " Indicator indicator2 TYPE c, systemid TYPE tarsystem, " target system clientid TYPE mandt," target client rc TYPE i, " return code date TYPE as4date, time TYPE as4time, trkorr TYPE trkorr, as4user TYPE tr_as4user, emailid TYPE string, as4text TYPE e07t-as4text, cdate TYPE as4date, END OF info. DATA: itab TYPE TABLE OF info, data TYPE info, jtab TYPE TABLE OF info, data1 TYPE info, ktab TYPE TABLE OF info, data2 TYPE info. TYPES:BEGIN OF ty_request, trkorr TYPE e070-trkorr, as4date TYPE e070-as4date, as4user TYPE e070-as4user, END OF ty_request. DATA: it_request TYPE TABLE OF ty_request, wa_request TYPE ty_request. TYPES: BEGIN OF prod, trkorr TYPE trkorr, as4user TYPE as4user, END OF prod. TYPES:BEGIN OF ty_e07t, trkorr TYPE e07t-trkorr, as4text TYPE e07t-as4text, END OF ty_e07t. DATA: it_text TYPE TABLE OF ty_e07t, wa_text LIKE LINE OF it_text. DATA: es_cofile TYPE ctslg_cofile, system TYPE ctslg_system, step TYPE ctslg_step, action TYPE ctslg_action. DATA: text(20) TYPE c VALUE 'Transport Details'. DATA: catalog TYPE slis_fieldcat_alv, "FIELDCAT tcatalog TYPE slis_t_fieldcat_alv, "IT FIELDCAT event TYPE slis_alv_event, "EVENT tevent TYPE slis_t_event, "IT EVENT layout TYPE slis_layout_alv, "LAYOUT pg_top TYPE slis_formname VALUE 'TOP_OF_PAGE', pg_head TYPE slis_t_listheader, exit1 TYPE slis_exit_by_user, sortf TYPE slis_sortinfo_alv, tsort TYPE slis_t_sortinfo_alv, var1 TYPE disvariant, var2 TYPE disvariant. START-OF-SELECTION. PERFORM data_retrieval. PERFORM build_fieldcatalog. PERFORM build_events USING tevent. PERFORM text USING pg_head. PERFORM display_alv_report. ********************************************************************** * FORM : DATA_RETRIEVAL ********************************************************************** FORM data_retrieval . SELECT trkorr as4date as4user INTO CORRESPONDING FIELDS OF TABLE it_request FROM e070 WHERE trkorr IN request AND trfunction = 'K' AND as4date IN date AND as4user IN user. SORT it_request BY trkorr. LOOP AT it_request INTO wa_request. CALL FUNCTION 'TR_READ_GLOBAL_INFO_OF_REQUEST' EXPORTING iv_trkorr = wa_request-trkorr IMPORTING es_cofile = es_cofile. IF es_cofile-exists = 'X'. LOOP AT es_cofile-systems INTO system WHERE systemid IN sys1 OR systemid IN sys2. " target system LOOP AT system-steps INTO step WHERE clientid = ' '. " step of transport CLEAR data. data-systemid = system-systemid. * data-clientid = step-clientid. data-rc = step-rc. LOOP AT step-actions INTO action. " action data-date = action-date. data-time = action-time. ENDLOOP. data-trkorr = wa_request-trkorr. data-as4user = wa_request-as4user. data-cdate = wa_request-as4date. COLLECT data INTO itab. ENDLOOP. ENDLOOP. ELSE. CLEAR data. data-trkorr = wa_request-trkorr. data-as4user = wa_request-as4user. data-cdate = wa_request-as4date. APPEND data TO itab. ENDIF. DELETE ADJACENT DUPLICATES FROM itab COMPARING trkorr systemid . ENDLOOP. ENDFORM. "DATA_RETRIEVAL ********************************************************************** * FORM : build_fieldcatalog. ********************************************************************** FORM build_fieldcatalog. DATA: pos TYPE i. DATA : name(25) TYPE c.", spac VALUE ' '. DATA: name2(25) TYPE c. CONCATENATE 'REQUEST IN ' sys2-low INTO name SEPARATED BY space. CONCATENATE 'REQUEST IN ' sys1-low INTO name2 SEPARATED BY space. pos = pos + 1. CLEAR: catalog. catalog-col_pos = pos. catalog-fieldname = 'CDATE'. catalog-tabname = 'ITAB'. catalog-seltext_l = 'REQUEST CREATION DATE'. catalog-no_zero = 'X'. catalog-fix_column = 'X'. APPEND catalog TO tcatalog. pos = pos + 1. CLEAR: catalog. catalog-col_pos = pos. catalog-fieldname = 'TRKORR'. catalog-tabname = 'ITAB'. catalog-seltext_l = 'REQUEST NO'. catalog-no_zero = 'X'. catalog-fix_column = 'X'. APPEND catalog TO tcatalog. pos = pos + 1. CLEAR: catalog. catalog-col_pos = pos. catalog-fieldname = 'INDICATOR2'. catalog-tabname = 'ITAB'. catalog-seltext_l = name2. catalog-no_zero = 'X'. catalog-fix_column = 'X'. APPEND catalog TO tcatalog. pos = pos + 1. CLEAR: catalog. catalog-col_pos = pos. catalog-fieldname = 'INDICATOR'. catalog-tabname = 'ITAB'. catalog-seltext_l = name. catalog-no_zero = 'X'. catalog-fix_column = 'X'. APPEND catalog TO tcatalog. pos = pos + 1. CLEAR: catalog. catalog-col_pos = pos. catalog-fieldname = 'DATE'. catalog-tabname = 'ITAB'. catalog-seltext_l = 'REQUEST TRANSPORT DATE'. catalog-no_zero = 'X'. catalog-fix_column = 'X'. APPEND catalog TO tcatalog. pos = pos + 1. CLEAR: catalog. catalog-col_pos = pos. catalog-fieldname = 'AS4USER'. catalog-tabname = 'ITAB'. catalog-seltext_l = 'REQUEST OWNER'. catalog-no_zero = 'X'. catalog-fix_column = 'X'. APPEND catalog TO tcatalog. pos = pos + 1. CLEAR: catalog. catalog-col_pos = pos. catalog-fieldname = 'AS4TEXT'. catalog-tabname = 'ITAB'. catalog-seltext_l = 'DESCRIPTION'. catalog-no_zero = 'X'. catalog-fix_column = 'X'. APPEND catalog TO tcatalog. ENDFORM. " build_fieldcatalog. ********************************************************************** * FORM : build_events. ********************************************************************** FORM build_events USING p_tevent. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 1 IMPORTING et_events = tevent. READ TABLE tevent WITH KEY name = slis_ev_top_of_page INTO event. IF sy-subrc = 0. MOVE pg_top TO event-form. APPEND event TO tevent. ENDIF. ENDFORM. "build_events. *&---------------------------------------------------------------------* *& Form TOP_OF_PAGE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM top_of_page . CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING i_logo = ' ' it_list_commentary = pg_head. * I_END_OF_LIST_GRID = * I_ALV_FORM = . ENDFORM. "TOP-OF-PAGE ********************************************************************** * FORM : TEXT ********************************************************************** FORM text USING v_head TYPE slis_t_listheader. DATA: line TYPE slis_listheader. CLEAR line. line-typ = 'H'. line-info = 'Transport request log'. APPEND line TO pg_head.. CLEAR line. ENDFORM. "TEXT ********************************************************************** * FORM : display_alv_report. ********************************************************************** FORM display_alv_report. layout-colwidth_optimize = 'X'. layout-box_tabname = 'IT'. layout-info_fieldname = 'LINE_COLOR'. layout-zebra = 'X'. layout-cell_merge = 'X'. jtab = itab . LOOP AT itab INTO data. clear data1. LOOP AT jtab INTO data1 WHERE trkorr = data-trkorr AND systemid = sys2-low. ENDLOOP. IF sy-subrc = 0. data-indicator = 'X'. MODIFY itab FROM data INDEX sy-tabix. ENDIF. ENDLOOP. ktab = itab . LOOP AT itab INTO data. clear data2. LOOP AT ktab INTO data2 WHERE trkorr = data-trkorr AND systemid = sys1-low. ENDLOOP. IF sy-subrc = 0. data-indicator2 = 'X'. MODIFY itab FROM data INDEX sy-tabix. ENDIF. ENDLOOP. SORT itab BY trkorr date DESCENDING. DELETE ADJACENT DUPLICATES FROM itab COMPARING trkorr. SELECT * FROM e07t INTO CORRESPONDING FIELDS OF TABLE it_text FOR ALL ENTRIES IN itab WHERE trkorr = itab-trkorr. LOOP AT itab INTO data. CLEAR wa_text. READ TABLE it_text INTO wa_text WITH KEY trkorr = data-trkorr. IF sy-subrc = 0. data-as4text = wa_text-as4text. MODIFY itab FROM data INDEX sy-tabix. ENDIF. ENDLOOP. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = layout it_fieldcat = tcatalog * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = it_events = tevent[] * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * I_HTML_HEIGHT_TOP = * I_HTML_HEIGHT_END = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = itab EXCEPTIONS program_error = 1 OTHERS = 2 . *IF SY-SUBRC = 0. ** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO ** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. *ENDIF. ENDFORM. "display_alv_report.

Tuesday, July 23, 2013

How to remove execute button from report selection screen


TABLES: smp_dyntxt, sscrfields,mara.

DATA: gt_exclude TYPE TABLE OF rsexfcode,
      gtt_exclude TYPE rsexfcode.

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_matnr FOR mara-matnr.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN FUNCTION KEY 1.  "Will have a function code of 'FC01'
SELECTION-SCREEN FUNCTION KEY 2.  "Will have a function code of 'FC02'
SELECTION-SCREEN FUNCTION KEY 3.
SELECTION-SCREEN FUNCTION KEY 4.
SELECTION-SCREEN FUNCTION KEY 5.

SELECTION-SCREEN END OF BLOCK block1.

INITIALIZATION.

* Add displayed text string to buttons

  MOVE 'VF04' TO sscrfields-functxt_01.
  MOVE 'Excecute report' TO sscrfields-functxt_02.
  MOVE 'Test' TO sscrfields-functxt_03.

  gtt_exclude-fcode = 'ONLI'.

  APPEND gtt_exclude TO gt_exclude.


AT SELECTION-SCREEN.

  IF sscrfields-ucomm = 'FC01'.

    CALL TRANSACTION 'VF04'.

  ELSEIF sscrfields-ucomm = 'FC02'.

  ELSEIF sscrfields-ucomm = 'FC03'.

  ENDIF.


AT SELECTION-SCREEN OUTPUT.

  CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
    EXPORTING
      p_status  = '%_00'
      p_program = 'RSSYSTDB'
    TABLES
      p_exclude = gt_exclude.

Friday, November 30, 2012

Some important transactions in ABAP





SE80 ABAP/4 Development Workbench                                                                   
SE03 Groups together most of the tools that you need for doing transports.                        
SE09 Workbench Organizer
SE11 ABAP/4 Dictionary Maintenance                                                                        
SE12 ABAP/4 Dictionary Display                                                                                  
SE16N Table Browser (the N stands for New, it replaces SE16).
SE17 General Table Display                                                                                                             SE24 Class Builder
SE30 ABAP/4 Run time Analysis
SE36 ABAP/4: Logical Databases
SE37 ABAP/4 Function Modules
SE38 ABAP Editor
SE39 Split screen Editor: Program Compare
SE41 Menu Painter
SE43 Maintain Area Menu
SE51 Screen Painter: Initial Screen.
SE54 Generate View Maintenance Module
SE61 R/3 Documentation
SE63 Translation
SE71 SAP script Layouts Create/Change
SE72 SAP script styles
SE73 SAP script font maintenance (revised)
SE75 SAP script Settings
SE83 Reuse Library.
SE91 Maintain Messages
SE93 Maintain Transaction.

Tuesday, August 14, 2012

Download IDOC data to excel format

Go to transaction IDOC

Select the radio button “Analyse IDoc field values” and click on Execute.
Enter an IDoc number and select the check box “Also output empty fields”. Click on “Output in Internal Form”. Click on Execute.

Now in menu click on List -> Save/Send -> File.
Now select the required format and hit Enter. The IDoc is now stored on your system in the required format.

Tuesday, September 6, 2011

How to create a workflow for a transaction

1. Find a standard business object - which relates to the desired master data.
Transaction SWLD - Business ObjectàDefinition Tools Builder
Click on the Business Object Builder button.
Either search for an object by name in short description or use the IMG structure, which is accessed via the Business Object Repository button.
2:Create a subtypeq of this business object.
Once the relevant business object is selected press the Create Subtype button - this will automatically create an object, which inherits all characteristics from the basic business object. Give the subtype a name prefixed with Z_.
Enter the following fields with values:
Object type: Z_TESTXX
Object name: Object_Name_for_XX
Name: Object Name: XX
Description: Object Description: XX
Program: Z_TESTXX
Application: *
3:Create an event.q
When you change your subtype the first step is to create a new event, this is done by selecting the Event node and clicking the create button. Give the event a name and a description. Next set the status of this object type component to implemented.
Event: Z_EVENT_XX
Name: Event name: XX
Description: Event Description: XX
Click on the new event and… Object Typeà Change Release Status àEdit Implemented àComponent
4:Create a method.q
Next a method must be created without using any function module template. When creating the method ensure that the method call is synchronous - this means that the method doesn't require a terminating event. Next set the status of this object type component to implemented.
Method: Z_METHODXX
Name: Method name: XX
Description: Method Description: XX
Implementedà Object Type Component à Change Release Status àEdit q
5. Create Key fields.Create key fields with ABAP dictionary field proposal. Enter ‘BKPF’ in table name field and select all the key fields. Press Continue button. Next set the status of these key fields to implemented.à Object Type Component à Change Release Status àEdit Implemented
6:Implement business object.qThe whole business object needs to be implemented so click on the business object title and…àEdit Implementedà Object Type àChange Release Status
7:Link a changeq document to the business object & an event.Now the event you created in the new business object subtype needs to be linked to the relevant change document type. This will enable the event to be triggered on creation of the relevant change document.
Transaction SWLD… EventàDefinition Tools Linkageà Change Documents àCreation Click the New Entries buttonEnter the relevant Change Document Type, your Business Object Subtype & the related Event from the Business object subtype.This new entry is assigned to a particular type of change document (Create, Change or Delete) so for each type of change document we need to create a respective event in the business object subtype & link these here.
Note 1. The starting point of a workflow is the object/event trigger. Without this the possibility of building a workflow is ruled out. The triggering of events is achieved through a number of mechanisms some of them are listed below:• Triggered using Change document objects.• Triggered using Status control.• Triggered through Message long text.• FI Validation Trigger• And a few others, which are closely, intertwined with config. e.g. Workflow events for Purchase orders using output determination.• Publish events through User exits. This requires custom coding.For this demo example, you will create an event by writing a custom code.
8:Create workflow task.qNow we need to create a workflow task, this will be triggered by the event and will call the desired method in your business object subtype.Transaction SWLD Createà Tasks/Task Group àDefinition Tools This task will be of type TS (Standard Task) after this is entered click the create icon.This will bring up the main task window. Under the Basic Data tab enter the Abbreviated Name, Name and Work Item Text. Enter your business object subtype name as the Object Type and enter the Method you created within the subtype. If you tick Background Processing as the execution mode, the work item is executed without need for manual intervention.Next move to the Triggering Events tab. Insert a new entry in the table here - referencing the business object subtype and the relevant event.
9:Set up containers.qThere are a number of data containers, which are used in this process to transport relevant data between events, tasks and methods, we need to make a few small modifications to these.Click on the Containers button. Create three fields in the container with reference to the database table. Now go back to the Triggering Event tab, highlight the newly created record in the table and click the Binding Definition button. This shows us how data is transferred from the Event container into the Task container. There should be four records. Now click on the Event Parameter Container button, this shows us what data is present in the event for transfer to the task. If there is matching data in the Event Parameter Container, copy the element name from the screen and insert it in to the associated slot in the binding definition (Enclosed in &'s).The last step of all is to activate the event linkage, by pressing the small button to the left-hand side of the event record. This creates the link between the event and the task - which will call the method, which in turn calls the required transaction or reports or function module.

Saturday, July 23, 2011

SAP release dates

SAP R/3 Enterprise Release 4.0B
Release Date June 1998

SAP R/3 Enterprise Release 4.5B
Release Date March 1999

SAP R/3 Enterprise Release 4.6C
December 1999

SAP R/3 Enterprise Release 4.6C
April 2001

SAP R/3 and R/3 Enterprise 4.70 SR1
Release Date March - December 2003

ERP Central Component
Release 5.0 SR1
Release Date August 2005

ERP Central Component
Online Update April 2007
Release 6.0 SR1 SP08
Release Date June 2006

SAP enhancement package 1 for SAP ERP 6.0
Release Date December 2006

ERP Central Component
Release SAP enhancement package 2 for SAP ERP 6.0
Release Date July 2007

SAP NetWeaver 2004 (SPS 20)
File Type HTML (PlainHTML)
Release Date May 2007

Knowledge Center for SAP NetWeaver 7.0 (2004s)Support Package Stack 13, September 2007

SAP NetWeaver Mobile 7.1 SPS 02
Release Date July 2007

Monday, April 11, 2011

Restrict number of logins per user

Limits the number of login sessions per user with User Exits


* Transaction CMOD -> Utiliteis -> SAP Enhancements

* Exit Name SUSR0001

* Double click EXIT_SAPLSUSF_001

* Double click ZXUSRU01

* Insert -> include zsesschk.
* zsesschk limits the number of login sessions per user

* in a certain client

* It runs from user exit SUSR0001 after the SAP Login

* n-1 is the number of concurrent sessions allowed

TABLES: UINFO.

DATA: N TYPE I VALUE 2. "Upper limit of login sessions

DATA: OPCODE TYPE X VALUE 2, I TYPE I, A(60).

DATA: BEGIN OF BDC_TAB1 OCCURS 5.

INCLUDE STRUCTURE BDCDATA.

DATA: END OF BDC_TAB1.

DATA: BEGIN OF USR_TABL OCCURS 10.

INCLUDE STRUCTURE UINFO.

DATA: END OF USR_TABL.

* Exclude Limit login by Users

IF SY-UNAME <> 'XXX'

AND SY-UNAME <> 'XXX'.

CALL 'ThUsrInfo' ID 'OPCODE' FIELD OPCODE

ID 'TAB' FIELD USR_TABL-*SYS*.

LOOP AT USR_TABL.

IF SY-UNAME = USR_TABL-BNAME AND SY-MANDT = USR_TABL-MANDT.

I = I + 1.

ENDIF.

ENDLOOP.

IF I >= N.

A = 'You have already '.

A+17(2) = I - 1.

A+19(25) = 'login sessions in client '.

A+44(4) = SY-MANDT.

CALL FUNCTION 'POPUP_TO_INFORM'

EXPORTING

TITEL = 'UNSUCCESSFUL LOGIN'

TXT1 = A

TXT2 = 'You are not allowed to log in'.

MOVE: 'SAPMSSY0' TO BDC_TAB1-PROGRAM,

'120' TO BDC_TAB1-DYNPRO,

'X' TO BDC_TAB1-DYNBEGIN.

APPEND BDC_TAB1.CLEAR BDC_TAB1.

MOVE: 'BDC_OKCODE' TO BDC_TAB1-FNAM,

'/nex' TO BDC_TAB1-FVAL.

APPEND BDC_TAB1.CLEAR BDC_TAB1.

CALL TRANSACTION 'SM04' USING BDC_TAB1 MODE 'N'.

ENDIF.

ENDIF.



Friday, December 24, 2010

Steps to create field exit

Step 1: Execute program ‘RSMODPRF’, entering the data element of the field
Step 2: Create function module when prompted, and add you code to the source section using the parameter
‘INPUT’ as the field value you are checking.
Step 3: Save and activate Function and execute transaction ‘CMOD’.
Step 4: Choose option: Goto-> Text Enhancements->Data elements->New DE cust docu.
Step 5: Enter data element
Step 6: Save and activate
Step 7: Execute program ‘RSMODPRF’ again but this time leave data element field blank.
Step 8: Select the checkbox for the data element you have just created and choose option: Field exit->Activate

This will now be active for all instances of this data element, but you can assign specific program and screen
combinations by pressing the ‘Assign prog./screen’ button. You can also change the code you entered in the field
exit function module by pressing the ‘Edit FM’ button.

Saturday, March 20, 2010

Important transactions in workflow

TCode
Transaction text
SBWP
SAP Business Workplace
SWDA
Alphanumeric Workflow Builder
SWDB
Create workflow
SWDC_DEFINITION
Workflow Builder Administration
SWDC_RUNTIME
Maintain Administrator for Runtime
SWDD
Workflow Builder
SWDM
Business Workflow Explorer
SWDS
Workflow Builder (Selection)
SWI11
Where-Used List for Tasks
SWI13
Task Profile
SWI2_FREQ
Work Items per Task
SWI5
Workload Analysis
SWI6
Workflows for Object
SWIA
WI Administration Report
SWIE
Unlock Work Item
SWPA
Runtime System Customizing
SWPC
WFM: Continue Workflow
SWPR
WFM: Restart Workflow
SWU2
Workflow RFC Monitor
SWU3
Automatic Workflow Customizing
SWU7
Consistency Test for Workflow Templ.
SWU9
Display Workflow Trace
SWUI
Start Workflow
SWUI_DEMO
Start Demo Workflows
SWUI_VERIFY
Start Test Workflows
SWUS
Test Workflow
SWUY
Workflow-Message Linkage
SWXF
DEMO: Create Notification of Absence
SWXML
XML Document Selection

Saturday, February 20, 2010

Creating your own SAP Customized Main Menu

• Goto Transaction SE43 - Area Menu
• Click the copy button. Copy from S000 to ZXXX
• After copying, click Change (area menu ZXXX)
• Double click on Logistics and add in your transaction code in the Area Menu.
• Remembers to Activate it.
• Next Goto Transaction SU01 - Maintain users
• Type in the user name and click the Defaults button
• Type in the area menu (ZXXX) in the Start Menu field.
• Click Save
• The user will be able to see the additional transaction on the next logon.

Wednesday, July 29, 2009

Important function modules related to dates

HR_99S_INTERVAL_BETWEEN_DATES : Difference between two dates in days, weeks, months

WEEK_GET_FIRST_DAY : Get the first day of the week

FIMA_DAYS_AND_MONTHS_AND_YEARS : Find the difference between two dates in years, months and days.

DATE_TO_DAY : Returns the Day for the entered date.

Color single row in ALV

REPORT z_alv_color.

TYPE-POOLS: slis.

DATA: BEGIN OF it_flight OCCURS 0,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
seatsmax LIKE sflight-seatsmax,
seatsocc LIKE sflight-seatsocc,
color(4),
END OF it_flight.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
layout TYPE slis_layout_alv.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'IT_FLIGHT'
i_inclname = sy-repid
CHANGING
ct_fieldcat = it_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2.

SELECT carrid
connid
fldate
seatsmax
seatsocc
FROM sflight
INTO CORRESPONDING FIELDS OF TABLE it_flight
UP TO 20 ROWS.
*-conditionally populate the color
LOOP AT it_flight.

IF it_flight-seatsocc eq 0.
it_flight-color = 'C600'.
ENDIF.
MODIFY it_flight.
ENDLOOP.
*-Pass the color field information to layout
layout-info_fieldname = 'COLOR'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = layout
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_flight
EXCEPTIONS
program_error = 1.

Sunday, June 7, 2009

Important tables in FI

Financial Accounting tables

BKPF Accounting Document Header
BSEG Accounting Document Segment
BSID Accounting: Secondary Index for Customers
BSAD Accounting: Secondary Index for Customers (Cleared Items)
BSIK Accounting: Secondary Index for Vendors
BSAK Accounting: Secondary Index for Vendors (Cleared Items)
BSIP Index for Vendor Validation
BVOR Inter Company Posting Procedure
FRUN Run Date of a Program
KNB4 Customer Payment History
KNB5 Customer Master Dunning Data
KNBK Customer Master Bank Details
KNC1 Customer Master Transaction Figures
KNC3 Customer Master Special GL Transactions Figures
LFB5 Vendor Master Dunning Data
LFBK Vendor Master Bank Details
LFC1 Vendor Master Transaction Figures
LFC3 Vendor Master Special GL Transactions
KNB1 Customer Master (Company Code)
LFA1 Vendor Master (General Section)
LFB1 Vendor Master (company Code Section)
SKA1 G/L Account Master (Chart of Accounts)
SKAT G/L Account Master (Chart of Accounts Description)

Important tables in PP

Production Planning Tables

STKO BOM Header
STPO BOM Positions (detail)
MAPL Assignment fo Task Lists to Materials
PLKO Routing Group Header
PLSO Routing Group Sequence
PLPO Routing Group Operations
AFKO Production Order Header
AFPO Production Order Position (details)

Important tables in MM

Materials Management Tables

EINA Purchasing Info Record- General Data
EINE Purchasing Info Record- Purchasing Organization Data
MAKT Material Descriptions
MARA General Material Data
MARC Plant Data for Material
MARD Storage Location Data for Material
MAST Material to BOM Link
MBEW Material Valuation
MKPF Header- Material Document
MSEG Document Segment- Material
MVER Material Consumption
MVKE Sales Data for materials
RKPF Document Header- Reservation
T023 Mat. groups
T024 Purchasing Groups
T156 Movement Type
T157H Help Texts for Movement Types
Purchasing TablesA501 Plant/Material
EBAN Purchase Requisition
EBKN Purchase Requisition Account Assignment
EKAB Release Documentation
EKBE History per Purchasing Document
EKET Scheduling Agreement Schedule Lines
EKKN Account Assignment in Purchasing Document
EKKO Purchasing Document Header
EKPO Purchasing Document Item
IKPF Header- Physical Inventory Document
ISEG Physical Inventory Document Items
LFA1 Vendor Master (General section)
LFB1 Vendor Master (Company Code)
NRIV Number range intervals
RESB Reservation/dependent requirements
T161T Texts for Purchasing Document Types

Important tables in SD

Sales and Distribution Tables

KONV Conditions for Transaction Data
KONP Conditions for Items
LIKP Delivery Header Data
LIPS Delivery: Item data
VBAK Sales Document: Header Data
VBAP Sales Document: Item Data
VBBE Sales Requirements: Individual Records
VBEH Schedule line history
VBEP Sales Document: Schedule Line Data
VBFA Sales Document Flow
VBLB Sales document: Release order data
VBLK SD Document: Delivery Note Header
VBPA Sales Document: Partner
VBRK Billing: Header Data
VBRP Billing: Item Data
VBUK Sales Document: Header Status and Administrative Data
VBUP Sales Document: Item Status
VEKP Handling Unit - Header Table
VEPO Packing: Handling Unit Item (Contents)
VEPVG Delivery Due Index

Reports

Reports:

A report is an executable program which takes some input, fetches the relevant data, processes it and gives some output.

There are 7 types of reports. They are:

1. Interactive reports
2. Classic reports
3. Logical database reports
4. Alv reports
5. Graphic reports.
6. ABAP query
7. Report writer.

1. Classical Reports

In classic reports, we can see the output in single list where as in interactive reports we can see the output in multiple lists.

These are the simplest reports. Programmers learn this one first. It is just an output of data using the Write statement inside a loop.
• Classical reports are normal reports. These reports are not having any sub reports. IT IS HAVING ONLY ONE SCREEN/LIST FOR OUTPUT.
Events In Classical Reports.
• INTIALIZATION: This event triggers before selection screen display.
• AT-SELECTION-SCREEN: This event triggers after processing user input still selection screen is in active mode.
• START OF SELECTION: Start of selection screen triggers after processing selection screen.
• END-OF-SELECTION: It is for Logical Database Reporting.


2. Interactive Reports

As the name suggests, the user can Interact with the report. We can have a drill down into the report data. For example, Column one of the report displays the material numbers, and the user feels that he needs some more specific data about the vendor for that material, he can HIDE that data under those material numbers.
And when the user clicks the material number, another report (actually sub report/secondary list) which displays the vendor details will be displayed.
We can have a basic list (number starts from 0) and 20 secondary lists (1 to 21).
Events associated with Interactive Reports are:
1. AT LINE-SELECTION
2. AT USER-COMMAND
3. AT PF
4. TOP-OF-PAGE DURING LINE-SELECTION.
HIDE statement holds the data to be displayed in the secondary list.
sy-lisel: contains data of the selected line.
sy-lsind : contains the level of report (from 0 to 21)
Interactive Report Events:
• AT LINE-SELECTION : This Event triggers when we double click a line on the list, when the event is triggered a new sublist is going to be generated. Under this event what ever the statements that are been return will be displayed on newly generated sublist.
• AT PFn: For predefined function keys...
• AT USER-COMMAND : It provides user functions keys.
• TOP-OF-PAGE DURING LINE-SELECTION :top of page event for secondary list.


3.Logical Database Reports

Logical database is another tool for ABAP reports. Using LDB we can provide extra features for ABAP reports.
While using LDB there is no need for us to declare Parameters.
Selection-screen as they will be generated automatically.
We have to use the statement NODES in ABAP report.
If there are many tables the Performance will be slow as all the table data will be read from top node to bottom node .

4. Alv reports

ALV means ABAP List Viewer.
ALV is available in two modes: list and grid. List mode is good old list processing with standard functionalities, and grid mode is using a new OCX object displaying grids

ALV LIST- the commonly used ALV functions are
1.REUSE_ALV_VARIANT_DEFAULT_GET
2.REUSE_ALV_VARIANT_F4
3.REUSE_ALV_VARIANT_EXISTENCE
4.REUSE_ALV_EVENTS_GET
5.REUSE_ALV_COMMENTARY_WRITE
6.REUSE_ALV_FIELDCATALOG_MERGE
7.REUSE_ALV_LIST_DISPLAY
8.REUSE_ALV_POPUP_TO_SELECT

5) Graphical reports

Graphical -- Redirecting sap data into Business graphics
Here by using
Graph_2D, Graph_3D function modules we can get the 2D and 3D graphical reports.

6. ABAP Query Reports

ABAP query is another tool for ABAP. It provides efficency for ABAP reports. These reports are very accurate.
Transaction Code : SQ01
Report Writer
Key Concept :
Super users and end users can use Report Painter/Report Writer tools to write their own reports.
Giving them the ability to report on additional fields at their discretion shifts the report maintenance burden to them, saving SAP support groups time and effort normally spent creating and maintaining the reports.
Instead of using ABAP code to write a report in FI and CO, many users build a Report Painter/ Report Writer library using transaction MC27.
However, this workaround has some drawbacks. Little known transaction GRCT solves these problems in most cases, and eliminates the need to use transaction MC27.

7. report painter / report writer

You use the Report Painter to create reports from data in the Special Purpose Ledger (FI-SL) application component and other SAP application components to meet your specific reporting requirements.
Many reporting requirements can be met using the standard reports provided by various SAP application components. However, if your reporting requirements are not fulfilled by SAP’s standard reports, you can use the Report Painter to quickly and easily define your own reports.

The Special Purpose Ledger (FI-SL) application component does not provide any standard Report Painter reports because you must first install your FI-SL system setup (database tables and so on) to meet your specific business requirements.
Advantages of the Report Painter include:
• Easy and flexible report definition
• Report definition without using sets
• Direct layout control

In addition to the Report painter, you can use the Report Writer to define reports. You use the Report Writer to create reports from data in the Special Purpose Ledger (FI-SL) application component and other SAP application components to meet your specific reporting requirements.
The Report Writer is a tool using which you can define reports.
Many reporting requirements can be met using the standard reports provided by various SAP application components. However, if your reporting requirements are not fulfilled by SAP's standard reports, you can also define complex reports using the Report Writer.
With the Report Writer, you can organize reports to meet the specific needs of your enterprise. The Report Writer uses reporting building blocks, such as sets, which can be used in any report.

ABAP Report Types
ABAP report types are those ones available in some report's attributes screen, i.e. :
• Executable program
• Function group (containing function modules)
• Include
• Interface pool
• Class pool
• Module pool
• Subroutine pool