How to get all the Important Transaction Code for ABAP Development, Testing and Workflow Development?

Introduction

After working with SAP for more than 15 years and travelling across the Globe for SAP Projects one issue I always use to have how can I keep track of all the SAP Transaction Codes associated with ABAP Development . If you are working as a SAP ABAP Consultant you need to keep the name of Transaction Codes in your Fingertips. Sometimes this you know from other Experts and sometimes you have to dig it out. After exploring I found a very easy way to dig out the SAP Transaction Codes associated with ABAP. Just check this blog and conquer the SAP world.

Solution

Just Type S001 in Command Bar. This has all the important Transaction Code for ABAP Development,

Just Type SDW0 in Command Bar. This has all the important Transaction Code for ABAP Development with some more features,

Just Type SWLD in Command Bar. This has all the important Transaction Code for SAP WORKFLOW DEVELOPMENT.

Just Type STUN in Command Bar. This has all the important Transaction Code for SAP PERFORMANCE MONITORING.

Just Type COD_INT_MENU in Command Bar. This has all the important Transaction Code for SAP Cloud  MONITORING.

You can only add one Area Menu by Default. In Order to do so just type in SU3 Tcode and in Default Tab just choose the one you want.

Conclusion

This blog will help you in both SAP ECC and SAP S/4HANA.

Here is the Video version

Just Type S001 in Command Bar. This has all the important Transaction Code for ABAP Development,

Just Type SWLD in Command Bar. This has all the important Transaction Code for SAP WORKFLOW DEVELOPMENT.

Just Type STUN in Command Bar. This has all the important Transaction Code for SAP PERFORMANCE MONITORING.

Read More
Arghadip Kar December 16, 2020 0 Comments

How to find the Table that stores multiple Field values? That’s what ABAPER and Functional does :) in WRICEFF development

Introduction

After working with SAP for more than 15 years and travelling across the Globe for SAP Projects one issue I always use to have how can I keep track of all the SAP Tables associated with different Modules. If you are working as a SAP ABAP Consultant you need to keep the name of tables in your Fingertips. Sometimes this you know from other Experts and sometimes you have to dig it out.

After exploring I found a very easy way to know the Tables that contains all the four fields or Data Element in the same table and has data in it.

SAP is just like an ocean and every droplet is like one SAP Table. This is one of the first program I create in any Project.

I have one request the .1% time you saved while implementing this Blog, help someone in need by doing Service. It can be as simple as playing with a Kid also.

This solution only does Table. I will do another blog  for Views also.

Solution

Go to SE38-> Create a Program and Paste this Code.

Here is the Execution. Just to let you know I have Excluded the Table Beginning with ‘/’. If you want to add it just tweak the code.

In the Below example I am looking for tables with these 2 fields/Data Element. EBELN and EBELP

And here is the Result

Lets be adventurous and try with 4 fields

Before this I never knew EKPO has all the above 4 Fields/Data Element.

Below is the Code that probably can fetch some serious Fun Time to learn something more.

TABLES: DD03L,

        BOOLE.

DATA:DREF TYPE REF TO DATA.

FIELD-SYMBOLS:<TABLE> TYPE STANDARD TABLE.

TYPE-POOLS: SLIS, ICON.

* Internal Tables

TYPES: BEGIN OF T_IALV,

         TABNAME TYPE DD03L-TABNAME,

         FIELD1  TYPE DD03L-FIELDNAME,

         FIELD2  TYPE DD03L-FIELDNAME,

         FIELD3  TYPE DD03L-FIELDNAME,

         FIELD4  TYPE DD03L-FIELDNAME,

       END OF T_IALV .

DATA: IALV   TYPE STANDARD TABLE OF T_IALV,

      WA_ALV TYPE T_IALV.

DATA: ALV_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

      ALV_GRID      TYPE REF TO CL_GUI_ALV_GRID,

      OK_CODE       LIKE SY-UCOMM,

      FIELDCAT      TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

SELECT-OPTIONS:S_FIELD1 FOR DD03L-FIELDNAME NO-EXTENSION,

S_FIELD2 FOR DD03L-FIELDNAME NO-EXTENSION,

S_FIELD3 FOR DD03L-FIELDNAME NO-EXTENSION,

S_FIELD4 FOR DD03L-FIELDNAME NO-EXTENSION,

S_EXC FOR BOOLE-BOOLE.

FIELD-SYMBOLS:<FS-TAB13> TYPE MANDT.

