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.
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.
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |