How to raise pop up window along with radio buttons in module pool program

how to raise pop up window along with radio buttons in module pool program

FUNCTION zscheme_determination.
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_KUNNR) TYPE  KUNNR
*"  EXPORTING
*"     REFERENCE(E_VALUE) TYPE  NETWR_AK
*"  TABLES
*"      G_ITEM_DATA_ITAB STRUCTURE  ZITEM_DATA
*  TYPES: BEGIN OF ty_sord,
*         include type ZSD_SCHEME_DTL,
*         END   OF ty_sord.
*  data : gt_sord type standard table of ZSD_SCHEME_DTL,
*         wa_sord type ZSD_SCHEME_DTL.
*  select * from ZSD_SCHEME_DTL into table
*  gt_sord
*  where matnr = i_matnr.
*  T_ITEM_DATA
*********Data Declarations
   DATA:
         salesdocumentin LIKE bapivbeln-vbeln,
         orderheaderin LIKE bapisdhd1,
         orderheaderinx LIKE bapisdhd1x,
         sender LIKE bapi_sender,
         binaryrelationshiptype LIKE bapireltype-reltype,
         intnumberassignment LIKE bapiflag-bapiflag,
         behavewhenerror LIKE bapiflag-bapiflag,
         logicswitch LIKE bapisdls,
         testrun LIKE bapiflag-bapiflag,
         convert LIKE bapiflag-bapiflag,
         return LIKE bapiret2 OCCURS 0,
         orderitemsin LIKE bapisditm OCCURS 0,
         orderitemsinx LIKE bapisditmx OCCURS 0,
         orderpartners LIKE bapiparnr OCCURS 0,
         orderschedulesin LIKE bapischdl OCCURS 0,
         orderschedulesinx LIKE bapischdlx OCCURS 0,
         orderconditionsin LIKE bapicond OCCURS 0,
         orderconditionsinx LIKE bapicondx OCCURS 0,
         ordercfgsref LIKE bapicucfg OCCURS 0,
         ordercfgsinst LIKE bapicuins OCCURS 0,
         ordercfgspartof LIKE bapicuprt OCCURS 0,
         ordercfgsvalue LIKE bapicuval OCCURS 0,
         ordercfgsblob LIKE bapicublb OCCURS 0,
         ordercfgsvk LIKE bapicuvk OCCURS 0,
         ordercfgsrefinst LIKE bapicuref OCCURS 0,
         orderccard LIKE bapiccard OCCURS 0,
         ordertext LIKE bapisdtext OCCURS 0,
         orderkeys LIKE bapisdkey OCCURS 0,
         extensionin LIKE bapiparex OCCURS 0,
         partneraddresses LIKE bapiaddr1 OCCURS 0.
   DATA : wa_orderpartners LIKE bapiparnr,
          wa_orderitemsin LIKE bapisditm,
          wa_orderitemsinx LIKE bapisditmx,
          wa_orderschedulesin LIKE bapischdl,
          wa_orderschedulesinx LIKE bapischdlx,
          wa_orderconditionsin LIKE bapicond,
          wa_orderconditionsinx LIKE bapicondx,
          wa_return LIKE bapiret2,
          lv_value TYPE netwr_ak.
   DATA : lv_dtyp TYPE char45,
          lv_sorg TYPE vkorg,
          lv_sdch TYPE vtweg,
          lv_sdiv TYPE spart.
   TYPES : BEGIN OF ty_sord,
           zsdscheme TYPE comt_scheme_id,
           posnr TYPE posnr_va,
           matnr TYPE matnr,
           disc_type TYPE rebate_disc_type,
           calc_type TYPE catyp,
           qty_from TYPE kwmeng,
           qty_to TYPE kwmeng,
           spart TYPE spart,
           custcondgrp TYPE kdkg1,
           werks TYPE werks_d,
           matmn TYPE matnr,
           END   OF ty_sord.
   DATA : gt_sord   TYPE STANDARD TABLE OF ty_sord,
          gt_sordd  TYPE STANDARD TABLE OF ty_sord,
          wa_sord TYPE ty_sord,
          wa_knvv TYPE knvv,
          lv_cal_foc TYPE p DECIMALS 3,
          lv_cal_dis TYPE p DECIMALS 3,
          lv_new_qty TYPE kwmeng,
          lv_posmat TYPE posnr_va,
          lv_posfoc TYPE posnr_va.
   DATA:lv_diff TYPE kwmeng.
******Schemes Selection Logic
* Get Valid Schemes
* Validate Scheme for validity Period, Material, Customer Type and Plant
   TYPES : BEGIN OF ty_rtab,
           sign   TYPE c LENGTH 1,
           option TYPE c LENGTH 2,
           low    LIKE mara-matnr,
           high   LIKE mara-matnr,
         END OF ty_rtab.
*  TYPES : ty_matnr TYPE RANGE OF ty_rtab.
   DATA : it_matnr TYPE TABLE OF ty_rtab,
          wa_matnr TYPE ty_rtab,
          wa_it    TYPE zitem_data,
         wa_tab TYPE zitem_data.
*order table declaration
   TYPES:
         BEGIN OF ty_order,
           zsdscheme TYPE comt_scheme_id,
           matnr     TYPE matnr,
           kwmeng    TYPE kwmeng,
         END OF ty_order,
   BEGIN OF ty_scheme,
    zsdscheme TYPE comt_scheme_id,
*                matnr     TYPE matnr,
    kwmeng    TYPE kwmeng,
  END OF ty_scheme.
   DATA:
         gt_order      TYPE TABLE OF ty_order,
         gt_scheme     TYPE TABLE OF ty_scheme,
          wa_scheme    TYPE ty_scheme,
          wa_order     TYPE  ty_order.
   DATA:i_kwmeng TYPE kwmeng.
* Transfer all the material received from order to internal table
   LOOP AT g_item_data_itab INTO wa_it.
     MOVE : wa_it-matnr TO wa_matnr-low,
            'I'          TO wa_matnr-sign,
            'EQ'         TO wa_matnr-option.
     APPEND wa_matnr TO it_matnr.
     CLEAR wa_it.
   ENDLOOP.
