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

Display constant values

Former Member
0 Likes
1,123

Hi all,

      Im developing a report "loading list"  in which im declaring constant values for the field called ESI.

In the output im able to get those values,  but for the schedule lines im not getting those values.

For schedule lines it shows "0". how can i display for all the lines.

Thanks in advance.

Rgds,

Sam.

10 REPLIES 10
Read only

Former Member
0 Likes
1,066

Debug ur code u will get the issue.Please paste your code.

Read only

madhu_vadlamani
Active Contributor
0 Likes
1,066

Hi Samuel,

This is a like a basic question.Check from declaration to out put.You will come know where it went wrong.It is difficult for anybody if you ask a question from raw.

Regards,

Madhu.

Read only

Former Member
0 Likes
1,066

we will come to know, only after seeing code.

Read only

PeterJonker
Active Contributor
0 Likes
1,066

Impossible to answer a question like this. You need to supply more details or source code.

Read only

0 Likes
1,066

report ZLOADING.
*tables:
TABLES: vbak, vbap, vbuk, vbup, VBEP, AEOI,AENR, ZOSRGTN.

SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME title text001.
      select-OPTIONS saleord for vbak-vbeln.
      select-OPTIONS custmr for vbak-kunnr.
      select-OPTIONS partno for vbap-matnr.
      SELECT-options Ostatus for vbup-GBSTA.
      SELECT-options status for vbup-lfSTA.

      PARAMETER Plant TYPE vbak-vkorg DEFAULT 'SGTN'.
SELECTION-SCREEN END OF BLOCK 2.

TYPE-POOLS: SLIS.
types:
begin of osr1,
   POSEX TYPE VBAP-POSEX,
   AENNR TYPE AEOI-AENNR,
   REVLV TYPE AEOI-REVLV,
   REVLV1 TYPE AEOI-REVLV,
   SALE_ORDER_NO type vbap-vbeln,
   SALE_ORDER_DATE type vbak-audat,
   ORDER_TYPE TYPE VBAK-AUART,
   LINE_ITEM type vbap-posnr,
   SLNO TYPE VBEP-ETENR,
   CUSTOMER type vbak-kunnr,
   PLANT type vbap-werks,
   WO_NO(20) type C,
   PO_NO type vbak-bstnk,
   PO_DATE type vbak-bstdk,
   PO_LINE_ITEM(4) type c,
   PART_NO type vbap-matnr,
   REV(10) type c,
   DESCRIPTION type tline-tdline,
   MAINGRP TYPE MARA-SPART,
   SUBGRP type MARA-ZZMAT_SUBGRP,
   XTYPE type MARA-ZZMAT_TYPE,
   MODEL type MARA-ZZMAT_MODEL,
   XSIZE type MARA-GROES,
   TRIM type MARA-ZZMAT_TRIM,
   ENDCON TYPE MARA-ZZMAT_ENDCON,
   XTEMP TYPE MARA-ZZMAT_TEMP,
   PRES TYPE MARA-ZZMAT_PRES,
   PRDSPEC TYPE MARA-ZZMAT_PRDSPEC,
   PERFREQ TYPE MARA-ZZMAT_PERFREQ,
   GRP2 TYPE MARA-ZZMAT_GRP2,
   SHIPMENT_MODE(20) type c,
   ORDER_QTY type P, " DECimals 3,
   sl_ORDER_QTY type P, " DECimals 3,
   PO_STATUS(20) type c,
   O_status(20) type c,
   FMC_EX_WORKS_DAT type d,
   FMC_EX_WORKS_MON(50) type c,
   GTN_AGREED_DATE type D,
   GTN_AGREED_MONTH(50) type c,
   QTY_OPEN type P, " DECimals 3,
   sl_qty_open type p,
   NEW_PRICE type P DECimals 2,
   UNIT_PRICE type P DECimals 2,
   TOTAL_XY type P DECimals 2,
   TOTAL_PRICE type p DECimals 2,
   REV_COMMIT_DATE type d,
   REV_COMMIT_MONTH1(50) type c,
   REVISION(10) type c,
   STATUS(20) type c,
   DELAY_DAYS(4) type n,
   DELAY_REASON(200) type c,
*  ASSY_PLAN_DATE type D,
   reason_4_rej type vbap-abgru,
   org type vbak-vkorg,
   DN_STREAM_REMARK type char255,
   UP_STREAM_REMARK type char255,
   SHIPPING_REMARKS type Char255,
   GEN_REMARKS(40) type C,
   FMC_REMARKS type char255,
   HILITE(4) type C,
   NO_DAYS TYPE N,
   FC_qty type n,
   NF_qty type n,
   FC_val type P DECIMALS 2,
   NF_val type P DECIMALS 2,
   week type n,
   FCNF(5) type c,
   esi TYPE P,
   esitotal type p,
   ZZMAT_SUBGRP TYPE mara-ZZMAT_SUBGRP,
end of osr1.

types:
       BEGIN OF shiprem ,
         vbeln type vbrp-vbeln,
         fkdat TYPE vbrk-fkdat,
         fklmg TYPE vbrp-fklmg,
         qty(8) type n,
         vbtyp type vbfa-vbtyp_N,
         fksto type vbrk-fksto,
         matnr type vbrp-matnr,
         invcount type i,
       END OF shiprem.

data:
       t_shprem TYPE TABLE OF shiprem,
       wa_shprem TYPE shiprem,
       XMATNR(18) TYPE C,
       fmcdate(35) TYPE c,
       fmcdt type d,
       i_xtline type TABLE OF tline,
       wa_xtline TYPE tline,
       xname like THEAD-TDNAME,
       int TYPE i,
       cs TYPE i,
       op_qty type p.


DATA: ok_code TYPE sy-ucomm,
       save_ok LIKE ok_code,
       output(8) TYPE c,
       xs_o_no type zosrgtn-s_o_no,
       xline_item type zosrgtn-line_item,
       QTY_DIFF(8) TYPE N,
       lncnt type i.


DATA:
       IT_OSR type table of osr1,
       ITab_OSR type table of osr1,
       wa_osr type osr1,
       wa_osr2 type osr1,
       it_osr1 type table OF zosrGTN,
       wa_osr1 TYPE zosrGTN.


DATA:
       i_fieldcat TYPE slis_t_fieldcat_alv,
       WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

data:
       GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
       G_EXIT_CAUSED_BY_CALLER,
       GS_EXIT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER,
       G_REPID LIKE SY-REPID,
       commitdatediff TYPE i,
       QTYDIFF TYPE I,
*      partno type TABLE OF vbeln,
       wapart type vbeln,
       waline type posnr,
       waslno type vbep-etenr,
       agreed type d.
*
DATA:
       GT_EVENTS      TYPE SLIS_T_EVENT,
       GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
       G_STATUS_SET   TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',
       G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
       G_TOP_OF_PAGE  TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
       G_TOP_OF_LIST  TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST',
       ls_sort TYPE slis_sortinfo_alv ,
       IT_SORT TYPE  slis_t_sortinfo_alv ,
       G_END_OF_LIST  TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'.

DATA: GS_VARIANT LIKE DISVARIANT,
       G_SAVE.

DATA  XS(20) TYPE C.
       G_REPID = SY-REPID.
       gs_layout-info_fieldname = 'HILITE'.
       PERFORM LAYOUT_INIT USING GS_LAYOUT.
       PERFORM EVENTTAB_BUILD USING GT_EVENTS[].

       GS_VARIANT-REPORT = G_REPID.
       G_SAVE           = 'A'.

START-OF-SELECTION.
   PERFORM f_read_data.
END-OF-SELECTION.

PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

perform fieldcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING


        I_BACKGROUND_ID    = 'ALV_BACKGROUND'
        I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
        i_buffer_active    = 'X'
        I_CALLBACK_PROGRAM = G_REPID
        I_STRUCTURE_NAME   = 'GRSTAT'
        IS_LAYOUT          = GS_LAYOUT
        IT_FIELDCAT        = I_FIELDCAT[]
        IS_VARIANT         = GS_VARIANT
*       IT_SORT            = IT_SORT
        IT_EVENTS          = GT_EVENTS[]
        I_SAVE             = 'A'

   IMPORTING
        E_EXIT_CAUSED_BY_CALLER = G_EXIT_CAUSED_BY_CALLER
        ES_EXIT_CAUSED_BY_USER  = GS_EXIT_CAUSED_BY_USER
   TABLES
        T_OUTTAB = IT_OSR

   EXCEPTIONS
        PROGRAM_ERROR = 1
        OTHERS        = 2.


FORM user_command USING ucomm LIKE sy-ucomm

     selfield TYPE slis_selfield.
     data lv_ucomm type sy-ucomm.
     lv_ucomm = sy-ucomm.
     CASE lv_ucomm.
       WHEN '&DATA_SAVE'.
       PERFORM OSRUPDATE.
     endcase.
endform.

FORM f_read_data.
DATA: str1 TYPE string,
       str2 TYPE string,
       str3 TYPE string,
       textx TYPE string,
       itab TYPE TABLE OF string,
       wa type string, slen type i, cc TYPE i, kk TYPE i,
       invdate TYPE d,
       invqty TYPE P DECIMALS 3,
       xmatnr(70) type c,
       xwerks type werks.

   select VBAP~vbeln VBAP~posnr VBAP~POSEX VBAK~AUART
       into (wa_osr-sale_order_no, wa_osr-line_item, WA_OSR-POSEX, WA_OSR-ORDER_TYPE)
       from VBAP INNER JOIN VBAK
       ON VBAP~VBELN = VBAK~VBELN
       WHERE vbap~vbeln in  saleord
       and vbap~matnr in partno
       and vbak~kunnr in custmr
       and VBAK~AUART = 'ZORE'.
*      where  LFSTA <> 'c'.
*      and
       APPEND  wa_osr to IT_OSR.
   endselect.
*
clear it_osr1.
select * from zosrgtn into CORRESPONDING FIELDS OF wa_osr1
   where s_o_no in saleord.
   append wa_osr1 to it_osr1.
   xmatnr = wa_osr1-wo_no.
endselect.

loop at IT_OSR into wa_osr.

       CLEAR WA_OSR1.
       xs_o_no = wa_osr-sale_order_no .
       shift xs_o_no LEFT DELETING LEADING '0'.
       CONCATENATE xs_o_no wa_osr-line_item into xmatnr.

       select single * from zosrgtn into CORRESPONDING FIELDS OF wa_osr1
         where s_o_no = XS_O_NO
           and line_item = wa_osr-LINE_ITEM
           and s_l_no eq '000000'
           OR s_l_no is NULL.
       wa_osr-wo_no             = wa_osr1-wo_no.
       wa_osr-SHIPMENT_MODE     = wa_osr1-SHP_MODE.
       wa_osr-PO_STATUS         = wa_osr1-PO_STAT.
       wa_osr-FMC_EX_WORKS_DAT  = wa_osr1-FMC_DATE.
       wa_osr-FMC_EX_WORKS_MON  = wa_osr1-FMC_MONTH.
       wa_osr-GTN_AGREED_DATE   = wa_osr1-GTN_DATE.
       wa_osr-GTN_AGREED_MONTH  = wa_osr1-GTN_MONTH.
       wa_osr-REV_COMMIT_DATE   = wa_osr1-REV_COM_DAT.
       wa_osr-REV_COMMIT_MONTH1 = WA_OSR1-REV_COMMIT_MONTH.
       wa_osr-REVISION          = wa_osr1-REVISION.
       wa_osr-DELAY_DAYS        = wa_osr1-DELAY_DAYS.
       wa_osr-DELAY_REASON      = wa_osr1-DELAY_REASON.
       wa_osr-DN_STREAM_REMARK  = wa_osr1-DN_STR_REM.
       wa_osr-UP_STREAM_REMARK  = wa_osr1-UP_STR_REM.
       wa_osr-GEN_REMARKS       = wa_osr1-GEN_REM.
       WA_OSR-FC_QTY            = WA_OSR1-fc_QUAN.
       WA_OSR-NF_QTY            = WA_OSR1-NF_QUAN.
       wa_osr-esi               = wa_osr1-esi_fig.
       wa_osr-esitotal          = wa_osr1-esi_tot.

         select SINGLE NETPR NETWR INTO (WA_OSR-UNIT_PRICE, WA_OSR-TOTAL_PRICE)
           FROM VBAP WHERE VBELN = WA_OSR-SALE_ORDER_NO AND POSNR = WA_OSR-LINE_ITEM.

         IF SY-SUBRC <> 0.
           WA_OSR-UNIT_PRICE = WA_OSR1-UNIT_PRICE.
           WA_OSR-TOTAL_PRICE = WA_OSR1-XTOTAL.
           WA_OSR-FC_VAL = WA_OSR1-FC_VALUE.
           WA_OSR-NF_VAL = WA_OSR1-NF_VALUE.
           WA_OSR-esitotal = WA_OSR1-esi_tot.
          ENDIF.

          select single abgru
            into (wa_osr-reason_4_rej)
            from vbap
            where vbeln = wa_osr-sale_order_no
            and posnr =  wa_osr-line_item.

         select single vkorg
            into (wa_osr-org)
            from vbak
            where vbeln = wa_osr-sale_order_no.

         select single lfsta gbsta
           into (wa_osr-po_status, wa_osr-o_status)
           from vbup
           where vbeln = wa_osr-sale_order_no
           and posnr = wa_osr-LINE_ITEM.

         select single audat kunnr bstnk bstdk
           into (wa_osr-sale_order_date , wa_osr-customer , wa_osr-po_no , wa_osr-po_date)
           from vbak
           where vbeln = wa_osr-sale_order_no.
*          and audat in S_O_Date.

         select SINGLE matnr werks kwmeng " lsmeng
           into (wa_osr-part_no , wa_osr-plant ,  wa_osr-order_qty) " , wa_osr-qty_open)
           from vbap
           where vbeln = wa_osr-sale_order_no
           and posnr =  wa_osr-line_item.
*      ***********
       xmatnr+0(18) = wa_osr-part_no.
       xmatnr+18(4) = 'SGTN'.
       xmatnr+22(2) = 'EX'.
       xname = xmatnr.
       CLEAR I_XTLINE.
       CALL FUNCTION 'READ_TEXT'
         EXPORTING
              ID = '0001'
              LANGUAGE = 'E'
              NAME = XNAME
              OBJECT = 'MVKE'
         TABLES
              LINES = i_XTLINE
         EXCEPTIONS
             ID = 1
             LANGUAGE = 2
             NAME = 3
             NOT_FOUND = 4
            OBJECT = 5
           REFERENCE_CHECK = 6.


       LOOP AT i_XTLINE  into wa_xtline where tdline <> ' '.
         CONCATENATE wa_osr-description WA_xtline-TDLINE into wa_osr-description.
       endloop.

       if wa_osr-description is initial.
         wa_osr-description = '***** SALES TEXT NOT MAINTAINED'.
       ENDIF.

         select single ZZMAT_TYPE ZZMAT_MODEL GROES ZZMAT_TRIM ZZMAT_GRP2 ZZMAT_SUBGRP
           INTO (WA_OSR-XTYPE, WA_OSR-MODEL, WA_OSR-XSIZE, WA_OSR-TRIM, WA_OSR-GRP2, WA_OSR-SUBGRP)
           FROM MARA
           WHERE MATNR = WA_OSR-PART_NO.

        select single ZZMAT_ENDCON ZZMAT_TEMP ZZMAT_PRES ZZMAT_PRDSPEC ZZMAT_PERFREQ SPART
           INTO (WA_OSR-ENDCON, WA_OSR-XTEMP, WA_OSR-PRES, WA_OSR-PRDSPEC, WA_OSR-PERFREQ, WA_OSR-MAINGRP)
           FROM MARA
           WHERE MATNR = WA_OSR-PART_NO.

