‎2009 Jul 07 5:46 AM
Dear All,
When I execute the following piece of code, then for the first time it executes perfectly but after execution it returns to selection screen, then the business area field 'p_gsber' does not appear on the selection screen.
TABLES: zfinvst,bseg , tgsb .
PARAMETERS: p_bldat LIKE bkpf-bldat OBLIGATORY,
p_budat LIKE bkpf-budat OBLIGATORY,
p_inart LIKE zfinvst-inart
AS LISTBOX VISIBLE LENGTH 20 OBLIGATORY ,
p_gsber LIKE bseg-gsber OBLIGATORY .
SELECTION-SCREEN SKIP 3.
PARAMETERS: p_waers LIKE bkpf-waers OBLIGATORY ,
p_newko1 LIKE kna1-kunnr OBLIGATORY.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_nouni LIKE zfinvst-nouni MODIF ID sc3 OBLIGATORY,
p_wrbtr LIKE bseg-wrbtr MODIF ID sc1 OBLIGATORY,
p_redamt LIKE zfinvst-redamt MODIF ID sc4 OBLIGATORY,
p_indur LIKE zfinvst-indur MODIF ID sc2 OBLIGATORY,
p_tolda LIKE zfinvst-indur MODIF ID sc7 OBLIGATORY,
p_redpri LIKE zfinvst-redpri MODIF ID sc6 OBLIGATORY ,
p_sgtxt LIKE bseg-sgtxt MODIF ID sc5 OBLIGATORY,
p_newko2 LIKE ska1-saknr MODIF ID sc5 OBLIGATORY,
p_roint LIKE zfinvst-roint MODIF ID sc7 OBLIGATORY,
p_invno LIKE zfinvst-invno ,
p_mf(20) TYPE c
AS LISTBOX VISIBLE LENGTH 20
MODIF ID s10 OBLIGATORY.
.
DATA: t_belnr LIKE bseg-belnr.
INITIALIZATION.
name = 'P_INART'.
value-key = 'TR'.
value-text = 'TR'.
APPEND value TO list.
CLEAR: value.
value-key = 'GS'.
value-text = 'GS'.
APPEND value TO list.
CLEAR: value.
value-key = 'MF'.
value-text = 'MF'.
APPEND value TO list.
CLEAR: value.
value-key = 'TD'.
value-text = 'TD'.
APPEND value TO list.
CLEAR: value.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name
values = list.
name1 = 'P_MF'.
value1-key = 'GR'.
value1-text = 'GR'.
APPEND value1 TO list1.
CLEAR: value1.
value1-key = 'DV'.
value1-text = 'DV'.
APPEND value1 TO list1.
CLEAR: value1.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name1
values = list1.
APPEND 'ONLI' TO itab1.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
* P_PROGRAM = ' '
TABLES
p_exclude = itab1.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = 'SC1' OR screen-group1 = 'SC2'
OR screen-group1 = 'SC3' OR screen-group1 = 'SC4'
OR screen-group1 = 'SC5' OR screen-group1 = 'SC6'
OR screen-group1 = 'SC7' OR screen-group1 = 'S10'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
IF p_inart = 'TD'.
LOOP AT SCREEN.
IF screen-group1 = 'SC1' OR screen-group1 = 'SC2'
OR screen-group1 = 'SC5' OR screen-group1 = 'SC7'.
screen-input = '1'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
* P_PROGRAM = ' '
TABLES
p_exclude = itab.
ENDIF.
IF p_inart = 'TR' OR p_inart = 'GS'.
LOOP AT SCREEN.
IF screen-group1 = 'SC1' OR screen-group1 = 'SC2'
OR screen-group1 = 'SC3' OR screen-group1 = 'SC4'
OR screen-group1 = 'SC5' .
screen-input = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
* P_PROGRAM = ' '
TABLES
p_exclude = itab.
ENDIF.
IF p_inart = 'MF' .
LOOP AT SCREEN.
IF screen-group1 = 'SC5' OR screen-group1 = 'SC1' OR screen-group1 = 'SC3' OR screen-group1 = 'S10'.
screen-input = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
* P_PROGRAM = ' '
TABLES
p_exclude = itab.
ENDIF.
at SELECTION-SCREEN on p_gsber .
PERFORM sub_validate_business_area USING p_gsber .
AT SELECTION-SCREEN ON p_redpri.
DATA : var1 TYPE p DECIMALS 4 .
IF p_inart = 'TR' OR p_inart = 'GS'.
p_redpri = p_redamt / p_nouni.
IF p_indur IS NOT INITIAL OR p_wrbtr IS NOT INITIAL.
p_roint = ( ( p_redamt - p_wrbtr ) * 100 * 365 ) /
( p_wrbtr * p_indur ).
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_inart.
START-OF-SELECTION.
CONDENSE p_newko1.
wa_wrbtr = p_wrbtr.
PERFORM f_confirm USING ws_answer.
IF ws_answer <> '1'.
EXIT.
ENDIF.
CLEAR ws_answer.
PERFORM bdc_dynpro USING 'SAPMF05A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
DATA date(10).
DATA date1(10).
CONCATENATE p_bldat+6(2)'.' p_bldat+4(2) '.' p_bldat+0(4)
INTO date.
PERFORM bdc_field USING 'BKPF-BLDAT'
date.
PERFORM bdc_field USING 'BKPF-BLART'
'IV'.
* PERFORM bdc_field USING 'BKPF-BUKRS'
* 'PLL'.
PERFORM bdc_field USING 'BKPF-BUKRS'
c_comp_code.
CONCATENATE p_budat+6(2)'.' p_budat+4(2) '.' p_budat+0(4)
INTO date1.
PERFORM bdc_field USING 'BKPF-BUDAT'
date1.
PERFORM bdc_field USING 'BKPF-WAERS'
p_waers.
PERFORM bdc_field USING 'RF05A-NEWBS'
'01'.
PERFORM bdc_field USING 'RF05A-NEWKO'
p_newko1.
PERFORM bdc_dynpro USING 'SAPMF05A' '0301'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
wa_wrbtr.
PERFORM bdc_field USING 'BSEG-SGTXT'
p_sgtxt.
PERFORM bdc_field USING 'RF05A-NEWBS'
'50'.
PERFORM bdc_field USING 'RF05A-NEWKO'
p_newko2.
TRANSLATE p_gsber TO UPPER CASE .
PERFORM bdc_field USING 'BSEG-GSBER'
p_gsber .
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
wa_wrbtr .
PERFORM bdc_field USING 'BSEG-SGTXT'
p_sgtxt.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM bdc_field USING 'COBL-GSBER'
p_gsber.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-FISTL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
CALL TRANSACTION 'F-22' USING bdcdata
MODE 'E'
UPDATE 'S'
MESSAGES INTO ws_it_messages.
IF sy-subrc <> 0.
LOOP AT ws_it_messages.
IF ws_it_messages-msgtyp = 'E'.
MESSAGE ID ws_it_messages-msgid TYPE ws_it_messages-msgtyp NUMBER ws_it_messages-msgnr
WITH ws_it_messages-msgv1 ws_it_messages-msgv2 ws_it_messages-msgv3 ws_it_messages-msgv4.
ENDIF.
ENDLOOP.
MESSAGE e007(zfi).
ENDIF.
t_belnr = sy-msgv1.
DATA length TYPE i VALUE 0.
length = STRLEN( t_belnr ).
length = 10 - length.
SHIFT t_belnr RIGHT BY length PLACES .
OVERLAY t_belnr WITH '0000000000' ONLY ' '.
zfinvst-belnr = t_belnr.
zfinvst-budat = p_budat.
zfinvst-bukrs = c_comp_code .
zfinvst-kunnr = p_newko1.
zfinvst-bldat = p_bldat.
zfinvst-blart = 'IV'.
zfinvst-waers = p_waers.
zfinvst-wrbtr = p_wrbtr.
zfinvst-sgtxt = p_sgtxt.
DATA : wa_saknr.
zfinvst-saknr = p_newko2.
zfinvst-roint = p_roint.
zfinvst-indur = p_indur.
IF p_inart = 'TD'.
zfinvst-intamt = ( p_wrbtr * p_roint * p_indur ) / ( 100 * 365 ).
zfinvst-mtamt = p_wrbtr + zfinvst-intamt.
ENDIF.
IF p_inart = 'TR' OR p_inart = 'GS'.
zfinvst-intamt = p_redamt - p_wrbtr.
zfinvst-mtamt = p_redamt.
ENDIF.
zfinvst-mtdat = p_budat + p_indur.
zfinvst-inart = p_inart.
zfinvst-nouni = p_nouni.
zfinvst-redpri = p_redpri.
zfinvst-redamt = p_redamt.
zfinvst-tolda = p_tolda.
zfinvst-invno = p_invno.
zfinvst-mftype = p_mf .
zfinvst-gsber = p_gsber .
INSERT zfinvst.
SUBMIT ZFI_INVEST_FINAL VIA SELECTION-SCREEN.
*---------------------------------------------------------------------*
* Start new screen *
*---------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*--------------------------------------------------------------------*
* Insert field *
*--------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form F_CONFIRM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WS_ANSWER text
*----------------------------------------------------------------------*
FORM f_confirm USING p_answer.
DATA: f_text(200) TYPE c.
f_text = 'Investment Amount '.
CONCATENATE f_text ': ' wa_wrbtr ' '
' Do you want to continue?' INTO f_text.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Investment Settlement'
* DIAGNOSE_OBJECT = ' '
text_question = f_text
text_button_1 = 'Yes'
* ICON_BUTTON_1 = ' '
text_button_2 = 'No'
* ICON_BUTTON_2 = ' '
* DEFAULT_BUTTON = '1'
display_cancel_button = 'X'
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
IMPORTING
answer = p_answer
* TABLES
* PARAMETER =
* EXCEPTIONS
* TEXT_NOT_FOUND = 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. " F_CONFIRM
*&---------------------------------------------------------------------*
*& Form SUB_VALIDATE_BUSINESS_AREA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_GSBER text
*----------------------------------------------------------------------*
form SUB_VALIDATE_BUSINESS_AREA using p_p_gsber.
select SINGLE gsber from tgsb INTO p_p_gsber
WHERE
GSBER = p_p_gsber .
if sy-subrc ne 0.
MESSAGE e031(fN) with p_p_gsber .
endif.
endform. " SUB_VALIDATE_BUSINESS_AREA
Please suggest how to rectify this.
Regards,
Kanupriya
‎2009 Jul 07 6:15 AM
Hi
Please clear off all the itab data after the start of selection is executed. Use an end of selection event or in initialization clear all the appended itabs in initialization event. so when it goes back to selection screen it would be like the first time execution.
The at selection-screen output event is hiding that field.
Hope this helps.
Viquar Iqbal
‎2009 Jul 07 5:47 AM
Hi,
I apologize for the unformatted text above. But inspite of using
..... for formatting my code is still not getting formatted.
Regards,
Kanupriya
‎2009 Jul 07 6:15 AM
Hi
Please clear off all the itab data after the start of selection is executed. Use an end of selection event or in initialization clear all the appended itabs in initialization event. so when it goes back to selection screen it would be like the first time execution.
The at selection-screen output event is hiding that field.
Hope this helps.
Viquar Iqbal
‎2009 Jul 07 6:39 AM
Hi Iqbal,
I tried by clearing itabs in event Initialization and also using end-of-selection. But still the problem persists. Can you please guide me a little more as to how to handle these.
Regards,
Kanupriya
‎2009 Jul 07 6:49 AM
In the start of selection event only make 1 subroutine in which u clear all the internal tables and the workareas.
‎2009 Jul 07 6:52 AM
Hi Iqbal,
Clearing the p_gsber field solved the problem.
Thanks a lot for the help.
Regards,
Kanupriya