Mar 28, 2018

How to change Transport request from Released to Modifiable

Step 1: Go to SE38 – Execute Program RDDIT076. 
Step 2: Give your released requests number and execute again.
Step 3: After executing, you will get the list of all tasks from the Transport request. 
Step 4: Double click on every Task and change the Status from R to D and save it for all the task andrequest.

Ref: 
https://blogs.sap.com/2014/01/06/how-to-change-transport-request-from-released-to-modifiable/

Apr 28, 2016

IDOC T-Codes

Here is the list of important ALE IDOC transaction codes and its purposes for a quick reference.

SALE – This transaction code is used for access IMG ALE Configuration root
WE05 – IDoc overview
WE07 – IDoc statistics
WE20 – This transaction code is used for manually maintain partner profiles
WE21 – This transaction code is used for Ports in Idoc processing
WE47 – This transaction code is used for edit IDOC status values. (Real path: SALE -> Set-Up System Monitoring -> IDoc Status Display -> Edit IDoc Status Values)
WE60 – This transaction code is used for create IDoc documentation (IDOC header file)
SM59 – This transaction code is used for Create RFC Destinations
SM58 – Schedule RFC Failures
BD21 – Create IDocs from change pointers
BD50 – This transaction code is used for Activate Change Pointer for Message Type
BD52 – This transaction code is used for Activate change pointer per change.doc object
BD53 – This transaction code is used for Reduction of Message Types
BD55 – This transaction code is used for Defining settings for IDoc conversion
BD56 – This transaction code is used for Maintain IDOC Segment Filters
BD59 – This transaction code is used for Allocation object type -> IDOC type
BD61 – This transaction code is used for Activate Change Pointers – Globally
BD62 – This transaction code is used for Define rules
BD64 – This transaction code is used for Maintain customer distribution model
BD71 – This transaction code is used for Distribute customer distribution model
BD79 – This transaction code is used for Maintain rules
BD82 – This transaction code is used for Generate Partner Profiles
BD87 – This transaction code is used for Status Monitor for ALE Messages (Real access path is    Tools -> IDoc Interface/ALE -> Administration ->Monitoring -> IDoc Display ->Status Monitor )
BD88 – Outbound IDoc reprocessing
BDM2 – IDoc Trace
BDM5 – This transaction code is used for Consistency check
BDM7 – IDoc Audit Analysis
WEDI – This transaction code is used for ALE IDoc Administration
SARA – This transaction code is used for IDoc archive administration
BALE – ALE Distribution Administration

Apr 20, 2016

Call a Transaction in New Session Window

Call a transaction in New Session from ALV Hotspot.

We can use FM  ABAP4_CALL_TRANSACTION for this. But from SCN, I found an excellent way to do so.

Create a Remote enable function module:

ZFM_CALL_TCODE_IN_NEW_WINDOW :
-----------------------------------------------------
function zfm_call_tcode_in_new_window.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(TCODE) TYPE  SY-TCODE
*"     VALUE(VBELN) TYPE  VBELN
*"     VALUE(PARAID) TYPE  MEMORYID
*"----------------------------------------------------------------------

set parameter id paraid field vbeln.
  call transaction tcode and skip first screen.

endfunction.

---------------------------------------------------------------
Call the FM from the program:

You have to use the following code segment  in program to call that Function Module ,
-------------------------------------------------
      lv_tcode 'VA43'.              "Tcode to Call
      lv_vbeln gs_out-vbeln.
      lv_paraid 'KTN'.
      call function 'ZFM_CALL_TCODE_IN_NEW_WINDOW' starting new task 'TEST'
        destination 'NONE'
        exporting
          tcode         lv_tcode
          vbeln         lv_vbeln
          paraid        lv_paraid
                .

------------------------------------------------

*Ref: https://wiki.scn.sap.com/wiki/display/Snippets/How+to+Call+a+Transaction+in+New+Session+Window

