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

field values not getting sorted

Former Member
0 Likes
3,232

In the input screen when we give the value of document type which takes the value from acdoca table after we get the output in the document type field doesnt work well with the filtering.

The data in the output is not getting filtered according to what value we are giving in the input.

If we give ZI as the value for document field then it should filter only ZI in the output which is not happening

1 ACCEPTED SOLUTION
Read only

former_member1716
Active Contributor
0 Likes
2,742

nidhi1994,

Recommend you to do the following steps:

1) Start debugging your Code and try to follow for the field BLART from the selection screen.

2) Check from the first select query whether the Query is successful with only the given values of BLART.

3) I have seen a statement where in you are deleting from a internal table based on S_BLART, recommend you to recheck again on that statement.

4) There are also few FMs used for collecting the BLART data, check if the functionality is fine there.

From what i see if you could follow the flow of the program in debugging we can reach to the solution part. Please use CODE option to paste the code also please paste only the code which you are suspicious about.

Regards!

Satish

In the input screen when we give the value of document type which takes the value from acdoca table after we get the output in the document type field doesnt work well with the filtering.

The data in the output is not getting filtered according to what value we are giving in the input.

If we give ZI as the value for document field then it should filter only ZI in the output which is not happening

9 REPLIES 9
Read only

FredericGirod
Active Contributor
2,742

Could you please post the source code of your problem, without it will not be possible to answer

Read only

Former Member
0 Likes
2,742

TABLES: acdoca.

TYPES : BEGIN OF ty_acdoca,
chk TYPE flag.
INCLUDE STRUCTURE zfi_acdoca_opn_itms.

TYPES : END OF ty_acdoca.

TYPES : tty_acdoca TYPE STANDARD TABLE OF ty_acdoca.

DATA : gw_in_out_gls TYPE zfi_in_out_gls,
gw_acdoca TYPE ty_acdoca,
gt_acdoca TYPE STANDARD TABLE OF ty_acdoca,
gt_bal TYPE STANDARD TABLE OF zfi_opn_cls_bal,
gt_acdoca_tmp TYPE STANDARD TABLE OF ty_acdoca.

DATA : gt_fldcat TYPE slis_t_fieldcat_alv.

SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS : p_bukrs TYPE bukrs OBLIGATORY,
p_rbusa TYPE gsber OBLIGATORY.
SELECTION-SCREEN: COMMENT 40(30) t_rbusa.
PARAMETERS : p_racct TYPE saknr OBLIGATORY.
SELECTION-SCREEN: COMMENT 45(30) t_racct.
PARAMETERS : p_keydt TYPE datum OBLIGATORY,
p_budat TYPE budat OBLIGATORY.
* Begin of Nidhi Raj 23.01.2020
SELECT-OPTIONS: s_blart FOR acdoca-blart NO INTERVALS.
* End of Nidhi Raj 23.01.2020
* p_opnbal TYPE zopen_bal OBLIGATORY,
PARAMETERS: p_clsbal TYPE zclose_bal OBLIGATORY,
p_bas TYPE zopen_bal,
p_diff TYPE zopen_bal,
p_mode TYPE rfpdo-allgazmd DEFAULT 'N'.
SELECTION-SCREEN : END OF BLOCK b1.
FIELD-SYMBOLS : <fs_acdoca> TYPE ty_acdoca.

Read only

former_member1716
Active Contributor
2,742

nidhi1994,

May be you are not passing the document type while selecting the entries.

Can you please share your code , to help you better!

Regards!

Read only

Former Member
0 Likes
2,742


