Quantcast
Channel: SCN: Message List - ABAP Connectivity
Viewing all articles
Browse latest Browse all 3125

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

$
0
0

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


*********************************pai************************



*&---------------------------------------------------------------------*
*&  Include           ZSD_SO_CHANGES2_PAI
*&---------------------------------------------------------------------*

*&SPWIZARD: INPUT MODULE FOR TC 'ITEM_DATA'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE ITEM_DATA_MODIFY INPUT.

* Update data in Table Control


  MOVE : VBAP-MATNR  TO G_ITEM_DATA_WA-MATNR,
         VBAP-KWMENG TO G_ITEM_DATA_WA-KWMENG,
         VBAP-VRKME  TO G_ITEM_DATA_WA-VRKME.

   IF VBAP-MATNR ne space.
*  if sy-index eq 0.
*    REFRESH G_ITEM_DATA_ITAB.
*    GV_NUM = 1.
*    ENDIF.

G_ITEM_DATA_WA-POSNR = G_ITEM_DATA_WA-POSNR + 10.

* Control the lines changed in table Control
     MODIFY G_ITEM_DATA_ITAB
       FROM  G_ITEM_DATA_WA
      INDEX ITEM_DATA-CURRENT_LINE .

     IF sy-subrc <> 0.
* Control the lines added in Table control
       APPEND G_ITEM_DATA_WA TO G_ITEM_DATA_ITAB.

     ENDIF.

*    GV_NUM = GV_NUM + 1.
     CLEAR:VBAP-MATNR.

     ENDIF. " Endif of VBAP-MATNR

*"  ENDWHILE.


*LOOP AT G_ITEM_DATA_ITAB INTO G_ITEM_DATA_WA.
*  G_ITEM_DATA_WA-POSNR = SY-INDEX * 10.
*  MODIFY
*  APPEND G_ITEM_DATA_WA TO G_ITEM_DATA_ITAB.
*
*  ENDLOOP.

*    INDEX ITEM_DATA-CURRENT_LINE.
ENDMODULE.                    "ITEM_DATA_MODIFY INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_4000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_4000 INPUT.
    BREAK HSDEV.
*Generic function operations
   CASE sy-ucomm .
     WHEN 'EXIT'.
       SET SCREEN 0.
       LEAVE SCREEN.
     WHEN 'BACK'.
       CALL TRANSACTION 'ZVA01'.
     WHEN 'CANC'.
       SET SCREEN 0.
       leave PROGRAM.
       LEAVE SCREEN.

     WHEN 'SCHE'.
*      SET SCREEN 0.
*      LEAVE SCREEN.

CALL FUNCTION 'ZSCHEME_DETERMINATION'
   EXPORTING
     I_KUNNR                = kna1-kunnr
* IMPORTING
*   E_VALUE                =
   TABLES
     G_ITEM_DATA_ITAB       G_ITEM_DATA_ITAB
           .




     WHEN 'SIMU'.
*      CALL TRANSACTION 'ZVA01'.
     WHEN 'POST'.
*      CALL TRANSACTION 'ZVA01'.
   ENDCASE.
ENDMODULE.                 " USER_COMMAND_4000  INPUT
*&---------------------------------------------------------------------*
*&      Module  INITIALIZE_DATA  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE INITIALIZE_DATA INPUT.

CLEAR : G_ITEM_DATA_WA, G_ITEM_DATA_WA-POSNR.

ENDMODULE.                 " INITIALIZE_DATA  INPUT
*&---------------------------------------------------------------------*
*&      Module  POSNR_UPDATE  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE POSNR_UPDATE INPUT.

DATA WA_POSNR TYPE POSNR.

CLEAR : G_ITEM_DATA_WA, WA_POSNR.

LOOP AT G_ITEM_DATA_ITAB INTO G_ITEM_DATA_WA.

    WA_POSNR = WA_POSNR + 10.

     G_ITEM_DATA_WA-POSNR = WA_POSNR.

     MODIFY G_ITEM_DATA_ITAB FROM G_ITEM_DATA_WA
                             INDEX SY-TABIX
                      TRANSPORTING POSNR.

   ENDLOOP.

ENDMODULE.                 " POSNR_UPDATE  INPUT


***********************flow



PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'ITEM_DATA'
   MODULE ITEM_DATA_INIT.
*&SPWIZARD: MODULE ITEM_DATA_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE ITEM_DATA_CHANGE_COL_ATTR.
   LOOP AT   G_ITEM_DATA_ITAB
        INTO G_ITEM_DATA_WA
        WITH CONTROL ITEM_DATA
        CURSOR ITEM_DATA-CURRENT_LINE.
*&SPWIZARD:   MODULE ITEM_DATA_CHANGE_FIELD_ATTR
     MODULE ITEM_DATA_MOVE.
   ENDLOOP.

  MODULE STATUS_4000.
*
PROCESS AFTER INPUT.

   MODULE INITIALIZE_DATA.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'ITEM_DATA'
   LOOP AT G_ITEM_DATA_ITAB.
     CHAIN.
       FIELD VBAP-POSNR.
       FIELD VBAP-MATNR.
       FIELD VBAP-KWMENG.
       FIELD VBAP-VRKME.
       MODULE ITEM_DATA_MODIFY ON CHAIN-REQUEST.
     ENDCHAIN.
   ENDLOOP.

     MODULE POSNR_UPDATE.
*&SPWIZARD: MODULE ITEM_DATA_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE ITEM_DATA_CHANGE_COL_ATTR.
  MODULE USER_COMMAND_4000.




Viewing all articles
Browse latest Browse all 3125

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>