DATA:WA_DD1      TYPE DD03L,

     WA_DD2      TYPE DD03L,

     WA_DD3      TYPE DD03L,

     WA_DD4      TYPE DD03L,

     LV_TAB      TYPE DD03L-TABNAME,

     WA_DD_FINAL TYPE DD03L.

IF S_EXC-LOW IS NOT INITIAL.

  LV_TAB = ‘/%’.

ENDIF.

IF S_FIELD1-LOW IS NOT INITIAL.

  SELECT C~TABNAME

    FROM ( ( DD03L AS C

         INNER JOIN DD02V AS P ON P~TABNAME  = C~TABNAME

                              AND P~TABCLASS = ‘TRANSP’)

*                              AND p~cityto   = @cityto )

         INNER JOIN DD09L AS F ON F~TABNAME = P~TABNAME )

    WHERE ( ( C~ROLLNAME EQ @S_FIELD1-LOW )

    OR ( C~FIELDNAME EQ @S_FIELD1-LOW  ) )

    AND P~TABNAME NOT LIKE @LV_TAB

       INTO TABLE @DATA(ITAB13).

ENDIF.

IF S_FIELD2-LOW IS NOT INITIAL.

  SELECT C~TABNAME

  FROM ( ( DD03L AS C

       INNER JOIN DD02V AS P ON P~TABNAME  = C~TABNAME

                            AND P~TABCLASS = ‘TRANSP’)

*                              AND p~cityto   = @cityto )

       INNER JOIN DD09L AS F ON F~TABNAME = P~TABNAME )

  WHERE ( ( C~ROLLNAME EQ @S_FIELD2-LOW )

  OR ( C~FIELDNAME EQ @S_FIELD2-LOW  )    )

  AND P~TABNAME NOT LIKE @LV_TAB

     INTO TABLE @DATA(ITAB14).

ENDIF.

IF S_FIELD3-LOW IS NOT INITIAL.

  SELECT C~TABNAME

  FROM ( ( DD03L AS C

       INNER JOIN DD02V AS P ON P~TABNAME  = C~TABNAME

                            AND P~TABCLASS = ‘TRANSP’)

       INNER JOIN DD09L AS F ON F~TABNAME = P~TABNAME )

  WHERE ( ( C~ROLLNAME EQ @S_FIELD3-LOW )

  OR ( C~FIELDNAME EQ @S_FIELD3-LOW  )    )

  AND P~TABNAME NOT LIKE @LV_TAB

     INTO TABLE @DATA(ITAB15).

ENDIF.

IF S_FIELD4-LOW IS NOT INITIAL.

  SELECT C~TABNAME

FROM ( ( DD03L AS C

     INNER JOIN DD02V AS P ON P~TABNAME  = C~TABNAME

                          AND P~TABCLASS = ‘TRANSP’)

*                              AND p~cityto   = @cityto )

     INNER JOIN DD09L AS F ON F~TABNAME = P~TABNAME )

WHERE ( ( C~ROLLNAME EQ @S_FIELD4-LOW )

OR ( C~FIELDNAME EQ @S_FIELD4-LOW  )

)

AND P~TABNAME NOT LIKE @LV_TAB

*                                AND f~connid = p~connid )

*       ORDER BY c~carrname, p~connid, f~fldate

   INTO TABLE @DATA(ITAB16).

ENDIF.

SORT ITAB13 BY TABNAME.

DELETE ADJACENT DUPLICATES FROM ITAB13 COMPARING TABNAME..

SORT ITAB14 BY TABNAME.

DELETE ADJACENT DUPLICATES FROM ITAB14 COMPARING TABNAME..

SORT ITAB15 BY TABNAME.

DELETE ADJACENT DUPLICATES FROM ITAB15 COMPARING TABNAME..

SORT ITAB16 BY TABNAME.

DELETE ADJACENT DUPLICATES FROM ITAB16 COMPARING TABNAME.

IF S_FIELD1-LOW IS NOT INITIAL.

  LOOP AT ITAB13 INTO DATA(WA_TAB133).

    IF ITAB14[] IS NOT INITIAL.

      READ TABLE ITAB14  INTO DATA(WA_TAB134) WITH KEY TABNAME = WA_TAB133-TABNAME.

      IF SY-SUBRC = 0.

        CREATE DATA DREF TYPE TABLE OF (WA_TAB134-TABNAME).

        IF ITAB15[] IS NOT INITIAL.

          READ TABLE ITAB15  INTO DATA(WA_TAB135) WITH KEY TABNAME = WA_TAB133-TABNAME.

          IF SY-SUBRC = 0.

            IF ITAB16[] IS NOT INITIAL.

              READ TABLE ITAB16  INTO DATA(WA_TAB136) WITH KEY TABNAME = WA_TAB133-TABNAME.

              IF SY-SUBRC = 0.

                ASSIGN DREF->* TO <TABLE>.