FORM get_opnbal .
RANGES r_racct FOR acdoca-racct.
DATA lv_hsl TYPE acdoca-hsl.
*break pwcsd3.
SELECT *
FROM zfi_opn_cls_bal
INTO TABLE gt_bal
WHERE bukrs = p_bukrs.
IF sy-subrc = 0.
SORT gt_bal BY key_date DESCENDING.
* READ TABLE gt_bal INTO DATA(lw_bal) INDEX 1.
* IF sy-subrc = 0.
** p_opnbal = lw_bal-close_bal.
* ENDIF.
* ELSE.
* p_opnbal = 0.
ENDIF.
SELECT SINGLE gtext FROM tgsbt INTO t_rbusa
WHERE gsber EQ p_rbusa.
SELECT SINGLE txt20 FROM skat INTO t_racct
WHERE saknr = p_racct.
* LOOP AT SCREEN.
* IF screen-name = 'P_OPNBAL'.
* screen-input = 0.
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
LOOP AT SCREEN.
IF screen-name = 'P_BAS' OR screen-name = 'P_DIFF'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
CLEAR gw_in_out_gls.
SELECT SINGLE *
FROM zfi_in_out_gls
INTO gw_in_out_gls
WHERE bukrs = p_bukrs
AND rbusa = p_rbusa
AND racct_m = p_racct.
IF gw_in_out_gls IS NOT INITIAL.
CLEAR r_racct.
r_racct-low = gw_in_out_gls-racct_m.
r_racct-sign = 'I'.
r_racct-option = 'EQ'.
APPEND r_racct .
CLEAR r_racct-low.
r_racct-low = gw_in_out_gls-racct_in.
APPEND r_racct .
CLEAR r_racct-low.
r_racct-low = gw_in_out_gls-racct_out.
APPEND r_racct .

IF r_racct IS NOT INITIAL.
SELECT rbukrs, gjahr, belnr, docln,budat,blart,hsl FROM acdoca INTO TABLE @DATA(it_bas)
WHERE rbukrs = @p_bukrs
AND rbusa = @p_rbusa
AND racct IN @r_racct
AND budat LE @p_keydt
AND blart IN @s_blart.
SORT it_bas.
DELETE it_bas WHERE budat IS INITIAL.
IF it_bas IS NOT INITIAL.
LOOP AT it_bas INTO DATA(ls_bas).
lv_hsl = lv_hsl + ls_bas-hsl.
CLEAR ls_bas.
ENDLOOP.
p_bas = lv_hsl.
ELSE.
p_bas = 0.
ENDIF.
ENDIF.
p_diff = p_bas - p_clsbal.

ENDIF.
ENDFORM.

FORM fetch_data .

DATA : lt_acdoca TYPE STANDARD TABLE OF zfi_acdoca_opn_itms,
lt_acdoca_tmp TYPE STANDARD TABLE OF ty_acdoca.

SELECT SINGLE *
FROM zfi_in_out_gls
INTO gw_in_out_gls
WHERE bukrs = p_bukrs
AND rbusa = p_rbusa
AND racct_m = p_racct.

IF sy-subrc = 0.
CALL FUNCTION 'ZGL_OPENING_CLOSING_BAL_KEYDAT'
EXPORTING
comp = p_bukrs
date = p_keydt
acct = gw_in_out_gls-racct_in "Incoming G/L
rbusa = p_rbusa
TABLES
it_acdoca = lt_acdoca
EXCEPTIONS
no_data_found = 1
OTHERS = 2.
IF sy-subrc = 0.
gt_acdoca[] = CORRESPONDING #( lt_acdoca[] ).
REFRESH lt_acdoca.
ENDIF.
CALL FUNCTION 'ZGL_OPENING_CLOSING_BAL_KEYDAT'
EXPORTING
comp = p_bukrs
date = p_keydt
acct = gw_in_out_gls-racct_out "Outgoing G/L
rbusa = p_rbusa
TABLES
it_acdoca = lt_acdoca
EXCEPTIONS
no_data_found = 1
OTHERS = 2.
IF sy-subrc = 0.
lt_acdoca_tmp[] = CORRESPONDING #( lt_acdoca[] ).
APPEND LINES OF lt_acdoca_tmp TO gt_acdoca.
REFRESH lt_acdoca.
ENDIF.
ENDIF.
DELETE gt_acdoca WHERE blart NOT IN s_blart.
IF gt_acdoca IS INITIAL.
MESSAGE s398(00) WITH 'No data found' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.