* Get the Valid Schemes based on given criteria
   SELECT
           zsd_scheme_dtl~zsdscheme
           zsd_scheme_dtl~posnr
           zsd_scheme_dtl~matnr
           zsd_scheme_dtl~disc_type
           zsd_scheme_dtl~calc_type
           zsd_scheme_dtl~qty_from
           zsd_scheme_dtl~qty_to
           zsd_scheme~spart
           zsd_scheme_hdr~custcondgrp
           zsd_scheme_hdr~werks
           zsd_scheme_hdr~matnr
   FROM zsd_scheme_hdr
   INNER JOIN zsd_scheme ON zsd_scheme~zsdscheme = zsd_scheme_hdr~zsdscheme
   INNER JOIN zsd_scheme_dtl ON zsd_scheme_dtl~zsdscheme = zsd_scheme_hdr~zsdscheme
   INTO TABLE  gt_sord
   WHERE  zsd_scheme_dtl~matnr IN it_matnr
*    zsd_scheme_hdr~matnr IN it_matnr
*    AND zsd_scheme_hdr~werks = '1509'
     AND zsd_scheme_hdr~werks = '1529'
     AND zsd_scheme_hdr~custcondgrp = '01'
     AND zsd_scheme~datuv LE sy-datum
     AND zsd_scheme~datub GE sy-datum.
   SORT gt_sord BY zsdscheme ASCENDING.
*  LOOP AT gt_sord INTO wa_sord.
*    READ TABLE g_item_data_itab INTO wa_it WITH  KEY matnr = wa_sord-matnr.
*    wa_order-zsdscheme = wa_sord-zsdscheme.
*    wa_order-matnr = wa_it-matnr.
*    wa_order-kwmeng = wa_it-kwmeng.
*    COLLECT wa_order INTO gt_order.
*    CLEAR wa_order.
*  ENDLOOP.
   LOOP AT g_item_data_itab INTO wa_it.
     READ TABLE gt_sord INTO wa_sord WITH  KEY matnr = wa_it-matnr.
     wa_order-zsdscheme = wa_sord-zsdscheme.
     wa_order-matnr = wa_it-matnr.
     wa_order-kwmeng = wa_it-kwmeng.
     COLLECT wa_order INTO gt_order.
     MOVE : wa_sord-zsdscheme  TO wa_scheme-zsdscheme,
            wa_it-kwmeng  TO wa_scheme-kwmeng.
     COLLECT wa_scheme INTO gt_scheme.
     CLEAR : wa_order, wa_scheme.
   ENDLOOP.
   CLEAR wa_scheme.
   DATA w_line TYPE sy-tabix.
* Updating table based on Schemes
   LOOP AT gt_scheme INTO wa_scheme.
     CLEAR w_line.
     gt_sordd[] = gt_sord[].
*    DELETE gt_sordd WHERE zsdscheme NE wa_scheme-zsdscheme and disc_type NE 'FOC'.
     DELETE gt_sordd WHERE zsdscheme NE wa_scheme-zsdscheme AND disc_type NE 'F'.
     DELETE ADJACENT DUPLICATES FROM gt_sordd COMPARING zsdscheme matnr.
     DESCRIBE TABLE gt_sordd LINES w_line.
     IF w_line GT 1.
* popup message to select one foc type.
     ELSE.
       CLEAR wa_sord.
       READ TABLE gt_sordd INTO wa_sord INDEX 1.
       IF sy-subrc EQ 0.
         i_kwmeng = wa_scheme-kwmeng.
         lv_cal_foc = i_kwmeng DIV wa_sord-qty_from.
         lv_cal_dis = i_kwmeng MOD wa_sord-qty_from.
         MOVE : lv_cal_foc TO wa_it-kwmeng,
                wa_sord-matnr TO wa_it-matnr.
         APPEND  wa_it TO g_item_data_itab.
         SORT gt_order BY kwmeng DESCENDING.
         LOOP AT gt_order INTO wa_order WHERE zsdscheme = wa_scheme-zsdscheme.
           IF lv_cal_dis GT 0.
*        LOOP AT gt_order INTO wa_order WHERE zsdscheme = wa_scheme-zsdscheme
*                                             AND lv_cal_dis GT 0.
*                  LOOP AT gt_order INTO wa_order WHERE zsdscheme = wa_scheme-zsdscheme.
*                LOOP AT g_item_data INTO wa_item_data WHERE matnr EQ wa_order-matnr.
                     LOOP AT g_item_data_itab INTO wa_tab WHERE matnr EQ wa_order-matnr.
                       wa_orderconditionsin-itm_number = wa_tab-posnr.
*                  wa_orderconditionsin-itm_number = wa_item_data-posnr.
                       wa_orderconditionsin-cond_st_no = '001'.
*                  IF gt_sordd-calc EQ ‘post AND disc_type EQ ‘percentage’.
                       IF wa_sord-calc_type EQ 'O' AND wa_sord-disc_type EQ 'P'.
                         wa_orderconditionsin-cond_type = 'ZTPB'.   "'ZREG'.
*                  ELSEIF gt_sordd-calc EQ ‘pre’ AND disc_type EQ ‘percentage’
                       ELSEIF wa_sord-calc_type EQ 'E' AND wa_sord-disc_type EQ 'P'.
                         wa_orderconditionsin-cond_type = 'ZTPP'.   "'ZREG'.
                       ENDIF.
                       wa_orderconditionsin-currency = 'INR'.
                       wa_orderconditionsin-conpricdat = sy-datum.
                       APPEND wa_orderconditionsin TO orderconditionsin.
                       CLEAR wa_orderconditionsin.
*Update Discount Conditon
                     ENDLOOP.
*                  ENDLOOP.
*Modify balance of Item
             CLEAR wa_tab.
             READ TABLE g_item_data_itab INTO wa_tab WITH KEY matnr = wa_order-matnr.
             IF sy-subrc EQ 0.
               lv_diff = wa_tab-kwmeng - lv_cal_dis.
               IF lv_diff GT 0.
                 wa_tab-kwmeng  = wa_tab-kwmeng - lv_cal_dis.
