Skip to Content
0
Former Member
Jul 07, 2009 at 04:46 AM

Field missing in selection screen

113 Views

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