SELECT SINGLE ETENR
           INTO (WA_OSR-SLNO)
           FROM VBEP
           WHERE VBELN = WA_OSR-SALE_ORDER_NO
           AND POSNR = WA_OSR-LINE_ITEM.

         select max( revlv ) max( aennr )
         from aeoi
         into (wa_osr-revlv1, wa_osr-aennr)
         where objkt = wa_osr-part_no.

           if wa_osr-revlv = ' '.
              wa_osr-revlv = wa_osr-revlv1.
            endif.

       SELECT single EDATU
       INTO (WA_OSR-REV_COMMIT_DATE)
       FROM VBEP
       WHERE VBELN = WA_OSR-SALE_ORDER_NO
       AND POSNR = WA_OSR-LINE_ITEM
       and etenr = WA_OSR-SLNO.


           CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             exporting
               input = wa_osr-gtn_agreed_date
             importing
               output = wa_osr-gtn_agreed_month.
           wa_osr-gtn_agreed_month = wa_osr-gtn_agreed_month+3(8).

            CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             EXPORTING
              INPUT         = wa_osr-REV_COMMIT_DATE
             IMPORTING
              OUTPUT        = wa_osr-REV_COMMIT_MONTH1.
            wa_osr-REV_COMMIT_MONTH1 = wa_osr-REV_COMMIT_MONTH1+3(8).

         FMCDT = wa_osr-FMC_EX_WORKS_DAT.
         CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
         exporting
           input = fmcdt
         importing
           output = wa_osr-fmc_ex_works_mon.
           wa_osr-fmc_ex_works_mon = wa_osr-fmc_ex_works_mon+3(8).
*          ZOSRGTN-GEN_REM = WA_OSR-GEN_REMARKS.
       clear t_shprem.
*
        SELECT vbrp~vbeln vbrp~fklmg vbrp~matnr
         into (wa_shprem-vbeln , wa_shprem-fklmg, wa_shprem-matnr)
         from vbrp INNER JOIN vbrk on vbrp~vbeln = vbrk~vbeln
         where vbrp~aubel = wa_osr-sale_order_no
         and vbrp~aupos = wa_osr-line_item
         and vbrp~PSTYV ne 'HUPM' " PACKING MATERIAL
         and vbrp~fklmg <> 0.
*        and vbrk~fksto ne 'X'.
         APPEND wa_shprem to t_shprem.
*
       ENDSELECT.

       clear invqty.
       clear wa_osr-shipping_remarks.
       cc = 1.
       loop at t_shprem into wa_shprem. " where vbtyp eq 'J'.
         select single fkdat fksto
           into (wa_shprem-fkdat,wa_shprem-fksto)
           from vbrk
           where vbeln = wa_shprem-vbeln.

           wa_shprem-qty = wa_shprem-fklmg .
           if wa_shprem-fksto = 'X'.
             invqty = invqty - wa_shprem-qty.
           else.
             invqty = invqty + wa_shprem-qty.
           endif.
           shift wa_shprem-qty LEFT DELETING LEADING '0'.
           shift wa_shprem-vbeln LEFT DELETING LEADING '0'.
           write wa_shprem-fkdat DD/MM/YY to invdate.
           if wa_shprem-fksto ne 'X'.
           if cc = 1.
           CONCATENATE wa_osr-shipping_remarks  wa_shprem-vbeln ' / ' invdate ' / '  wa_shprem-qty  into wa_osr-shipping_remarks.
           else.
           CONCATENATE wa_osr-shipping_remarks  ' -- ' wa_shprem-vbeln ' / ' invdate ' / '  wa_shprem-qty  into wa_osr-shipping_remarks.
           endif.
              cc = cc + 1.
           endif.
       endloop  .

       textx = wa_osr-part_no.
       SPLIT textx AT '-' INTO: TABLE itab.
       loop at itab into wa.
       endloop.
       slen = sy-tfill.
       cc = 1.
       str1 = '' .

       loop at itab into wa.
           if cc = 1.
           str1 = wa.
           else.
           CONCATENATE str1 '-' wa  into str1.
           endif.
           kk = slen - 1.

           cc = cc + 1.
       endloop.

   wa_osr-qty_open = wa_osr-order_qty - invqty.

   wa_osr-fc_val = WA_OSR-UNIT_PRICE * wa_osr-fc_qty.
   wa_osr-nf_val = WA_OSR-UNIT_PRICE * wa_osr-nf_qty.


**case wa_osr-slno.
**
** when  0.
** write 'do nothing'.
** when others.
**
** Case WA_OSR-SUBGRP.
**  when 'GV ASSY' OR 'KIT ASSY'.
**
**        case WA_OSR-XSIZE+0(1).
**          when 0001.
**            wa_osr-esi = 77.
**            wa_osr2-esi = 77.
**          when 0002.
**            wa_osr-esi = 65.
**            wa_osr2-esi = 65.
**          when 0003.
**            wa_osr-esi = 104.
**            wa_osr2-esi = 104.
**          when 0004.
**           wa_osr-esi = 125.
**            wa_osr2-esi = 125.
**       endcase.
**
**
**  WHEN 'GATE'.
**
**        case WA_OSR-XSIZE+0(1).
**        when 0002.
**          wa_osr2-esi = 33.
**           wa_osr-esi = 33.
**        when 0003.
**          wa_osr2-esi = 64.
**          wa_osr-esi = 64.
**        when 0004.
**          wa_osr2-esi = 81.
**          wa_osr-esi = 81.
**        endcase.
**
**  WHEN 'SEAT'.
**
**        case WA_OSR-XSIZE+0(1).
**        when 0002.
**          wa_osr2-esi = 16.
**
**         when 0003.
**          wa_osr2-esi = 20.
**
**        when 0004.
**          wa_osr2-esi = 22.
**
**        endcase.
**  when OTHERS.
**          wa_osr2-esi = 99.
**          wa_osr-esi = 99.
**  Endcase.
**
** ENDCASE.


*MODIFY IT_OSR FROM WA_OSR.
if wa_osr-rev_commit_date is not initial.
   if wa_osr-gtn_agreed_date is not INITIAL.
         wa_osr-delay_days = wa_osr-REV_COMMIT_DATE - wa_osr-gtn_agreed_date.

       IF wa_osr-delay_days <= 0.
         wa_osr-status = 'ON SCHEDULE'.
       ELSEIF wa_osr-delay_days > 0.
         if wa_osr-delay_days <= 365.
           wa_osr-status = 'DELAY'.
         endif.
       ENDIF.
       if wa_osr-REV_COMMIT_DATE < wa_osr-gtn_agreed_date.
         wa_osr-status = 'ON SCHEDULE'.
         wa_osr-delay_days = 0.
       endif.
   else.
         wa_osr-delay_days = '0'.

   endif.
else.
   wa_osr-delay_days = '0'.
endif.

if wa_osr-delay_days > '365'.
   wa_osr-delay_days = '0'.
endif.

  QTYDIFF = WA_OSR-ORDER_QTY - WA_OSR-QTY_OPEN.

  IF  WA_OSR-PO_STATUS = 'A'.
    WA_OSR-PO_STATUS = 'NOT DELIVERED'.
  ELSEIF WA_OSR-PO_STATUS = 'B'.
    WA_OSR-PO_STATUS = 'PARTIALLY DELIVERED'.
  ELSEIF WA_OSR-PO_STATUS = 'C'.
    WA_OSR-PO_STATUS = 'COMPLETED'.
  ENDIF.


  IF  wa_osr-o_status = 'A'.
    WA_OSR-o_status = 'OPEN'.
  ELSEIF wa_osr-o_status = 'B'.
    WA_OSR-o_status = 'PARTIALLY COMPLETED'.
  ELSEIF wa_osr-o_status = 'C'.
    WA_OSR-o_status = 'CLOSED'.
  ENDIF.


  Case WA_OSR-SUBGRP.
   when 'GV ASSY' OR 'KIT ASSY'.

         case WA_OSR-XSIZE+0(1).
           when 0001.
             wa_osr-esi = 77.
             wa_osr2-esi = 77.
           when 0002.
             wa_osr-esi = 65.
             wa_osr2-esi = 65.
           when 0003.
             wa_osr-esi = 104.
             wa_osr2-esi = 104.
           when 0004.
            wa_osr-esi = 125.
             wa_osr2-esi = 125.
        endcase.


   WHEN 'GATE'.

         case WA_OSR-XSIZE+0(1).
         when 0002.
           wa_osr2-esi = 33.
            wa_osr-esi = 33.
         when 0003.
           wa_osr2-esi = 64.
           wa_osr-esi = 64.
         when 0004.
           wa_osr2-esi = 81.
           wa_osr-esi = 81.
         endcase.

   WHEN 'SEAT'.

         case WA_OSR-XSIZE+0(1).
         when 0002.
           wa_osr2-esi = 16.

          when 0003.
           wa_osr2-esi = 20.

         when 0004.
           wa_osr2-esi = 22.

         endcase.
   when OTHERS.
           wa_osr2-esi = 99.
           wa_osr-esi = 99.


   Endcase.

***********************************************
  select single count(*)
   into (lncnt) from vbep
   where  vbeln = wa_osr-sale_order_no
   and posnr = wa_osr-line_item.

wa_osr2 = wa_osr.

if lncnt > 1.
   invqty = wa_osr-qty_open.
   if wa_osr-slno = 1.
     select  vbeln posnr etenr wmeng edatu
       into (wa_osr2-sale_order_no, wa_osr2-line_item, wa_osr2-slno, wa_osr2-sl_order_qty,
             wa_osr2-REV_COMMIT_DATE)
       from vbep
       WHERE vbeln = wa_osr-sale_order_no
       and posnr = wa_osr-line_item
       order by vbeln posnr etenr DESCENDING .

      select max( revlv ) max( aennr )
         from aeoi
         into (wa_osr-revlv, wa_osr-aennr)
         where objkt = wa_osr-part_no.

       if invqty > wa_osr2-sl_order_qty.
         op_qty = wa_osr2-sl_order_qty.
         invqty = invqty  - wa_osr2-sl_order_qty.
       elseif invqty ne 0.
         op_qty = invqty.
         invqty = 0.
       else.
         op_qty = 0.
       endif.
*      wa_osr-slno = '0'.
       wa_osr2-qty_open = 0.
       wa_osr2-order_qty = 0.
       wa_osr2-sl_qty_open = op_qty.
       wa_osr2-hilite = 'C311'.
*      WA_OSR2-UNIT_PRICE = 0.
*      WA_OSR2-TOTAL_PRICE = WA_OSR2-UNIT_PRICE * wa_osr2-SL_order_qty.
       WA_OSR2-TOTAL_PRICE = 0.
       WA_OSR2-UNIT_PRICE = 0.
       APPEND  wa_osr2 to ITab_OSR.
     endselect.
   endif.
wa_osr-hilite = 'C221'.
*ELSE.
*  wa_osr-slno = '0'.
endif.
***********************************************
wa_osr-slno = 0.
TRANSLATE wa_osr-po_staTus TO UPPER CASE.
shift wa_osr-sale_order_no LEFT DELETING LEADING '0'.
*      wa_osr2-esitotal = wa_osr2-esi * wa_osr2-sl_qty_open.

MODIFY IT_OSR FROM WA_OSR.

endloop.

loop at itab_osr into wa_osr2.

   clear wa_osr1.
*  CONCATENATE '00' wa_osr2-slno into wa_osr2-slno.
   shift WA_OSR2-SALE_ORDER_NO LEFT DELETING LEADING '0'.
   select single * from zosrgtn into CORRESPONDING FIELDS OF wa_osr1
     where s_o_no = WA_OSR2-SALE_ORDER_NO
     and line_item = WA_OSR2-LINE_ITEM
     and s_l_no eq WA_OSR2-SLNO.


     wa_osr2-GTN_AGREED_DATE = wa_osr1-GTN_DATE.
     FMCDT = wa_osr2-GTN_AGREED_DATE.
         CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
         exporting
           input = fmcdt
         importing
           output = wa_osr2-GTN_AGREED_MONTH.
           wa_osr2-GTN_AGREED_MONTH = wa_osr2-GTN_AGREED_MONTH+3(8).

     wa_osr2-GTN_AGREED_MONTH = wa_osr1-GTN_MONTH.
     wa_osr2-REV_COMMIT_DATE = wa_osr1-REV_COM_DAT.
     wa_osr2-rev_commit_month1 = wa_osr1-rev_commit_month.
     wa_osr2-REVlv = wa_osr1-REVision.
**    wa_osr2-REVISION = wa_osr1-REVISION.
     wa_osr2-DELAY_DAYS = wa_osr1-DELAY_DAYS.
     wa_osr2-DELAY_REASON = wa_osr1-DELAY_REASON.
     wa_osr2-DN_STREAM_REMARK = wa_osr1-DN_STR_REM.
     wa_osr2-UP_STREAM_REMARK = wa_osr1-UP_STR_REM.
     wa_osr2-GEN_REMARKS = wa_osr1-GEN_REM.
     wa_osr2-SHIPPING_REMARKS = ' '.
     WA_OSR2-FC_QTY = WA_OSR1-FC_QUAN.
      WA_OSR2-NF_QTY = WA_OSR1-NF_QUAN.
      wa_osr2-esi = wa_osr1-esi_fig.
      wa_osr2-esitotal = wa_osr1-esi_tot.
      wa_osr-esi = wa_osr1-esi_fig.
      wa_osr-esitotal = wa_osr1-esi_tot.

       wa_osr2-fc_val = WA_OSR-UNIT_PRICE * wa_osr2-fc_qty.
       wa_osr2-nf_val = WA_OSR-UNIT_PRICE * wa_osr2-nf_qty.
       wa_osr2-esitotal = wa_osr2-esi * wa_osr2-sl_qty_open.
       wa_osr-esitotal = wa_osr2-esi * wa_osr-sl_qty_open.

   APPEND wa_osr2 to it_osr.
endloop.

delete IT_OSR where customer+0(3) ne 'FMC'.
IF PLANT IS NOT INITIAL .
   delete IT_OSR where ORG <> PLANT.
ENDIF.

IF WA_OSR-REASON_4_REJ IS NOT INITIAL.
   STATUS = 'C'.
ENDIF.
*
       if status-low = 'A' and status-hiGH = 'B'.
         delete IT_OSR where po_status EQ 'COMPLETED'.
       ELSEif status-low = 'A' and status-hiGH = 'C'.
*        delete IT_OSR where po_status EQ 'PARTIALLY DELIVERED'.
       ELSEif status-low = 'B' and status-hiGH = 'C'.
         delete IT_OSR where po_status EQ 'NOT DELIVERED'.
       ELSEif status-low = 'A'.
         delete IT_OSR where po_status ne 'NOT DELIVERED'.
       ELSEif status-low = 'B'.
         delete IT_OSR where po_status ne 'PARTIALLY DELIVERED'.
       ELSEif status-low = 'C'.
         delete IT_OSR where po_status ne 'COMPLETED'.
       ENDIF.

       if Ostatus-low = 'A' and Ostatus-hiGH = 'B'.
         delete IT_OSR where o_status EQ 'CLOSED'.
       ELSEif Ostatus-low = 'A' and Ostatus-hiGH = 'C'.