Apr 18, 2016

ABAP Performance and Tuning

What tools can be used to help with performance tuning?

ST05 is the performance trace. It contain the SQL Trace plus RFC, enqueue and buffer trace. Mainly the SQL trace is is used to measure the performance of the select statements of the program.
SE30 is the Runtime Analysis transaction and can be used to measure the application performance. 
SAT transaction is the replacement of the pretty outdated SE30. Provides same functionality as SE30 plus some additional features.
ST12 transaction (part of ST-A/PI software component) is a combination of ST05 and SAT. Very powerful performance analysis tool used primarily by SAP Support.
One of the best tools for static performance analyzing is Code Inspector (SCI). There are many options for finding common mistakes and possible performance bottlenecks.

Mar 22, 2016

Useful Standard SAP Reports


Task
Report
Function Module/BAPI
Report for Converting the IDoc Status 
RC1_IDOC_SET_STATUS

RFC - Connection Test
RSRFCPIN  
CAT_CHECK_RFC_DESTINATION

RSRFCCHK
RFC_CHECK_DESTINATION

RSRFCPIN_NEW
RFC_CHECK_DESTINATION_ID

RSRFCTES
SCWB_RFC_CHECK_DESTINATION
Reprocess IDOC status 51
RBDMANIN


RBDMANI2

Reprocess IDOC status 64
RBDAPP01

Reprocess IDOC status 30
RSEOUT00

Reprocess IDOC status 32 & 69-Edited
RBDAGAIE

Reprocess IDOC status 26
RBDSYNER

Jan 15, 2016

ABAP: Send Email with attached Internal Table XLS file

Function module that will take any internal table as input,  convert in to XLS format
and send out emails with the attachment.

 Add the appropriate import parameters.

Add appropriate table parameters.









Source Code
====================================================
function zinttab_excl_email.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(SENDER) TYPE  AD_SMTPADR
*"     REFERENCE(SUBJECT) TYPE  SO_OBJ_DES
*"  TABLES
*"      RECEPIENTS TYPE  BCSY_SMTPA
*"      RETURN TYPE  TABLE_OF_STRINGS OPTIONAL
*"      DATA_TO_SEND
*"      EMAIL_BODY TYPE  BCSY_TEXT
*"----------------------------------------------------------------------
*Function module that will take any internal table as input,  convert in to XLS format
*and send out emails with the attachment. :SATYABRATA SAHOO
*"----------------------------------------------------------------------
  if recepients[] is initial.
    return.
  endif.

  datalo_send_request   type ref to cl_bcs,
        lo_document       type ref to cl_document_bcs,
        lo_sender_id      type ref to if_sender_bcs,
        lo_recipient      type ref to if_recipient_bcs.
  datalo_bcs_exception  type ref to cx_bcs.
  datalv_bcs_message    type string,
        lv_send_to_all    type os_boolean,
        lv_fields(10).

  field-symbols< fs_recipient > type ad_smtpadr.

*******************************************************************************
* build the file content

  datalo_struct_type  type ref to cl_abap_structdescr,
        lo_element_type type ref to cl_abap_elemdescr.
  datalt_components   type cl_abap_structdescr=>component_table,
        ls_field        type dfies.
  field-symbols type abap_componentdescr.

  datalt_binary_text  type solix_tab,
        lv_text         type string,
        lv_size         type so_obj_len.

* build the header data
  lo_struct_type ?= cl_abap_typedescr=>describe_by_datadata_to_send ).
  lt_components   lo_struct_type->get_components).
  loop at lt_components assigning .
    if sy-tabix gt 1.
      concatenate lv_text cl_bcs_convert=>gc_tab into lv_text.
    endif.
    lo_element_type ?= -type.
    ls_field         lo_element_type->get_ddic_field).
    concatenate lv_text ls_field-scrtext_l into lv_text.
  endloop.
  concatenate lv_text cl_bcs_convert=>gc_crlf into lv_text.