*            MODIFY g_item_data TRANSPORTING kwmeng  index sy-tabix.
                 MODIFY g_item_data_itab INDEX sy-tabix FROM wa_tab TRANSPORTING kwmeng  .
               ELSE.
                 wa_tab-kwmeng  =  lv_cal_dis.
                 lv_cal_dis  = lv_diff.
                 MODIFY g_item_data_itab INDEX sy-tabix FROM wa_tab TRANSPORTING kwmeng .
*            MODIFY G_ITEM_DATA_ITAB TRANSPORTING kwmeng index sy-tabix.
               ENDIF.
               gt_sordd[] = gt_sord[].
               DELETE gt_sordd WHERE zsdscheme NE wa_scheme-zsdscheme AND disc_type EQ 'F'.
               DESCRIBE TABLE gt_sordd LINES w_line.
               IF w_line GT 1.
                 SORT gt_sordd BY zsdscheme DESCENDING.
*              SORT gt_sordd BY quantity DESCENDING.
                 CLEAR wa_sord.
*              LOOP AT gt_sordd WHERE quantity_from LT wa_shceme-kwmeng AND quantity_to GT wa_shceme-kwmeng.
                 LOOP AT gt_sordd INTO wa_sord  WHERE qty_from LT wa_scheme-kwmeng AND qty_to GT wa_scheme-kwmeng.
*             LOOP AT gt_order INTO wa_order WHERE scheme = wa_scheme-scheme.
                   LOOP AT gt_order INTO wa_order WHERE zsdscheme = wa_scheme-zsdscheme.
*                LOOP AT g_item_data INTO wa_item_data WHERE matnr EQ wa_order-matnr.
                     LOOP AT g_item_data_itab INTO wa_tab WHERE matnr EQ wa_order-matnr.
                       wa_orderconditionsin-itm_number = wa_tab-posnr.
*                  wa_orderconditionsin-itm_number = wa_item_data-posnr.
                       wa_orderconditionsin-cond_st_no = '001'.
*                  IF gt_sordd-calc EQ ‘post AND disc_type EQ ‘percentage’.
                       IF wa_sord-calc_type EQ 'O' AND wa_sord-disc_type EQ 'P'.
                         wa_orderconditionsin-cond_type = 'ZDPD'.   "'ZREG'.
*                  ELSEIF gt_sordd-calc EQ ‘pre’ AND disc_type EQ ‘percentage’
                       ELSEIF wa_sord-calc_type EQ 'E' AND wa_sord-disc_type EQ 'P'.
                         wa_orderconditionsin-cond_type = 'ZDPD'.   "'ZREG'.
                       ENDIF.
                       wa_orderconditionsin-currency = 'INR'.
                       wa_orderconditionsin-conpricdat = sy-datum.
                       APPEND wa_orderconditionsin TO orderconditionsin.
                       CLEAR wa_orderconditionsin.
*Update Discount Conditon
                     ENDLOOP.
                   ENDLOOP.
                 ENDLOOP.
               ELSE.
               ENDIF.
             ENDIF.
           ENDIF.
         ENDLOOP.
       ENDIF.
     ENDIF.
   ENDLOOP.
*  select
*          ZSD_SCHEME_DTL~ZSDSCHEME
*          ZSD_SCHEME_DTL~POSNR
*          ZSD_SCHEME_DTL~matnr
*          ZSD_SCHEME_DTL~DISC_TYPE
*          ZSD_SCHEME_DTL~CALC_TYPE
*          ZSD_SCHEME_DTL~QTY_FROM
*          ZSD_SCHEME_DTL~QTY_TO
*          ZSD_SCHEME~SPART
*          ZSD_SCHEME_HDR~CUSTCONDGRP
*          ZSD_SCHEME_HDR~WERKS
*          ZSD_SCHEME_HDR~MATNR
*  from ZSD_SCHEME_DTL
*  inner join ZSD_SCHEME on ZSD_SCHEME~ZSDSCHEME = ZSD_SCHEME_DTL~ZSDSCHEME
*  inner join ZSD_SCHEME_HDR on ZSD_SCHEME_HDR~ZSDSCHEME = ZSD_SCHEME_DTL~ZSDSCHEME
*  into table
*  gt_sord
*  where ZSD_SCHEME_DTL~matnr = i_matnr and
*        ZSD_SCHEME~DATUV LE sy-datum and
*        ZSD_SCHEME~DATUB GE sy-datum.
*  break-point.
* Process Common Logic for Schemes Processcing
   CLEAR wa_sord.
* Convert FOC Quantity and Materials
*  LOOP AT gt_sord INTO wa_sord.
**   lv_cal = i_kwmeng / wa_sord-QTY_FROM.
*    lv_cal_foc = i_kwmeng DIV wa_sord-qty_from.
*    lv_cal_dis = i_kwmeng MOD wa_sord-qty_from.
*  ENDLOOP.
*lv_new_qty = i_kwmeng - lv_cal_dis.
* Get the Sales Document Type
   SELECT SINGLE low
FROM tvarvc
INTO  lv_dtyp WHERE
name = 'SD_DOC_TYPE'.
   SELECT SINGLE * FROM knvv INTO wa_knvv WHERE kunnr = i_kunnr.
   IF sy-subrc = 0.
     lv_sorg = wa_knvv-vkorg.
     lv_sdch = wa_knvv-vtweg.
     lv_sdiv = wa_knvv-spart.
   ENDIF.
* Give the Popup for schemes with multiple FOC
* Schemes Specific Processing
* Schemes Specific Processing
   orderheaderin-doc_type = lv_dtyp.
   orderheaderin-sales_org = lv_sorg.
   orderheaderin-distr_chan = lv_sdch.
   orderheaderin-division = lv_sdiv.
   wa_orderpartners-partn_role = 'AG'.
   wa_orderpartners-partn_numb = i_kunnr.
   APPEND wa_orderpartners TO orderpartners.
*    wa_ORDERPARTNERS-PARTN_ROLE = 'WE'.
*    wa_ORDERPARTNERS-PARTN_NUMB = p_ship.
*    append wa_ORDERPARTNERS to ORDERPARTNERS.
* Item number begin
   CLEAR : lv_posmat.
   lv_posmat = lv_posmat + 10.
   wa_orderitemsin-itm_number = lv_posmat.
   wa_orderitemsin-material = wa_sord-matmn.  "i_matnr.
   wa_orderitemsin-target_qty = lv_new_qty.