SELECT  *

              FROM (WA_TAB134-TABNAME)

                  INTO TABLE @<TABLE>.

                IF <TABLE> IS NOT INITIAL.

                  WA_ALV-TABNAME =  WA_TAB134-TABNAME.

                  WA_ALV-FIELD1 =  S_FIELD1-LOW.

                  WA_ALV-FIELD2 =  S_FIELD2-LOW.

                  WA_ALV-FIELD3 =  S_FIELD3-LOW.

                  WA_ALV-FIELD4 =  S_FIELD4-LOW.

                  APPEND WA_ALV TO IALV.

                  CLEAR WA_ALV.

*      exit.

                ENDIF.

              ELSE.

                ASSIGN DREF->* TO <TABLE>.

SELECT  *

              FROM (WA_TAB134-TABNAME)

                  INTO TABLE @<TABLE>.

                IF <TABLE> IS NOT INITIAL.

                  WA_ALV-TABNAME =  WA_TAB134-TABNAME.

                  WA_ALV-FIELD1 =  S_FIELD1-LOW.

                  WA_ALV-FIELD2 =  S_FIELD2-LOW.

                  WA_ALV-FIELD3 =  S_FIELD3-LOW.

*                  WA_ALV-FIELD4 =  S_FIELD4-LOW.

                  APPEND WA_ALV TO IALV.

                  CLEAR WA_ALV.

*      exit.

                ENDIF.

              ENDIF.

            ELSE.

              ASSIGN DREF->* TO <TABLE>.

SELECT  *

            FROM (WA_TAB134-TABNAME)

                INTO TABLE @<TABLE>.

              IF <TABLE> IS NOT INITIAL.

                WA_ALV-TABNAME =  WA_TAB134-TABNAME.

                WA_ALV-FIELD1 =  S_FIELD1-LOW.

                WA_ALV-FIELD2 =  S_FIELD2-LOW.

                WA_ALV-FIELD3 =  S_FIELD3-LOW.

                APPEND WA_ALV TO IALV.

                CLEAR WA_ALV.

              ENDIF.

            ENDIF.

          ELSE.

            ASSIGN DREF->* TO <TABLE>.

SELECT  *

          FROM (WA_TAB134-TABNAME)

              INTO TABLE @<TABLE>.

            IF <TABLE> IS NOT INITIAL.

              WA_ALV-TABNAME =  WA_TAB134-TABNAME.

              WA_ALV-FIELD1 =  S_FIELD1-LOW.

              WA_ALV-FIELD2 =  S_FIELD2-LOW.

              APPEND WA_ALV TO IALV.

              CLEAR WA_ALV.

            ENDIF.

          ENDIF.

        ELSE.

          ASSIGN DREF->* TO <TABLE>.

SELECT  *

        FROM (WA_TAB134-TABNAME)

            INTO TABLE @<TABLE>.

          IF <TABLE> IS NOT INITIAL.

            WA_ALV-TABNAME =  WA_TAB134-TABNAME.

            WA_ALV-FIELD1 =  S_FIELD1-LOW.

            WA_ALV-FIELD2 =  S_FIELD2-LOW.

            APPEND WA_ALV TO IALV.

            CLEAR WA_TAB134.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

*  endif.

  ENDLOOP.

ENDIF.

*  Populate Field Catalog

PERFORM GET_FIELDCATALOG.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’

  EXPORTING

    I_CALLBACK_PROGRAM = SY-REPID

*   is_layout          = w_layout

    IT_FIELDCAT        = FIELDCAT[]

*   it_events          = i_events

  TABLES

    T_OUTTAB           = IALV

  EXCEPTIONS

    PROGRAM_ERROR      = 1

    OTHERS             = 2.

IF SY-SUBRC <> 0.

* Implement suitable error handling here

ENDIF.

************************************************************************

*      Form  Get_Fieldcatalog – Set Up Columns/Headers

************************************************************************