ENDFORM.

FORM pf_stat USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'ZPF'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FIELD_CATALOG
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_FLDNAME
*& --> P_DESC
*&---------------------------------------------------------------------*
FORM field_catalog USING VALUE(p_fldname)
VALUE(p_desc).
DATA : lw_fldcat TYPE slis_fieldcat_alv.

lw_fldcat-fieldname = p_fldname.
lw_fldcat-seltext_l = p_desc.
IF p_fldname = 'BELNR'.
lw_fldcat-hotspot = 'X'.
ELSEIF p_fldname = 'CHK'.
lw_fldcat-checkbox = 'X'.
lw_fldcat-edit = 'X'.
lw_fldcat-outputlen = 3.
ENDIF.
APPEND lw_fldcat TO gt_fldcat.
CLEAR lw_fldcat.

ENDFORM.

FORM display_data .

DATA : lw_layout TYPE slis_layout_alv.

lw_layout-zebra = 'X'.
* lw_layout-box_fieldname = 'CHK'.

PERFORM field_catalog USING : 'CHK' 'Select',
'RBUKRS' 'Company Code',
'BELNR' 'Doc. Number',
'DOCLN' ' Item Number',
'GJAHR' 'Fiscal Year',
'BLART' 'Doc. Type',
'RACCT' 'Account Number',
'BUDAT' 'Posting Date',
'RBUSA' 'B. Area',
'PRCTR' 'Profit Ctr',
* Begin of Nidhi 15-11-2019
'RWCUR' 'Document Currency',
'WSL' 'Amount in Document Currency',
'RHCUR' 'Local Currency',
* End of Nidhi 15-11-2019
'HSL' 'Amt. in Local Cur.',
'BSCHL' 'P. Key',
'AUGBL' 'Clearing Doc. No.',
'AUGDT' 'Clearing Date',

'SGTXT' 'Text',
'MSG' 'Remarks'.
* 'ZUONR' 'Assignment'.
* .


SORT gt_acdoca BY belnr gjahr docln.
lw_layout-colwidth_optimize = abap_true.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STAT'
i_callback_user_command = 'USER_COMM'
is_layout = lw_layout
it_fieldcat = gt_fldcat
TABLES
t_outtab = gt_acdoca
EXCEPTIONS
program_error = 1
OTHERS = 2.

ENDFORM.

FORM user_comm USING syst-ucomm LIKE syst-ucomm
selfield TYPE slis_selfield.

DATA : ref_grid TYPE REF TO cl_gui_alv_grid,
lt_acdoca TYPE STANDARD TABLE OF ty_acdoca,
lt_acdoca_temp TYPE STANDARD TABLE OF ty_acdoca,
lt_acdoca2 TYPE STANDARD TABLE OF ty_acdoca,
lw_acdoca TYPE ty_acdoca,
lw_acdoca1 TYPE ty_acdoca,
lw_bal TYPE zfi_opn_cls_bal,
lv_opn TYPE char50,
lv_cls TYPE char50,
lv_recon TYPE char50,
lv_unrecon TYPE char50,
lv_opnbal TYPE char26,
lv_clsbal TYPE char26,
lv_reconbal TYPE char26,
lv_unreconbal TYPE char26,
lv_hsl TYPE fins_vhcur12,
lv_lines TYPE i,
lv_tabix TYPE sy-tabix.



IF ref_grid IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
ENDIF.

IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data.
ENDIF.

