How to Find Enhancement and BADI in SAP by any T-Code?

Use the below program by entering T-Code.

TABLES : tstc,
         tadir,
         modsapt,
         modact,
         trdir,
         tfdir,
         enlfdir,
         sxs_attrt ,
         tstct.

DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.

PARAMETERS : p_tcode LIKE tstc-tcode,
             p_pgmna LIKE tstc-pgmna.

DATA wa_tadir TYPE tadir.

START-OF-SELECTION.

  IF NOT p_tcode IS INITIAL.

    SELECT SINGLE *
      FROM tstc
     WHERE tcode EQ p_tcode.

  ELSEIF NOT p_pgmna IS INITIAL.
    tstc-pgmna = p_pgmna.

  ENDIF.

  IF sy-subrc EQ 0.

    SELECT SINGLE *
      FROM tadir
     WHERE pgmid = ‘R3TR’
       AND object = ‘PROG’
       AND obj_name = tstc-pgmna.

    MOVE : tadir-devclass TO v_devclass.

    IF sy-subrc NE 0.

      SELECT SINGLE *
        FROM trdir
       WHERE name = tstc-pgmna.

      IF trdir-subc EQ ‘F’.

        SELECT SINGLE *
          FROM tfdir
         WHERE pname = tstc-pgmna.

        SELECT SINGLE *
          FROM enlfdir
         WHERE funcname = tfdir-funcname.

        SELECT SINGLE *
          FROM tadir
         WHERE pgmid = ‘R3TR’
           AND object = ‘FUGR’
           AND obj_name EQ enlfdir-area.

        MOVE : tadir-devclass TO v_devclass.

      ENDIF.

    ENDIF.

    SELECT *
      FROM tadir
      INTO TABLE jtab
     WHERE pgmid = ‘R3TR’
       AND object IN (‘SMOD’, ‘SXSD’)
       AND devclass = v_devclass.

    SELECT SINGLE *
      FROM tstct
     WHERE sprsl EQ sy-langu
       AND tcode EQ p_tcode.

    FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.

    WRITE:/(19) ‘Transaction Code – ‘,
           20(20) p_tcode,
           45(50) tstct-ttext.

    SKIP.

    IF NOT jtab[] IS INITIAL.

      WRITE:/(105) sy-uline.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.

* SORTING THE INTERNAL TABLE

      SORT jtab BY object.

      DATA : wf_txt(60)     TYPE c,
             wf_smod        TYPE i,
             wf_badi        TYPE i,
             wf_object2(30) TYPE c.

      CLEAR : wf_smod, wf_badi , wf_object2.

*GET THE TOTAL SMOD.

      LOOP AT jtab INTO wa_tadir.

        AT FIRST.

          FORMAT COLOR COL_HEADING INTENSIFIED ON.

          WRITE:/1 sy-vline,
          2 ‘Enhancement/ Business Add-in’,
          41 sy-vline ,
          42 ‘Description’,
          105 sy-vline.
          WRITE:/(105) sy-uline.

        ENDAT.

        CLEAR wf_txt.

        AT NEW object.

          IF wa_tadir-object = ‘SMOD’.
            wf_object2 = ‘Enhancement’ .

          ELSEIF wa_tadir-object = ‘SXSD’.
            wf_object2 = ‘ Business Add-in’.

          ENDIF.

          FORMAT COLOR COL_GROUP INTENSIFIED ON.
          WRITE:/1 sy-vline,
          2 wf_object2,
          105 sy-vline.

        ENDAT.

        CASE wa_tadir-object.

          WHEN ‘SMOD’.

            wf_smod = wf_smod + 1.

            SELECT SINGLE modtext
              INTO wf_txt
              FROM modsapt
             WHERE sprsl = sy-langu
               AND name = wa_tadir-obj_name.

            FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

          WHEN ‘SXSD’.

* FOR BADIS
            wf_badi = wf_badi + 1 .

            SELECT SINGLE text
              INTO wf_txt
              FROM sxs_attrt
             WHERE sprsl = sy-langu
               AND exit_name = wa_tadir-obj_name.

            FORMAT COLOR COL_NORMAL INTENSIFIED ON.

        ENDCASE.

        WRITE:/1 sy-vline,
        2 wa_tadir-obj_name HOTSPOT ON,
        41 sy-vline ,
        42 wf_txt,
        105 sy-vline.

        AT END OF object.
          WRITE : /(105) sy-uline.
        ENDAT.

      ENDLOOP.

      WRITE:/(105) sy-uline.
      SKIP.

      FORMAT COLOR COL_TOTAL INTENSIFIED ON.
      WRITE:/ ‘No.of Exits:’ , wf_smod.
      WRITE:/ ‘No.of BADis:’ , wf_badi.

    ELSE.
      FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
      WRITE:/(105) ‘No userexits or BADis exist’.
    ENDIF.

  ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(105) ‘Transaction does not exist’.

  ENDIF.

