Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

regarding ALV interactive

Former Member
0 Likes
985

Hi,

I have requirement like below,

I will get an ALV out put in that i will get the customer and his details in the output.

When i click on that customer it need to take me to FB03 with that customer.

Please let me know w need to do for this..

Please help required Urgent..

thanks,

Suresh.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
933
FORM DISPLAY_DATA.

  LF_REPID = SY-REPID.
 
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


   EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
     I_CALLBACK_PROGRAM                = LF_REPID
     I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
    I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
     I_CALLBACK_TOP_OF_PAGE            = 'TOP'
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
     I_GRID_TITLE                      = ' Report '
*   I_GRID_SETTINGS                   =
     IS_LAYOUT                         = LS_LAYOUT
     IT_FIELDCAT                       = IT_FCAT[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
     I_SAVE                            = 'X'
     IS_VARIANT                        = ALV_VARIANT
     IT_EVENTS                         = IT_EVENTS
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
    TABLES
      T_OUTTAB                          = LT_FINAL
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
            .
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.                    "display_data



FORM USER_COMMAND
  USING UCOMM LIKE SY-UCOMM
  SELFIELD TYPE SLIS_SELFIELD.

  DATA : REF1 TYPE REF TO CL_GUI_ALV_GRID.
  DATA : OPT TYPE CTU_PARAMS.

  CASE UCOMM.

    WHEN '&BACK'.
      LEAVE TO SCREEN 0.
    WHEN  '&EXIT'.
      LEAVE TO SCREEN 0.
    WHEN '&CANC'.
      LEAVE TO SCREEN 0.
    WHEN '&IC1'.
      READ TABLE LT_FINAL INTO LW_FINAL  INDEX SELFIELD-TABINDEX .
      IF SY-SUBRC EQ 0.
    
         SET PARAMETER ID 'BLN' FIELD LW_FINAL-BELNR.
      
        SET PARAMETER ID 'BUK' FIELD LW_FINAL-BUKRS.
        SET PARAMETER ID 'GJR' FIELD LW_FINAL-GJAHR.

        CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
      ENDIF.

      ENDCASE.
endform.
9 REPLIES 9
Read only

Former Member
0 Likes
933

Check the following :



REPORT zdemoab.

TYPE-POOLS: slis.
TABLES: mara.

TYPES: BEGIN OF t_itab,
       matnr TYPE mara-matnr,
       mtart TYPE mara-mtart,
       END OF t_itab.

DATA: itab TYPE TABLE OF t_itab,
      wa_itab like line of itab.

DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
      wa_fieldcat LIKE LINE OF i_fieldcat,
      i_layout TYPE slis_layout_alv,
      g_repid TYPE sy-repid.


SELECT matnr mtart INTO TABLE itab FROM mara UP TO 10 ROWS.


CLEAR: wa_fieldcat.
wa_fieldcat-col_pos = 0.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-tabname = 'MARA'.
wa_fieldcat-hotspot = 'X'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR: wa_fieldcat.

wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'MTART'.
wa_fieldcat-tabname = 'MARA'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR: wa_fieldcat.


i_layout-colwidth_optimize = 'X'.
i_layout-hotspot_fieldname = 'MATNR'.

g_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
   i_callback_program                = g_repid
   I_CALLBACK_USER_COMMAND           = 'USER_COMMAND '
   is_layout                         = i_layout
   it_fieldcat                       = i_fieldcat[]
  TABLES
    t_outtab                          = itab
 EXCEPTIONS
   program_error                     = 1
   OTHERS                            = 2
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

FORM user_command USING r_ucomm LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.

*   Check field clicked on within ALVgrid report
    IF rs_selfield-fieldname = 'MATNR'.
*     To pass the material no in ME22 transaction
      READ TABLE itab INTO wa_itab INDEX rs_selfield-tabindex.
*     Set parameter ID for transaction screen field
      SET PARAMETER ID 'BES' FIELD wa_itab-matnr.
*     Sxecute transaction ME23N, and skip initial data entry screen
      CALL TRANSACTION 'MM03'.
*
    ENDIF.
ENDFORM.

Read only

Former Member
0 Likes
933

Hi,

After displaying output first hold that value for that use get cursor command.

after call transaction 'FB03' skip first screen.

it will goes to control to fb03.

use this logic.

Read only

Former Member
0 Likes
933

Hi suresh,

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

...

I_CALLBACK_PROGRAM = W_REPID

I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

...

you can choose double-click function code with

parameter is_layout-F2code

FORM USER_COMMAND USING P_UCOMM TYPE SY-UCOMM

P_SELFLD TYPE SLIS_SELFIELD.

case p_ucomm.

you can use the value of the field clicked on or read the internal table record

look at description of parameter sli_selfield

when <is_ layout-F2code >.

set parameter id 'AUN' field p_selfld-value.

call transaction 'FB03' and skip first screen.

endcase.

[/code]

You can even write a CASE based on fieldname clicked on.

codeCASE p_selfld.

WHEN <Field1>.

...

ENDCASE.

[/code]

Regards,

Mahi.

Read only

Former Member
0 Likes
933

Hi,

Go through this link

http://www.saptechnical.com/Tutorials/ALV/ALVMainPage.htm

Regards

Bikas

Read only

Former Member
0 Likes
934
FORM DISPLAY_DATA.

  LF_REPID = SY-REPID.
 
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


   EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
     I_CALLBACK_PROGRAM                = LF_REPID
     I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
    I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
     I_CALLBACK_TOP_OF_PAGE            = 'TOP'
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
     I_GRID_TITLE                      = ' Report '
*   I_GRID_SETTINGS                   =
     IS_LAYOUT                         = LS_LAYOUT
     IT_FIELDCAT                       = IT_FCAT[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
     I_SAVE                            = 'X'
     IS_VARIANT                        = ALV_VARIANT
     IT_EVENTS                         = IT_EVENTS
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
    TABLES
      T_OUTTAB                          = LT_FINAL
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
            .
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.                    "display_data



FORM USER_COMMAND
  USING UCOMM LIKE SY-UCOMM
  SELFIELD TYPE SLIS_SELFIELD.

  DATA : REF1 TYPE REF TO CL_GUI_ALV_GRID.
  DATA : OPT TYPE CTU_PARAMS.

  CASE UCOMM.

    WHEN '&BACK'.
      LEAVE TO SCREEN 0.
    WHEN  '&EXIT'.
      LEAVE TO SCREEN 0.
    WHEN '&CANC'.
      LEAVE TO SCREEN 0.
    WHEN '&IC1'.
      READ TABLE LT_FINAL INTO LW_FINAL  INDEX SELFIELD-TABINDEX .
      IF SY-SUBRC EQ 0.
    
         SET PARAMETER ID 'BLN' FIELD LW_FINAL-BELNR.
      
        SET PARAMETER ID 'BUK' FIELD LW_FINAL-BUKRS.
        SET PARAMETER ID 'GJR' FIELD LW_FINAL-GJAHR.

        CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
      ENDIF.

      ENDCASE.
endform.
Read only

Former Member
0 Likes
933

Hi Suresh,

Refer to the following code:

FORM f_user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

      • Check field clicked on within ALVgrid report

IF rs_selfield-fieldname = 'BELNR'.

  • To pass the document no in FB03 transaction

READ TABLE int_final INDEX rs_selfield-tabindex.

  • Set parameter ID for transaction screen field

SET PARAMETER ID 'BLN' FIELD int_final-belnr.

SET PARAMETER ID 'BUK' FIELD int_final-bukrs.

SET PARAMETER ID 'GJR' FIELD int_final-gjahr.

  • Execute transaction FB03, and skip initial data entry screen

CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

ENDIF.

ENDFORM. " f_user_command

Hope this helps.

Reward if helpful.

Regards,

Sipra

Read only

Former Member
0 Likes
933

Hi suresh....

I have done this before...please chec d code and am clear it will help you for sure,,,and reward points....

Vijay

REPORT zglaccount_final NO STANDARD PAGE HEADING LINE-SIZE 168.

&----


*& Tables

&----


TABLES: bsis, bseg, bkpf,

skat, kna1, lfa1, bsas.

&----


*& Variables

&----


DATA: gd_repid LIKE sy-repid,

gd_open_bal TYPE bseg-wrbtr,

gd_cml_bal TYPE bseg-wrbtr,

gd_tot_crd TYPE bseg-wrbtr,

gd_tot_dbt TYPE bseg-wrbtr,

gd_grd_opn TYPE bseg-wrbtr,

gd_grd_cls TYPE bseg-wrbtr,

gd_flag TYPE c,

gd_cur_fld(14) TYPE c,

gd_cur_val TYPE bseg-belnr.

&----


*& Types

&----


TYPES:BEGIN OF it_output,

budat LIKE bsis-budat,

belnr LIKE bseg-belnr,

blart LIKE bsis-blart,

hkont LIKE bseg-hkont,

name1 LIKE skat-txt20,

debit LIKE bseg-wrbtr,

credit LIKE bseg-wrbtr,

prctr LIKE bsis-prctr,

cmbal LIKE bseg-wrbtr,

sgtxt LIKE bseg-sgtxt,

buzei LIKE bseg-buzei, " BUZEI Added

END OF it_output.

  • work area for opening balance

DATA: BEGIN OF wa_ob,

debit LIKE bseg-wrbtr,

credit LIKE bseg-wrbtr,

END OF wa_ob.

&----


*& Internal tables

&----


DATA:it_final TYPE STANDARD TABLE OF it_output WITH HEADER LINE.

DATA:it_bsis TYPE STANDARD TABLE OF bsis WITH HEADER LINE.

DATA:it_bsis_ue TYPE STANDARD TABLE OF bsis WITH HEADER LINE.

DATA:it_store TYPE STANDARD TABLE OF bsis WITH HEADER LINE.

DATA:it_bseg TYPE STANDARD TABLE OF bseg WITH HEADER LINE.

DATA:it_bseg_tmp TYPE STANDARD TABLE OF bseg WITH HEADER LINE.

DATA:it_skat TYPE STANDARD TABLE OF skat WITH HEADER LINE.

DATA:it_lfa1 TYPE STANDARD TABLE OF lfa1 WITH HEADER LINE.

DATA:it_kna1 TYPE STANDARD TABLE OF kna1 WITH HEADER LINE.

DATA:wa_bsis LIKE LINE OF it_bsis.

DATA:it_bkpf LIKE STANDARD TABLE OF bkpf WITH HEADER LINE.

&----


*& Selection Screen Parameters

&----


SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.

SELECTION-SCREEN SKIP.

SELECT-OPTIONS: s_hkont FOR bseg-hkont NO INTERVALS OBLIGATORY. " GL Account

PARAMETERS : p_bukrs TYPE bseg-bukrs OBLIGATORY. " CCode

SELECT-OPTIONS: s_budat FOR bkpf-budat NO-EXTENSION OBLIGATORY. " Posting date

SELECTION-SCREEN SKIP.

SELECTION-SCREEN END OF BLOCK a01.

&----


*& At selection screen

&----


IF s_hkont[] IS NOT INITIAL.

*-- Restrict GL Account selection from 225000 to 265000

LOOP AT s_hkont.

IF s_hkont-low NOT BETWEEN '0000225000' AND '0000265000'.

MESSAGE 'Entered GL Account is not a Cash/Bank account' TYPE 'E'.

ENDIF.

ENDLOOP.

ENDIF.

&----


*& Start of main program

&----


START-OF-SELECTION.

LOOP AT s_hkont.

*-- Get opening balance for the GL Account

PERFORM get_opening_balance.

CLEAR: it_bsis, it_bsis_ue, it_bseg, it_skat, it_kna1, it_lfa1, it_final.

REFRESH: it_bsis, it_bsis_ue, it_bseg, it_skat, it_kna1, it_lfa1, it_final.

CLEAR: wa_ob, gd_cml_bal, gd_tot_crd, gd_tot_dbt.

*Accounting: Secondary Index for G/L Accounts

  • For document type <> UE

SELECT bukrs hkont gjahr belnr budat blart shkzg

INTO CORRESPONDING FIELDS OF TABLE it_bsis

FROM bsis

WHERE hkont = s_hkont-low

AND bukrs = p_bukrs

AND budat IN s_budat

AND blart <> 'UE'.

  • selecting cleared items from BSAS

SELECT bukrs hkont gjahr belnr budat blart shkzg

APPENDING CORRESPONDING FIELDS OF TABLE it_bsis

FROM bsas

WHERE hkont = s_hkont-low

AND bukrs = p_bukrs

AND budat IN s_budat

AND blart <> 'UE'.

IF NOT it_bsis[] IS INITIAL.

SORT it_bsis BY budat belnr. "BUZEI added

APPEND LINES OF it_bsis TO it_store.

  • Accounting Document Segment

*--Get opposite line items

SELECT * FROM bseg INTO TABLE it_bseg FOR ALL ENTRIES IN it_bsis

WHERE bukrs = it_bsis-bukrs

AND belnr = it_bsis-belnr

AND gjahr = it_bsis-gjahr

AND hkont <> it_bsis-hkont.

ENDIF.

  • For document type = UE

SELECT bukrs hkont gjahr belnr budat blart shkzg

INTO CORRESPONDING FIELDS OF TABLE it_bsis_ue

FROM bsis

WHERE hkont = s_hkont-low

AND bukrs = p_bukrs

AND budat IN s_budat

AND blart = 'UE'.

  • selecting cleared items from BSAS

SELECT bukrs hkont gjahr belnr budat blart shkzg

APPENDING CORRESPONDING FIELDS OF TABLE it_bsis_ue

FROM bsas

WHERE hkont = s_hkont-low

AND bukrs = p_bukrs

AND budat IN s_budat

AND blart = 'UE'.

IF NOT it_bsis_ue[] IS INITIAL.

SORT it_bsis_ue BY budat belnr. "BUZEI added

  • Accounting Document Segment

*-- Get line items

SELECT * FROM bseg APPENDING TABLE it_bseg

FOR ALL ENTRIES IN it_bsis_ue

WHERE bukrs = it_bsis_ue-bukrs

AND belnr = it_bsis_ue-belnr

AND gjahr = it_bsis_ue-gjahr

AND hkont = it_bsis_ue-hkont.

IF sy-subrc = 0.

APPEND LINES OF it_bsis_ue TO it_store.

APPEND LINES OF it_bsis_ue TO it_bsis.

ENDIF.

ENDIF.

*G/L Account Master Record (Chart of Accounts: Description)

IF NOT it_bseg[] IS INITIAL.

SELECT * FROM skat INTO CORRESPONDING FIELDS OF TABLE it_skat

FOR ALL ENTRIES IN it_bseg

WHERE saknr EQ it_bseg-hkont AND spras EQ 'EN' AND

ktopl EQ '9999'.

*General Data in Customer Master

SELECT * FROM kna1 INTO CORRESPONDING FIELDS OF TABLE it_kna1

FOR ALL ENTRIES IN it_bseg

WHERE kunnr EQ it_bseg-kunnr AND spras EQ 'EN'.

*Vendor Master (General Section)

SELECT * FROM lfa1 INTO CORRESPONDING FIELDS OF TABLE it_lfa1

FOR ALL ENTRIES IN it_bseg

WHERE lifnr EQ it_bseg-lifnr AND spras EQ 'EN'.

ENDIF.

  • transfer opening balance to calculate cumulative balance, total credit & debit

gd_cml_bal = gd_open_bal.

IF gd_open_bal < 0.

gd_tot_crd = gd_open_bal.

ELSEIF gd_open_bal > 0.

gd_tot_dbt = gd_open_bal.

ENDIF.

  • Sort it_bseg by posting date

SORT it_bsis BY budat belnr.

it_bseg_tmp[] = it_bseg[].

CLEAR it_bseg. REFRESH it_bseg.

LOOP AT it_bsis.

LOOP AT it_bseg_tmp WHERE bukrs = it_bsis-bukrs

AND belnr = it_bsis-belnr

AND gjahr = it_bsis-gjahr.

it_bseg = it_bseg_tmp.

APPEND it_bseg.

CLEAR it_bseg.

ENDLOOP.

ENDLOOP.

  • G/L Account Master data

LOOP AT it_bseg.

READ TABLE it_bsis WITH KEY bukrs = it_bseg-bukrs

belnr = it_bseg-belnr.

IF sy-subrc = 0.

it_final-budat = it_bsis-budat.

it_final-blart = it_bsis-blart.

IF it_bseg-shkzg = 'S'.

IF it_bsis-blart <> 'UE'.

it_final-credit = it_bseg-wrbtr.

gd_cml_bal = gd_cml_bal + ( it_bseg-wrbtr * -1 ).

it_final-cmbal = gd_cml_bal.

gd_tot_crd = gd_tot_crd + ( it_bseg-wrbtr * -1 ).

ELSEIF it_bsis-blart = 'UE'.

it_final-debit = it_bseg-wrbtr.

gd_cml_bal = gd_cml_bal + it_bseg-wrbtr.

it_final-cmbal = gd_cml_bal.

gd_tot_dbt = gd_tot_dbt + it_bseg-wrbtr.

ENDIF.

ENDIF.

IF it_bseg-shkzg = 'H'.

IF it_bsis-blart <> 'UE'.

it_final-debit = it_bseg-wrbtr.

gd_cml_bal = gd_cml_bal + it_bseg-wrbtr.

it_final-cmbal = gd_cml_bal.

gd_tot_dbt = gd_tot_dbt + it_bseg-wrbtr.

ELSEIF it_bsis-blart = 'UE'.

it_final-credit = it_bseg-wrbtr.

gd_cml_bal = gd_cml_bal + ( it_bseg-wrbtr * -1 ).

it_final-cmbal = gd_cml_bal.

gd_tot_crd = gd_tot_crd + ( it_bseg-wrbtr * -1 ).

ENDIF.

ENDIF.

it_final-belnr = it_bseg-belnr.

*G/L Account

IF it_bseg-koart = 'S'.

it_final-hkont = it_bseg-hkont.

it_final-prctr = it_bseg-prctr.

READ TABLE it_skat WITH KEY saknr = it_bseg-hkont

spras = 'EN'.

IF sy-subrc = 0.

it_final-name1 = it_skat-txt20.

ENDIF.

ENDIF.

  • Customer

IF it_bseg-koart = 'D'.

it_final-hkont = it_bseg-kunnr.

it_final-prctr = it_bseg-prctr.

READ TABLE it_kna1 WITH KEY kunnr = it_bseg-kunnr

spras = 'EN'.

IF sy-subrc = 0.

it_final-name1 = it_kna1-name1.

ENDIF.

ENDIF.

  • Vendor

IF it_bseg-koart = 'K'.

it_final-hkont = it_bseg-lifnr.

it_final-prctr = it_bseg-prctr.

READ TABLE it_lfa1 WITH KEY lifnr = it_bseg-lifnr

spras = 'EN'.

IF sy-subrc = 0.

it_final-name1 = it_lfa1-name1.

ENDIF.

ENDIF.

it_final-sgtxt = it_bseg-sgtxt.

ENDIF.

APPEND it_final.

CLEAR it_final.

ENDLOOP.

PERFORM display_data.

ENDLOOP. " s_hkont

PERFORM display_grand_totals.

&----


*& At line selection: to execute FB03 when the user clicks on a document

&----


AT LINE-SELECTION.

CLEAR: gd_cur_fld, gd_cur_val.

GET CURSOR FIELD gd_cur_fld

VALUE gd_cur_val.

IF gd_cur_fld = 'IT_FINAL-BELNR'.

*-- To pass the Document no in FB03 transaction

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = gd_cur_val

IMPORTING

output = gd_cur_val.

READ TABLE it_store INTO wa_bsis WITH KEY belnr = gd_cur_val

BINARY SEARCH.

IF sy-subrc = 0.

*-- Set parameter ID for transaction screen field

SET PARAMETER ID 'BLN' FIELD wa_bsis-belnr.

SET PARAMETER ID 'BUK' FIELD wa_bsis-bukrs.

SET PARAMETER ID 'GJR' FIELD wa_bsis-gjahr.

*-- Execute transaction FB03, and skip initial data entry screen

CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

ENDIF.

ENDIF.

END-OF-SELECTION.

&----


*& Form get_opening_balance

&----


  • Get the opening balance for the day

----


FORM get_opening_balance .

CLEAR: it_bsis, it_bsis_ue, it_bseg, it_skat, it_kna1, it_lfa1, wa_ob.

REFRESH: it_bsis, it_bsis_ue, it_bseg, it_skat, it_kna1, it_lfa1.

  • Accounting: Secondary Index for G/L Accounts

  • For document type <> 'UE'

SELECT bukrs hkont gjahr belnr budat blart shkzg

INTO CORRESPONDING FIELDS OF TABLE it_bsis

FROM bsis

WHERE hkont = s_hkont-low

AND bukrs = p_bukrs

AND budat < s_budat-low

AND blart <> 'UE'.

  • selecting cleared items from BSAS

SELECT bukrs hkont gjahr belnr budat blart shkzg

APPENDING CORRESPONDING FIELDS OF TABLE it_bsis

FROM bsas

WHERE hkont = s_hkont-low

AND bukrs = p_bukrs

AND budat < s_budat-low

AND blart <> 'UE'.

IF NOT it_bsis[] IS INITIAL.

SORT it_bsis BY budat belnr. "BUZEI added

  • Accounting Document Segment

SELECT * FROM bseg INTO TABLE it_bseg FOR ALL ENTRIES IN it_bsis

WHERE bukrs = it_bsis-bukrs

AND belnr = it_bsis-belnr

AND gjahr = it_bsis-gjahr

AND hkont <> it_bsis-hkont.

ENDIF.

  • For document type = UE

SELECT bukrs hkont gjahr belnr budat blart shkzg

INTO CORRESPONDING FIELDS OF TABLE it_bsis_ue

FROM bsis

WHERE hkont = s_hkont-low

AND bukrs = p_bukrs

AND budat < s_budat-low

AND blart = 'UE'.

  • selecting cleared items from BSAS

SELECT bukrs hkont gjahr belnr budat blart shkzg

APPENDING CORRESPONDING FIELDS OF TABLE it_bsis_ue

FROM bsas

WHERE hkont = s_hkont-low

AND bukrs = p_bukrs

AND budat < s_budat-low

AND blart = 'UE'.

IF NOT it_bsis_ue[] IS INITIAL.

SORT it_bsis_ue BY budat belnr. "BUZEI added

  • Accounting Document Segment

SELECT * FROM bseg APPENDING TABLE it_bseg

FOR ALL ENTRIES IN it_bsis_ue

WHERE bukrs = it_bsis_ue-bukrs

AND belnr = it_bsis_ue-belnr

AND gjahr = it_bsis_ue-gjahr

AND hkont = it_bsis_ue-hkont.

IF sy-subrc = 0.

APPEND LINES OF it_bsis_ue TO it_bsis.

ENDIF.

ENDIF.

  • G/L Account Master data

LOOP AT it_bseg.

READ TABLE it_bsis WITH KEY bukrs = it_bseg-bukrs

belnr = it_bseg-belnr.

IF sy-subrc = 0.

IF it_bseg-shkzg = 'S'.

IF it_bsis-blart <> 'UE'.

wa_ob-credit = wa_ob-credit + it_bseg-wrbtr.

ELSEIF it_bsis-blart = 'UE'.

wa_ob-debit = wa_ob-debit + it_bseg-wrbtr.

ENDIF.

ENDIF.

IF it_bseg-shkzg = 'H'.

IF it_bsis-blart <> 'UE'.

wa_ob-debit = wa_ob-debit + it_bseg-wrbtr.

ELSEIF it_bsis-blart = 'UE'.

wa_ob-credit = wa_ob-credit + it_bseg-wrbtr.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

gd_open_bal = wa_ob-debit - wa_ob-credit. " Opening balance

ENDFORM. " get_opening_balance

&----


*& Form display_data

&----


  • To display data

----


FORM display_data .

*--Display top-of-list

PERFORM display_top_of_list.

*--display field heads

PERFORM display_field_heads.

*--display the info

PERFORM display_list.

*--write end-of-list

PERFORM display_end_of_list.

ENDFORM. " display_data

&----


*& Form display_top_of_list

&----


  • Display top-of-list

----


FORM display_top_of_list.

DATA: v_txt50 TYPE skat-txt50,

v_txt1(16) TYPE c,

v_adrnr TYPE t001-adrnr.

CLEAR: v_txt50.

*G/L Account

SELECT txt50 FROM skat

INTO v_txt50

WHERE ktopl = '9999'

AND spras EQ 'EN'

AND saknr = s_hkont-low.

ENDSELECT.

WRITE:/50 'G/L Account:', s_hkont-low, v_txt50.

*Company Code

CLEAR: v_txt50, v_adrnr.

SELECT SINGLE adrnr FROM t001

INTO v_adrnr

WHERE bukrs = p_bukrs

AND spras = 'EN'.

IF sy-subrc = 0.

SELECT SINGLE name1 FROM adrc

INTO v_txt50

WHERE addrnumber = v_adrnr.

ENDIF.

WRITE:/50 'Company Code:', p_bukrs, v_txt50.

*Posting Dates

WRITE:/50 'From:', s_budat-low, 'To', s_budat-high.

  • Opening Balance

FORMAT RESET.

FORMAT COLOR 3.

ULINE (168).

WRITE:/ sy-vline.

WRITE AT 2 'Opening Balance:'.

IF gd_open_bal <= 0.

MOVE gd_open_bal TO v_txt1.

v_txt1 = v_txt1 * -1. " donot display sign

WRITE AT 90 v_txt1.

ELSE.

MOVE gd_open_bal TO v_txt1.

WRITE AT 74 v_txt1.

ENDIF.

WRITE AT 168 sy-vline.

FORMAT RESET.

  • Overall opening balance

gd_grd_opn = gd_grd_opn + gd_open_bal.

ENDFORM. " display_top_of_list

&----


*& Form display_field_heads

&----


  • Display field heads

----


FORM display_field_heads.

ULINE (168).

FORMAT COLOR 1.

WRITE:/1 sy-vline,

(12) 'Posting Date'(002),

sy-vline,

(7) 'Doc No.'(003),

sy-vline,

(2) 'DT'(004),

sy-vline,

(7) 'Acc No.'(005),

sy-vline,

(22) 'Description'(006),

sy-vline,

(6) 'PRCTR'(007),

sy-vline,

(13) ' Debit'(008),

sy-vline,

(13) ' Credit'(009),

sy-vline,

(13) ' Cml Balance'(010),

sy-vline,

(42) 'Narration'(011),

sy-vline.

ULINE (168).

ENDFORM. " display_field_heads

&----


*& Form display_list

&----


  • Display info

----


FORM display_list.

DATA: lv_crd(13) TYPE c,

lv_dbt(13) TYPE c,

lv_cml(13) TYPE c.

FORMAT RESET.

FORMAT COLOR 2.

LOOP AT it_final.

CLEAR: lv_crd, lv_dbt, lv_cml.

IF NOT it_final-debit IS INITIAL.

lv_dbt = it_final-debit. " move into a char variable to remove leading zeros

ENDIF.

IF NOT it_final-credit IS INITIAL.

lv_crd = it_final-credit.

ENDIF.

IF NOT it_final-cmbal IS INITIAL.

lv_cml = it_final-cmbal.

ENDIF.

WRITE:/1 sy-vline,

(12) it_final-budat,

sy-vline.

FORMAT HOTSPOT ON.

WRITE: (7) it_final-belnr.

FORMAT HOTSPOT OFF.

WRITE: sy-vline,

(2) it_final-blart,

sy-vline,

(7) it_final-hkont,

sy-vline,

(22) it_final-name1,

sy-vline,

(6) it_final-prctr UNDER text-007,

sy-vline,

(13) lv_dbt UNDER text-008,

sy-vline,

(13) lv_crd UNDER text-009,

sy-vline,

(13) lv_cml UNDER text-010,

sy-vline,

(42) it_final-sgtxt,

sy-vline.

HIDE it_final-belnr.

ULINE (168).

ENDLOOP.

ULINE (168).

ENDFORM. " display_list

&----


*& Form display_end_of_list

&----


  • Display end-of-list

----


FORM display_end_of_list.

DATA: v_text(16) TYPE c,

v_cls TYPE bseg-wrbtr,

v_crd TYPE bseg-wrbtr.

FORMAT RESET.

FORMAT COLOR 3.

  • ULINE (168).

IF NOT gd_tot_dbt IS INITIAL.

MOVE gd_tot_dbt TO v_text.

ENDIF.

WRITE:/ sy-vline.

WRITE AT 74 v_text.

CLEAR v_text.

IF NOT gd_tot_crd IS INITIAL.

MOVE gd_tot_crd TO v_crd.

v_crd = v_crd * -1.

MOVE v_crd TO v_text.

ENDIF.

WRITE AT 90 v_text.

WRITE AT 168 sy-vline.

FORMAT COLOR 4.

v_cls = gd_tot_dbt + gd_tot_crd.

WRITE / sy-vline.

WRITE AT 2 'Closing Balance'.

IF v_cls <= 0.

v_cls = v_cls * -1. " Donot display sign

ENDIF.

MOVE v_cls TO v_text.

IF v_crd < gd_tot_dbt.

WRITE AT 90 v_text.

ELSE.

WRITE AT 90 v_text.

ENDIF.

WRITE AT 168 sy-vline.

FORMAT RESET.

FORMAT COLOR 3.

CLEAR v_text.

IF gd_tot_dbt <= v_crd.

MOVE v_crd TO v_text.

ELSE.

MOVE gd_tot_dbt TO v_text.

ENDIF.

ULINE (168).

WRITE / sy-vline.

WRITE AT 2 'Total'.

WRITE AT 90 v_text.

WRITE AT 74 v_text.

WRITE AT 168 sy-vline.

ULINE (168).

FORMAT RESET.

SKIP.

*--Overall closing

gd_grd_cls = gd_grd_cls + gd_tot_dbt + gd_tot_crd.

ENDFORM. " display_end_of_list

&----


*& Form display_grand_totals

&----


  • To display grand totals of Opening & Closing balance

----


FORM display_grand_totals.

DATA: v_text(16) TYPE c.

FORMAT RESET.

FORMAT COLOR 7.

ULINE (168).

  • Overall Opening Balance

MOVE gd_grd_opn TO v_text.

WRITE:/ sy-vline.

WRITE AT 2 'Overall Opening Balance'.

IF gd_grd_opn > 0.

WRITE AT 74 v_text.

ELSE.

v_text = v_text * -1. " Donot display sign

WRITE AT 90 v_text.

ENDIF.

WRITE AT 168 sy-vline.

WRITE / sy-vline.

WRITE AT 2 'Overall Closing Balance'.

IF gd_grd_cls <= 0.

gd_grd_cls = gd_grd_cls * -1. " Donot display sign

MOVE gd_grd_cls TO v_text.

WRITE AT 90 v_text.

ELSE.

MOVE gd_grd_cls TO v_text.

WRITE AT 74 v_text.

ENDIF.

WRITE AT 168 sy-vline.

ULINE (168).

FORMAT RESET.

SKIP.

  • for interactive report

SORT it_store BY belnr budat. " BUZEI Added

ENDFORM. " display_grand_totals

Read only

Former Member
0 Likes
933

Its was really helpful..

Thanks

Read only

Former Member
0 Likes
933

*&----


*& Form USER_COMMAND

*&----


  • text

*----


  • --> p1 text

  • <-- p2 text

*----


FORM USER_COMMAND

USING UCOMM LIKE SY-UCOMM

SELFIELD TYPE SLIS_SELFIELD.

DATA: BEGIN OF LT_BUZTAB OCCURS 30,

BUKRS LIKE BSEG-BUKRS, " Co Code

BELNR LIKE BSEG-BELNR, " Doc No

GJAHR LIKE BSEG-GJAHR, " fiscal Year

BUZEI LIKE BSEG-BUZEI, " Line item

KOART LIKE BSEG-KOART, " Kontoart

UMSKZ LIKE BSEG-UMSKZ, " SHB-Kennzeichen

BSCHL LIKE BSEG-BSCHL, " Posting key

BSTAT LIKE BKPF-BSTAT, " Buchungsstatus

MWART LIKE BSEG-MWART, " Steuerart,

MWSKZ LIKE SKB1-MWSKZ, " Steuerkategorie,

FLAEN(1) TYPE C, " X = Posten geaendert

END OF LT_BUZTAB.

*to hold the line item for the doc

DATA:LV_BUZTAB_LINE LIKE SY-TABIX.

*each time refresh the table for new doc drill down

REFRESH LT_BUZTAB.

*determine the current line

READ TABLE ITAB_FINAL INDEX SELFIELD-TABINDEX.

IF SY-SUBRC = 0.

*append the data for drill down to line item

LV_BUZTAB_LINE = ITAB_FINAL-BUZEI.

LT_BUZTAB-BUZEI = ITAB_FINAL-BUZEI.

LT_BUZTAB-BUKRS = ITAB_FINAL-BUKRS.

LT_BUZTAB-GJAHR = ITAB_FINAL-GJAHR.

LT_BUZTAB-BELNR = ITAB_FINAL-BELNR.

APPEND LT_BUZTAB.

ELSE.

  • MESSAGE e004.

ENDIF.

*call the dialog to drill down for line item instead of overview

CALL DIALOG 'RF_ZEILEN_ANZEIGE'

EXPORTING

BUZTAB FROM LT_BUZTAB

BUZTAB_LINE FROM LV_BUZTAB_LINE

TCODE FROM 'FB03'

  • x_commit

IMPORTING

BUZTAB TO LT_BUZTAB.