* build the structure of the body
  field-symbols   type any,
                  type any.
  loop at data_to_send assigning .
    loop at lt_components assigning .
      if sy-tabix gt 1.
        concatenate lv_text cl_bcs_convert=>gc_tab into lv_text.
      endif.
      assign component -name of structure  to .
      lv_fields .
      condense lv_fields.
*      concatenate lv_text  into lv_text.
      concatenate lv_text lv_fields into lv_text.
    endloop.
    concatenate lv_text cl_bcs_convert=>gc_crlf into lv_text.
  endloop.

  try .
      cl_bcs_convert=>string_to_solix(
        exporting
          iv_string   lv_text
          iv_codepage '4103' "suitable for MS Excel, leave empty"
          iv_add_bom  abap_true
        importing
          et_solix    lt_binary_text
          ev_size     lv_size ).
    catch cx_bcs into lo_bcs_exception.
      lv_bcs_message lo_bcs_exception->get_text).
      append lv_bcs_message to return.
      exit.
  endtry.

*******************************************************************************
* send an email
  try .
      clearlo_send_requestlo_documentlo_sender_id.
      lo_send_request cl_bcs=>create_persistent).
      lo_document     cl_document_bcs=>create_document(
                                  i_type    'RAW'
                                  i_text    email_body[]
                                  i_subject subject ).

      if not data_to_send[] is initial.
        lo_document->add_attachment(
                   i_attachment_type    'XLS'
                   i_attachment_subject subject
                   i_attachment_size    lv_size
                   i_att_content_hex    lt_binary_text ).
      endif.

      lo_send_request->set_documentlo_document ).


      lo_sender_id    cl_cam_address_bcs=>create_internet_addresssender ).

      lo_send_request->set_senderlo_sender_id ).
*     add recipients
      loop at recepients assigning .
        clear lo_recipient.
        lo_recipient cl_cam_address_bcs=>create_internet_address ).
*       add recipient with its respective attributes to send request
        lo_send_request->add_recipienti_recipient lo_recipient
                                        i_express   abap_true ).
      endloop.

      lo_send_request->set_status_attributesi_requested_status 'E'
                                              i_status_mail      'E' ).
      lo_send_request->set_send_immediatelyabap_true ).
      lv_send_to_all lo_send_request->sendi_with_error_screen abap_true ).

      if lv_send_to_all eq abap_true.
        datals_return like line of return.
        ls_return text-001"Success
        append ls_return to return.
      endif.
      commit work.
    catch cx_bcs into lo_bcs_exception.
      lv_bcs_message lo_bcs_exception->get_text).
      append lv_bcs_message to return.
      exit.
  endtry.
endfunction.

============================================

Ref-http://techsplice.com/

Dec 18, 2015

SAP ABAP FAQs- Part 3 (Object Oriented ABAP)

SAP OOABAP Interview Questions Answers

1. Explain about Object oriented programming?

Object oriented programming is one of the most popular methodologies in
software development. It offers a powerful model for creating computer programs.
It speeds the program development process, improves maintenance and enhances
Reusability of programs.

2. Object oriented Concepts?

Encapsulation:
It means combining data and code that acts up on data into one single unit of
organization, so that both are safe from out side interference. In OOAbap
encapsulation is achieved through classes.

Polymorphism:
It means many forms that mean the same method behaves differently in different
method calls.

Inheritance:
It means deriving a child class from base class; child class acquires all the
properties from base class.

Abstraction:
Abstraction simplifies a complex problem to a simpler problem by specifying and
modeling the class to the relevant problem scenario.
It simplifies the problem by giving the class its specific class of inheritance.
Composition also helps in solving the problem to an extent.

3. What is a class?

Classes are templates for objects. Conversely, you can say that the type of an
object is the same as its class. A class is an abstract description of an object.
You could say that it is a set of instructions for building an object. The attributes
of objects are defined by the components of the class, which describe the state
and behavior of objects.