AT LINE-SELECTION.

  DATA : wf_object TYPE tadir-object.

  CLEAR wf_object.

  GET CURSOR FIELD field1.

  CHECK field1(8) EQ ‘WA_TADIR’.

  READ TABLE jtab WITH KEY obj_name = sy-lisel+1(20).

  MOVE jtab-object TO wf_object.

  CASE wf_object.

    WHEN ‘SMOD’.
      SET PARAMETER ID ‘MON’ FIELD sy-lisel+1(10).
      CALL TRANSACTION ‘SMOD’ AND SKIP FIRST SCREEN.

    WHEN ‘SXSD’.
      SET PARAMETER ID ‘EXN’ FIELD sy-lisel+1(20).
      CALL TRANSACTION ‘SE18’ AND SKIP FIRST SCREEN.

  ENDCASE.

How to Open Background Job from SAP ABAP?

Parameters
DATA: lv_jobcount TYPE btcjobcnt, ” Jobnummer
lv_jobname TYPE btcjob, ” Jobname
lv_time TYPE sy-uzeit.

Create Job Name
CONCATENATE ‘ZPROGRAM’ sy-datum sy-uzeit INTO lv_jobname SEPARATED BY space.

Open Job
CALL FUNCTION ‘JOB_OPEN’
EXPORTING
jobname = lv_jobname
IMPORTING
jobcount = lv_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.

Call Submit Program that you want to process in the background.
SUBMIT zprogram AND RETURN VIA JOB lv_jobname NUMBER lv_jobcount.

Close Job
lv_time = sy-uzeit + 3. “Start time of Job
CALL FUNCTION ‘JOB_CLOSE’
EXPORTING
jobname = lv_jobname
jobcount = lv_jobcount
sdlstrtdt = sy-datum
sdlstrttm = lv_time
EXCEPTIONS
cant_start_immediate = 01
jobname_missing = 02
job_close_failed = 03
job_nosteps = 04
job_notex = 05
lock_failed = 06.

How to Connect Another Database from SAP?

With SM51 transaction code list the active application server. Select the main server system that you use.

Open DB connections with DBCO.

Create new connection to the database that you want to connect. Make the connection permanent by clicking checkbox.

You can check the connection by program ADBC_TEST_CONNECTION

Exit SM51 mode.

Create new SAP program. At initialization change your system.

INITIALIZATION.
  IF sy-opsys NE ‘Windows NT’.
    CALL FUNCTION ‘Z_SERVER_CHANGE’ DESTINATION ‘SQLRFC’
      EXPORTING
        programm              = sy-cprog
      EXCEPTIONS
        communication_failure = 1
        system_failure        = 2.
    IF sy-subrc IS NOT INITIAL.
      “Leave anyway
    ENDIF.

    LEAVE PROGRAM.
  ENDIF.

Form to connect the database

*&———————————————————————*
*&      Form  sql_connect
*&———————————————————————*
FORM sql_connect.

  CLEAR: i_out, i_out[].

  SELECT SINGLE *
    FROM dbcon
   WHERE con_name = ‘DBNAME_YOU_CONNECT’. ” Database Name That You Connect
  IF sy-subrc <> 0.
    EXIT. “WRITE :/ ‘Connection is not valid’.
  ENDIF.

  EXEC SQL.
    SET CONNECTION :’DBNAME_YOU_CONNECT’
  ENDEXEC.

  IF sy-subrc <> 0.
    EXEC SQL.
      CONNECT TO :’DBNAME_YOU_CONNECT’
    ENDEXEC.

    IF sy-subrc <> 0.
      EXIT. “WRITE :/ ‘SQL ile bağlantı kurulamadı !!’.
    ENDIF.
  ENDIF.

*Get Data From Database
  EXEC SQL PERFORMING get_sql_data.
    select LOCATION,
            MATERIAL,
            NAME,
            START_DATE,
            END_DATE
      into :i_out-location,
            :i_out-material,
            :i_out-name,
            :i_out-start_date,
            :i_out-end_date
      from MATERIAL_TABLE “Database table name
  ENDEXEC.

  EXEC SQL.
    DISCONNECT ‘DBNAME_YOU_CONNECT’
  ENDEXEC.

ENDFORM.

FORM get_sql_data.
  APPEND i_out.
  CLEAR i_out.
ENDFORM.

Note: Your Internal table and Database table fields must have the same data type.

DATA: BEGIN OF i_out OCCURS 0,
        lokasyon   TYPE i,
        material TYPE char20,
        name      TYPE char40,
        start_date   TYPE char20,
        end_date    TYPE char20,
      END OF i_out.

How to Create Authorization Object in SAP ABAP?

By using SU21 transaction you can create authorization object.

You can create Z* authorization object like standart objects.

If you want to call authorization object from code you can write the code below.

AUTHORITY-CHECK OBJECT ‘F_BKPF_BUK’
              ID ‘BUKRS’ FIELD p_bukrs
              ID ‘ACTVT’ FIELD ’03’.

AUTHORITY-CHECK OBJECT ‘ZYP_WERKS’
            ID ‘ACTVT’ FIELD ’06’.

If you have an authorizaton object on SAP transaction you can check it by SU22 transaction. You can also check USOBX table.

WordPress.com ile böyle bir site tasarlayın
Başlayın