CASE syst-ucomm.
WHEN '&IC1'.
READ TABLE gt_acdoca INTO lw_acdoca INDEX selfield-tabindex.
IF sy-subrc = 0.
SET PARAMETER ID : 'BLN' FIELD lw_acdoca-belnr,
'BUK' FIELD lw_acdoca-rbukrs,
'GJR' FIELD lw_acdoca-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
CLEAR lw_acdoca.
ENDIF.
WHEN 'BALANCES'.
REFRESH lt_acdoca.
lt_acdoca[] = gt_acdoca[].
DELETE lt_acdoca WHERE chk NE 'X'.
IF lt_acdoca IS INITIAL.
MESSAGE e398(00) WITH 'Please select atleast one line'.
ENDIF.
* lv_opnbal = p_opnbal.
lv_clsbal = p_clsbal.
CLEAR lv_hsl.
DATA(lt_acdoca1) = lt_acdoca[].
DELETE lt_acdoca1 WHERE augbl IS INITIAL.
LOOP AT lt_acdoca1 INTO lw_acdoca.
lv_hsl = lw_acdoca-hsl + lv_hsl.
CLEAR lw_acdoca.
ENDLOOP.
lv_reconbal = lv_hsl.
CLEAR lv_hsl.
REFRESH lt_acdoca1.
lt_acdoca1[] = lt_acdoca[].
DELETE lt_acdoca1 WHERE augbl IS NOT INITIAL.
LOOP AT lt_acdoca1 INTO lw_acdoca.
lv_hsl = lw_acdoca-hsl + lv_hsl.
CLEAR lw_acdoca.
ENDLOOP.
lv_unreconbal = lv_hsl.
CONDENSE : lv_clsbal, lv_reconbal, lv_unreconbal.
CLEAR lv_opnbal.
* CONCATENATE 'Opening Bal. = ' lv_opnbal INTO lv_opn SEPARATED BY space.
CONCATENATE 'Closing Bal. = ' lv_clsbal INTO lv_cls SEPARATED BY space.
CONCATENATE 'Reconciled Bal. = ' lv_reconbal INTO lv_recon SEPARATED BY space.
CONCATENATE 'Unreconciled Bal. = ' lv_unreconbal INTO lv_unrecon SEPARATED BY space.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'Balances'
txt1 = lv_opn
txt2 = lv_cls
txt3 = lv_recon
txt4 = lv_unrecon.
WHEN '&DATA_SAVE'.
REFRESH lt_acdoca.
lt_acdoca[] = gt_acdoca[].
DELETE lt_acdoca WHERE chk NE 'X'.
IF lt_acdoca IS INITIAL.
MESSAGE e398(00) WITH 'Please select atleast one line'.
ENDIF.
LOOP AT lt_acdoca INTO lw_acdoca.
IF lw_acdoca-augbl IS NOT INITIAL.
MESSAGE e398(00) WITH 'Document already cleared'.
ENDIF.
CLEAR lw_acdoca.
ENDLOOP.
SORT lt_acdoca BY bschl.
DELETE ADJACENT DUPLICATES FROM lt_acdoca COMPARING bschl.
DESCRIBE TABLE lt_acdoca LINES lv_lines.
IF lv_lines NE 1.
MESSAGE e398(00) WITH 'Please select documents' 'with same posting key'.
ELSE.
REFRESH:lt_acdoca1, lt_acdoca.
lt_acdoca[] = gt_acdoca[].
DELETE lt_acdoca WHERE chk NE 'X'.

*&-----
REFRESH:lt_acdoca2,gt_acdoca_tmp.
lt_acdoca2[] = lt_acdoca.
CLEAR lw_acdoca.
LOOP AT lt_acdoca INTO lw_acdoca.
lv_tabix = sy-tabix.
READ TABLE lt_acdoca_temp WITH KEY belnr = lw_acdoca-belnr
gjahr = lw_acdoca-gjahr
TRANSPORTING NO FIELDS.
IF sy-subrc IS INITIAL.
DELETE lt_acdoca INDEX lv_tabix.
ELSE.
CLEAR lw_acdoca1.
LOOP AT lt_acdoca2 INTO lw_acdoca1
WHERE belnr = lw_acdoca-belnr
AND gjahr = lw_acdoca-gjahr.
IF lw_acdoca-prctr NE lw_acdoca1-prctr.
APPEND lw_acdoca1 TO lt_acdoca_temp.
ENDIF.
CLEAR lw_acdoca1.
ENDLOOP.
ENDIF.
ENDLOOP.
*&-----
ENDIF.

PERFORM gl_clearing USING lt_acdoca lt_acdoca_temp.