*        delete IT_OSR where o_status EQ 'PARTIALLY COMPLETED'.
       ELSEif Ostatus-low = 'B' and Ostatus-hiGH = 'C'.
         delete IT_OSR where o_status EQ 'OPEN'.
       ELSEif Ostatus-low = 'A'.
         delete IT_OSR where o_status ne 'OPEN'.
       ELSEif Ostatus-low = 'B'.
         delete IT_OSR where o_status ne 'PARTIALLY COMPLETED'.
       ELSEif Ostatus-low = 'C'.
         delete IT_OSR where o_status ne 'CLOSED'.
       ENDIF.

   delete it_osr where PART_NO IS INITIAL.

  loop at it_osr into wa_osr.
            CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             EXPORTING
              INPUT         = wa_osr-REV_COMMIT_DATE
             IMPORTING
              OUTPUT        = wa_osr-REV_COMMIT_MONTH1.
            wa_osr-REV_COMMIT_MONTH1 = wa_osr-REV_COMMIT_MONTH1+3(8).


             CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             exporting
               input = wa_osr-gtn_agreed_date
             importing
               output = wa_osr-gtn_agreed_month.
           wa_osr-gtn_agreed_month = wa_osr-gtn_agreed_month+3(8).
            MODIFY it_osr from wa_osr.
            clear wa_osr.

     ENDLOOP.

sort it_osr ASCENDING by sale_order_no line_item ASCENDING slno ASCENDING.
*ENDIF.
ENDFORM.

FORM LAYOUT_INIT USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.
   RS_LAYOUT-DETAIL_POPUP      = space.
ENDFORM.

FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.

   DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
*
   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
            I_LIST_TYPE = 0
       IMPORTING
            ET_EVENTS   = RT_EVENTS.
       READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                            INTO LS_EVENT.
       IF SY-SUBRC = 0.
         MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.
         APPEND LS_EVENT TO RT_EVENTS.
       ENDIF.
ENDFORM.
"
FORM TOP_OF_PAGE.
   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
            IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
"
FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE
                                         SLIS_T_LISTHEADER.
   DATA: LS_LINE TYPE SLIS_LISTHEADER, fromdate TYPE d, todate type d, linfo type string.

   CLEAR LS_LINE.
   LS_LINE-TYP  = 'H'.
   LS_LINE-INFO = 'LOADING SHEET.'.
   APPEND LS_LINE TO LT_TOP_OF_PAGE.
*  CLEAR LS_LINE.
   LS_LINE-TYP  = 'A'.

   LS_LINE-INFO = linfo .
   APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM.

form fieldcat.

   wa_fieldcat-fieldname = 'CUSTOMER' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'CUSTOMER' .
   wa_fieldcat-outputlen = '10' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PLANT' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '6' .
   wa_fieldcat-SELTEXT_M = 'PLANT' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'WO_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   wa_fieldcat-SELTEXT_M = 'W.O.No.' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
***
   wa_fieldcat-fieldname = 'PO_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'P.O.No.'.
   wa_fieldcat-outputlen = '13'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
*
   wa_fieldcat-fieldname = 'PO_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'P.O.DATE' .
   wa_fieldcat-outputlen = '10' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SALE_ORDER_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SALE ORDER No.' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-JUST = 'R'.
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SALE_ORDER_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'S.O DATE' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   WA_FIELDCAT-JUST = 'R'.
   wa_fieldcat-outputlen = '10' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'LINE_ITEM' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '4' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   wa_fieldcat-SELTEXT_M = 'LINE ITEM' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SLNO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '4' .
   wa_fieldcat-JUST = 'R' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   wa_fieldcat-SELTEXT_M = 'S.L.NO' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ORDER_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'ORDER QTY.' .
   WA_FIELDCAT-EMPHASIZE = 'C511'.
   wa_fieldcat-outputlen = '6' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SL_QTY_OPEN' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'OPEN QTY'.
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-EMPHASIZE = 'C511'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SL_ORDER_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SL.ORDER QTY.' .
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

*  wa_fieldcat-fieldname = 'SL_QTY_OPEN' .
*  wa_fieldcat-tabname = 'IT_OSR' .
*  wa_fieldcat-SELTEXT_M = 'SL OPEN QTY' .
*  wa_fieldcat-outputlen = '6' .
*  WA_FIELDCAT-EMPHASIZE = 'C211'.
*  APPEND wa_fieldcat to i_fieldcat.
*  clear wa_fieldcat.


   wa_fieldcat-fieldname = 'PART_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '15' .
   wa_fieldcat-SELTEXT_M = 'PART No.' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'REVLV1' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'REV' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   wa_fieldcat-outputlen = '4' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'POSEX' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'CUSTOMER PO REV' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-MGR'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
*  WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'DESCRIPTION' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '35' .
   wa_fieldcat-SELTEXT_M = 'DESCRIPTION' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'MAINGRP' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'DIVISION' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'XTYPE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   wa_fieldcat-SELTEXT_M = 'TYPE' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'MODEL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'MODEL' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
**
   wa_fieldcat-fieldname = 'XSIZE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SIZE' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'TRIM' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'TRIM' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'GRP2' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'GROUP' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SUBGRP' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'SUB GRP' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ENDCON' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'END CONN' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PRES' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'PRES RATING' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PRDSPEC' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'PSL' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PERFREQ' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'PERF REQ' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
***************
   wa_fieldcat-fieldname = 'SHIPMENT_MODE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SHIPMENT MODE' .
   wa_fieldcat-outputlen = '6' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PO_STATUS' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'DELIVERY STATUS ' .
   wa_fieldcat-outputlen = '20' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'O_STATUS' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'OVERALL STATUS ' .
   wa_fieldcat-outputlen = '15' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FMC_EX_WORKS_DAT' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FMC-EX-WORKS-DATE' .
   wa_fieldcat-outputlen = '10' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FMC_EX_WORKS_MON' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FMC-EX-WORKS-MONTH' .
   WA_FIELDCAT-JUST = 'C'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'GTN_AGREED_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'GTN AGREED DATE' .
   wa_fieldcat-outputlen = '10' .
   if sy-uname = 'SD-EXEC' OR sy-uname = 'DEVELOPER' OR sy-uname = 'ABAPUSER' .
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
*  WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'GTN_AGREED_MONTH' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'GTN AGREED MONTH' .
   WA_FIELDCAT-JUST = 'C'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   if sy-uname = 'SD-EXEC'
     OR  sy-uname = 'SD-MGR'
     OR sy-uname = 'FMC-USER'
     OR sy-uname = 'VP-USER'
     OR sy-uname = 'GM-USER'
     OR sy-uname = 'DGM-USER'
     OR sy-uname = 'HO-SD-MGR'
     OR sy-uname = 'HO-FI-MGR'
     OR sy-uname = 'PM-USER'
     OR sy-uname = 'DEVELOPER'
     OR sy-uname = 'ABAPUSER'.
   wa_fieldcat-fieldname = 'UNIT_PRICE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'UNIT PRICE' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'TOTAL_PRICE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'TOTAL PRICE' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   ENDIF.

   wa_fieldcat-fieldname = 'REV_COMMIT_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'REV.COMMIT.DATE' .
   wa_fieldcat-outputlen = '10' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'REV_COMMIT_MONTH1' .
   wa_fieldcat-tabname   = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'REV COMMIT MONTH' .
   WA_FIELDCAT-JUST      = 'C'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ESI' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'ESI' .
   wa_fieldcat-outputlen = '16' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   WA_FIELDCAT-JUST      = 'C'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

    wa_fieldcat-fieldname = 'SL_QTY_OPEN' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SL OPEN QTY' .
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ESITOTAL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'ESI TOTAL' .
   wa_fieldcat-outputlen = '16' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   WA_FIELDCAT-JUST      = 'C'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FCNF' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FC/NF' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   WA_fieldcat-edit = 'X'.
   WA_FIELDCAT-INPUT = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FC_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FC QTY' .
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   WA_fieldcat-edit = 'X'.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'NF_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'NF QTY' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
    if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_fieldcat-edit = 'X'.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FC_VAL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FC VALUE' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'NF_VAL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'NF VALUE' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.


   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
endform.

FORM OSRUPDATE.


   LOOP AT IT_OSR INTO WA_OSR.

     ZOSRGTN-S_O_NO = WA_OSR-SALE_ORDER_NO.
     ZOSRGTN-LINE_ITEM = WA_OSR-LINE_ITEM.
     ZOSRGTN-S_L_NO = WA_OSR-slno.
     ZOSRGTN-WO_NO = WA_OSR-WO_NO.
     ZOSRGTN-SHP_MODE = WA_OSR-SHIPMENT_MODE.
     ZOSRGTN-PO_STAT = WA_OSR-PO_STATUS.
     ZOSRGTN-FMC_DATE = WA_OSR-FMC_EX_WORKS_DAT.
     ZOSRGTN-FMC_MONTH = WA_OSR-FMC_EX_WORKS_MON.
     ZOSRGTN-GTN_DATE = WA_OSR-GTN_AGREED_DATE.
     ZOSRGTN-GTN_MONTH = WA_OSR-GTN_AGREED_MONTH.
     ZOSRGTN-REV_COM_DAT = WA_OSR-REV_COMMIT_DATE.
     ZOSRGTN-REV_COMMIT_MONTH = WA_OSR-REV_COMMIT_MONTH1.
     ZOSRGTN-REVISION = WA_OSR-REVISION.
     ZOSRGTN-DELAY_DAYS = WA_OSR-DELAY_DAYS.
     ZOSRGTN-DELAY_REASON = WA_OSR-DELAY_REASON.
     ZOSRGTN-DN_STR_REM = WA_OSR-DN_STREAM_REMARK.
     ZOSRGTN-UP_STR_REM = WA_OSR-UP_STREAM_REMARK.
     ZOSRGTN-GEN_REM = WA_OSR-GEN_REMARKS.
     ZOSRGTN-FC_QUAN = wa_OSR-FC_QTY.
     ZOSRGTN-NF_QUAN = wa_OSR-NF_QTY.
     ZOSRGTN-FC_VALUE = wa_OSR-FC_VAL.
     ZOSRGTN-NF_VALUE = wa_OSR-NF_VAL.
     zosrgtn-esi_fig = wa_osr-esi.
     zosrgtn-esi_tot = wa_osr-esitotal.
     zosrgtn-xsize = wa_osr-xsize.
  MODIFY it_osr from wa_osr.
     clear wa_osr.

     select SINGLE s_o_no line_item from zosrgtn INTO (WA_OSR1-S_O_NO, WA_OSR1-LINE_ITEM)
       WHERE  s_o_no = WA_OSR-SALE_ORDER_NO
       and line_item = WA_OSR-LINE_ITEM
       and s_l_no = wa_osr-slno.

     if sy-subrc <> 0.
       INSERT INTO ZOSRGTN VALUES ZOSRGTN.
     else.
       UPDATE ZOSRGTN .
     ENDIF.
   ENDLOOP.
ENDFORM.

Note: Case statement is where i populate the data and got stuck up.

Read only

0 Likes
1,066

report ZLOADING.
*tables:
TABLES: vbak, vbap, vbuk, vbup, VBEP, AEOI,AENR, ZOSRGTN.

SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME title text001.
      select-OPTIONS saleord for vbak-vbeln.
      select-OPTIONS custmr for vbak-kunnr.
      select-OPTIONS partno for vbap-matnr.
      SELECT-options Ostatus for vbup-GBSTA.
      SELECT-options status for vbup-lfSTA.

      PARAMETER Plant TYPE vbak-vkorg DEFAULT 'SGTN'.
SELECTION-SCREEN END OF BLOCK 2.

TYPE-POOLS: SLIS.
types:
begin of osr1,
   POSEX TYPE VBAP-POSEX,
   AENNR TYPE AEOI-AENNR,
   REVLV TYPE AEOI-REVLV,
   REVLV1 TYPE AEOI-REVLV,
   SALE_ORDER_NO type vbap-vbeln,
   SALE_ORDER_DATE type vbak-audat,
   ORDER_TYPE TYPE VBAK-AUART,
   LINE_ITEM type vbap-posnr,
   SLNO TYPE VBEP-ETENR,
   CUSTOMER type vbak-kunnr,
   PLANT type vbap-werks,
   WO_NO(20) type C,
   PO_NO type vbak-bstnk,
   PO_DATE type vbak-bstdk,
   PO_LINE_ITEM(4) type c,
   PART_NO type vbap-matnr,
   REV(10) type c,
   DESCRIPTION type tline-tdline,
   MAINGRP TYPE MARA-SPART,
   SUBGRP type MARA-ZZMAT_SUBGRP,
   XTYPE type MARA-ZZMAT_TYPE,
   MODEL type MARA-ZZMAT_MODEL,
   XSIZE type MARA-GROES,
   TRIM type MARA-ZZMAT_TRIM,
   ENDCON TYPE MARA-ZZMAT_ENDCON,
   XTEMP TYPE MARA-ZZMAT_TEMP,
   PRES TYPE MARA-ZZMAT_PRES,
   PRDSPEC TYPE MARA-ZZMAT_PRDSPEC,
   PERFREQ TYPE MARA-ZZMAT_PERFREQ,
   GRP2 TYPE MARA-ZZMAT_GRP2,
   SHIPMENT_MODE(20) type c,
   ORDER_QTY type P, " DECimals 3,
   sl_ORDER_QTY type P, " DECimals 3,
   PO_STATUS(20) type c,
   O_status(20) type c,
   FMC_EX_WORKS_DAT type d,
   FMC_EX_WORKS_MON(50) type c,
   GTN_AGREED_DATE type D,
   GTN_AGREED_MONTH(50) type c,
   QTY_OPEN type P, " DECimals 3,
   sl_qty_open type p,
   NEW_PRICE type P DECimals 2,
   UNIT_PRICE type P DECimals 2,
   TOTAL_XY type P DECimals 2,
   TOTAL_PRICE type p DECimals 2,
   REV_COMMIT_DATE type d,
   REV_COMMIT_MONTH1(50) type c,
   REVISION(10) type c,
   STATUS(20) type c,
   DELAY_DAYS(4) type n,
   DELAY_REASON(200) type c,
*  ASSY_PLAN_DATE type D,
   reason_4_rej type vbap-abgru,
   org type vbak-vkorg,
   DN_STREAM_REMARK type char255,
   UP_STREAM_REMARK type char255,
   SHIPPING_REMARKS type Char255,
   GEN_REMARKS(40) type C,
   FMC_REMARKS type char255,
   HILITE(4) type C,
   NO_DAYS TYPE N,
   FC_qty type n,
   NF_qty type n,
   FC_val type P DECIMALS 2,
   NF_val type P DECIMALS 2,
   week type n,
   FCNF(5) type c,
   esi TYPE P,
   esitotal type p,
   ZZMAT_SUBGRP TYPE mara-ZZMAT_SUBGRP,
end of osr1.

types:
       BEGIN OF shiprem ,
         vbeln type vbrp-vbeln,
         fkdat TYPE vbrk-fkdat,
         fklmg TYPE vbrp-fklmg,
         qty(8) type n,
         vbtyp type vbfa-vbtyp_N,
         fksto type vbrk-fksto,
         matnr type vbrp-matnr,
         invcount type i,
       END OF shiprem.

data:
       t_shprem TYPE TABLE OF shiprem,
       wa_shprem TYPE shiprem,
       XMATNR(18) TYPE C,
       fmcdate(35) TYPE c,
       fmcdt type d,
       i_xtline type TABLE OF tline,
       wa_xtline TYPE tline,
       xname like THEAD-TDNAME,
       int TYPE i,
       cs TYPE i,
       op_qty type p.


DATA: ok_code TYPE sy-ucomm,
       save_ok LIKE ok_code,
       output(8) TYPE c,
       xs_o_no type zosrgtn-s_o_no,
       xline_item type zosrgtn-line_item,
       QTY_DIFF(8) TYPE N,
       lncnt type i.


DATA:
       IT_OSR type table of osr1,
       ITab_OSR type table of osr1,
       wa_osr type osr1,
       wa_osr2 type osr1,
       it_osr1 type table OF zosrGTN,
       wa_osr1 TYPE zosrGTN.


DATA:
       i_fieldcat TYPE slis_t_fieldcat_alv,
       WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

