Tuesday, 10 May 2022

SAP ABAP - Find User Exit of Transaction Code With Custom Program

 




REPORT zfindexits.

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

PARAMETERS p_tcode LIKE tstc-tcode OBLIGATORY.

START-OF-SELECTION.

SELECT SINGLE FROM tstc WHERE tcode EQ p_tcode.

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 'SMOD'  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(20p_tcode45(50tstct-ttext.
  SKIP.

  IF NOT jtab[] IS INITIAL.

    WRITE:/(95sy-uline.
    FORMAT COLOR COL_HEADING INTENSIFIED ON.
    WRITE:/1 sy-vline,
    'Exit Name',
    21 sy-vline ,
    22 'Description',
    95 sy-vline.
    WRITE:/(95sy-uline.

    LOOP AT jtab.
      SELECT SINGLE FROM modsapt WHERE sprsl sy-langu AND name jtab-obj_name.
      FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

      WRITE:/1 sy-vline,
      jtab-obj_name HOTSPOT ON,
      21 sy-vline ,
      22 modsapt-modtext,
      95 sy-vline.
    ENDLOOP.

    WRITE:/(95sy-uline.
    DESCRIBE TABLE jtab.
    SKIP.

    FORMAT COLOR COL_TOTAL INTENSIFIED ON.
    WRITE:'No of Exits:' sy-tfill.
  ELSE.

    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(95'No User Exit exists'.
  ENDIF.
ELSE.

  FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
  WRITE:/(95'Transaction Code Does Not Exist'.
ENDIF.

AT LINE-SELECTION.

  GET CURSOR FIELD field1.
  CHECK field1(4EQ 'JTAB'.
  SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
  CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

Wednesday, 13 April 2022

SAP ABAP - Add Custom Screen In MIGO Header

 1. Create BAdI MB_MIGO_BADI Implementation from tcode SE19


2. Enter Implementation Name



3. Create Enhancement Implementation





4. Open Implementing Class



5. Create variable declaration on class attribute



6. Append custom structure to GOHEAD structure from SE11








save & activate structure.

7. Create custom table to store custom field data


8. Create custom ABAP program in SE38



9. create 2 sub screen for input and display


 


All source code custom ABAP program

*&---------------------------------------------------------------------*
*& Report ZMIGO_CUSTOMFIELD
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zmigo_customfield.
TABLES gohead.

DATA cs_goitem TYPE goitem.
*&---------------------------------------------------------------------*
*& Module STATUS_8000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_8000 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_8000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_8000 INPUT.
*  CASE sy-ucomm.
*    WHEN 'OK_GO'.
*    WHEN 'OK_POST1'.
*    WHEN OTHERS.
*  ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_8001 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_8001 OUTPUT.
  IMPORT cs_goitem TO cs_goitem FROM MEMORY ID 'MIGO_CUSTOMFIELD'.
  SELECT SINGLE zcustomfield FROM ztt_cstomfield
    INTO gohead-zcustomfield WHERE mblnr cs_goitem-mblnr AND mjahr cs_goitem-mjahr.
ENDMODULE.


All BAdI Method source code :

  METHOD if_ex_mb_migo_badi~init.
    APPEND class_id TO ct_init.
  ENDMETHOD.

  METHOD if_ex_mb_migo_badi~mode_set.
    IF i_refdoc 'R01' AND i_action 'A01'.
      CLEAR display_mode.
    ELSEIF i_action 'A04' OR i_action 'A03'.
      display_mode 'X'.
    ELSE.
      display_mode 'Z'.
    ENDIF.
  ENDMETHOD.

  METHOD if_ex_mb_migo_badi~pbo_header.
    CHECK i_class_id class_id.
    IF display_mode ''.
      e_cprog   'ZMIGO_CUSTOMFIELD'.
      e_dynnr   '8000'.                     "External fields: Input
      e_heading 'MIGO Custom Field'.
    ELSEIF display_mode 'X'.
      e_cprog   'ZMIGO_CUSTOMFIELD'.
      e_dynnr   '8001'.                     "External fields: Display
      e_heading 'MIGO Custom Field'.
    ENDIF.
  ENDMETHOD.

  method IF_EX_MB_MIGO_BADI~PAI_HEADER.
    ls_gohead is_gohead.
  endmethod.

  METHOD if_ex_mb_migo_badi~post_document.
    DATA :
          ls_ztt_cstomfield TYPE ztt_cstomfield.

    IF display_mode IS INITIAL.
      CLEAR ls_ztt_cstomfield.
      ls_ztt_cstomfield-mblnr is_mkpf-mblnr.
      ls_ztt_cstomfield-mjahr is_mkpf-mjahr.
      ls_ztt_cstomfield-zcustomfield ls_gohead-zcustomfield.

      MODIFY ztt_cstomfield FROM ls_ztt_cstomfield.
    ENDIF.
  ENDMETHOD.


10. Activate Badi Implementation from SE18




11. Open MIGO transaction GR Other and here the custom screen result :D




:D :D :D

Belajar SAP ABAP RAP

  Belajar SAP ABAP RAP: Pengenalan dan Konsep Dasar Restful ABAP Programming Model Kalau kamu seorang ABAPer yang mulai terjun ke dunia SAP...