SELECT rbukrs, gjahr, belnr, docln, hsl, augdt, augbl
FROM acdoca
INTO TABLE @DATA(lt_acdoca_tmp)
FOR ALL ENTRIES IN @lt_acdoca
WHERE rbukrs = @lt_acdoca-rbukrs
AND gjahr = @lt_acdoca-gjahr
AND belnr = @lt_acdoca-belnr.
IF sy-subrc = 0.
DELETE lt_acdoca_tmp WHERE augbl IS INITIAL.
IF lt_acdoca_tmp IS NOT INITIAL.
CLEAR lw_bal.
lw_bal-key_date = p_keydt.
lw_bal-rbusa = p_rbusa.
* lw_bal-open_bal = p_opnbal.
lw_bal-usnam = sy-uname.
lw_bal-close_bal = p_clsbal.
lw_bal-bukrs = p_bukrs.
LOOP AT lt_acdoca_tmp INTO DATA(lw_acdoca_tmp).
lw_bal-recon_bal = lw_bal-recon_bal + lw_acdoca_tmp-hsl.
READ TABLE gt_acdoca ASSIGNING <fs_acdoca> WITH KEY gjahr = lw_acdoca_tmp-gjahr
belnr = lw_acdoca_tmp-belnr
docln = lw_acdoca_tmp-docln
BINARY SEARCH.
IF sy-subrc = 0.
<fs_acdoca>-augbl = lw_acdoca_tmp-augbl.
<fs_acdoca>-augdt = lw_acdoca_tmp-augdt.
ENDIF.
CLEAR lw_acdoca_tmp.
ENDLOOP.
lw_bal-unrecon_bal = p_clsbal - lw_bal-recon_bal.
MODIFY zfi_opn_cls_bal FROM lw_bal.
COMMIT WORK.
ELSE.
MESSAGE i398(00) WITH 'No document reconciled'.
ENDIF.
ENDIF.
WHEN 'REFRESH'.
CALL METHOD ref_grid->refresh_table_display.
WHEN 'SELALL'.
LOOP AT gt_acdoca ASSIGNING <fs_acdoca>.
<fs_acdoca>-chk = 'X'.
ENDLOOP.
CALL METHOD ref_grid->refresh_table_display.
WHEN 'DESELALL'.
LOOP AT gt_acdoca ASSIGNING <fs_acdoca>.
CLEAR <fs_acdoca>-chk.
ENDLOOP.
CALL METHOD ref_grid->refresh_table_display.
WHEN '&DIFF'.
DATA lv_ts TYPE acdoca-hsl.
DATA lv_tc TYPE acdoca-hsl.
DATA lv_te TYPE acdoca-hsl.
DATA lv_tbs TYPE acdoca-hsl.
DATA lv_tbb TYPE char50.
DATA: ld_ts TYPE char50,
ld_tc TYPE char50,
ld_te TYPE char50,
ld_tbs TYPE char50,
ld_tbb TYPE char50,
lv_diff TYPE char30.
CLEAR : lv_ts,lv_tc,lv_te,lv_tbs,lv_tbb.
BREAK pwcsd3.
LOOP AT gt_acdoca INTO gw_acdoca WHERE chk = 'X'.
IF gw_acdoca-blart = 'ZC' AND
gw_acdoca-racct = gw_in_out_gls-racct_in .
lv_ts = lv_ts + gw_acdoca-hsl.
ENDIF.
IF gw_acdoca-blart NE 'ZC' AND
gw_acdoca-racct = gw_in_out_gls-racct_in .
lv_tc = lv_tc + gw_acdoca-hsl.
ENDIF.
IF gw_acdoca-racct = gw_in_out_gls-racct_out .
lv_te = lv_te + gw_acdoca-hsl.
ENDIF.
CLEAR gw_acdoca.
ENDLOOP.
CLEAR : ld_ts,ld_tc,ld_te,lv_diff.
ld_ts = lv_ts.
ld_tc = lv_tc.
ld_te = lv_te.
lv_tbs = lv_ts + lv_tc + lv_te.
lv_tbb = p_clsbal.
lv_diff = lv_tbs - lv_tbb.
ld_tbs = lv_tbs.
SHIFT: ld_ts LEFT DELETING LEADING space,
ld_tc LEFT DELETING LEADING space,
ld_te LEFT DELETING LEADING space,
ld_tbs LEFT DELETING LEADING space,
lv_tbb LEFT DELETING LEADING space,
lv_diff LEFT DELETING LEADING space.