data:
       GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
       G_EXIT_CAUSED_BY_CALLER,
       GS_EXIT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER,
       G_REPID LIKE SY-REPID,
       commitdatediff TYPE i,
       QTYDIFF TYPE I,
*      partno type TABLE OF vbeln,
       wapart type vbeln,
       waline type posnr,
       waslno type vbep-etenr,
       agreed type d.
*
DATA:
       GT_EVENTS      TYPE SLIS_T_EVENT,
       GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
       G_STATUS_SET   TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',
       G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
       G_TOP_OF_PAGE  TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
       G_TOP_OF_LIST  TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST',
       ls_sort TYPE slis_sortinfo_alv ,
       IT_SORT TYPE  slis_t_sortinfo_alv ,
       G_END_OF_LIST  TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'.

DATA: GS_VARIANT LIKE DISVARIANT,
       G_SAVE.

DATA  XS(20) TYPE C.
       G_REPID = SY-REPID.
       gs_layout-info_fieldname = 'HILITE'.
       PERFORM LAYOUT_INIT USING GS_LAYOUT.
       PERFORM EVENTTAB_BUILD USING GT_EVENTS[].

       GS_VARIANT-REPORT = G_REPID.
       G_SAVE           = 'A'.

START-OF-SELECTION.
   PERFORM f_read_data.
END-OF-SELECTION.

PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

perform fieldcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING


        I_BACKGROUND_ID    = 'ALV_BACKGROUND'
        I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
        i_buffer_active    = 'X'
        I_CALLBACK_PROGRAM = G_REPID
        I_STRUCTURE_NAME   = 'GRSTAT'
        IS_LAYOUT          = GS_LAYOUT
        IT_FIELDCAT        = I_FIELDCAT[]
        IS_VARIANT         = GS_VARIANT
*       IT_SORT            = IT_SORT
        IT_EVENTS          = GT_EVENTS[]
        I_SAVE             = 'A'

   IMPORTING
        E_EXIT_CAUSED_BY_CALLER = G_EXIT_CAUSED_BY_CALLER
        ES_EXIT_CAUSED_BY_USER  = GS_EXIT_CAUSED_BY_USER
   TABLES
        T_OUTTAB = IT_OSR

   EXCEPTIONS
        PROGRAM_ERROR = 1
        OTHERS        = 2.


FORM user_command USING ucomm LIKE sy-ucomm

     selfield TYPE slis_selfield.
     data lv_ucomm type sy-ucomm.
     lv_ucomm = sy-ucomm.
     CASE lv_ucomm.
       WHEN '&DATA_SAVE'.
       PERFORM OSRUPDATE.
     endcase.
endform.

FORM f_read_data.
DATA: str1 TYPE string,
       str2 TYPE string,
       str3 TYPE string,
       textx TYPE string,
       itab TYPE TABLE OF string,
       wa type string, slen type i, cc TYPE i, kk TYPE i,
       invdate TYPE d,
       invqty TYPE P DECIMALS 3,
       xmatnr(70) type c,
       xwerks type werks.

   select VBAP~vbeln VBAP~posnr VBAP~POSEX VBAK~AUART
       into (wa_osr-sale_order_no, wa_osr-line_item, WA_OSR-POSEX, WA_OSR-ORDER_TYPE)
       from VBAP INNER JOIN VBAK
       ON VBAP~VBELN = VBAK~VBELN
       WHERE vbap~vbeln in  saleord
       and vbap~matnr in partno
       and vbak~kunnr in custmr
       and VBAK~AUART = 'ZORE'.
*      where  LFSTA <> 'c'.
*      and
       APPEND  wa_osr to IT_OSR.
   endselect.
*
clear it_osr1.
select * from zosrgtn into CORRESPONDING FIELDS OF wa_osr1
   where s_o_no in saleord.
   append wa_osr1 to it_osr1.
   xmatnr = wa_osr1-wo_no.
endselect.

loop at IT_OSR into wa_osr.

       CLEAR WA_OSR1.
       xs_o_no = wa_osr-sale_order_no .
       shift xs_o_no LEFT DELETING LEADING '0'.
       CONCATENATE xs_o_no wa_osr-line_item into xmatnr.

       select single * from zosrgtn into CORRESPONDING FIELDS OF wa_osr1
         where s_o_no = XS_O_NO
           and line_item = wa_osr-LINE_ITEM
           and s_l_no eq '000000'
           OR s_l_no is NULL.
       wa_osr-wo_no             = wa_osr1-wo_no.
       wa_osr-SHIPMENT_MODE     = wa_osr1-SHP_MODE.
       wa_osr-PO_STATUS         = wa_osr1-PO_STAT.
       wa_osr-FMC_EX_WORKS_DAT  = wa_osr1-FMC_DATE.
       wa_osr-FMC_EX_WORKS_MON  = wa_osr1-FMC_MONTH.
       wa_osr-GTN_AGREED_DATE   = wa_osr1-GTN_DATE.
       wa_osr-GTN_AGREED_MONTH  = wa_osr1-GTN_MONTH.
       wa_osr-REV_COMMIT_DATE   = wa_osr1-REV_COM_DAT.
       wa_osr-REV_COMMIT_MONTH1 = WA_OSR1-REV_COMMIT_MONTH.
       wa_osr-REVISION          = wa_osr1-REVISION.
       wa_osr-DELAY_DAYS        = wa_osr1-DELAY_DAYS.
       wa_osr-DELAY_REASON      = wa_osr1-DELAY_REASON.
       wa_osr-DN_STREAM_REMARK  = wa_osr1-DN_STR_REM.
       wa_osr-UP_STREAM_REMARK  = wa_osr1-UP_STR_REM.
       wa_osr-GEN_REMARKS       = wa_osr1-GEN_REM.
       WA_OSR-FC_QTY            = WA_OSR1-fc_QUAN.
       WA_OSR-NF_QTY            = WA_OSR1-NF_QUAN.
       wa_osr-esi               = wa_osr1-esi_fig.
       wa_osr-esitotal          = wa_osr1-esi_tot.

         select SINGLE NETPR NETWR INTO (WA_OSR-UNIT_PRICE, WA_OSR-TOTAL_PRICE)
           FROM VBAP WHERE VBELN = WA_OSR-SALE_ORDER_NO AND POSNR = WA_OSR-LINE_ITEM.

         IF SY-SUBRC <> 0.
           WA_OSR-UNIT_PRICE = WA_OSR1-UNIT_PRICE.
           WA_OSR-TOTAL_PRICE = WA_OSR1-XTOTAL.
           WA_OSR-FC_VAL = WA_OSR1-FC_VALUE.
           WA_OSR-NF_VAL = WA_OSR1-NF_VALUE.
           WA_OSR-esitotal = WA_OSR1-esi_tot.
          ENDIF.

          select single abgru
            into (wa_osr-reason_4_rej)
            from vbap
            where vbeln = wa_osr-sale_order_no
            and posnr =  wa_osr-line_item.

         select single vkorg
            into (wa_osr-org)
            from vbak
            where vbeln = wa_osr-sale_order_no.

         select single lfsta gbsta
           into (wa_osr-po_status, wa_osr-o_status)
           from vbup
           where vbeln = wa_osr-sale_order_no
           and posnr = wa_osr-LINE_ITEM.

         select single audat kunnr bstnk bstdk
           into (wa_osr-sale_order_date , wa_osr-customer , wa_osr-po_no , wa_osr-po_date)
           from vbak
           where vbeln = wa_osr-sale_order_no.
*          and audat in S_O_Date.

         select SINGLE matnr werks kwmeng " lsmeng
           into (wa_osr-part_no , wa_osr-plant ,  wa_osr-order_qty) " , wa_osr-qty_open)
           from vbap
           where vbeln = wa_osr-sale_order_no
           and posnr =  wa_osr-line_item.
*      ***********
       xmatnr+0(18) = wa_osr-part_no.
       xmatnr+18(4) = 'SGTN'.
       xmatnr+22(2) = 'EX'.
       xname = xmatnr.
       CLEAR I_XTLINE.
       CALL FUNCTION 'READ_TEXT'
         EXPORTING
              ID = '0001'
              LANGUAGE = 'E'
              NAME = XNAME
              OBJECT = 'MVKE'
         TABLES
              LINES = i_XTLINE
         EXCEPTIONS
             ID = 1
             LANGUAGE = 2
             NAME = 3
             NOT_FOUND = 4
            OBJECT = 5
           REFERENCE_CHECK = 6.


       LOOP AT i_XTLINE  into wa_xtline where tdline <> ' '.
         CONCATENATE wa_osr-description WA_xtline-TDLINE into wa_osr-description.
       endloop.

       if wa_osr-description is initial.
         wa_osr-description = '***** SALES TEXT NOT MAINTAINED'.
       ENDIF.

         select single ZZMAT_TYPE ZZMAT_MODEL GROES ZZMAT_TRIM ZZMAT_GRP2 ZZMAT_SUBGRP
           INTO (WA_OSR-XTYPE, WA_OSR-MODEL, WA_OSR-XSIZE, WA_OSR-TRIM, WA_OSR-GRP2, WA_OSR-SUBGRP)
           FROM MARA
           WHERE MATNR = WA_OSR-PART_NO.

        select single ZZMAT_ENDCON ZZMAT_TEMP ZZMAT_PRES ZZMAT_PRDSPEC ZZMAT_PERFREQ SPART
           INTO (WA_OSR-ENDCON, WA_OSR-XTEMP, WA_OSR-PRES, WA_OSR-PRDSPEC, WA_OSR-PERFREQ, WA_OSR-MAINGRP)
           FROM MARA
           WHERE MATNR = WA_OSR-PART_NO.

SELECT SINGLE ETENR
           INTO (WA_OSR-SLNO)
           FROM VBEP
           WHERE VBELN = WA_OSR-SALE_ORDER_NO
           AND POSNR = WA_OSR-LINE_ITEM.

         select max( revlv ) max( aennr )
         from aeoi
         into (wa_osr-revlv1, wa_osr-aennr)
         where objkt = wa_osr-part_no.

           if wa_osr-revlv = ' '.
              wa_osr-revlv = wa_osr-revlv1.
            endif.

       SELECT single EDATU
       INTO (WA_OSR-REV_COMMIT_DATE)
       FROM VBEP
       WHERE VBELN = WA_OSR-SALE_ORDER_NO
       AND POSNR = WA_OSR-LINE_ITEM
       and etenr = WA_OSR-SLNO.


           CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             exporting
               input = wa_osr-gtn_agreed_date
             importing
               output = wa_osr-gtn_agreed_month.
           wa_osr-gtn_agreed_month = wa_osr-gtn_agreed_month+3(8).

            CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             EXPORTING
              INPUT         = wa_osr-REV_COMMIT_DATE
             IMPORTING
              OUTPUT        = wa_osr-REV_COMMIT_MONTH1.
            wa_osr-REV_COMMIT_MONTH1 = wa_osr-REV_COMMIT_MONTH1+3(8).

         FMCDT = wa_osr-FMC_EX_WORKS_DAT.
         CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
         exporting
           input = fmcdt
         importing
           output = wa_osr-fmc_ex_works_mon.
           wa_osr-fmc_ex_works_mon = wa_osr-fmc_ex_works_mon+3(8).
*          ZOSRGTN-GEN_REM = WA_OSR-GEN_REMARKS.
       clear t_shprem.
*
        SELECT vbrp~vbeln vbrp~fklmg vbrp~matnr
         into (wa_shprem-vbeln , wa_shprem-fklmg, wa_shprem-matnr)
         from vbrp INNER JOIN vbrk on vbrp~vbeln = vbrk~vbeln
         where vbrp~aubel = wa_osr-sale_order_no
         and vbrp~aupos = wa_osr-line_item
         and vbrp~PSTYV ne 'HUPM' " PACKING MATERIAL
         and vbrp~fklmg <> 0.
*        and vbrk~fksto ne 'X'.
         APPEND wa_shprem to t_shprem.
*
       ENDSELECT.

       clear invqty.
       clear wa_osr-shipping_remarks.
       cc = 1.
       loop at t_shprem into wa_shprem. " where vbtyp eq 'J'.
         select single fkdat fksto
           into (wa_shprem-fkdat,wa_shprem-fksto)
           from vbrk
           where vbeln = wa_shprem-vbeln.

           wa_shprem-qty = wa_shprem-fklmg .
           if wa_shprem-fksto = 'X'.
             invqty = invqty - wa_shprem-qty.
           else.
             invqty = invqty + wa_shprem-qty.
           endif.
           shift wa_shprem-qty LEFT DELETING LEADING '0'.
           shift wa_shprem-vbeln LEFT DELETING LEADING '0'.
           write wa_shprem-fkdat DD/MM/YY to invdate.
           if wa_shprem-fksto ne 'X'.
           if cc = 1.
           CONCATENATE wa_osr-shipping_remarks  wa_shprem-vbeln ' / ' invdate ' / '  wa_shprem-qty  into wa_osr-shipping_remarks.
           else.
           CONCATENATE wa_osr-shipping_remarks  ' -- ' wa_shprem-vbeln ' / ' invdate ' / '  wa_shprem-qty  into wa_osr-shipping_remarks.
           endif.
              cc = cc + 1.
           endif.
       endloop  .

       textx = wa_osr-part_no.
       SPLIT textx AT '-' INTO: TABLE itab.
       loop at itab into wa.
       endloop.
       slen = sy-tfill.
       cc = 1.
       str1 = '' .

       loop at itab into wa.
           if cc = 1.
           str1 = wa.
           else.
           CONCATENATE str1 '-' wa  into str1.
           endif.
           kk = slen - 1.

           cc = cc + 1.
       endloop.

   wa_osr-qty_open = wa_osr-order_qty - invqty.

   wa_osr-fc_val = WA_OSR-UNIT_PRICE * wa_osr-fc_qty.
   wa_osr-nf_val = WA_OSR-UNIT_PRICE * wa_osr-nf_qty.


**case wa_osr-slno.
**
** when  0.
** write 'do nothing'.
** when others.
**
** Case WA_OSR-SUBGRP.
**  when 'GV ASSY' OR 'KIT ASSY'.
**
**        case WA_OSR-XSIZE+0(1).
**          when 0001.
**            wa_osr-esi = 77.
**            wa_osr2-esi = 77.
**          when 0002.
**            wa_osr-esi = 65.
**            wa_osr2-esi = 65.
**          when 0003.
**            wa_osr-esi = 104.
**            wa_osr2-esi = 104.
**          when 0004.
**           wa_osr-esi = 125.
**            wa_osr2-esi = 125.
**       endcase.
**
**
**  WHEN 'GATE'.
**
**        case WA_OSR-XSIZE+0(1).
**        when 0002.
**          wa_osr2-esi = 33.
**           wa_osr-esi = 33.
**        when 0003.
**          wa_osr2-esi = 64.
**          wa_osr-esi = 64.
**        when 0004.
**          wa_osr2-esi = 81.
**          wa_osr-esi = 81.
**        endcase.
**
**  WHEN 'SEAT'.
**
**        case WA_OSR-XSIZE+0(1).
**        when 0002.
**          wa_osr2-esi = 16.
**
**         when 0003.
**          wa_osr2-esi = 20.
**
**        when 0004.
**          wa_osr2-esi = 22.
**
**        endcase.
**  when OTHERS.
**          wa_osr2-esi = 99.
**          wa_osr-esi = 99.
**  Endcase.
**
** ENDCASE.