FORM GET_FIELDCATALOG.

  CLEAR: FIELDCAT.

  FIELDCAT-SELTEXT_M    = ‘Tablename’.

  FIELDCAT-FIELDNAME  = ‘TABNAME’.

  FIELDCAT-OUTPUTLEN  = ’36’.

  APPEND FIELDCAT TO FIELDCAT.

  CLEAR: FIELDCAT.

  FIELDCAT-SELTEXT_M   = ‘Field1’.

  FIELDCAT-FIELDNAME  = ‘FIELD1’.

  FIELDCAT-OUTPUTLEN  = ’12’.

  APPEND FIELDCAT TO FIELDCAT.

  CLEAR: FIELDCAT.

  FIELDCAT-SELTEXT_M   = ‘Field2’.

  FIELDCAT-FIELDNAME  = ‘FIELD2’.

  FIELDCAT-OUTPUTLEN  = ’12’.

  APPEND FIELDCAT TO FIELDCAT.

  CLEAR: FIELDCAT.

  FIELDCAT-SELTEXT_M   = ‘Field3’.

  FIELDCAT-FIELDNAME  = ‘FIELD3’.

  FIELDCAT-OUTPUTLEN  = ’12’.

  APPEND FIELDCAT TO FIELDCAT.

  CLEAR: FIELDCAT.

  FIELDCAT-SELTEXT_M    = ‘Field4’.

  FIELDCAT-FIELDNAME  = ‘FIELD4’.

  FIELDCAT-OUTPUTLEN  = ’12’.

  APPEND FIELDCAT TO FIELDCAT.

ENDFORM.

Here is the Selection Screen Parameter label

Conclusion

This will work for both SAP ECC and SAP S/4 HANA

Below is the video version

Read More
Arghadip Kar December 11, 2020 0 Comments

How to Find a Search Help behind any SAP Field in SAP?

Introduction

One common Enhancement we get is add more fields in the Search Help in a Standard Transaction Code or Custom Transaction Code. This blog helps out to identify the Fundamental Search help that we need to Tweak.This blog helps in both SAP ECC and SAP S/4HANA

Solution

In this example we are considering Transaction Code VA03

Go to VA03

Now put a Debug by entering /H in Command Bar

Now put the Debug point on Function Module DD_SHLP_CALL_FROM_DYNP and Execute

You can also put the Debugger on Function Module DD_SHLP_GET

Debugger stops on the Function Module and we double click on HELP_INFOS Variable

Here is the Search Help VMVA

Now we can search the Search Help in SE11

SE11

Here it is

Conclusion

The search help is very important and is one of important reason Business Loves SAP

Below is the Video Version

Read More
Arghadip Kar December 11, 2020 0 Comments

How to Display Workflow Log or Start Workflow in Custom Report in SAP in one click?

Introduction

After working with SAP for more than 15 years and travelling across the Globe for SAP Projects one requirement I always use to get is Build me a Report that will show all the Workflow Related information and also show me the Workflow Log. This blog will make your life easier as well as the Customers as they will have to click Less. This blog will save you at least 3 clicks per document which is equivalent to 3 less chances of making Mistakes.

Current Process for Display Workflow Overview or Log Auditors Heaven and one of the Success Reason of SAP Workflow.

In this scenario we want to Display Workflow Log of Purchase Order. We can build a Hotspot which will take us to ME23N Transaction Code and then we hit the below option which is 3 Clicks.

ME23N

Here is the Workflow Overview

Solution

Use Function Module GOS_EXECUTE_SERVICE by Going to Tcode SE37 and HIT Execute

Now enter value as mentioned below

IP_SERVICE = WF_OVERVIEW
IS_OBJECT = 4500000403 BUS2012
IP_NO_COMMIT =X
IP_POPUP = X
IP_RWMOD = D
IT_SERVICE_SELECTION 0 Entries
IP_VSI_PROFILE

Special Mention of IS_OBJECT

Now Execute and we get the Pop Up.

Conclusion

You can use this for both SAP ECC and SAP S/4HANA

Here is the Video version

Read More
Arghadip Kar December 11, 2020 0 Comments

How to Display Attachment List in Custom Report in SAP in one click?

Introduction

After working with SAP for more than 15 years and travelling across the Globe for SAP Projects one requirement I always use to get is Build me a Report that will show all the Attachment List. This blog will make your life easier as well as the Customers as they will have to click Less. This blog will save you at least 2 clicks per document which is equivalent to 2 less chances of making Mistakes..

Current Process for Display Attachment List.

In this scenario we want to Display Attachment List for an Invoice in FB03 Tcode which has 2 Clicks.

FB03

2 Clicks below

Attachment List

Solution

Use Function Module GOS_EXECUTE_SERVICE by Going to Tcode SE37 and HIT Execute

SE37

Now enter value as mentioned below

Special Mention of IS_OBJECT

Now execute

Conclusion

This can be used both in SAP ECC and SAP S/4HANA

Below is the video version.

Read More
Arghadip Kar December 11, 2020 0 Comments