CONCATENATE 'Total Sales as per SAP ' ld_ts INTO ld_ts SEPARATED BY '='.
CONCATENATE 'Total Collection as per SAP ' ld_tc INTO ld_tc SEPARATED BY '='.
CONCATENATE 'Total expenses as per SAP ' ld_te INTO ld_te SEPARATED BY '='.
CONCATENATE 'Total Balance as per SAP' ld_tbs INTO ld_tbs SEPARATED BY '='.
CONCATENATE 'Total Balance as per Branch' lv_tbb INTO lv_tbb SEPARATED BY '='.
CONCATENATE 'Difference' lv_diff INTO lv_diff SEPARATED BY '='.
CALL FUNCTION 'ZFI_POPUP_TO_INFORM'
EXPORTING
titel = 'Differences'
txt1 = ld_ts
txt2 = ld_tc
txt3 = ld_te
txt4 = ld_tbs
txt5 = lv_tbb
txt6 = lv_diff.



ENDCASE.

ENDFORM.

FORM gl_clearing USING p_t_acdoca TYPE tty_acdoca
p_t_acdoca_temp TYPE tty_acdoca.

DATA : i_auglv LIKE t041a-auglv,
i_tcode LIKE sy-tcode,
bbkpf TYPE bkpf,
w_blntab TYPE blntab,
t_blntab TYPE STANDARD TABLE OF blntab,
w_ftclear TYPE ftclear,
t_ftclear TYPE STANDARD TABLE OF ftclear,
w_ftpost TYPE ftpost,
t_ftpost TYPE STANDARD TABLE OF ftpost,
t_fttax TYPE STANDARD TABLE OF fttax,
lw_acdoca TYPE ty_acdoca,
lw_acdoca_tmp TYPE ty_acdoca,
lv_hsl TYPE fins_vhcur12,
lv_bschl TYPE bschl,
lv_msg(100) TYPE c,
lv_count TYPE count_pi.

DATA : e_msgid LIKE sy-msgid,
e_msgno LIKE sy-msgno,
e_msgty LIKE sy-msgty,
e_msgv1 LIKE sy-msgv1,
e_msgv2 LIKE sy-msgv2,
e_msgv3 LIKE sy-msgv3,
e_msgv4 LIKE sy-msgv4,
e_subrc LIKE sy-subrc.
DATA lv_tabix TYPE sy-tabix.
DATA lv_lines TYPE sy-tabix.
DATA :lt_acdoca_tmp TYPE tty_acdoca.


CONSTANTS l_zc TYPE bkpf-blart VALUE 'ZC'.
*** Begin of Chaitanya - 24112019
DATA: gt_zfibrsdates TYPE STANDARD TABLE OF zfibrsdates,
gw_zfibrsdates TYPE zfibrsdates.
*** End of Chaitanya - 24112019

i_auglv = 'UMBUCHNG'.
i_tcode = 'FB05'.

LOOP AT p_t_acdoca INTO lw_acdoca.
lv_tabix = sy-tabix.

