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