*MODIFY IT_OSR FROM WA_OSR.
if wa_osr-rev_commit_date is not initial.
   if wa_osr-gtn_agreed_date is not INITIAL.
         wa_osr-delay_days = wa_osr-REV_COMMIT_DATE - wa_osr-gtn_agreed_date.

       IF wa_osr-delay_days <= 0.
         wa_osr-status = 'ON SCHEDULE'.
       ELSEIF wa_osr-delay_days > 0.
         if wa_osr-delay_days <= 365.
           wa_osr-status = 'DELAY'.
         endif.
       ENDIF.
       if wa_osr-REV_COMMIT_DATE < wa_osr-gtn_agreed_date.
         wa_osr-status = 'ON SCHEDULE'.
         wa_osr-delay_days = 0.
       endif.
   else.
         wa_osr-delay_days = '0'.

   endif.
else.
   wa_osr-delay_days = '0'.
endif.

if wa_osr-delay_days > '365'.
   wa_osr-delay_days = '0'.
endif.

  QTYDIFF = WA_OSR-ORDER_QTY - WA_OSR-QTY_OPEN.

  IF  WA_OSR-PO_STATUS = 'A'.
    WA_OSR-PO_STATUS = 'NOT DELIVERED'.
  ELSEIF WA_OSR-PO_STATUS = 'B'.
    WA_OSR-PO_STATUS = 'PARTIALLY DELIVERED'.
  ELSEIF WA_OSR-PO_STATUS = 'C'.
    WA_OSR-PO_STATUS = 'COMPLETED'.
  ENDIF.


  IF  wa_osr-o_status = 'A'.
    WA_OSR-o_status = 'OPEN'.
  ELSEIF wa_osr-o_status = 'B'.
    WA_OSR-o_status = 'PARTIALLY COMPLETED'.
  ELSEIF wa_osr-o_status = 'C'.
    WA_OSR-o_status = 'CLOSED'.
  ENDIF.


  Case WA_OSR-SUBGRP.
   when 'GV ASSY' OR 'KIT ASSY'.

         case WA_OSR-XSIZE+0(1).
           when 0001.
             wa_osr-esi = 77.
             wa_osr2-esi = 77.
           when 0002.
             wa_osr-esi = 65.
             wa_osr2-esi = 65.
           when 0003.
             wa_osr-esi = 104.
             wa_osr2-esi = 104.
           when 0004.
            wa_osr-esi = 125.
             wa_osr2-esi = 125.
        endcase.


   WHEN 'GATE'.

         case WA_OSR-XSIZE+0(1).
         when 0002.
           wa_osr2-esi = 33.
            wa_osr-esi = 33.
         when 0003.
           wa_osr2-esi = 64.
           wa_osr-esi = 64.
         when 0004.
           wa_osr2-esi = 81.
           wa_osr-esi = 81.
         endcase.

   WHEN 'SEAT'.

         case WA_OSR-XSIZE+0(1).
         when 0002.
           wa_osr2-esi = 16.

          when 0003.
           wa_osr2-esi = 20.

         when 0004.
           wa_osr2-esi = 22.

         endcase.
   when OTHERS.
           wa_osr2-esi = 99.
           wa_osr-esi = 99.


   Endcase.

***********************************************
  select single count(*)
   into (lncnt) from vbep
   where  vbeln = wa_osr-sale_order_no
   and posnr = wa_osr-line_item.

wa_osr2 = wa_osr.

if lncnt > 1.
   invqty = wa_osr-qty_open.
   if wa_osr-slno = 1.
     select  vbeln posnr etenr wmeng edatu
       into (wa_osr2-sale_order_no, wa_osr2-line_item, wa_osr2-slno, wa_osr2-sl_order_qty,
             wa_osr2-REV_COMMIT_DATE)
       from vbep
       WHERE vbeln = wa_osr-sale_order_no
       and posnr = wa_osr-line_item
       order by vbeln posnr etenr DESCENDING .

      select max( revlv ) max( aennr )
         from aeoi
         into (wa_osr-revlv, wa_osr-aennr)
         where objkt = wa_osr-part_no.

       if invqty > wa_osr2-sl_order_qty.
         op_qty = wa_osr2-sl_order_qty.
         invqty = invqty  - wa_osr2-sl_order_qty.
       elseif invqty ne 0.
         op_qty = invqty.
         invqty = 0.
       else.
         op_qty = 0.
       endif.
*      wa_osr-slno = '0'.
       wa_osr2-qty_open = 0.
       wa_osr2-order_qty = 0.
       wa_osr2-sl_qty_open = op_qty.
       wa_osr2-hilite = 'C311'.
*      WA_OSR2-UNIT_PRICE = 0.
*      WA_OSR2-TOTAL_PRICE = WA_OSR2-UNIT_PRICE * wa_osr2-SL_order_qty.
       WA_OSR2-TOTAL_PRICE = 0.
       WA_OSR2-UNIT_PRICE = 0.
       APPEND  wa_osr2 to ITab_OSR.
     endselect.
   endif.
wa_osr-hilite = 'C221'.
*ELSE.
*  wa_osr-slno = '0'.
endif.
***********************************************
wa_osr-slno = 0.
TRANSLATE wa_osr-po_staTus TO UPPER CASE.
shift wa_osr-sale_order_no LEFT DELETING LEADING '0'.
*      wa_osr2-esitotal = wa_osr2-esi * wa_osr2-sl_qty_open.

MODIFY IT_OSR FROM WA_OSR.

endloop.

loop at itab_osr into wa_osr2.

   clear wa_osr1.
*  CONCATENATE '00' wa_osr2-slno into wa_osr2-slno.
   shift WA_OSR2-SALE_ORDER_NO LEFT DELETING LEADING '0'.
   select single * from zosrgtn into CORRESPONDING FIELDS OF wa_osr1
     where s_o_no = WA_OSR2-SALE_ORDER_NO
     and line_item = WA_OSR2-LINE_ITEM
     and s_l_no eq WA_OSR2-SLNO.


     wa_osr2-GTN_AGREED_DATE = wa_osr1-GTN_DATE.
     FMCDT = wa_osr2-GTN_AGREED_DATE.
         CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
         exporting
           input = fmcdt
         importing
           output = wa_osr2-GTN_AGREED_MONTH.
           wa_osr2-GTN_AGREED_MONTH = wa_osr2-GTN_AGREED_MONTH+3(8).

     wa_osr2-GTN_AGREED_MONTH = wa_osr1-GTN_MONTH.
     wa_osr2-REV_COMMIT_DATE = wa_osr1-REV_COM_DAT.
     wa_osr2-rev_commit_month1 = wa_osr1-rev_commit_month.
     wa_osr2-REVlv = wa_osr1-REVision.
**    wa_osr2-REVISION = wa_osr1-REVISION.
     wa_osr2-DELAY_DAYS = wa_osr1-DELAY_DAYS.
     wa_osr2-DELAY_REASON = wa_osr1-DELAY_REASON.
     wa_osr2-DN_STREAM_REMARK = wa_osr1-DN_STR_REM.
     wa_osr2-UP_STREAM_REMARK = wa_osr1-UP_STR_REM.
     wa_osr2-GEN_REMARKS = wa_osr1-GEN_REM.
     wa_osr2-SHIPPING_REMARKS = ' '.
     WA_OSR2-FC_QTY = WA_OSR1-FC_QUAN.
      WA_OSR2-NF_QTY = WA_OSR1-NF_QUAN.
      wa_osr2-esi = wa_osr1-esi_fig.
      wa_osr2-esitotal = wa_osr1-esi_tot.
      wa_osr-esi = wa_osr1-esi_fig.
      wa_osr-esitotal = wa_osr1-esi_tot.

       wa_osr2-fc_val = WA_OSR-UNIT_PRICE * wa_osr2-fc_qty.
       wa_osr2-nf_val = WA_OSR-UNIT_PRICE * wa_osr2-nf_qty.
       wa_osr2-esitotal = wa_osr2-esi * wa_osr2-sl_qty_open.
       wa_osr-esitotal = wa_osr2-esi * wa_osr-sl_qty_open.

   APPEND wa_osr2 to it_osr.
endloop.

delete IT_OSR where customer+0(3) ne 'FMC'.
IF PLANT IS NOT INITIAL .
   delete IT_OSR where ORG <> PLANT.
ENDIF.

IF WA_OSR-REASON_4_REJ IS NOT INITIAL.
   STATUS = 'C'.
ENDIF.
*
       if status-low = 'A' and status-hiGH = 'B'.
         delete IT_OSR where po_status EQ 'COMPLETED'.
       ELSEif status-low = 'A' and status-hiGH = 'C'.
*        delete IT_OSR where po_status EQ 'PARTIALLY DELIVERED'.
       ELSEif status-low = 'B' and status-hiGH = 'C'.
         delete IT_OSR where po_status EQ 'NOT DELIVERED'.
       ELSEif status-low = 'A'.
         delete IT_OSR where po_status ne 'NOT DELIVERED'.
       ELSEif status-low = 'B'.
         delete IT_OSR where po_status ne 'PARTIALLY DELIVERED'.
       ELSEif status-low = 'C'.
         delete IT_OSR where po_status ne 'COMPLETED'.
       ENDIF.

       if Ostatus-low = 'A' and Ostatus-hiGH = 'B'.
         delete IT_OSR where o_status EQ 'CLOSED'.
       ELSEif Ostatus-low = 'A' and Ostatus-hiGH = 'C'.
*        delete IT_OSR where o_status EQ 'PARTIALLY COMPLETED'.
       ELSEif Ostatus-low = 'B' and Ostatus-hiGH = 'C'.
         delete IT_OSR where o_status EQ 'OPEN'.
       ELSEif Ostatus-low = 'A'.
         delete IT_OSR where o_status ne 'OPEN'.
       ELSEif Ostatus-low = 'B'.
         delete IT_OSR where o_status ne 'PARTIALLY COMPLETED'.
       ELSEif Ostatus-low = 'C'.
         delete IT_OSR where o_status ne 'CLOSED'.
       ENDIF.

   delete it_osr where PART_NO IS INITIAL.

  loop at it_osr into wa_osr.
            CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             EXPORTING
              INPUT         = wa_osr-REV_COMMIT_DATE
             IMPORTING
              OUTPUT        = wa_osr-REV_COMMIT_MONTH1.
            wa_osr-REV_COMMIT_MONTH1 = wa_osr-REV_COMMIT_MONTH1+3(8).


             CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             exporting
               input = wa_osr-gtn_agreed_date
             importing
               output = wa_osr-gtn_agreed_month.
           wa_osr-gtn_agreed_month = wa_osr-gtn_agreed_month+3(8).
            MODIFY it_osr from wa_osr.
            clear wa_osr.

     ENDLOOP.

sort it_osr ASCENDING by sale_order_no line_item ASCENDING slno ASCENDING.
*ENDIF.
ENDFORM.

FORM LAYOUT_INIT USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.
   RS_LAYOUT-DETAIL_POPUP      = space.
ENDFORM.

FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.

   DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
*
   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
            I_LIST_TYPE = 0
       IMPORTING
            ET_EVENTS   = RT_EVENTS.
       READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                            INTO LS_EVENT.
       IF SY-SUBRC = 0.
         MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.
         APPEND LS_EVENT TO RT_EVENTS.
       ENDIF.
ENDFORM.
"
FORM TOP_OF_PAGE.
   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
            IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
"
FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE
                                         SLIS_T_LISTHEADER.
   DATA: LS_LINE TYPE SLIS_LISTHEADER, fromdate TYPE d, todate type d, linfo type string.

   CLEAR LS_LINE.
   LS_LINE-TYP  = 'H'.
   LS_LINE-INFO = 'LOADING SHEET.'.
   APPEND LS_LINE TO LT_TOP_OF_PAGE.
*  CLEAR LS_LINE.
   LS_LINE-TYP  = 'A'.

   LS_LINE-INFO = linfo .
   APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM.

form fieldcat.

   wa_fieldcat-fieldname = 'CUSTOMER' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'CUSTOMER' .
   wa_fieldcat-outputlen = '10' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PLANT' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '6' .
   wa_fieldcat-SELTEXT_M = 'PLANT' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'WO_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   wa_fieldcat-SELTEXT_M = 'W.O.No.' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
***
   wa_fieldcat-fieldname = 'PO_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'P.O.No.'.
   wa_fieldcat-outputlen = '13'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
*
   wa_fieldcat-fieldname = 'PO_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'P.O.DATE' .
   wa_fieldcat-outputlen = '10' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SALE_ORDER_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SALE ORDER No.' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-JUST = 'R'.
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SALE_ORDER_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'S.O DATE' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   WA_FIELDCAT-JUST = 'R'.
   wa_fieldcat-outputlen = '10' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'LINE_ITEM' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '4' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   wa_fieldcat-SELTEXT_M = 'LINE ITEM' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SLNO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '4' .
   wa_fieldcat-JUST = 'R' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   wa_fieldcat-SELTEXT_M = 'S.L.NO' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ORDER_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'ORDER QTY.' .
   WA_FIELDCAT-EMPHASIZE = 'C511'.
   wa_fieldcat-outputlen = '6' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SL_QTY_OPEN' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'OPEN QTY'.
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-EMPHASIZE = 'C511'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SL_ORDER_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SL.ORDER QTY.' .
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

*  wa_fieldcat-fieldname = 'SL_QTY_OPEN' .
*  wa_fieldcat-tabname = 'IT_OSR' .
*  wa_fieldcat-SELTEXT_M = 'SL OPEN QTY' .
*  wa_fieldcat-outputlen = '6' .
*  WA_FIELDCAT-EMPHASIZE = 'C211'.
*  APPEND wa_fieldcat to i_fieldcat.
*  clear wa_fieldcat.


   wa_fieldcat-fieldname = 'PART_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '15' .
   wa_fieldcat-SELTEXT_M = 'PART No.' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'REVLV1' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'REV' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   wa_fieldcat-outputlen = '4' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'POSEX' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'CUSTOMER PO REV' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-MGR'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
*  WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'DESCRIPTION' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '35' .
   wa_fieldcat-SELTEXT_M = 'DESCRIPTION' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'MAINGRP' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'DIVISION' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'XTYPE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   wa_fieldcat-SELTEXT_M = 'TYPE' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'MODEL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'MODEL' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
**
   wa_fieldcat-fieldname = 'XSIZE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SIZE' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'TRIM' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'TRIM' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'GRP2' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'GROUP' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SUBGRP' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'SUB GRP' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ENDCON' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'END CONN' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PRES' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'PRES RATING' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PRDSPEC' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'PSL' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PERFREQ' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'PERF REQ' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
***************
   wa_fieldcat-fieldname = 'SHIPMENT_MODE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SHIPMENT MODE' .
   wa_fieldcat-outputlen = '6' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PO_STATUS' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'DELIVERY STATUS ' .
   wa_fieldcat-outputlen = '20' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'O_STATUS' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'OVERALL STATUS ' .
   wa_fieldcat-outputlen = '15' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FMC_EX_WORKS_DAT' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FMC-EX-WORKS-DATE' .
   wa_fieldcat-outputlen = '10' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FMC_EX_WORKS_MON' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FMC-EX-WORKS-MONTH' .
   WA_FIELDCAT-JUST = 'C'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'GTN_AGREED_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'GTN AGREED DATE' .
   wa_fieldcat-outputlen = '10' .
   if sy-uname = 'SD-EXEC' OR sy-uname = 'DEVELOPER' OR sy-uname = 'ABAPUSER' .
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
*  WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'GTN_AGREED_MONTH' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'GTN AGREED MONTH' .
   WA_FIELDCAT-JUST = 'C'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   if sy-uname = 'SD-EXEC'
     OR  sy-uname = 'SD-MGR'
     OR sy-uname = 'FMC-USER'
     OR sy-uname = 'VP-USER'
     OR sy-uname = 'GM-USER'
     OR sy-uname = 'DGM-USER'
     OR sy-uname = 'HO-SD-MGR'
     OR sy-uname = 'HO-FI-MGR'
     OR sy-uname = 'PM-USER'
     OR sy-uname = 'DEVELOPER'
     OR sy-uname = 'ABAPUSER'.
   wa_fieldcat-fieldname = 'UNIT_PRICE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'UNIT PRICE' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'TOTAL_PRICE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'TOTAL PRICE' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   ENDIF.

   wa_fieldcat-fieldname = 'REV_COMMIT_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'REV.COMMIT.DATE' .
   wa_fieldcat-outputlen = '10' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'REV_COMMIT_MONTH1' .
   wa_fieldcat-tabname   = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'REV COMMIT MONTH' .
   WA_FIELDCAT-JUST      = 'C'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ESI' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'ESI' .
   wa_fieldcat-outputlen = '16' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   WA_FIELDCAT-JUST      = 'C'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

    wa_fieldcat-fieldname = 'SL_QTY_OPEN' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SL OPEN QTY' .
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ESITOTAL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'ESI TOTAL' .
   wa_fieldcat-outputlen = '16' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   WA_FIELDCAT-JUST      = 'C'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FCNF' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FC/NF' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   WA_fieldcat-edit = 'X'.
   WA_FIELDCAT-INPUT = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FC_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FC QTY' .
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   WA_fieldcat-edit = 'X'.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'NF_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'NF QTY' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
    if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_fieldcat-edit = 'X'.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FC_VAL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FC VALUE' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'NF_VAL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'NF VALUE' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.


   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