*  wa_ORDERITEMSIN-TARGET_QU = i_VRKME.
   APPEND wa_orderitemsin TO orderitemsin.
   wa_orderitemsinx-itm_number = lv_posmat.
   wa_orderitemsinx-material = 'X'.
   wa_orderitemsinx-target_qty = 'X'.
   wa_orderitemsinx-target_qu = 'X'.
   APPEND wa_orderitemsinx TO orderitemsinx.
   wa_orderschedulesin-itm_number = lv_posmat.
   wa_orderschedulesin-sched_line = lv_posmat.
   wa_orderschedulesin-req_qty = lv_new_qty.
   APPEND wa_orderschedulesin TO orderschedulesin.
   wa_orderschedulesinx-itm_number = lv_posmat.
   wa_orderschedulesinx-sched_line = lv_posmat.
   wa_orderschedulesinx-req_qty  = 'X'.
   wa_orderschedulesinx-updateflag = 'X'.
   APPEND wa_orderschedulesinx TO orderschedulesinx.
   wa_orderconditionsin-itm_number = lv_posmat.
   wa_orderconditionsin-cond_st_no = '001'.
   wa_orderconditionsin-cond_type = 'ZDPD'.   "'ZREG'.
   wa_orderconditionsin-currency = 'INR'.
   wa_orderconditionsin-conpricdat = sy-datum.
   APPEND wa_orderconditionsin TO orderconditionsin.
   wa_orderconditionsinx-itm_number = lv_posmat.
   wa_orderconditionsinx-cond_st_no = '001'.
   wa_orderconditionsinx-cond_type = 'ZDPD'. "'ZREG'.
   wa_orderconditionsinx-updateflag = 'X'.
   wa_orderconditionsinx-cond_value ='X'.
   wa_orderconditionsinx-currency = 'X'.
   APPEND wa_orderconditionsinx TO orderconditionsinx.
****18/06Beg
*  if not lv_cal_dis is initial.
*    lv_posmat = lv_posmat + 10.
*    wa_ORDERITEMSIN-ITM_NUMBER = lv_posmat.
*    wa_ORDERITEMSIN-MATERIAL = WA_SORD-MATMN.  "i_matnr.
*    wa_ORDERITEMSIN-TARGET_QTY = lv_cal_dis.
**  wa_ORDERITEMSIN-TARGET_QU = i_VRKME.
*    append wa_ORDERITEMSIN to ORDERITEMSIN.
*    wa_ORDERITEMSINX-ITM_NUMBER = lv_posmat.
*    wa_ORDERITEMSINX-MATERIAL = 'X'.
*    wa_ORDERITEMSINX-TARGET_QTY = 'X'.
*    wa_ORDERITEMSINX-TARGET_QU = 'X'.
*    append wa_ORDERITEMSINX to ORDERITEMSINX.
*    wa_ORDERSCHEDULESIN-ITM_NUMBER = lv_posmat.
*    wa_ORDERSCHEDULESIN-SCHED_LINE = lv_posmat.
*    wa_ORDERSCHEDULESIN-REQ_QTY = lv_cal_dis.
*    append wa_ORDERSCHEDULESIN to ORDERSCHEDULESIN.
*    wa_ORDERSCHEDULESINX-itm_number = lv_posmat.
*    wa_ORDERSCHEDULESINX-sched_line = lv_posmat.
*    wa_ORDERSCHEDULESINX-req_qty  = 'X'.
*    wa_ORDERSCHEDULESINX-updateflag = 'X'.
*    append wa_ORDERSCHEDULESINX to ORDERSCHEDULESINX.
*  endif.
*  lv_posmat = lv_posmat + 10.
*  wa_ORDERITEMSIN-ITM_NUMBER = lv_posmat.
*  wa_ORDERITEMSIN-MATERIAL = i_matnr.  "WA_SORD-MATMN.
*  wa_ORDERITEMSIN-TARGET_QTY = LV_CAL_FOC.
*  wa_ORDERITEMSIN-ITEM_CATEG = 'ZDGN'.
**  wa_ORDERITEMSIN-TARGET_QU = i_VRKME.
*  append wa_ORDERITEMSIN to ORDERITEMSIN.
*  wa_ORDERITEMSINX-ITM_NUMBER = lv_posmat.
*  wa_ORDERITEMSINX-MATERIAL = 'X'.
*  wa_ORDERITEMSINX-TARGET_QTY = 'X'.
*  wa_ORDERITEMSINX-TARGET_QU = 'X'.
*  wa_ORDERITEMSINX-ITEM_CATEG = 'X'.
*  append wa_ORDERITEMSINX to ORDERITEMSINX.
*  wa_ORDERSCHEDULESIN-ITM_NUMBER = lv_posmat.
*  wa_ORDERSCHEDULESIN-SCHED_LINE = lv_posmat.
*  wa_ORDERSCHEDULESIN-REQ_QTY = LV_CAL_FOC.
*  append wa_ORDERSCHEDULESIN to ORDERSCHEDULESIN.
*  wa_ORDERSCHEDULESINX-itm_number = lv_posmat.
*  wa_ORDERSCHEDULESINX-sched_line = lv_posmat.
*  wa_ORDERSCHEDULESINX-req_qty  = 'X'.
*  wa_ORDERSCHEDULESINX-updateflag = 'X'.
*  append wa_ORDERSCHEDULESINX to ORDERSCHEDULESINX.
****18/06End
* Item number end
* Switch off dialog (BAPIs always run without)
   CALL FUNCTION 'DIALOG_SET_NO_DIALOG'.
   CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
     EXPORTING
*     SALESDOCUMENTIN               =
     order_header_in               = orderheaderin
*     ORDER_HEADER_INX              =
*     SENDER                        =
*     BINARY_RELATIONSHIPTYPE       =
*     INT_NUMBER_ASSIGNMENT         =
*     BEHAVE_WHEN_ERROR             =
*     LOGIC_SWITCH                  =
*     TESTRUN                       =
*     CONVERT                       = ' '
*   IMPORTING
*     SALESDOCUMENT                 =
   TABLES
     return                        = return
     order_items_in                = orderitemsin
     order_items_inx               = orderitemsinx
     order_partners                = orderpartners
     order_schedules_in            = orderschedulesin
     order_schedules_inx           = orderschedulesinx
     order_conditions_in           = orderconditionsin
     order_conditions_inx          = orderconditionsinx