CLEAR : lv_hsl, lv_bschl,w_blntab,w_ftclear,lv_msg.
REFRESH : t_blntab, t_ftclear,t_ftpost.
w_blntab-belnr = lw_acdoca-belnr.
w_blntab-bukrs = lw_acdoca-rbukrs.
w_blntab-gjahr = lw_acdoca-gjahr.
APPEND w_blntab TO t_blntab.
w_ftclear-agkoa = 'S'.
w_ftclear-agkon = lw_acdoca-racct. "p_acdoca-racct.
w_ftclear-agbuk = p_bukrs.
w_ftclear-xnops = 'X'.
IF lw_acdoca-blart = l_zc.
w_ftclear-selfd = 'BELNR'.
w_ftclear-selvon = lw_acdoca-belnr.
ELSE.
w_ftclear-selfd = 'ZUONR'.
w_ftclear-selvon = lw_acdoca-zuonr. "p_acdoca-belnr.
ENDIF.
APPEND w_ftclear TO t_ftclear.
lv_hsl = lv_hsl + lw_acdoca-hsl.
lv_bschl = lw_acdoca-bschl.

CLEAR w_ftpost.
w_ftpost-stype = 'K'.
w_ftpost-count = '001'.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'BKPF-BLDAT'.
CONCATENATE p_budat+6(2) p_budat+4(2) p_budat(4) INTO w_ftpost-fval.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'BKPF-BUDAT'.
CONCATENATE p_budat+6(2) p_budat+4(2) p_budat(4) INTO w_ftpost-fval.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'BKPF-BLART'.
w_ftpost-fval = 'SA'.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'BKPF-BUKRS'.
w_ftpost-fval = p_bukrs.
APPEND w_ftpost TO t_ftpost.

SELECT SINGLE waers
FROM t001
INTO @DATA(lv_waers)
WHERE bukrs = @p_bukrs.

IF NOT lw_acdoca-rwcur IS INITIAL AND
lw_acdoca-rwcur NE lv_waers.
CLEAR: lv_hsl .
lv_hsl = lw_acdoca-wsl.
lv_waers = lw_acdoca-rwcur.
ENDIF.
CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'BKPF-WAERS'.
w_ftpost-fval = lv_waers.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-stype = 'P'.
w_ftpost-fnam = 'RF05A-NEWBS'.
w_ftpost-fval = lv_bschl.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-stype = 'P'.
w_ftpost-fnam = 'RF05A-NEWKO'.
w_ftpost-fval = gw_in_out_gls-racct_m.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval. "Calculate
w_ftpost-fnam = 'BSEG-WRBTR'.
IF lv_hsl LT 0.
w_ftpost-fval = 0 - lv_hsl.
ELSE.
w_ftpost-fval = lv_hsl.
ENDIF.
CONDENSE w_ftpost-fval.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'COBL-GSBER'.
w_ftpost-fval = lw_acdoca-rbusa.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'COBL-PRCTR'.
w_ftpost-fval = lw_acdoca-prctr.
APPEND w_ftpost TO t_ftpost.
*&-- Begin of change "
CLEAR:lw_acdoca_tmp, lv_count.
LOOP AT p_t_acdoca_temp INTO lw_acdoca_tmp
WHERE belnr = lw_acdoca-belnr
AND rbukrs = lw_acdoca-rbukrs
AND gjahr = lw_acdoca-gjahr.
CLEAR lv_hsl.
lv_hsl = lw_acdoca_tmp-hsl.
IF NOT lw_acdoca_tmp-rwcur IS INITIAL AND
lw_acdoca_tmp-rwcur NE lv_waers.
CLEAR: lv_hsl .
lv_hsl = lw_acdoca_tmp-wsl.
ENDIF.
CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-stype = 'P'.
w_ftpost-fnam = 'RF05A-NEWBS'.
w_ftpost-count = w_ftpost-count + 1.
w_ftpost-fval = lv_bschl.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'RF05A-NEWKO'.
w_ftpost-fval = gw_in_out_gls-racct_m.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval. "Calculate
w_ftpost-fnam = 'BSEG-WRBTR'.
IF lv_hsl LT 0.
w_ftpost-fval = 0 - lv_hsl.
ELSE.
w_ftpost-fval = lv_hsl.
ENDIF.
CONDENSE w_ftpost-fval.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'COBL-GSBER'.
w_ftpost-fval = lw_acdoca_tmp-rbusa.
APPEND w_ftpost TO t_ftpost.