endform.

FORM OSRUPDATE.


   LOOP AT IT_OSR INTO WA_OSR.

     ZOSRGTN-S_O_NO = WA_OSR-SALE_ORDER_NO.
     ZOSRGTN-LINE_ITEM = WA_OSR-LINE_ITEM.
     ZOSRGTN-S_L_NO = WA_OSR-slno.
     ZOSRGTN-WO_NO = WA_OSR-WO_NO.
     ZOSRGTN-SHP_MODE = WA_OSR-SHIPMENT_MODE.
     ZOSRGTN-PO_STAT = WA_OSR-PO_STATUS.
     ZOSRGTN-FMC_DATE = WA_OSR-FMC_EX_WORKS_DAT.
     ZOSRGTN-FMC_MONTH = WA_OSR-FMC_EX_WORKS_MON.
     ZOSRGTN-GTN_DATE = WA_OSR-GTN_AGREED_DATE.
     ZOSRGTN-GTN_MONTH = WA_OSR-GTN_AGREED_MONTH.
     ZOSRGTN-REV_COM_DAT = WA_OSR-REV_COMMIT_DATE.
     ZOSRGTN-REV_COMMIT_MONTH = WA_OSR-REV_COMMIT_MONTH1.
     ZOSRGTN-REVISION = WA_OSR-REVISION.
     ZOSRGTN-DELAY_DAYS = WA_OSR-DELAY_DAYS.
     ZOSRGTN-DELAY_REASON = WA_OSR-DELAY_REASON.
     ZOSRGTN-DN_STR_REM = WA_OSR-DN_STREAM_REMARK.
     ZOSRGTN-UP_STR_REM = WA_OSR-UP_STREAM_REMARK.
     ZOSRGTN-GEN_REM = WA_OSR-GEN_REMARKS.
     ZOSRGTN-FC_QUAN = wa_OSR-FC_QTY.
     ZOSRGTN-NF_QUAN = wa_OSR-NF_QTY.
     ZOSRGTN-FC_VALUE = wa_OSR-FC_VAL.
     ZOSRGTN-NF_VALUE = wa_OSR-NF_VAL.
     zosrgtn-esi_fig = wa_osr-esi.
     zosrgtn-esi_tot = wa_osr-esitotal.
     zosrgtn-xsize = wa_osr-xsize.
  MODIFY it_osr from wa_osr.
     clear wa_osr.

     select SINGLE s_o_no line_item from zosrgtn INTO (WA_OSR1-S_O_NO, WA_OSR1-LINE_ITEM)
       WHERE  s_o_no = WA_OSR-SALE_ORDER_NO
       and line_item = WA_OSR-LINE_ITEM
       and s_l_no = wa_osr-slno.

     if sy-subrc <> 0.
       INSERT INTO ZOSRGTN VALUES ZOSRGTN.
     else.
       UPDATE ZOSRGTN .
     ENDIF.
   ENDLOOP.
ENDFORM.

Note: Case statement is where i populate the data and got stuck up.

Read only

0 Likes
1,066

report ZLOADING.
*tables:
TABLES: vbak, vbap, vbuk, vbup, VBEP, AEOI,AENR, ZOSRGTN.

SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME title text001.
      select-OPTIONS saleord for vbak-vbeln.
      select-OPTIONS custmr for vbak-kunnr.
      select-OPTIONS partno for vbap-matnr.
      SELECT-options Ostatus for vbup-GBSTA.
      SELECT-options status for vbup-lfSTA.

      PARAMETER Plant TYPE vbak-vkorg DEFAULT 'SGTN'.
SELECTION-SCREEN END OF BLOCK 2.

TYPE-POOLS: SLIS.
types:
begin of osr1,
   POSEX TYPE VBAP-POSEX,
   AENNR TYPE AEOI-AENNR,
   REVLV TYPE AEOI-REVLV,
   REVLV1 TYPE AEOI-REVLV,
   SALE_ORDER_NO type vbap-vbeln,
   SALE_ORDER_DATE type vbak-audat,
   ORDER_TYPE TYPE VBAK-AUART,
   LINE_ITEM type vbap-posnr,
   SLNO TYPE VBEP-ETENR,
   CUSTOMER type vbak-kunnr,
   PLANT type vbap-werks,
   WO_NO(20) type C,
   PO_NO type vbak-bstnk,
   PO_DATE type vbak-bstdk,
   PO_LINE_ITEM(4) type c,
   PART_NO type vbap-matnr,
   REV(10) type c,
   DESCRIPTION type tline-tdline,
   MAINGRP TYPE MARA-SPART,
   SUBGRP type MARA-ZZMAT_SUBGRP,
   XTYPE type MARA-ZZMAT_TYPE,
   MODEL type MARA-ZZMAT_MODEL,
   XSIZE type MARA-GROES,
   TRIM type MARA-ZZMAT_TRIM,
   ENDCON TYPE MARA-ZZMAT_ENDCON,
   XTEMP TYPE MARA-ZZMAT_TEMP,
   PRES TYPE MARA-ZZMAT_PRES,
   PRDSPEC TYPE MARA-ZZMAT_PRDSPEC,
   PERFREQ TYPE MARA-ZZMAT_PERFREQ,
   GRP2 TYPE MARA-ZZMAT_GRP2,
   SHIPMENT_MODE(20) type c,
   ORDER_QTY type P, " DECimals 3,
   sl_ORDER_QTY type P, " DECimals 3,
   PO_STATUS(20) type c,
   O_status(20) type c,
   FMC_EX_WORKS_DAT type d,
   FMC_EX_WORKS_MON(50) type c,
   GTN_AGREED_DATE type D,
   GTN_AGREED_MONTH(50) type c,
   QTY_OPEN type P, " DECimals 3,
   sl_qty_open type p,
   NEW_PRICE type P DECimals 2,
   UNIT_PRICE type P DECimals 2,
   TOTAL_XY type P DECimals 2,
   TOTAL_PRICE type p DECimals 2,
   REV_COMMIT_DATE type d,
   REV_COMMIT_MONTH1(50) type c,
   REVISION(10) type c,
   STATUS(20) type c,
   DELAY_DAYS(4) type n,
   DELAY_REASON(200) type c,
*  ASSY_PLAN_DATE type D,
   reason_4_rej type vbap-abgru,
   org type vbak-vkorg,
   DN_STREAM_REMARK type char255,
   UP_STREAM_REMARK type char255,
   SHIPPING_REMARKS type Char255,
   GEN_REMARKS(40) type C,
   FMC_REMARKS type char255,
   HILITE(4) type C,
   NO_DAYS TYPE N,
   FC_qty type n,
   NF_qty type n,
   FC_val type P DECIMALS 2,
   NF_val type P DECIMALS 2,
   week type n,
   FCNF(5) type c,
   esi TYPE P,
   esitotal type p,
   ZZMAT_SUBGRP TYPE mara-ZZMAT_SUBGRP,
end of osr1.

types:
       BEGIN OF shiprem ,
         vbeln type vbrp-vbeln,
         fkdat TYPE vbrk-fkdat,
         fklmg TYPE vbrp-fklmg,
         qty(8) type n,
         vbtyp type vbfa-vbtyp_N,
         fksto type vbrk-fksto,
         matnr type vbrp-matnr,
         invcount type i,
       END OF shiprem.

data:
       t_shprem TYPE TABLE OF shiprem,
       wa_shprem TYPE shiprem,
       XMATNR(18) TYPE C,
       fmcdate(35) TYPE c,
       fmcdt type d,
       i_xtline type TABLE OF tline,
       wa_xtline TYPE tline,
       xname like THEAD-TDNAME,
       int TYPE i,
       cs TYPE i,
       op_qty type p.


DATA: ok_code TYPE sy-ucomm,
       save_ok LIKE ok_code,
       output(8) TYPE c,
       xs_o_no type zosrgtn-s_o_no,
       xline_item type zosrgtn-line_item,
       QTY_DIFF(8) TYPE N,
       lncnt type i.


DATA:
       IT_OSR type table of osr1,
       ITab_OSR type table of osr1,
       wa_osr type osr1,
       wa_osr2 type osr1,
       it_osr1 type table OF zosrGTN,
       wa_osr1 TYPE zosrGTN.


DATA:
       i_fieldcat TYPE slis_t_fieldcat_alv,
       WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

data:
       GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
       G_EXIT_CAUSED_BY_CALLER,
       GS_EXIT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER,
       G_REPID LIKE SY-REPID,
       commitdatediff TYPE i,
       QTYDIFF TYPE I,
*      partno type TABLE OF vbeln,
       wapart type vbeln,
       waline type posnr,
       waslno type vbep-etenr,
       agreed type d.
*
DATA:
       GT_EVENTS      TYPE SLIS_T_EVENT,
       GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
       G_STATUS_SET   TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',
       G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
       G_TOP_OF_PAGE  TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
       G_TOP_OF_LIST  TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST',
       ls_sort TYPE slis_sortinfo_alv ,
       IT_SORT TYPE  slis_t_sortinfo_alv ,
       G_END_OF_LIST  TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'.

DATA: GS_VARIANT LIKE DISVARIANT,
       G_SAVE.

DATA  XS(20) TYPE C.
       G_REPID = SY-REPID.
       gs_layout-info_fieldname = 'HILITE'.
       PERFORM LAYOUT_INIT USING GS_LAYOUT.
       PERFORM EVENTTAB_BUILD USING GT_EVENTS[].

       GS_VARIANT-REPORT = G_REPID.
       G_SAVE           = 'A'.

START-OF-SELECTION.
   PERFORM f_read_data.
END-OF-SELECTION.

PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

perform fieldcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING


        I_BACKGROUND_ID    = 'ALV_BACKGROUND'
        I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
        i_buffer_active    = 'X'
        I_CALLBACK_PROGRAM = G_REPID
        I_STRUCTURE_NAME   = 'GRSTAT'
        IS_LAYOUT          = GS_LAYOUT
        IT_FIELDCAT        = I_FIELDCAT[]
        IS_VARIANT         = GS_VARIANT
*       IT_SORT            = IT_SORT
        IT_EVENTS          = GT_EVENTS[]
        I_SAVE             = 'A'

   IMPORTING
        E_EXIT_CAUSED_BY_CALLER = G_EXIT_CAUSED_BY_CALLER
        ES_EXIT_CAUSED_BY_USER  = GS_EXIT_CAUSED_BY_USER
   TABLES
        T_OUTTAB = IT_OSR

   EXCEPTIONS
        PROGRAM_ERROR = 1
        OTHERS        = 2.


FORM user_command USING ucomm LIKE sy-ucomm

     selfield TYPE slis_selfield.
     data lv_ucomm type sy-ucomm.
     lv_ucomm = sy-ucomm.
     CASE lv_ucomm.
       WHEN '&DATA_SAVE'.
       PERFORM OSRUPDATE.
     endcase.
endform.

FORM f_read_data.
DATA: str1 TYPE string,
       str2 TYPE string,
       str3 TYPE string,
       textx TYPE string,
       itab TYPE TABLE OF string,
       wa type string, slen type i, cc TYPE i, kk TYPE i,
       invdate TYPE d,
       invqty TYPE P DECIMALS 3,
       xmatnr(70) type c,
       xwerks type werks.

   select VBAP~vbeln VBAP~posnr VBAP~POSEX VBAK~AUART
       into (wa_osr-sale_order_no, wa_osr-line_item, WA_OSR-POSEX, WA_OSR-ORDER_TYPE)
       from VBAP INNER JOIN VBAK
       ON VBAP~VBELN = VBAK~VBELN
       WHERE vbap~vbeln in  saleord
       and vbap~matnr in partno
       and vbak~kunnr in custmr
       and VBAK~AUART = 'ZORE'.
*      where  LFSTA <> 'c'.
*      and
       APPEND  wa_osr to IT_OSR.
   endselect.
*
clear it_osr1.
select * from zosrgtn into CORRESPONDING FIELDS OF wa_osr1
   where s_o_no in saleord.
   append wa_osr1 to it_osr1.
   xmatnr = wa_osr1-wo_no.
endselect.

loop at IT_OSR into wa_osr.

       CLEAR WA_OSR1.
       xs_o_no = wa_osr-sale_order_no .
       shift xs_o_no LEFT DELETING LEADING '0'.
       CONCATENATE xs_o_no wa_osr-line_item into xmatnr.

       select single * from zosrgtn into CORRESPONDING FIELDS OF wa_osr1
         where s_o_no = XS_O_NO
           and line_item = wa_osr-LINE_ITEM
           and s_l_no eq '000000'
           OR s_l_no is NULL.
       wa_osr-wo_no             = wa_osr1-wo_no.
       wa_osr-SHIPMENT_MODE     = wa_osr1-SHP_MODE.
       wa_osr-PO_STATUS         = wa_osr1-PO_STAT.
       wa_osr-FMC_EX_WORKS_DAT  = wa_osr1-FMC_DATE.
       wa_osr-FMC_EX_WORKS_MON  = wa_osr1-FMC_MONTH.
       wa_osr-GTN_AGREED_DATE   = wa_osr1-GTN_DATE.
       wa_osr-GTN_AGREED_MONTH  = wa_osr1-GTN_MONTH.
       wa_osr-REV_COMMIT_DATE   = wa_osr1-REV_COM_DAT.
       wa_osr-REV_COMMIT_MONTH1 = WA_OSR1-REV_COMMIT_MONTH.
       wa_osr-REVISION          = wa_osr1-REVISION.
       wa_osr-DELAY_DAYS        = wa_osr1-DELAY_DAYS.
       wa_osr-DELAY_REASON      = wa_osr1-DELAY_REASON.
       wa_osr-DN_STREAM_REMARK  = wa_osr1-DN_STR_REM.
       wa_osr-UP_STREAM_REMARK  = wa_osr1-UP_STR_REM.
       wa_osr-GEN_REMARKS       = wa_osr1-GEN_REM.
       WA_OSR-FC_QTY            = WA_OSR1-fc_QUAN.
       WA_OSR-NF_QTY            = WA_OSR1-NF_QUAN.
       wa_osr-esi               = wa_osr1-esi_fig.
       wa_osr-esitotal          = wa_osr1-esi_tot.

         select SINGLE NETPR NETWR INTO (WA_OSR-UNIT_PRICE, WA_OSR-TOTAL_PRICE)
           FROM VBAP WHERE VBELN = WA_OSR-SALE_ORDER_NO AND POSNR = WA_OSR-LINE_ITEM.

         IF SY-SUBRC <> 0.
           WA_OSR-UNIT_PRICE = WA_OSR1-UNIT_PRICE.
           WA_OSR-TOTAL_PRICE = WA_OSR1-XTOTAL.
           WA_OSR-FC_VAL = WA_OSR1-FC_VALUE.
           WA_OSR-NF_VAL = WA_OSR1-NF_VALUE.
           WA_OSR-esitotal = WA_OSR1-esi_tot.
          ENDIF.

          select single abgru
            into (wa_osr-reason_4_rej)
            from vbap
            where vbeln = wa_osr-sale_order_no
            and posnr =  wa_osr-line_item.

         select single vkorg
            into (wa_osr-org)
            from vbak
            where vbeln = wa_osr-sale_order_no.

         select single lfsta gbsta
           into (wa_osr-po_status, wa_osr-o_status)
           from vbup
           where vbeln = wa_osr-sale_order_no
           and posnr = wa_osr-LINE_ITEM.

         select single audat kunnr bstnk bstdk
           into (wa_osr-sale_order_date , wa_osr-customer , wa_osr-po_no , wa_osr-po_date)
           from vbak
           where vbeln = wa_osr-sale_order_no.