*     ORDER_CFGS_REF                =
*     ORDER_CFGS_INST               =
*     ORDER_CFGS_PART_OF            =
*     ORDER_CFGS_VALUE              =
*     ORDER_CFGS_BLOB               =
*     ORDER_CFGS_VK                 =
*     ORDER_CFGS_REFINST            =
*     ORDER_CCARD                   =
*     ORDER_TEXT                    =
*     ORDER_KEYS                    =
*     EXTENSIONIN                   =
*     PARTNERADDRESSES              =
*    commit work.
   CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*     EXPORTING
*       WAIT          =
*     IMPORTING
*       RETURN        =
   LOOP AT return INTO wa_return.
     WRITE:/ wa_return-message.
   ENDLOOP.
ENDFUNCTION.
*& Include ZSD_SO_CHANGES2_TOP                               Module Pool      ZSD_SO_CHANGES2
PROGRAM  ZSD_SO_CHANGES2.
***&SPWIZARD: DATA DECLARATION FOR TABLECONTROL 'ITEM_DATA'
*&SPWIZARD: DEFINITION OF DDIC-TABLE
TABLES:   VBAP,kna1.
*&SPWIZARD: TYPE FOR THE DATA OF TABLECONTROL 'ITEM_DATA'
TYPES: BEGIN OF T_ITEM_DATA,
          POSNR LIKE VBAP-POSNR,
          MATNR LIKE VBAP-MATNR,
          KWMENG LIKE VBAP-KWMENG,
          VRKME LIKE VBAP-VRKME,
        END OF T_ITEM_DATA.
*&SPWIZARD: INTERNAL TABLE FOR TABLECONTROL 'ITEM_DATA'
DATA:     G_ITEM_DATA_ITAB   TYPE T_ITEM_DATA OCCURS 0,
           G_ITEM_DATA_WA     TYPE T_ITEM_DATA. "work area
DATA:     G_ITEM_DATA_COPIED.           "copy flag
*&SPWIZARD: DECLARATION OF TABLECONTROL 'ITEM_DATA' ITSELF
CONTROLS: ITEM_DATA TYPE TABLEVIEW USING SCREEN 4000.
DATA:GV_NUM TYPE I VALUE 1,
       GV_NUM2 TYPE I.
DATA:     G_T_YREC_TAB_LINES  LIKE SY-LOOPC.***********top*************
*& Include ZSD_SO_CHANGES2_TOP                               Module Pool      ZSD_SO_CHANGES2
PROGRAM  ZSD_SO_CHANGES2.
***&SPWIZARD: DATA DECLARATION FOR TABLECONTROL 'ITEM_DATA'
*&SPWIZARD: DEFINITION OF DDIC-TABLE
TABLES:   VBAP,kna1.
*&SPWIZARD: TYPE FOR THE DATA OF TABLECONTROL 'ITEM_DATA'
TYPES: BEGIN OF T_ITEM_DATA,
          POSNR LIKE VBAP-POSNR,
          MATNR LIKE VBAP-MATNR,
          KWMENG LIKE VBAP-KWMENG,
          VRKME LIKE VBAP-VRKME,
        END OF T_ITEM_DATA.
*&SPWIZARD: INTERNAL TABLE FOR TABLECONTROL 'ITEM_DATA'
DATA:     G_ITEM_DATA_ITAB   TYPE T_ITEM_DATA OCCURS 0,
           G_ITEM_DATA_WA     TYPE T_ITEM_DATA. "work area
DATA:     G_ITEM_DATA_COPIED.           "copy flag
*&SPWIZARD: DECLARATION OF TABLECONTROL 'ITEM_DATA' ITSELF
CONTROLS: ITEM_DATA TYPE TABLEVIEW USING SCREEN 4000.
DATA:GV_NUM TYPE I VALUE 1,
       GV_NUM2 TYPE I.
DATA:     G_T_YREC_TAB_LINES  LIKE SY-LOOPC.
************************pbo*******************
*&  Include           ZSD_SO_CHANGES2_PBO
*&SPWIZARD: OUTPUT MODULE FOR TC 'ITEM_DATA'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: COPY DDIC-TABLE TO ITAB
MODULE ITEM_DATA_INIT OUTPUT.
   IF G_ITEM_DATA_COPIED IS INITIAL.
*&SPWIZARD: COPY DDIC-TABLE 'VBAP'
*&SPWIZARD: INTO INTERNAL TABLE 'g_ITEM_DATA_itab'
*    SELECT * FROM VBAP
*       INTO CORRESPONDING FIELDS
*       OF TABLE G_ITEM_DATA_ITAB.
*    G_ITEM_DATA_COPIED = 'X'.
     REFRESH CONTROL 'ITEM_DATA' FROM SCREEN '4000'.
   ENDIF.
   ITEM_DATA-LINES = G_T_YREC_TAB_LINES + 15.
ENDMODULE.
*&SPWIZARD: OUTPUT MODULE FOR TC 'ITEM_DATA'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MOVE ITAB TO DYNPRO
MODULE ITEM_DATA_MOVE OUTPUT.
   MOVE-CORRESPONDING G_ITEM_DATA_WA TO VBAP.
ENDMODULE.
*&      Module  STATUS_4000  OUTPUT
*       text
MODULE STATUS_4000 OUTPUT.
   SET PF-STATUS 'APAR'.
*  REFRESH G_ITEM_DATA_ITAB.
    GV_NUM = 1.
*  SET TITLEBAR 'xxx'.
ENDMODULE.                 " STATUS_4000  OUTPUT

