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 missing in selection screen

Former Member
0 Likes
879

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

1 ACCEPTED SOLUTION
Read only

viquar_iqbal
Active Contributor
0 Likes
766

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

5 REPLIES 5
Read only

Former Member
0 Likes
766

Hi,

I apologize for the unformatted text above. But inspite of using

..... 

for formatting my code is still not getting formatted.

Regards,

Kanupriya

Read only

viquar_iqbal
Active Contributor
0 Likes
767

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

Read only

0 Likes
766

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

Read only

0 Likes
766

In the start of selection event only make 1 subroutine in which u clear all the internal tables and the workareas.

Read only

0 Likes
766

Hi Iqbal,

Clearing the p_gsber field solved the problem.

Thanks a lot for the help.

Regards,

Kanupriya