‎2008 May 06 7:40 AM
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.
‎2008 May 06 7:51 AM
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.
‎2008 May 06 7:44 AM
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.
‎2008 May 06 7:44 AM
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.
‎2008 May 06 7:47 AM
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.
‎2008 May 06 7:51 AM
‎2008 May 06 7:51 AM
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.
‎2008 May 06 8:09 AM
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
‎2008 May 06 8:38 AM
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
‎2008 May 06 11:51 AM
‎2008 May 06 11:55 AM
*&----
*& 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.