4. What is an object?

An object is a combination of messages and data. Objects can receive and send
messages and use messages to interact with each other. The messages contain
information that is to be passed to the recipient object.

5. How many types of classes are there in OOABAP?

Public class
Private class
Final class
Singleton
class
Abstract class
Persistent class
Friend class

6. What is the difference between function group and classes?

We can create many instances of the same class with in a program, but we cannot
create many instances of function group.

7. What are the differences local & global classes?

Local classes are defined locally with in a program and the other programs can’t
access the same classes directly.
But global classes are not like that they are globally accessible from ABAP
environment. Global classes are centrally defined in a repository. Transaction code
for global classes is SE24(class builder).

8. What are the Components of a class?

Attributes and methods are components inside a class.

9. How to define a class locally?

class definition.
Public section.
Methods: m1 importing p1 type
Exporting p2 type
Changing p3 type
Returning p4 type
Exceptions .
Protected section.
Private section.
Endclass.
Class implementation.
Method m1.
Endmethod.
Endclass.

10. What is a constructor & types of constructors?

Constructor is a special method, which will be called automatically as and when
the object is created for a class, it can have only importing parameters but not
exporting, it is generally used to give some initial state to the object.
A class can contain have two types of constructors static and instance
constructors.

11. Difference between static and instance constructors?

Static constructor will be called only once, i.e. at the time of loading class in to
memory. Instance constructors are instance specific, these constructors will be
called as and when the new object is created for that class.

12. How to a create object for the class?

Data: ref type ref to .
Create object ref.
13. how to call a method?
Call method ref>
method_name .

14. What is static attribute & method?

Static attributes & methods are class specific, memory will be allocated only once
for Static attributes & methods irrespective of no. of objects created.
We can access the components with a reference variable i.e. by using class name
Call method =>menthod_name.

15. Can we instantiate a class within implementation of other class?
Yes
16. Can we put non declarative statement e.g. STARTOFSELECTION
within a class?

No, we can’t use.

17. How to create a global class?

With tcode SE24

18. How can we pass importing parameter?

Pass by value/pass by reference

19. Can we pass returning parameter by reference?

NO, only pass by value

20. Can a method call itself?
Yes

21. What is me variable?

It just like a selfreference, by this we can call methods that are with in same class
with out creating object.

22. Can we have export parameter in Instance constructor? No

23. What is an abstract class?

Abstract class contains both abstract methods and normal methods, abstract
methods cannot implement in side abstract class, and instead these methods will
be implemented by child classes of that abstract class.

24. What is final class & Method?

Final classes can’t be inherited that means it can not have child classes and final
method of a class cannot be redefined.

25. What is an interface?
Interfaces contain only public methods with no implementation; these interfaces
are included in public section of classes and implement the methods of interfaces.

26. Can we implement interface in private section of any class?
No

26. What is alias?

Instead of specifying full name of interface methods, we can assign it a name
which can directly trigger.

28. What is a friend class?
Friend class is a class it can access private components of it’s friends class.

29. How to create an object for private class?

In general we can not create object for a private class, but we can access static
method of a private class so call that method using its class name and import that
object.
For example take one static method with an exporting parameter inside private
class and write object creation code in that static method and export that object.

30. What is a Singleton class?

Singleton classes can be instantiated only once, i.e. only one object is created for
Singleton classes.

31. What is a Persistent class?

A special class, the attributes of which are linked to database tables via objectrelational
mapping. Since Release 6.10 they can be created using the Mapping Assistant of the Class Builder.
The objects of persistent classes are managed by Object Services. An object in a
persistent class, the attributes of which are saved as database content after the

run time of an ABAP program.

How to change Transport request from Released to Modifiable

Step 1: Go to SE38 – Execute Program RDDIT076.  Step 2: Give your released requests number and execute again. Step 3: After executing, yo...