Program to find Badi or user exit

7:59 PM
report ZFINDEXIT_BADI.
TABLES TSTC,
TADIR,
MODSAPT,
MODACT,
TRDIR,
TFDIR,
ENLFDIR,
SXS_ATTRT ,
TSTCT.

DATA JTAB LIKE TADIR OCCURS 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(20P_TCODE,
45(50TSTCT-TTEXT.
SKIP.
IF NOT JTAB[] IS INITIAL.
WRITE:/(105SY-ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.



*Sorting the internal Table
sort jtab by OBJECT.
data wf_txt(60type c,
wf_smod type ,
wf_badi type ,
wf_object2(30type C.
clear wf_smodwf_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,
'Enhancement/ Business Add-in',
41 SY-VLINE ,
42 'Description',
105 SY-VLINE.
WRITE:/(105SY-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,

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 + .
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,
wa_tadir-OBJ_NAME hotspot on,
41 SY-VLINE ,
42 wf_txt,
105 SY-VLINE.
AT END OF object.
write /(105sy-ULINE.
ENDAT.


ENDLOOP.

WRITE:/(105SY-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(8EQ '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.
Read On 0 comments

Sample on OO grid with select otspot

3:00 AM
REPORT ZLLTEST13.
*****************************************
*  D A T A  D E C L A R A T I O N  START*
*****************************************
*********************************************************
*  D I S P L A Y   A L V   I N   S C R E E N  S T A R T *
*********************************************************
DATA:   gs_fieldcatalog TYPE lvc_s_fcat OCCURS 0,
        gv_fcat LIKE LINE OF gs_fieldcatalog,
        gs_layout TYPE lvc_s_layo.
*<----------------CUSTOM TABLE START----------------------
TYPES BEGIN OF gty_item,
          checkbox type c,                "field for checkbox
          celltab  type lvc_t_styl,        "field to switch editability
          VBELN            TYPE VBAK-VBELN,                        "<---CUSTOMIZED
          TABLE(4)         TYPE C,                                 "<---CUSTOMIZED
          GV_ADDRESS1(500TYPE C,                                 "<---CUSTOMIZED
          GV_ADDRESS2(500TYPE C,                                 "<---CUSTOMIZED
        END OF gty_item.
DATA :  gs_item TYPE gty_item,
        gt_item TYPE TABLE OF gty_item.
*<----------------CUSTOM TABLE END------------------------
DATA :  g_Container TYPE scrfname VALUE 'C_ALV',                    ""<---CUSTOMIZED CONTAINER VALUE
        g_Custom_Container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
        g_Grid TYPE REF TO CL_GUI_ALV_GRID.
DATA :  OK_CODE LIKE sy-ucomm,
        SAVE_OK LIKE sy-ucomm.



******************************************************
*  D I S P L A Y   A L V   I N   S C R E E N  E N D  *
******************************************************

******************************************************
*  CUSTOM TABLE OR DATA DECLRATION FOR PROGRAM       *
******************************************************
TABLEST001ADRC,
        Ekko"Purchasing Document Header       EBELN
        vbrk"Billing Document: Header Data    VBELN
        vbak.  "Sales Document: Header Data     VBELN
DATA:   TA_T001       TYPE TABLE OF T001,
        WA_T001       LIKE LINE OF TA_T001,
        TA_ADRC       TYPE TABLE OF ADRC,
        WA_ADRC       LIKE LINE OF TA_ADRC,
        LV_BUKRS      TYPE T001-BUKRS,
        GV_ADDRESS1   TYPE  STRING,
        GV_ADDRESS2   TYPE  STRING,
        SY_PROG       TYPE SY-CPROG,
        LV_VBELN      TYPE VBAK-VBELN.
SY_PROG SY-CPROG.
******************************************************
*  S E L E C T I O N   S C R E E N                   *
******************************************************
SELECTION-SCREEN BEGIN OF BLOCK b_top WITH FRAME.
PARAMETERS     p_EKKO  RADIOBUTTON GROUP g1,
                 p_VBRK  RADIOBUTTON GROUP g1,
                 p_VBAK  RADIOBUTTON GROUP g1,
                 p_DOCNO type vbeln DEFAULT '4970000000'.
SELECTION-SCREENEND OF BLOCK b_top.


FORM U_PREPARE_FIELDCATALOG .
  CLEAR gv_fcat.

  CLEAR gv_fcat.
  gv_fcat-fieldname 'TABLE'.
  gv_fcat-tabname 'TABLE'.
  gv_fcat-col_pos 0.
  gv_fcat-coltext 'TABLE'.
  INSERT gv_fcat INTO TABLE gs_fieldcatalog.

  gv_fcat-fieldname 'VBELN'.
  gv_fcat-tabname 'VBELN'.
  gv_fcat-col_pos 0.
  gv_fcat-coltext 'VBELN'.
  gv_fcat-hotspot 'X'.
  INSERT gv_fcat INTO TABLE gs_fieldcatalog.

  CLEAR gv_fcat.
  gv_fcat-fieldname 'GV_ADDRESS1'.
  gv_fcat-tabname 'GV_ADDRESS1'.
  gv_fcat-col_pos 0.
  gv_fcat-coltext 'GV_ADDRESS1'.
  gv_fcat-INTLEN 55.
  "gv_fcat-no_out = 'X'. " Do not Display Column
  INSERT gv_fcat INTO TABLE gs_fieldcatalog.

  CLEAR gv_fcat.
  gv_fcat-fieldname 'GV_ADDRESS2'.
  gv_fcat-tabname 'GV_ADDRESS2'.
  gv_fcat-col_pos 1.
  gv_fcat-coltext 'GV_ADDRESS2'.
  gv_fcat-INTLEN 55.
  "gv_fcat-no_out = 'X'. " Do not Display Column
  INSERT gv_fcat INTO TABLE gs_fieldcatalog.

ENDFORM" U_PREPARE_FIELDCATALOG
*****************************************
*  D A T A  D E C L A R A T I O N  END  *
*****************************************
*****************************************
*  H O T   S P O T               START  *
*****************************************
CLASS event_class DEFINITION DEFERRED.
*& Refrence Objects To Alv Grid & Custom Container Classes
DATA:
****  g_Grid TYPE REF TO cl_gui_alv_grid,                     <-- your customized ALV
****  g_Custom_Container TYPE REF TO cl_gui_custom_container, <-- your customized ALV
  event_receiver TYPE REF TO event_class,
  e_object TYPE REF TO cl_alv_event_toolbar_set.
*& Data Declaration For Interactive Lists
DATA:
  t_layo TYPE lvc_s_layo,
  t_fcat TYPE lvc_t_fcat,
  fs_fcat TYPE lvc_s_fcat,
  t_cell TYPE lvc_t_cell,
  t_row TYPE lvc_t_roid,
  t_cel TYPE lvc_t_ceno.
*----------------------------------------------------------------------*
* CLASS event_class DEFINITION
*----------------------------------------------------------------------*
CLASS event_class DEFINITION.
  PUBLIC SECTION.
    METHODS:
    handle_hotspot_click
*    FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING e_row_id.
    FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING  e_column_id
                                                          e_row_id
                                                          es_row_no  .

ENDCLASS"event_class DEFINITION

*----------------------------------------------------------------------*
* CLASS event_class IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS event_class IMPLEMENTATION.
  METHOD handle_hotspot_click.
* fl_flag = 1.
*& Work Variable Declarations
*****    DATA:
*****    fs_carrid LIKE LINE OF t_flight. " Airline Passed Variable
*& Reading the selected data into the variable
****    READ TABLE t_flight INDEX e_row_id-index INTO fs_carrid.
****    PERFORM get_booking_data USING fs_carrid.
****    CALL SCREEN 600.

    READ TABLE GT_ITEM INTO GS_ITEM INDEX e_row_id-index.

    CASE GS_ITEM-TABLE.
    WHEN 'EKKO'SET PARAMETER ID 'BES' FIELD GS_ITEM-VBELNCALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
    WHEN 'VBRK'SET PARAMETER ID 'VF'  FIELD GS_ITEM-VBELNCALL TRANSACTION 'VF03'  AND SKIP FIRST SCREEN.
    WHEN 'VBAK'SET PARAMETER ID 'AUN' FIELD GS_ITEM-VBELNCALL TRANSACTION 'VA03'  AND SKIP FIRST SCREEN.
    ENDCASE.

  ENDMETHOD"handle_hotspot_click
ENDCLASS"event_class IMPLEMENTATION
*****************************************
*  H O T   S P O T                 END  *
*****************************************

*****************************************
*  PROCESS DATA START                   *
*****************************************
*&---------------------------------------------------------------------*
*&      Form  F_PROCESS_DATA - TO POPULATE GT_ITEM
*&---------------------------------------------------------------------*
FORM F_PROCESS_DATA .
  CLEARLV_BUKRSGS_ITEM.
  CASE 'X'.
    WHEN p_EKKOSELECT SINGLE BUKRS    FROM EKKO INTO LV_BUKRS WHERE EBELN EQ p_DOCNO.
    WHEN p_VBRKSELECT SINGLE BUKRS    FROM VBRK INTO LV_BUKRS WHERE VBELN EQ p_DOCNO.
    WHEN p_VBAKSELECT SINGLE BUKRS_VF FROM VBAK INTO LV_BUKRS WHERE VBELN EQ p_DOCNO AND VKORG '0190'"SALES oRDER
  ENDCASE.
  IF SY-SUBRC EQ 0.
    SELECT FROM T001 INTO CORRESPONDING FIELDS OF TABLE TA_T001 WHERE BUKRS EQ LV_BUKRS.
    IF TA_T001[] IS NOT INITIAL.
      SELECT FROM ADRC INTO CORRESPONDING FIELDS OF TABLE TA_ADRC
        FOR ALL ENTRIES IN TA_T001 WHERE ADDRNUMBER EQ TA_T001-ADRNR.
      IF SY-SUBRC EQ 0.
        READ TABLE TA_ADRC INTO  WA_ADRC INDEX 1.
        IF SY-SUBRC EQ 0.
          CLEARGV_ADDRESS1GV_ADDRESS2.
              CONCATENATEWA_ADRC-NAME1 WA_ADRC-NAME2 INTO GV_ADDRESS1 SEPARATED BY SPACE.

          IF WA_ADRC-STR_SUPPL1 IS NOT INITIAL"NEXT LINE IS NOT INITIAL
              CONCATENATE WA_ADRC-STREET  ','         INTO WA_ADRC-STREET.
          ENDIF.
          IF WA_ADRC-STR_SUPPL2 IS NOT INITIAL"NEXT LINE IS NOT INITIAL
              CONCATENATE WA_ADRC-STR_SUPPL1  ','     INTO WA_ADRC-STR_SUPPL1.
          ENDIF.
              CONCATENATE WA_ADRC-STREET
                          WA_ADRC-STR_SUPPL1
                          WA_ADRC-STR_SUPPL2          INTO GV_ADDRESS2 SEPARATED BY SPACE.
          REPLACE ',,'  WITH ',' INTO:  GV_ADDRESS1 GV_ADDRESS2.
          REPLACE ', ,' WITH ',' INTO:  GV_ADDRESS1 GV_ADDRESS2.
          REPLACE ' ,'  WITH ',' INTO:  GV_ADDRESS1 GV_ADDRESS2.

          GS_ITEM-VBELN       P_DOCNO.
          CASE 'X'.
            WHEN p_EKKOGS_ITEM-TABLE       'EKKO'.
            WHEN p_VBRKGS_ITEM-TABLE       'VBRK'.
            WHEN p_VBAKGS_ITEM-TABLE       'VBAK'.
          ENDCASE.

          GS_ITEM-GV_ADDRESS1 GV_ADDRESS1.
          GS_ITEM-GV_ADDRESS2 GV_ADDRESS2.
          DELETE GT_ITEM WHERE VBELN P_DOCNO.
          APPEND GS_ITEM TO GT_ITEM.

        ENDIF.
      ENDIF.
    ENDIF.
 ELSE.
    DATADOC_NO TYPE VBRK-VBELN.

    CASE 'X'.
      WHEN p_EKKOSELECT SINGLE EBELN FROM EKKO INTO DOC_NO.
      WHEN p_VBRKSELECT SINGLE VBELN FROM VBRK INTO DOC_NO.
      WHEN p_VBAKSELECT SINGLE VBELN FROM VBAK INTO DOC_NO.
    ENDCASE.
    IF sy-subrc eq 0.
      MESSAGE 'NO COMPANY CODE FOUND' TYPE 'I' display like 'I' .
    ELSE.
      MESSAGE 'NO DATA' TYPE 'I' display like 'E'.
    ENDIF.
    P_DOCno DOC_NO.
  ENDIF.
ENDFORM.                    " F_PROCESS_DATA
*****************************************
*  PROCESS DATA END                     *
*****************************************



******************************************************
*  S T A R T - O F - S E L E C T I O N               *
******************************************************
START-OF-SELECTION.
 PERFORM F_PROCESS_DATA.
 IF GT_ITEM[] IS NOT INITIAL.
   call SCREEN 100.
 ENDIF.
END-OF-SELECTION.


MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS 'ZMARK'"<--- CUSTOMIZED GUI STATUS
*  SET TITLEBAR 'xxx'.
  PERFORM F_INIT_ALV.
ENDMODULE.                 " STATUS_0100  OUTPUT

MODULE USER_COMMAND_0100 INPUT.
  save_ok ok_code.
  clear ok_code.
  case save_ok.
    when 'BACK' OR 'CANCEL'.
        submit zmark VIA SELECTION-SCREEN WITH p_ekko     EQ p_ekko
                                          WITH p_DOCNO    eq p_DOCNO.
    when 'EXIT'.
      LEAVE PROGRAM.
    when 'F_BT_SEARCH'.
      IF LV_VBELN NE ''.
          p_DOCNO LV_VBELN.
          PERFORM F_PROCESS_DATA.
          LV_VBELN P_DOCno.
          CALL METHOD g_Grid->REFRESH_TABLE_DISPLAY.
      ELSE.
          MESSAGE 'SEARCH FIELD IS BLANK' TYPE 'I' display like 'E'.
      ENDIF.
  endcase.
ENDMODULE.                 " USER_COMMAND_0100  INPUT

FORM F_INIT_ALV.
  datalt_exclude type ui_functions.

  IF g_Custom_Container IS INITIAL.
    " Create CONTAINER object with reference to container name in the screen
    CREATE OBJECT g_Custom_Container
        EXPORTING CONTAINER_NAME g_Container.
    " Create GRID object with reference to parent name
    CREATE OBJECT g_Grid
        EXPORTING I_PARENT g_Custom_Container.
    PERFORM u_prepare_fieldcatalog.



    "****************************
    "  CELLTAB            start "
    "****************************
*-> Initially, set all checkbox cells editable.
    DATA:
    ls_celltab type lvc_s_styl,
    lt_celltab type lvc_t_styl,
    tp_iindex type i.
    ls_celltab-fieldname 'CHECKBOX'.
    ls_celltab-style cl_gui_alv_grid=>mc_style_enabled.

    loop at gt_item INTO GS_ITEM.
      tp_iindex sy-tabix.
      refresh lt_celltab.
      ls_celltab-fieldname 'CHECKBOX'.
      ls_celltab-style cl_gui_alv_grid=>mc_style_enabled.
      insert ls_celltab into table lt_celltab.
      gS_item-celltab[] lT_celltab[].
      modify GT_ITEM FROM GS_ITEM index tp_iindex.
    endloop.
    "****************************
    "  CELLTAB            END   "
    "****************************


    "****************************
    "  gs_layout settings start "
    "****************************
*    A Multiple columns, multiple rows with selection buttons.
*    B Simple selection, listbox, Single row/column
*    C Multiple rows without buttons
*    D Multiple rows with buttons and select all ICON
    gs_layout-sel_mode   'D'.        "SELECT ALL AT THE UPPER RIGHT
    gs_layout-ZEBRA      'X'.
    gs_layout-stylefname 'CELLTAB'.
    "gs_layout-edit = 'X'.             "Makes all Grid editable
    "****************************
    "  gs_layout settings end   "
    "****************************

    perform exclude_tb_functions changing lt_exclude.
    " SET_TABLE_FOR_FIRST_DISPLAY
    CALL METHOD g_Grid->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
        is_layout             gs_layout
        it_toolbar_excluding  lt_exclude
      CHANGING
        it_fieldcatalog       gs_fieldcatalog
        IT_OUTTAB             gt_item" Data


************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
    CREATE OBJECT event_receiver.
    SET HANDLER event_receiver->handle_hotspot_click FOR g_Grid."cl_alv_grid.
    CREATE OBJECT e_object.

************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
  ELSE.
    CALL METHOD g_Grid->REFRESH_TABLE_DISPLAY.
  ENDIF.
ENDFORM.


form exclude_tb_functions changing pt_exclude type ui_functions.

*  data ls_exclude type ui_func.
*
*  ls_exclude = cl_gui_alv_grid=>mc_fc_refresh.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
*  append ls_exclude to pt_exclude.

endform.                               " EXCLUDE_TB_FUNCTIONS


*NOTE:
*1. create gui status zmark
*   - assign cancel, back and exit
*2. create screen 100. copy into a file below and upload the screen 100
****************************************************************************
****************************************************************
*   THIS FILE IS GENERATED BY THE SCREEN PAINTER.              *
*   NEVER CHANGE IT MANUALLY, PLEASE !                         *
****************************************************************
*%_DYNPRO
*ZMARK_T
*0100
*700
*             40
*%_HEADER
*ZMARK_T                                 0100 0100     30112192 37  0  0 35141  0G E                              20150624173745
*%_DESCRIPTION
*Test result screen
*%_FIELDS
*SY_PROG  C CHAR   13 80  00  80  32  00    1   7     0   0   0     0           0   0               _____________
*GV_ADDRESS1  C CHAR  107 80  00  80  32  00    2   7     0   0   0     0           0   0               ___________________________________________________________________________________________________________
*GV_ADDRESS2  C CHAR  107 80  00  80  32  00    3   7     0   0   0     0           0   0               ___________________________________________________________________________________________________________
*C_ALV      108 00  00  00  30  00    4   6     0   0   0    22 U         1   1 101
*LV_VBELN C CHAR   25 80  00  80  00  00   27   6     0   0   0     0           0   0               _________________________
*BT_SEARCH    CHAR    6 00  00  00  30  00   27  34     0   0   0     0 P         0   0 102             Search
*                       F_BT_SEARCH  [bring this line up]
*P_EKKO C CHAR    1 80  00  80  00  00   28   6     0   0   0     0 A         0   0 103     G1  G1  G1  G1
*P_EKKO 0 CHAR    4 00  00  00  30  00   28   8     0   0   0     0 A         0   0 103     G1  G1  G1  G1  EKKO
*P_VBRK C CHAR    1 80  00  80  00  00   29   6     0   0   0     0 A         0   0 103     G1  G1  G1  G1
*P_VBRK 0 CHAR    4 00  00  00  30  00   29   8     0   0   0     0 A         0   0 103     G1  G1  G1  G1  VBRK
*P_VBAK C CHAR    1 80  00  80  00  00   30   6     0   0   0     0 A         0   0 103     G1  G1  G1  G1
*P_VBAK 0 CHAR    4 00  00  00  30  00   30   8     0   0   0     0 A         0   0 103     G1  G1  G1  G1  VBAK
*OK_CODE    CHAR   20 80  10  00  00  00  255   1 O   0   0   0     0           0   0               ____________________
*%_FLOWLOGIC
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
*%_PARAMS
Read On 0 comments

Express Information how to enable it for me23n email

12:32 AM
I was assign a print program for PO and what i did for the output type was to send auto PO to user and sender and information.
But what the functional requested more that is when the sender email has received he wants a pop up which is to say email have been sent to you.
So using the FM CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
and any error occured it will pop up in Send Express Information (pop up)

Configuration to be made in Shared office settings
- Tcode :- SO16
- Mail sy. grp
Select No Mail System Group
Read On 0 comments

Abap Classical report to PDF using spool and email

7:51 PM
REPORT YMARK_ASD.
*source : https://scn.sap.com/thread/879625
PARAMETERp_email1 LIKE somlreci1-receiver,
           p_sender LIKE somlreci1-receiver,
           p_delspl  AS CHECKBOX.



*DATA DECLARATION
DATAgd_recsize TYPE i.


*Spool IDs
TYPESBEGIN OF t_tbtcp.
        INCLUDE STRUCTURE tbtcp.
TYPESEND OF t_tbtcp.
DATAit_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
      wa_tbtcp TYPE t_tbtcp.


*Job Runtime Parameters

DATAgd_eventid LIKE tbtcm-eventid,
      gd_eventparm LIKE tbtcm-eventparm,
      gd_external_program_active LIKE tbtcm-xpgactive,
      gd_jobcount LIKE tbtcm-jobcount,
      gd_jobname LIKE tbtcm-jobname,
      gd_stepcount LIKE tbtcm-stepcount,
      gd_error    TYPE sy-subrc,
      gd_reciever TYPE sy-subrc.

DATA:  w_recsize TYPE i.

DATAgd_subject   LIKE sodocchgi1-obj_descr,
      it_mess_bod LIKE solisti1 OCCURS WITH HEADER LINE,
      it_mess_att LIKE solisti1 OCCURS WITH HEADER LINE,
      gd_sender_type     LIKE soextreci1-adr_typ,
      gd_attachment_desc TYPE so_obj_nam,
      gd_attachment_name TYPE so_obj_des.

*Spool to PDF conversions

DATAgd_spool_nr LIKE tsp01-rqident,
      gd_destination LIKE rlgrap-filename,
      gd_bytecount LIKE tst01-dsize,
      gd_buffer TYPE string.

*Binary store for PDF

DATABEGIN OF it_pdf_output OCCURS 0.
        INCLUDE STRUCTURE tline.
DATAEND OF it_pdf_output.


CONSTANTSc_dev LIKE  sy-sysid VALUE 'DEV',
           c_no(1)     TYPE c   VALUE ' ',
           c_device(4TYPE c   VALUE 'LOCL'.


START-OF-SELECTION.

do 10 times.
  WRITE 'Hello World'.
enddo  .
  new-page.
  commit work.
  new-page print off.


  IF sy-batch EQ 'X'.
    PERFORM get_job_details.
    PERFORM obtain_spool_id.
    PERFORM convert_spool_to_pdf.
    PERFORM process_email.

    if p_delspl EQ 'X'.
      PERFORM delete_spool.
    endif.

    IF sy-sysid c_dev.
      wait up to seconds.
      SUBMIT rsconn01 WITH mode   'INT'
                      WITH output 'X'
                      AND RETURN.
    ENDIF.
  ELSE.
    SKIP.
    WRITE:'Program must be executed in background in-order for spool',
            'request to be created.'.
  ENDIF.



*------------------------------------------------------------------------------------
*      FORM obtain_spool_id
*------------------------------------------------------------------------------------
FORM obtain_spool_id.
  CHECK NOT gd_jobname IS INITIAL ).
  CHECK NOT gd_jobcount IS INITIAL ).
  SELECT FROM  tbtcp
                 INTO TABLE it_tbtcp
                 WHERE      jobname     gd_jobname
                 AND        jobcount    gd_jobcount
                 AND        stepcount   gd_stepcount
                 AND        listident   <> '0000000000'
                 ORDER BY   jobname
                            jobcount
                            stepcount.

  READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
  IF sy-subrc 0.
    message s004(zddwith gd_spool_nr.
    gd_spool_nr wa_tbtcp-listident.
    MESSAGE s004(zddWITH gd_spool_nr.
  ELSE.
    MESSAGE s005(zdd).
  ENDIF.
ENDFORM.

*------------------------------------------------------------------------------------
*      FORM get_job_details
*------------------------------------------------------------------------------------
FORM get_job_details.
*Get current job details

  CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
       IMPORTING
            eventid                 gd_eventid
            eventparm               gd_eventparm
            external_program_active gd_external_program_active
            jobcount                gd_jobcount
            jobname                 gd_jobname
            stepcount               gd_stepcount
       EXCEPTIONS
            no_runtime_info         1
            OTHERS                  2.
ENDFORM.

*------------------------------------------------------------------------------------
*      FORM convert_spool_to_pdf
*------------------------------------------------------------------------------------
FORM convert_spool_to_pdf.

  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
       EXPORTING
            src_spoolid              gd_spool_nr
            no_dialog                c_no
            dst_device               c_device
       IMPORTING
            pdf_bytecount            gd_bytecount
       TABLES
            pdf                      it_pdf_output
       EXCEPTIONS
            err_no_abap_spooljob     1
            err_no_spooljob          2
            err_no_permission        3
            err_conv_not_possible    4
            err_bad_destdevice       5
            user_cancelled           6
            err_spoolerror           7
            err_temseerror           8
            err_btcjob_open_failed   9
            err_btcjob_submit_failed 10
            err_btcjob_close_failed  11

            OTHERS                   12.



  CHECK sy-subrc 0.

*Transfer the 132-long strings to 255-long strings

  LOOP AT it_pdf_output.
    TRANSLATE it_pdf_output USING ' ~'.
    CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
  ENDLOOP.

  TRANSLATE gd_buffer USING '~ '.

  DO.
    it_mess_att gd_buffer.
    APPEND it_mess_att.
    SHIFT gd_buffer LEFT BY 255 PLACES.
    IF gd_buffer IS INITIAL.
      EXIT.
    ENDIF.
  ENDDO.
ENDFORM.

*------------------------------------------------------------------------------------
*      FORM process_email
*------------------------------------------------------------------------------------
FORM process_email.
  DESCRIBE TABLE it_mess_att LINES gd_recsize.
  CHECK gd_recsize > 0.
  PERFORM send_email USING p_email1.
* perform send_email using p_email2.
ENDFORM.

*------------------------------------------------------------------------------------
*      FORM send_email
*------------------------------------------------------------------------------------
* -->  p_email
*------------------------------------------------------------------------------------

FORM send_email USING p_email.
  CHECK NOT p_email IS INITIAL ).
  REFRESH it_mess_bod.

*Default subject matter
  gd_subject         'Subject'.
  gd_attachment_desc 'Attachname'.
 CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.

  it_mess_bod        'Message Body text, line 1'.
  APPEND it_mess_bod.
  it_mess_bod        'Message Body text, line 2...'.
  APPEND it_mess_bod.


*If no sender specified - default blank
  IF p_sender EQ space.
    gd_sender_type  space.
  ELSE.
    gd_sender_type  'INT'.
  ENDIF.

*Send file by email as .xls speadsheet
  PERFORM send_file_as_email_attachment
                               tables it_mess_bod
                                      it_mess_att
                                using p_email
                                      'Example .xls documnet attachment'
                                      'PDF'
                                      gd_attachment_name
                                      gd_attachment_desc
                                      p_sender
                                      gd_sender_type
                             changing gd_error
                                      gd_reciever.
ENDFORM.


*------------------------------------------------------------------------------------
*      FORM delete_spool
*------------------------------------------------------------------------------------
FORM delete_spool.
  DATAld_spool_nr TYPE tsp01_sp0r-rqid_char.

  ld_spool_nr gd_spool_nr.

  CHECK p_delspl <> c_no.
  CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
       EXPORTING
            spoolid ld_spool_nr.
ENDFORM.

*&------------------------------------------------------------------------------------
*&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
*&------------------------------------------------------------------------------------
*      Send email
*------------------------------------------------------------------------------------
FORM send_file_as_email_attachment tables it_message
                                          it_attach
                                    using p_email
                                          p_mtitle
                                          p_format
                                          p_filename
                                          p_attdescription
                                          p_sender_address
                                          p_sender_addres_type
                                 changing p_error
                                          p_reciever.


  DATAld_error    TYPE sy-subrc,
        ld_reciever TYPE sy-subrc,
        ld_mtitle LIKE sodocchgi1-obj_descr,
        ld_email LIKE  somlreci1-receiver,
        ld_format TYPE  so_obj_tp ,
        ld_attdescription TYPE  so_obj_nam ,
        ld_attfilename TYPE  so_obj_des ,
        ld_sender_address LIKE  soextreci1-receiver,
        ld_sender_address_type LIKE  soextreci1-adr_typ,
        ld_receiver LIKE  sy-subrc.

data:   t_packing_list like sopcklsti1 occurs with header line,
        t_contents like solisti1 occurs with header line,
        t_receivers like somlreci1 occurs with header line,
        t_attachment like solisti1 occurs with header line,
        t_object_header like solisti1 occurs with header line,
        w_cnt type i,
        w_sent_all(1type c,
        w_doc_data like sodocchgi1.

  ld_email   p_email.
  ld_mtitle p_mtitle.
  ld_format              p_format.
  ld_attdescription      p_attdescription.
  ld_attfilename         p_filename.
  ld_sender_address      p_sender_address.
  ld_sender_address_type p_sender_addres_type.


*Fill the document data.
  w_doc_data-doc_size 1.


*Populate the subject/generic message attributes
  w_doc_data-obj_langu sy-langu.
  w_doc_data-obj_name  'SAPRPT'.
  w_doc_data-obj_descr ld_mtitle .
  w_doc_data-sensitivty 'F'.

*Fill the document data and get size of attachment
  CLEAR w_doc_data.
  READ TABLE it_attach INDEX w_cnt.
  w_doc_data-doc_size =
     w_cnt 255 STRLENit_attach ).
  w_doc_data-obj_langu  sy-langu.
  w_doc_data-obj_name   'SAPRPT'.
  w_doc_data-obj_descr  ld_mtitle.
  w_doc_data-sensitivty 'F'.
  CLEAR t_attachment.
  REFRESH t_attachment.
  t_attachment[] it_attach[].


*Describe the body of the message
  CLEAR t_packing_list.
  REFRESH t_packing_list.
  t_packing_list-transf_bin space.
  t_packing_list-head_start 1.
  t_packing_list-head_num 0.
  t_packing_list-body_start 1.
  DESCRIBE TABLE it_message LINES t_packing_list-body_num.
  t_packing_list-doc_type 'RAW'.
  APPEND t_packing_list.

*Create attachment notification
  t_packing_list-transf_bin 'X'.
  t_packing_list-head_start 1.
  t_packing_list-head_num   1.
  t_packing_list-body_start 1.

  DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
  t_packing_list-doc_type   =  ld_format.
  t_packing_list-obj_descr  =  ld_attdescription.
  t_packing_list-obj_name   =  ld_attfilename.
  t_packing_list-doc_size   =  t_packing_list-body_num * 255.
  APPEND t_packing_list.

*Add the recipients email address

  CLEAR t_receivers.
  REFRESH t_receivers.
  t_receivers-receiver ld_email.
  t_receivers-rec_type 'U'.
  t_receivers-com_type 'INT'.
  t_receivers-notif_del 'X'.
  t_receivers-notif_ndel 'X'.
  APPEND t_receivers.

  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
       EXPORTING
            document_data              w_doc_data
            put_in_outbox              'X'
            sender_address             ld_sender_address
            sender_address_type        ld_sender_address_type
            commit_work                'X'
       IMPORTING
            sent_to_all                w_sent_all
       TABLES
            packing_list               t_packing_list
            contents_bin               t_attachment
            contents_txt               it_message
            receivers                  t_receivers
       EXCEPTIONS
            too_many_receivers         1
            document_not_sent          2
            document_type_not_exist    3
            operation_no_authorization 4
            parameter_error            5
            x_error                    6
            enqueue_error              7
            OTHERS                     8.


*Populate zerror return code
  ld_error sy-subrc.


*Populate zreceiver return code
  LOOP AT t_receivers.
    ld_receiver t_receivers-retrn_code.
  ENDLOOP.
ENDFORM.
Read On 0 comments

message

Labels

NuffNang

Search google

Blog Archive

My Blog List

Twitter

Message

Followers