*          and audat in S_O_Date.

         select SINGLE matnr werks kwmeng " lsmeng
           into (wa_osr-part_no , wa_osr-plant ,  wa_osr-order_qty) " , wa_osr-qty_open)
           from vbap
           where vbeln = wa_osr-sale_order_no
           and posnr =  wa_osr-line_item.
*      ***********
       xmatnr+0(18) = wa_osr-part_no.
       xmatnr+18(4) = 'SGTN'.
       xmatnr+22(2) = 'EX'.
       xname = xmatnr.
       CLEAR I_XTLINE.
       CALL FUNCTION 'READ_TEXT'
         EXPORTING
              ID = '0001'
              LANGUAGE = 'E'
              NAME = XNAME
              OBJECT = 'MVKE'
         TABLES
              LINES = i_XTLINE
         EXCEPTIONS
             ID = 1
             LANGUAGE = 2
             NAME = 3
             NOT_FOUND = 4
            OBJECT = 5
           REFERENCE_CHECK = 6.


       LOOP AT i_XTLINE  into wa_xtline where tdline <> ' '.
         CONCATENATE wa_osr-description WA_xtline-TDLINE into wa_osr-description.
       endloop.

       if wa_osr-description is initial.
         wa_osr-description = '***** SALES TEXT NOT MAINTAINED'.
       ENDIF.

         select single ZZMAT_TYPE ZZMAT_MODEL GROES ZZMAT_TRIM ZZMAT_GRP2 ZZMAT_SUBGRP
           INTO (WA_OSR-XTYPE, WA_OSR-MODEL, WA_OSR-XSIZE, WA_OSR-TRIM, WA_OSR-GRP2, WA_OSR-SUBGRP)
           FROM MARA
           WHERE MATNR = WA_OSR-PART_NO.

        select single ZZMAT_ENDCON ZZMAT_TEMP ZZMAT_PRES ZZMAT_PRDSPEC ZZMAT_PERFREQ SPART
           INTO (WA_OSR-ENDCON, WA_OSR-XTEMP, WA_OSR-PRES, WA_OSR-PRDSPEC, WA_OSR-PERFREQ, WA_OSR-MAINGRP)
           FROM MARA
           WHERE MATNR = WA_OSR-PART_NO.

SELECT SINGLE ETENR
           INTO (WA_OSR-SLNO)
           FROM VBEP
           WHERE VBELN = WA_OSR-SALE_ORDER_NO
           AND POSNR = WA_OSR-LINE_ITEM.

         select max( revlv ) max( aennr )
         from aeoi
         into (wa_osr-revlv1, wa_osr-aennr)
         where objkt = wa_osr-part_no.

           if wa_osr-revlv = ' '.
              wa_osr-revlv = wa_osr-revlv1.
            endif.

       SELECT single EDATU
       INTO (WA_OSR-REV_COMMIT_DATE)
       FROM VBEP
       WHERE VBELN = WA_OSR-SALE_ORDER_NO
       AND POSNR = WA_OSR-LINE_ITEM
       and etenr = WA_OSR-SLNO.


           CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             exporting
               input = wa_osr-gtn_agreed_date
             importing
               output = wa_osr-gtn_agreed_month.
           wa_osr-gtn_agreed_month = wa_osr-gtn_agreed_month+3(8).

            CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             EXPORTING
              INPUT         = wa_osr-REV_COMMIT_DATE
             IMPORTING
              OUTPUT        = wa_osr-REV_COMMIT_MONTH1.
            wa_osr-REV_COMMIT_MONTH1 = wa_osr-REV_COMMIT_MONTH1+3(8).

         FMCDT = wa_osr-FMC_EX_WORKS_DAT.
         CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
         exporting
           input = fmcdt
         importing
           output = wa_osr-fmc_ex_works_mon.
           wa_osr-fmc_ex_works_mon = wa_osr-fmc_ex_works_mon+3(8).
*          ZOSRGTN-GEN_REM = WA_OSR-GEN_REMARKS.
       clear t_shprem.
*
        SELECT vbrp~vbeln vbrp~fklmg vbrp~matnr
         into (wa_shprem-vbeln , wa_shprem-fklmg, wa_shprem-matnr)
         from vbrp INNER JOIN vbrk on vbrp~vbeln = vbrk~vbeln
         where vbrp~aubel = wa_osr-sale_order_no
         and vbrp~aupos = wa_osr-line_item
         and vbrp~PSTYV ne 'HUPM' " PACKING MATERIAL
         and vbrp~fklmg <> 0.
*        and vbrk~fksto ne 'X'.
         APPEND wa_shprem to t_shprem.
*
       ENDSELECT.

       clear invqty.
       clear wa_osr-shipping_remarks.
       cc = 1.
       loop at t_shprem into wa_shprem. " where vbtyp eq 'J'.
         select single fkdat fksto
           into (wa_shprem-fkdat,wa_shprem-fksto)
           from vbrk
           where vbeln = wa_shprem-vbeln.

           wa_shprem-qty = wa_shprem-fklmg .
           if wa_shprem-fksto = 'X'.
             invqty = invqty - wa_shprem-qty.
           else.
             invqty = invqty + wa_shprem-qty.
           endif.
           shift wa_shprem-qty LEFT DELETING LEADING '0'.
           shift wa_shprem-vbeln LEFT DELETING LEADING '0'.
           write wa_shprem-fkdat DD/MM/YY to invdate.
           if wa_shprem-fksto ne 'X'.
           if cc = 1.
           CONCATENATE wa_osr-shipping_remarks  wa_shprem-vbeln ' / ' invdate ' / '  wa_shprem-qty  into wa_osr-shipping_remarks.
           else.
           CONCATENATE wa_osr-shipping_remarks  ' -- ' wa_shprem-vbeln ' / ' invdate ' / '  wa_shprem-qty  into wa_osr-shipping_remarks.
           endif.
              cc = cc + 1.
           endif.
       endloop  .

       textx = wa_osr-part_no.
       SPLIT textx AT '-' INTO: TABLE itab.
       loop at itab into wa.
       endloop.
       slen = sy-tfill.
       cc = 1.
       str1 = '' .

       loop at itab into wa.
           if cc = 1.
           str1 = wa.
           else.
           CONCATENATE str1 '-' wa  into str1.
           endif.
           kk = slen - 1.

           cc = cc + 1.
       endloop.

   wa_osr-qty_open = wa_osr-order_qty - invqty.

   wa_osr-fc_val = WA_OSR-UNIT_PRICE * wa_osr-fc_qty.
   wa_osr-nf_val = WA_OSR-UNIT_PRICE * wa_osr-nf_qty.


**case wa_osr-slno.
**
** when  0.
** write 'do nothing'.
** when others.
**
** Case WA_OSR-SUBGRP.
**  when 'GV ASSY' OR 'KIT ASSY'.
**
**        case WA_OSR-XSIZE+0(1).
**          when 0001.
**            wa_osr-esi = 77.
**            wa_osr2-esi = 77.
**          when 0002.
**            wa_osr-esi = 65.
**            wa_osr2-esi = 65.
**          when 0003.
**            wa_osr-esi = 104.
**            wa_osr2-esi = 104.
**          when 0004.
**           wa_osr-esi = 125.
**            wa_osr2-esi = 125.
**       endcase.
**
**
**  WHEN 'GATE'.
**
**        case WA_OSR-XSIZE+0(1).
**        when 0002.
**          wa_osr2-esi = 33.
**           wa_osr-esi = 33.
**        when 0003.
**          wa_osr2-esi = 64.
**          wa_osr-esi = 64.
**        when 0004.
**          wa_osr2-esi = 81.
**          wa_osr-esi = 81.
**        endcase.
**
**  WHEN 'SEAT'.
**
**        case WA_OSR-XSIZE+0(1).
**        when 0002.
**          wa_osr2-esi = 16.
**
**         when 0003.
**          wa_osr2-esi = 20.
**
**        when 0004.
**          wa_osr2-esi = 22.
**
**        endcase.
**  when OTHERS.
**          wa_osr2-esi = 99.
**          wa_osr-esi = 99.
**  Endcase.
**
** ENDCASE.


*MODIFY IT_OSR FROM WA_OSR.
if wa_osr-rev_commit_date is not initial.
   if wa_osr-gtn_agreed_date is not INITIAL.
         wa_osr-delay_days = wa_osr-REV_COMMIT_DATE - wa_osr-gtn_agreed_date.

       IF wa_osr-delay_days <= 0.
         wa_osr-status = 'ON SCHEDULE'.
       ELSEIF wa_osr-delay_days > 0.
         if wa_osr-delay_days <= 365.
           wa_osr-status = 'DELAY'.
         endif.
       ENDIF.
       if wa_osr-REV_COMMIT_DATE < wa_osr-gtn_agreed_date.
         wa_osr-status = 'ON SCHEDULE'.
         wa_osr-delay_days = 0.
       endif.
   else.
         wa_osr-delay_days = '0'.

   endif.
else.
   wa_osr-delay_days = '0'.
endif.

if wa_osr-delay_days > '365'.
   wa_osr-delay_days = '0'.
endif.

  QTYDIFF = WA_OSR-ORDER_QTY - WA_OSR-QTY_OPEN.

  IF  WA_OSR-PO_STATUS = 'A'.
    WA_OSR-PO_STATUS = 'NOT DELIVERED'.
  ELSEIF WA_OSR-PO_STATUS = 'B'.
    WA_OSR-PO_STATUS = 'PARTIALLY DELIVERED'.
  ELSEIF WA_OSR-PO_STATUS = 'C'.
    WA_OSR-PO_STATUS = 'COMPLETED'.
  ENDIF.


  IF  wa_osr-o_status = 'A'.
    WA_OSR-o_status = 'OPEN'.
  ELSEIF wa_osr-o_status = 'B'.
    WA_OSR-o_status = 'PARTIALLY COMPLETED'.
  ELSEIF wa_osr-o_status = 'C'.
    WA_OSR-o_status = 'CLOSED'.
  ENDIF.


  Case WA_OSR-SUBGRP.
   when 'GV ASSY' OR 'KIT ASSY'.

         case WA_OSR-XSIZE+0(1).
           when 0001.
             wa_osr-esi = 77.
             wa_osr2-esi = 77.
           when 0002.
             wa_osr-esi = 65.
             wa_osr2-esi = 65.
           when 0003.
             wa_osr-esi = 104.
             wa_osr2-esi = 104.
           when 0004.
            wa_osr-esi = 125.
             wa_osr2-esi = 125.
        endcase.


   WHEN 'GATE'.

         case WA_OSR-XSIZE+0(1).
         when 0002.
           wa_osr2-esi = 33.
            wa_osr-esi = 33.
         when 0003.
           wa_osr2-esi = 64.
           wa_osr-esi = 64.
         when 0004.
           wa_osr2-esi = 81.
           wa_osr-esi = 81.
         endcase.

   WHEN 'SEAT'.

         case WA_OSR-XSIZE+0(1).
         when 0002.
           wa_osr2-esi = 16.

          when 0003.
           wa_osr2-esi = 20.

         when 0004.
           wa_osr2-esi = 22.

         endcase.
   when OTHERS.
           wa_osr2-esi = 99.
           wa_osr-esi = 99.


   Endcase.

***********************************************
  select single count(*)
   into (lncnt) from vbep
   where  vbeln = wa_osr-sale_order_no
   and posnr = wa_osr-line_item.

wa_osr2 = wa_osr.

if lncnt > 1.
   invqty = wa_osr-qty_open.
   if wa_osr-slno = 1.
     select  vbeln posnr etenr wmeng edatu
       into (wa_osr2-sale_order_no, wa_osr2-line_item, wa_osr2-slno, wa_osr2-sl_order_qty,
             wa_osr2-REV_COMMIT_DATE)
       from vbep
       WHERE vbeln = wa_osr-sale_order_no
       and posnr = wa_osr-line_item
       order by vbeln posnr etenr DESCENDING .

      select max( revlv ) max( aennr )
         from aeoi
         into (wa_osr-revlv, wa_osr-aennr)
         where objkt = wa_osr-part_no.

       if invqty > wa_osr2-sl_order_qty.
         op_qty = wa_osr2-sl_order_qty.
         invqty = invqty  - wa_osr2-sl_order_qty.
       elseif invqty ne 0.
         op_qty = invqty.
         invqty = 0.
       else.
         op_qty = 0.
       endif.
*      wa_osr-slno = '0'.
       wa_osr2-qty_open = 0.
       wa_osr2-order_qty = 0.
       wa_osr2-sl_qty_open = op_qty.
       wa_osr2-hilite = 'C311'.
*      WA_OSR2-UNIT_PRICE = 0.
*      WA_OSR2-TOTAL_PRICE = WA_OSR2-UNIT_PRICE * wa_osr2-SL_order_qty.
       WA_OSR2-TOTAL_PRICE = 0.
       WA_OSR2-UNIT_PRICE = 0.
       APPEND  wa_osr2 to ITab_OSR.
     endselect.
   endif.
wa_osr-hilite = 'C221'.
*ELSE.
*  wa_osr-slno = '0'.
endif.
***********************************************
wa_osr-slno = 0.
TRANSLATE wa_osr-po_staTus TO UPPER CASE.
shift wa_osr-sale_order_no LEFT DELETING LEADING '0'.
*      wa_osr2-esitotal = wa_osr2-esi * wa_osr2-sl_qty_open.

MODIFY IT_OSR FROM WA_OSR.

endloop.

loop at itab_osr into wa_osr2.

   clear wa_osr1.
*  CONCATENATE '00' wa_osr2-slno into wa_osr2-slno.
   shift WA_OSR2-SALE_ORDER_NO LEFT DELETING LEADING '0'.
   select single * from zosrgtn into CORRESPONDING FIELDS OF wa_osr1
     where s_o_no = WA_OSR2-SALE_ORDER_NO
     and line_item = WA_OSR2-LINE_ITEM
     and s_l_no eq WA_OSR2-SLNO.


     wa_osr2-GTN_AGREED_DATE = wa_osr1-GTN_DATE.
     FMCDT = wa_osr2-GTN_AGREED_DATE.
         CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
         exporting
           input = fmcdt
         importing
           output = wa_osr2-GTN_AGREED_MONTH.
           wa_osr2-GTN_AGREED_MONTH = wa_osr2-GTN_AGREED_MONTH+3(8).

     wa_osr2-GTN_AGREED_MONTH = wa_osr1-GTN_MONTH.
     wa_osr2-REV_COMMIT_DATE = wa_osr1-REV_COM_DAT.
     wa_osr2-rev_commit_month1 = wa_osr1-rev_commit_month.
     wa_osr2-REVlv = wa_osr1-REVision.