CLEAR: w_ftpost-fnam, w_ftpost-fval.
w_ftpost-fnam = 'COBL-PRCTR'.
w_ftpost-fval = lw_acdoca_tmp-prctr.
APPEND w_ftpost TO t_ftpost.
CLEAR lw_acdoca_tmp.
ENDLOOP.
*&-- End of change "
CALL FUNCTION 'POSTING_INTERFACE_START'
EXPORTING
i_client = sy-mandt
i_function = 'C'
i_mode = p_mode "'N'
i_user = sy-uname
EXCEPTIONS
client_incorrect = 1
function_invalid = 2
group_name_missing = 3
mode_invalid = 4
update_invalid = 5
user_invalid = 6
OTHERS = 7.


CALL FUNCTION 'POSTING_INTERFACE_CLEARING'
EXPORTING
i_auglv = i_auglv
i_tcode = i_tcode
i_sgfunct = 'C'
IMPORTING
e_msgid = e_msgid
e_msgno = e_msgno
e_msgty = e_msgty
e_msgv1 = e_msgv1
e_msgv2 = e_msgv2
e_msgv3 = e_msgv3
e_msgv4 = e_msgv4
e_subrc = e_subrc
TABLES
t_blntab = t_blntab
t_ftclear = t_ftclear
t_ftpost = t_ftpost
t_fttax = t_fttax
EXCEPTIONS
clearing_procedure_invalid = 1
clearing_procedure_missing = 2
table_t041a_empty = 3
transaction_code_invalid = 4
amount_format_error = 5
too_many_line_items = 6
company_code_invalid = 7
screen_not_found = 8
no_authorization = 9
OTHERS = 10.

CALL FUNCTION 'POSTING_INTERFACE_END'
EXPORTING
i_bdcimmed = 'X'
EXCEPTIONS
session_not_processable = 1
OTHERS = 2.

IF e_subrc IS NOT INITIAL.
CLEAR lv_msg.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = sy-msgid
lang = sy-langu
no = sy-msgno
v1 = sy-msgv1
v2 = sy-msgv2
v3 = sy-msgv3
v4 = sy-msgv4
IMPORTING
msg = lv_msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
READ TABLE gt_acdoca ASSIGNING <fs_acdoca> WITH KEY belnr = lw_acdoca-belnr
gjahr = lw_acdoca-gjahr
docln = lw_acdoca-docln
BINARY SEARCH.
IF sy-subrc = 0.
<fs_acdoca>-msg = lv_msg.
ENDIF.
ELSE.
IF p_bukrs EQ 'A010'.
gw_zfibrsdates-bukrs = p_bukrs.
gw_zfibrsdates-hkont = p_racct.
gw_zfibrsdates-tcode = sy-tcode.
gw_zfibrsdates-budat = p_keydt.
MODIFY zfibrsdates FROM gw_zfibrsdates.
COMMIT WORK.
CLEAR: gw_zfibrsdates.
ENDIF.
ENDIF.
CLEAR : lw_acdoca.
ENDLOOP.
ENDFORM.

Read only

Former Member
0 Likes
2,742

shared the code. please check

Read only

Sandra_Rossi
Active Contributor
0 Likes
2,742

Please don't paste the code as an answer, use the button "Comment".

Moreover, paste only the relevant part of the code, don't paste the whole program.

Moreover, use the button "CODE" to beautify the code.

Read only

former_member1716
Active Contributor
0 Likes
2,743

nidhi1994,

Recommend you to do the following steps:

1) Start debugging your Code and try to follow for the field BLART from the selection screen.

2) Check from the first select query whether the Query is successful with only the given values of BLART.

3) I have seen a statement where in you are deleting from a internal table based on S_BLART, recommend you to recheck again on that statement.

4) There are also few FMs used for collecting the BLART data, check if the functionality is fine there.

From what i see if you could follow the flow of the program in debugging we can reach to the solution part. Please use CODE option to paste the code also please paste only the code which you are suspicious about.

Regards!

Satish

Read only

0 Likes
2,742

thanks for your help

Read only

Former Member
0 Likes
2,742

thank you for your help. It is done