Similar Messages

  • How to generate a mail on click of save button on Module pool program.

    Hi geeks,
    I am developing a Module pool having table control..The table control is supposedly having  10 columns. The user enters values in first 5 colmns and when he saves , a mail should be  generated to his hierarchy indicatiing it .How could this be achieved?? . The mail should just have  details like the i/p entered in screen . If possible explain through  a code snippet..
    Thanks in advance
    Regards,
    Navin

    when you press save button, get the sy-ucomm and write the below code. Capture the entries from
    table control and send the mail.
      DATA : it_objpack   TYPE STANDARD TABLE OF sopcklsti1 ,
             it_objtxt    TYPE STANDARD TABLE OF solisti1 ,
             it_objbin    TYPE STANDARD TABLE OF solisti1 ,
             it_reclist   TYPE STANDARD TABLE OF somlreci1 ,
             wa_doc_chng  TYPE sodocchgi1,
             wa_objhead   TYPE soli_tab,
             l_attachment TYPE i,
             l_testo      TYPE i.
      DATA:   wa_objpack TYPE sopcklsti1,
              wa_objtxt TYPE solisti1 ,
              wa_objbin TYPE  solisti1 ,
              wa_reclist TYPE  somlreci1 .
      CLEAR:  wa_reclist,
              wa_objhead,
              wa_objtxt,  it_objtxt[],
              wa_objbin,  it_objbin[],
              wa_objpack, it_objpack[].
      CLEAR wa_objbin.
      REFRESH it_objbin.
      it_objbin[] = gt_mess_att[].
      DESCRIBE TABLE it_objbin LINES l_attachment.
      LOOP AT it_message INTO wa_message.
        wa_objtxt = wa_message. APPEND wa_objtxt TO it_objtxt.
      ENDLOOP.
      DESCRIBE TABLE it_objtxt LINES l_testo.
      wa_doc_chng-obj_name = 'Test'.
      wa_doc_chng-expiry_dat = sy-datum + 10.
      CONCATENATE 'Send '
                    INTO wa_doc_chng-obj_descr .
      wa_doc_chng-sensitivty = 'P'.
      wa_doc_chng-obj_prio = '1'.
      wa_doc_chng-doc_size = l_testo * 255.
      CLEAR wa_objpack-transf_bin.
      wa_objpack-head_start = 1.
      wa_objpack-head_num   = 0.
      wa_objpack-body_start = 1.
      wa_objpack-body_num   = l_testo.
      wa_objpack-doc_type   = 'RAW'.
      APPEND wa_objpack TO it_objpack.
      CLEAR wa_reclist.
      wa_reclist-copy = 'X'.
      IF wa_email IS NOT INITIAL.
        wa_reclist-receiver = wa_email-value1.
        wa_reclist-express  = 'X'.
        wa_reclist-rec_type = 'U'.
        wa_reclist-notif_del = 'X'.
        wa_reclist-notif_ndel = 'X'.
        APPEND wa_reclist TO it_reclist.
        CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
          EXPORTING
            document_data              = wa_doc_chng
            put_in_outbox              = 'X'
            commit_work                = 'X'
          TABLES
            packing_list               = it_objpack
            object_header              = wa_objhead
            contents_bin               = it_objbin
            contents_txt               = it_objtxt
            receivers                  = it_reclist
          EXCEPTIONS
            too_many_receivers         = 1
            document_not_sent          = 2
            document_type_not_exist    = 3
            operation_no_authorization = 4
            parameter_error            = 5
            x_error                    = 6
            enqueue_error              = 7
            OTHERS                     = 8.
        IF sy-subrc <> 0.
          WRITE 'mail fail'.
        ENDIF.
      ENDIF.

  • How to define RADIO BUTTONS in MODULE POOL PROG.?

    Hi Experts,
    I need to keep the RADIO BUTTONS in 1000_screen of my_module_pool prog., like,
    I hv 2 fields in this screen, as expected, the first shuld hv DEFAULT selection.
    So, I just simply, dragged & dropped 2 radio buttons from left menu of the screen builder & given them the  names as
    R_SUMMARY
    R_DETAIL
    Then i executed the transaction, but, these above 2 fields are getting selected, as default??
    I know that, if its a REPORT prog. we can define as w/ a GROUP, then the 1st one is hv the default selection.
    so,
    1  - How to define RADIO BUTTONS in this screen of a module pool prog.
    2 - How to use these names in the prog.(PAI - i guess)?
    thanq
    Edited by: Srinivas on Jul 12, 2008 11:59 PM

    Hi Srinivas,
    Please check this link
    Re: urgent:Regd radio buttons in module pool
    http://saplab.blogspot.com/2007/10/sample-abap-program-for-module-pool_18.html
    http://****************/Tutorials/ABAP/Checkbox/page1.htm
    http://****************/Tutorials/ABAP/Checkbox/page2.htm
    Best regards,
    raam

  • How to Add F4 Help To a Screen Field In a Module Pool Program

    Hi Friends,
    1. How to Add F4 Help To a Screen Field In a Module Pool Program?
    2. How to select a single cell in ALV report output for interactive reporting ?
    Kindly give code example.
    regards,
    Pradeep

    Hi,
    Try using the fm 'F4IF_INT_TABLE_VALUE_REQUEST'.
    Refer the link below for selecting  single cell.
    alv
    Reward points if useful.
    Regards
    Rose

  • How to get the size of uploaded file in sap ABAP MODULE POOL PROGRAMMING

    Hello,
    I am using a fucntion module GUI UPLOAD to upload a file from pc to SAP .
    I want to upload the details of the file.
    i.e TYPE NAME AND SIZE of the file.
    I am unable to do so.
    Help me.
    Gaur Mayank

    Perhaps you could count this by yourself...
    You could approach the correct size by calculating the number of bytes contained in each rows of your table.
    For this you will first need to upload the file to a table of string, so that each field separator is counted.
    something like:
    DATA: lt_data TYPE STANDARD TABLE OF string,
          l_len TYPE i.
    FIELD-SYMBOLS <data> TYPE string.
    "... gui_upload to lt_data              
    DESCRIBE TABLE lt_data LINES l_len.
    l_len = ( l_len - 1 ) * 2.        "Count 2 bytes at end of each line for CRLF
    LOOP AT lt_data ASSIGNING <data>. "Add length of each line
        l_len = l_len + strlen( <data> ).
    ENDLOOP.
    WRITE: l_len.
    This for a single-byte codepage of course... you can use charlen in order to have the length of one char on your system, here I'm asuming it is 1.
    Kr,
    Manu.

  • Navigation problem with back button in module pool

    Hi everyone,
    I have a scenario in module pool programming in which i need help.
    I have an i/p filepath screen where the user inputs his/her file and clicks on validate button provided in the toolbar.
    After that it goes to the next screen which displays all the messages(error/success).
    After I click on Execution button it goes to next screen displaying all the created data.
    Now when I click on back button I want it to go to the i/o filepath screen.
    Please give me your comments on this.
    Leave to screen XXXX is giving me dump so any other options plz let me know.
    Thanks in advance.

    Hi Amit,
       Lets say you have 3 screens 100, 200 and 300. screen 100 has you input file path and 200 shows the message and 300 shows the created data.
    Now in PAI of 300 write as below.
    IN the screen as below
    MODULE USER_COMMAND_300_EXIT AT EXIT COMMAND.
    In the include as below
    MODULE USER_COMMAND_300_EXIT.
    CASE sy-ucomm.
    WHEN 'BACK'.   " OK code for BACK button.
    CALL SCREEN 100.
    WHEN 'CANCEl'.
    LEAVE TO SCREEN 0
    ENDCASE.
    ENDMODULE.
    Please revert if you still face problems.
    Regards,
    Praveenkumar T

  • How to create radio button in module pool

    Hi All,
    Please tell me step by step procedure for creating radio button in module pool.give code for two radiobutton and at a time only one should be selected.
    Thanks
    Narendra

    Hi naren,
    In the layout of screen painter click on radiobutton option in the left icons and create in the layout and give name as Radio1 and again select the radiobutton icon and create another and give the name as radio2 and by dragging the cursor select the 2 radiobuttons and goto menubar->edit->grouping->radiobuttons grouping->define.
    Double clcik on the 2 radiobuttons and give FCT code for the coding purpose of the 2 radiobuttons.
    Cheers!!
    VEnk@

  • How to find out no of customize module pool program in SAP

    Hi All,
    I want to find out number of customize module pool program, Workflow, number of changes made to standard SAP objects (SPAU/SPDD in our SAP system
    Regards
    Sagar

    Join the table with TRDIR to find module-pool program (TRDIR-SUBC = 'M')
    Regards,
    Raymond
    Aravind. R  was faster...
    Edited by: Raymond Giuseppi on Jun 18, 2009 12:56 PM

  • How to create a gui pf status and guititle in module pool programming?

    hi frnds,
    how to create a gui pf status and gui title in module pool programming?
    my problem is i created a screen and wen execute the screen by a tcode.am nt able to activate SAVE BACK EXIT CANCEL COMMANDS?.how to do this can any one explain in detail procedure?
    plz gve step by step process.

    Hi,
    For Title:In PBO...just write
    SET TITLEBAR 'ZTITLE'.
    double click on 'ZTITLE'....give whatever title u want...save it...activate...and check...reward points if useful...
    PF means FUNCTION CODE
    ex; set pf-status 'zrstatus'.
    double click on the zrstatus expand the application server ,
    at the time of execution the default menu(ie system,help),application toolbar buttons like enter,help etc and function keys(by default there will be no function keys)as are there on the normal
    will appear on the screen.
    Details:
    PF-STATUS is used to set the GUI Status of a screen, ie you can control the options on your menu bar, application toolbar, the function keys assigned to various options etc.
    Implementing the status for a screen can be done in 2 ways:
    1) Create the GUI status using the object list of the program or by using the transaction SE41. Then, assign it to the screen using SET PF-STATUS statement.
    2) Create the GUI status by means of forward navigation, ie, use the SET PF-STATUS 'XXX' statement where 'XXX' is the name of the GUI status and double click on it to create it.
    Status names can have a maximum of 20 characters.
    After assigning a GUI status to a screen, this is inherited to all subsequent screens. In order to have a different status for each of the subsequent screens, you have to set a separate status for each screen.
    In transaction SE41,
    1) Give the program name and the status name and click on the Create button.
    2) Go to 'Function keys' and expand.
    3) On top of the save icon type SAVE, on top of the back icon type BACK, on top the the exit icon type EXIT etc ie on top of all the icons that you want to use, type the respective names that you want to give.
    Whatever you have typed now becomes the function codes of these icons and can be used in your program.
    For example you have a screen 100.
    In the 'Element list' tab of the screen, give "ok_code" as the name where "OK" is the type of screen element. Activate screen.
    The flow logic for the screen looks like this:
    PROCESS BEFORE OUTPUT.
    MODULE STATUS_0100.
    PROCESS AFTER INPUT.
    MODULE USER_COMMAND_0100.
    Create the modules STATUS_0100 and USER_COMMAND_0100 in the main program by simply double clicking on them.
    The code for these modules can be something like this:
    MODULE status_0100 OUTPUT.
    SET PF-STATUS 'Example'. "Example is the name of the GUI status
    ENDMODULE.
    MODULE user_command_0100 INPUT.
    CASE ok_code.
    WHEN 'SAVE'.
    "call a subroutine to save the data or give statements to save data.
    WHEN 'BACK'.
    LEAVE TO SCREEN 0.
    WHEN 'EXIT'.
    LEAVE PROGRAM.
    ENDCASE.
    ENDMODULE.
    Regards,
    Shiva Kumar (Reward If helpful)

  • Can anyone tell me how to get rid of tlb search? it unfortunately entered into my mac. Whenever I use safari, a pop-up window opens with some ads. Please help me to find a way to remove this malware.

    Can anyone tell me how to get rid of tlb search? It unfortunately entered into my mac. Whenever I use safari, a pop-up window opens with some ads. Please help me to find a way to remove this malware.

    You installed the "DownLite" trojan, perhaps under a different name. Remove it as follows.
    Malware is constantly changing to get around the defenses against it. The instructions in this comment are valid as of now, as far as I know. They won't necessarily be valid in the future. Anyone finding this comment a few days or more after it was posted should look for more recent discussions or start a new one.
    Back up all data.
    Triple-click anywhere in the line below on this page to select it:
    /Library/LaunchAgents/com.vsearch.agent.plist
    Right-click or control-click the line and select
              Services ▹ Reveal in Finder (or just Reveal)
    from the contextual menu.* A folder should open with an item named "VSearch" selected. Drag the selected item to the Trash. You may be prompted for your administrator login password.
    Repeat with each of these lines:
    /Library/LaunchDaemons/com.vsearch.daemon.plist
    /Library/LaunchDaemons/com.vsearch.helper.plist
    /Library/LaunchDaemons/Jack.plist
    Restart the computer and empty the Trash. Then delete the following items in the same way:
    /Library/Application Support/VSearch
    /Library/PrivilegedHelperTools/Jack
    /System/Library/Frameworks/VSearch.framework
    ~/Library/Internet Plug-Ins/ConduitNPAPIPlugin.plugin
    Some of these items may be absent, in which case you'll get a message that the file can't be found. Skip that item and go on to the next one.
    From the Safari menu bar, select
              Safari ▹ Preferences... ▹ Extensions
    Uninstall any extensions you don't know you need, including any that have the word "Spigot" or "Conduit" in the description. If in doubt, uninstall all extensions. Do the equivalent for the Firefox and Chrome browsers, if you use either of those.
    This trojan is distributed on illegal websites that traffic in pirated movies. If you, or anyone else who uses the computer, visit such sites and follow prompts to install software, you can expect much worse to happen in the future.
    You may be wondering why you didn't get a warning from Gatekeeper about installing software from an unknown developer, as you should have. The reason is that the DownLite developer has a codesigning certificate issued by Apple, which causes Gatekeeper to give the installer a pass. Apple could revoke the certificate, but as of this writing, has not done so, even though it's aware of the problem. This failure of oversight is inexcusable and has compromised both Gatekeeper and the Developer ID program. You can't rely on Gatekeeper alone to protect you from harmful software.
    *If you don't see the contextual menu item, copy the selected text to the Clipboard by pressing the key combination  command-C. In the Finder, select
              Go ▹ Go to Folder...
    from the menu bar and paste into the box that opens by pressing command-V. You won't see what you pasted because a line break is included. Press return.

  • Moving LR5 catalog (Irdata & Ircat) to a new hard drive and photos. Lost all meta data - How do I move meta data along with catalog?

    I moved LR5 catalog (Irdata & Ircat) to a new hard drive and photos. Lost all meta data - How do I move meta data along with catalog?
    The meta data for each image is missing.
    I have over 2,000 images. I don't want to go back through each image and add meta data.
    Is there some way to move everything?

    No, do not re-import your images. I assume you can see the thumbnails in the library module, just cannot access the full images, right? If this is the case there should be an exclamation mark in the top right corner of every one of your pictures and you only have to tell LR where the images are now.
    Click the exclamation mark of one of the images and a dialog window should pop-up, telling you that LR cannot find the file, but with an option to locate it. Press "Locate" and navigate to the folder on your new HD where the file is. If in the new external HD you kept the same folder structure that you had on the internal disk, LR will be able to find all your images and re-link them to the database without further intervention.

  • How to create popup window with radio buttons and a input field

    Hi Guys,
    Can somebody give some directions to create a stand alone program to create a window popup with 2 radio button and an input field for getting text value. I need to update the text value in a custom table.
    I will call this stand alone program from an user exit. 
    Please give me the guidance how go about it or please give any tutorial you have.
    Thanks,
    Mini

    Hi,
    There are multiple aspects of your requirements. So let's take them one at a time.
    You can achieve it in the report program or you can use a combination of the both along.
    You can create a standalone report program using the ABAP Editor (SE38). In the report program you can call the SAP Module pool program by CALL Screen <screen number>. And then in the module pool program you an create a subscreen and can handle the window popup with 2 radio button and an input field for getting the text.
    For help - Module Pool programs you can search in ABAP Editor with DEMODYNPRO* and you will ge the entire demo code for all dialog related code.
    For Report and other Module pool help you can have a look at the following:
    http://help.sap.com/saphelp_nw70/helpdata/en/47/a1ff9b8d0c0986e10000000a42189c/frameset.htm
    Hope this helps. Let me know if you need any more details.
    Thanks,
    Samantak.

  • How to download a module pool program along with its screens ,includes etc

    Hello Experts,
    How can I  download a module pool program along with its screens ,includes etc to my presentatio0n server and then upload it back when needed.
    When  I searched , I got a program which is satisfying my partial requirement because it only downloads
    the module pool program first(ie.just the main program)  and then the include needs to be downloaded to the system separately.Screen and statuses wont be downloaded.
    Is there a way to download all the objects for the corresponding program store in some format and then upload it back when required.
    Please Help.

    Hello,
    Go to the layout of the modulepool to be uploaded or downloaded. choose the menu path utilities->upload/download.
    The same file which is downloaded can be used to upload
    1.the screen flow logic and
    2.layout
    Using this you can upload as well as download
    Cheers,
    Vasanth

  • How to get string from jtextpane along with its attributes

    sir,
    How to get string from jtextpane along with its attributes
    i,e font,size,style,color etc.
    please help me out.
    my mail id is [email protected]

    JTextPane extends JTextComponent
    JTextComponent.getDocument()
    a Document is a set of Element, see Document.getRootElements(). Each Element has attributes, stored within an AttributSet object see Element.getAttributes()
    a Document can also be rendered as a String, see Document.getText( offest, length ), use it with 0 and Document.getLength() as parameters.

  • I am having problems when i have minimized windows and try to open a new window it will open all minimized windows along with the new window. It just changed when mozzilla updated. It did not do this before the update.

    I am having problems when i have minimized windows and try to open a new window it will open all minimized windows along with the new window. It just changed when mozzilla updated. It did not do this before the update. Before the update if i had minimized windows they would stay minimized when i opened a new window. Please help ,I would guess it is just a setting somewhere but i cannot figure out where the setting is. Thanks jason

    This issue can be caused by the ASK.com Toolbar.
    Start Firefox in <u>[[Safe Mode]]</u> to check if one of the extensions or if hardware acceleration is causing the problem (switch to the DEFAULT theme: Firefox/Tools > Add-ons > Appearance/Themes).
    *Don't make any changes on the Safe mode start window.
    *https://support.mozilla.org/kb/Safe+Mode
    *https://support.mozilla.org/kb/Troubleshooting+extensions+and+themes

Maybe you are looking for