**    wa_osr2-REVISION = wa_osr1-REVISION.
     wa_osr2-DELAY_DAYS = wa_osr1-DELAY_DAYS.
     wa_osr2-DELAY_REASON = wa_osr1-DELAY_REASON.
     wa_osr2-DN_STREAM_REMARK = wa_osr1-DN_STR_REM.
     wa_osr2-UP_STREAM_REMARK = wa_osr1-UP_STR_REM.
     wa_osr2-GEN_REMARKS = wa_osr1-GEN_REM.
     wa_osr2-SHIPPING_REMARKS = ' '.
     WA_OSR2-FC_QTY = WA_OSR1-FC_QUAN.
      WA_OSR2-NF_QTY = WA_OSR1-NF_QUAN.
      wa_osr2-esi = wa_osr1-esi_fig.
      wa_osr2-esitotal = wa_osr1-esi_tot.
      wa_osr-esi = wa_osr1-esi_fig.
      wa_osr-esitotal = wa_osr1-esi_tot.

       wa_osr2-fc_val = WA_OSR-UNIT_PRICE * wa_osr2-fc_qty.
       wa_osr2-nf_val = WA_OSR-UNIT_PRICE * wa_osr2-nf_qty.
       wa_osr2-esitotal = wa_osr2-esi * wa_osr2-sl_qty_open.
       wa_osr-esitotal = wa_osr2-esi * wa_osr-sl_qty_open.

   APPEND wa_osr2 to it_osr.
endloop.

delete IT_OSR where customer+0(3) ne 'FMC'.
IF PLANT IS NOT INITIAL .
   delete IT_OSR where ORG <> PLANT.
ENDIF.

IF WA_OSR-REASON_4_REJ IS NOT INITIAL.
   STATUS = 'C'.
ENDIF.
*
       if status-low = 'A' and status-hiGH = 'B'.
         delete IT_OSR where po_status EQ 'COMPLETED'.
       ELSEif status-low = 'A' and status-hiGH = 'C'.
*        delete IT_OSR where po_status EQ 'PARTIALLY DELIVERED'.
       ELSEif status-low = 'B' and status-hiGH = 'C'.
         delete IT_OSR where po_status EQ 'NOT DELIVERED'.
       ELSEif status-low = 'A'.
         delete IT_OSR where po_status ne 'NOT DELIVERED'.
       ELSEif status-low = 'B'.
         delete IT_OSR where po_status ne 'PARTIALLY DELIVERED'.
       ELSEif status-low = 'C'.
         delete IT_OSR where po_status ne 'COMPLETED'.
       ENDIF.

       if Ostatus-low = 'A' and Ostatus-hiGH = 'B'.
         delete IT_OSR where o_status EQ 'CLOSED'.
       ELSEif Ostatus-low = 'A' and Ostatus-hiGH = 'C'.
*        delete IT_OSR where o_status EQ 'PARTIALLY COMPLETED'.
       ELSEif Ostatus-low = 'B' and Ostatus-hiGH = 'C'.
         delete IT_OSR where o_status EQ 'OPEN'.
       ELSEif Ostatus-low = 'A'.
         delete IT_OSR where o_status ne 'OPEN'.
       ELSEif Ostatus-low = 'B'.
         delete IT_OSR where o_status ne 'PARTIALLY COMPLETED'.
       ELSEif Ostatus-low = 'C'.
         delete IT_OSR where o_status ne 'CLOSED'.
       ENDIF.

   delete it_osr where PART_NO IS INITIAL.

  loop at it_osr into wa_osr.
            CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             EXPORTING
              INPUT         = wa_osr-REV_COMMIT_DATE
             IMPORTING
              OUTPUT        = wa_osr-REV_COMMIT_MONTH1.
            wa_osr-REV_COMMIT_MONTH1 = wa_osr-REV_COMMIT_MONTH1+3(8).


             CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
             exporting
               input = wa_osr-gtn_agreed_date
             importing
               output = wa_osr-gtn_agreed_month.
           wa_osr-gtn_agreed_month = wa_osr-gtn_agreed_month+3(8).
            MODIFY it_osr from wa_osr.
            clear wa_osr.

     ENDLOOP.

sort it_osr ASCENDING by sale_order_no line_item ASCENDING slno ASCENDING.
*ENDIF.
ENDFORM.

FORM LAYOUT_INIT USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.
   RS_LAYOUT-DETAIL_POPUP      = space.
ENDFORM.

FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.

   DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
*
   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
            I_LIST_TYPE = 0
       IMPORTING
            ET_EVENTS   = RT_EVENTS.
       READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                            INTO LS_EVENT.
       IF SY-SUBRC = 0.
         MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.
         APPEND LS_EVENT TO RT_EVENTS.
       ENDIF.
ENDFORM.
"
FORM TOP_OF_PAGE.
   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
            IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
"
FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE
                                         SLIS_T_LISTHEADER.
   DATA: LS_LINE TYPE SLIS_LISTHEADER, fromdate TYPE d, todate type d, linfo type string.

   CLEAR LS_LINE.
   LS_LINE-TYP  = 'H'.
   LS_LINE-INFO = 'LOADING SHEET.'.
   APPEND LS_LINE TO LT_TOP_OF_PAGE.
*  CLEAR LS_LINE.
   LS_LINE-TYP  = 'A'.

   LS_LINE-INFO = linfo .
   APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM.

form fieldcat.

   wa_fieldcat-fieldname = 'CUSTOMER' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'CUSTOMER' .
   wa_fieldcat-outputlen = '10' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PLANT' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '6' .
   wa_fieldcat-SELTEXT_M = 'PLANT' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'WO_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   wa_fieldcat-SELTEXT_M = 'W.O.No.' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
***
   wa_fieldcat-fieldname = 'PO_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'P.O.No.'.
   wa_fieldcat-outputlen = '13'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
*
   wa_fieldcat-fieldname = 'PO_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'P.O.DATE' .
   wa_fieldcat-outputlen = '10' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SALE_ORDER_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SALE ORDER No.' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-JUST = 'R'.
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SALE_ORDER_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'S.O DATE' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   WA_FIELDCAT-JUST = 'R'.
   wa_fieldcat-outputlen = '10' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'LINE_ITEM' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '4' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   wa_fieldcat-SELTEXT_M = 'LINE ITEM' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SLNO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '4' .
   wa_fieldcat-JUST = 'R' .
   WA_FIELDCAT-EMPHASIZE = 'C100'.
   wa_fieldcat-SELTEXT_M = 'S.L.NO' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ORDER_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'ORDER QTY.' .
   WA_FIELDCAT-EMPHASIZE = 'C511'.
   wa_fieldcat-outputlen = '6' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SL_QTY_OPEN' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'OPEN QTY'.
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-EMPHASIZE = 'C511'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SL_ORDER_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SL.ORDER QTY.' .
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

*  wa_fieldcat-fieldname = 'SL_QTY_OPEN' .
*  wa_fieldcat-tabname = 'IT_OSR' .
*  wa_fieldcat-SELTEXT_M = 'SL OPEN QTY' .
*  wa_fieldcat-outputlen = '6' .
*  WA_FIELDCAT-EMPHASIZE = 'C211'.
*  APPEND wa_fieldcat to i_fieldcat.
*  clear wa_fieldcat.


   wa_fieldcat-fieldname = 'PART_NO' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '15' .
   wa_fieldcat-SELTEXT_M = 'PART No.' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'REVLV1' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'REV' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   wa_fieldcat-outputlen = '4' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'POSEX' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'CUSTOMER PO REV' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-MGR'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
*  WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'DESCRIPTION' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '35' .
   wa_fieldcat-SELTEXT_M = 'DESCRIPTION' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'MAINGRP' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'DIVISION' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'XTYPE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   wa_fieldcat-SELTEXT_M = 'TYPE' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'MODEL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'MODEL' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
**
   wa_fieldcat-fieldname = 'XSIZE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SIZE' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'TRIM' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'TRIM' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'GRP2' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'GROUP' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'SUBGRP' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'SUB GRP' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ENDCON' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'END CONN' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PRES' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'PRES RATING' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PRDSPEC' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'PSL' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PERFREQ' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-outputlen = '8' .
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   wa_fieldcat-SELTEXT_M = 'PERF REQ' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
***************
   wa_fieldcat-fieldname = 'SHIPMENT_MODE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SHIPMENT MODE' .
   wa_fieldcat-outputlen = '6' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'PO_STATUS' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'DELIVERY STATUS ' .
   wa_fieldcat-outputlen = '20' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'O_STATUS' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'OVERALL STATUS ' .
   wa_fieldcat-outputlen = '15' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FMC_EX_WORKS_DAT' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FMC-EX-WORKS-DATE' .
   wa_fieldcat-outputlen = '10' .
   if sy-uname <> 'FMC-USER'.
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FMC_EX_WORKS_MON' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FMC-EX-WORKS-MONTH' .
   WA_FIELDCAT-JUST = 'C'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'GTN_AGREED_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'GTN AGREED DATE' .
   wa_fieldcat-outputlen = '10' .
   if sy-uname = 'SD-EXEC' OR sy-uname = 'DEVELOPER' OR sy-uname = 'ABAPUSER' .
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EDIT = 'X'.
   ENDIF.
*  WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'GTN_AGREED_MONTH' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'GTN AGREED MONTH' .
   WA_FIELDCAT-JUST = 'C'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   if sy-uname = 'SD-EXEC'
     OR  sy-uname = 'SD-MGR'
     OR sy-uname = 'FMC-USER'
     OR sy-uname = 'VP-USER'
     OR sy-uname = 'GM-USER'
     OR sy-uname = 'DGM-USER'
     OR sy-uname = 'HO-SD-MGR'
     OR sy-uname = 'HO-FI-MGR'
     OR sy-uname = 'PM-USER'
     OR sy-uname = 'DEVELOPER'
     OR sy-uname = 'ABAPUSER'.
   wa_fieldcat-fieldname = 'UNIT_PRICE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'UNIT PRICE' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'TOTAL_PRICE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'TOTAL PRICE' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   ENDIF.

   wa_fieldcat-fieldname = 'REV_COMMIT_DATE' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'REV.COMMIT.DATE' .
   wa_fieldcat-outputlen = '10' .
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'REV_COMMIT_MONTH1' .
   wa_fieldcat-tabname   = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'REV COMMIT MONTH' .
   WA_FIELDCAT-JUST      = 'C'.
   WA_FIELDCAT-EMPHASIZE = 'C411'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ESI' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'ESI' .
   wa_fieldcat-outputlen = '16' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   WA_FIELDCAT-JUST      = 'C'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

    wa_fieldcat-fieldname = 'SL_QTY_OPEN' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'SL OPEN QTY' .
   wa_fieldcat-outputlen = '6' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'ESITOTAL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'ESI TOTAL' .
   wa_fieldcat-outputlen = '16' .
   WA_FIELDCAT-EMPHASIZE = 'X'.
   WA_FIELDCAT-JUST      = 'C'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FCNF' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FC/NF' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   WA_fieldcat-edit = 'X'.
   WA_FIELDCAT-INPUT = 'X'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FC_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FC QTY' .
   if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   WA_fieldcat-edit = 'X'.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'NF_QTY' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'NF QTY' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
    if sy-uname = 'SD-EXEC' OR SY-UNAME = 'DEVELOPER'.
   WA_FIELDCAT-INPUT = 'X'.
   WA_fieldcat-edit = 'X'.
   ENDIF.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'FC_VAL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'FC VALUE' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.

   wa_fieldcat-fieldname = 'NF_VAL' .
   wa_fieldcat-tabname = 'IT_OSR' .
   wa_fieldcat-SELTEXT_M = 'NF VALUE' .
   WA_FIELDCAT-EMPHASIZE = 'C211'.
   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.


   APPEND wa_fieldcat to i_fieldcat.
   clear wa_fieldcat.
endform.

FORM OSRUPDATE.


   LOOP AT IT_OSR INTO WA_OSR.

     ZOSRGTN-S_O_NO = WA_OSR-SALE_ORDER_NO.
     ZOSRGTN-LINE_ITEM = WA_OSR-LINE_ITEM.
     ZOSRGTN-S_L_NO = WA_OSR-slno.
     ZOSRGTN-WO_NO = WA_OSR-WO_NO.
     ZOSRGTN-SHP_MODE = WA_OSR-SHIPMENT_MODE.
     ZOSRGTN-PO_STAT = WA_OSR-PO_STATUS.
     ZOSRGTN-FMC_DATE = WA_OSR-FMC_EX_WORKS_DAT.
     ZOSRGTN-FMC_MONTH = WA_OSR-FMC_EX_WORKS_MON.
     ZOSRGTN-GTN_DATE = WA_OSR-GTN_AGREED_DATE.
     ZOSRGTN-GTN_MONTH = WA_OSR-GTN_AGREED_MONTH.
     ZOSRGTN-REV_COM_DAT = WA_OSR-REV_COMMIT_DATE.
     ZOSRGTN-REV_COMMIT_MONTH = WA_OSR-REV_COMMIT_MONTH1.
     ZOSRGTN-REVISION = WA_OSR-REVISION.
     ZOSRGTN-DELAY_DAYS = WA_OSR-DELAY_DAYS.
     ZOSRGTN-DELAY_REASON = WA_OSR-DELAY_REASON.
     ZOSRGTN-DN_STR_REM = WA_OSR-DN_STREAM_REMARK.
     ZOSRGTN-UP_STR_REM = WA_OSR-UP_STREAM_REMARK.
     ZOSRGTN-GEN_REM = WA_OSR-GEN_REMARKS.
     ZOSRGTN-FC_QUAN = wa_OSR-FC_QTY.
     ZOSRGTN-NF_QUAN = wa_OSR-NF_QTY.
     ZOSRGTN-FC_VALUE = wa_OSR-FC_VAL.
     ZOSRGTN-NF_VALUE = wa_OSR-NF_VAL.
     zosrgtn-esi_fig = wa_osr-esi.
     zosrgtn-esi_tot = wa_osr-esitotal.
     zosrgtn-xsize = wa_osr-xsize.
  MODIFY it_osr from wa_osr.
     clear wa_osr.

     select SINGLE s_o_no line_item from zosrgtn INTO (WA_OSR1-S_O_NO, WA_OSR1-LINE_ITEM)
       WHERE  s_o_no = WA_OSR-SALE_ORDER_NO
       and line_item = WA_OSR-LINE_ITEM
       and s_l_no = wa_osr-slno.

     if sy-subrc <> 0.
       INSERT INTO ZOSRGTN VALUES ZOSRGTN.
     else.
       UPDATE ZOSRGTN .
     ENDIF.
   ENDLOOP.
ENDFORM.

Note: Case statement is where i populate the data and got stuck up.

Read only

0 Likes
1,066

Instead of code

     select SINGLE s_o_no line_item from zosrgtn INTO (WA_OSR1-S_O_NO, WA_OSR1-LINE_ITEM)

       WHERE  s_o_no = WA_OSR-SALE_ORDER_NO

       and line_item = WA_OSR-LINE_ITEM

       and s_l_no = wa_osr-slno.


     if sy-subrc <> 0.

       INSERT INTO ZOSRGTN VALUES ZOSRGTN.

     else.

       UPDATE ZOSRGTN .

use::    modify ZOSRGTN from it_osr.

Read only

RaymondGiuseppi
Active Contributor
0 Likes
1,066

Maybe a good or a very basic question, difficult to decide and to respond more.. 

"read the data correctly from database" could be an answer, did I guess ?

Read The quality of an answer depends significantly on the quality of the question (or: how to ask good q...

Regards,

Raymond

Read only

Former Member
0 Likes
1,066

Hi Samuel,

Please paste the code and which will help us in comprehending the issue.

Regards,

Ankit.