cancel
Showing results for 
Search instead for 
Did you mean: 

report

Former Member
0 Kudos

pl. send model report for real time project for MM,Fico send it in my mail id rammtec_4u@yahoo.com. it's urgent pl.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Please find the report "To follow-up the ownership of the Advertising Material".

REPORT Y16M_ADVERT_MAT_CHK

LINE-SIZE 300

NO STANDARD PAGE HEADING

MESSAGE-ID 56 .

TABLES : mara, " Material Master

marc, " Plant Data for Material

mard, " Storage Location Data for Material

ekko, " Purchasing Document Header

ekpo, " Purchasing Document Item

likp, " SD Document: Delivery Header Data

mkpf, " Header: Material Document

mseg, " Document Segment: Material

t001w, " Plants/Branches

t179, " Materials: Product Hierarchies

tspa, " Organizational Unit: Sales Divisions

tvms, " Materials: Status in Sales and Distribution

t024d, " MRP controllers

t001l, " Storage Locations

t024, " Purchasing Groups

tvko, " Organizational Unit: Sales Organizations

y16m_smm_launch." Launch Numbers and Description

For ALV

TYPE-POOLS : slis. " Global types for generic craft modules

*/ Data Declaration

Internal table for output

DATA : BEGIN OF g_t_oadv OCCURS 0,

box TYPE c,

t_matnr LIKE mara-matnr,

t_ekgrp LIKE ekko-ekgrp,

t_q_rec LIKE mseg-erfmg,

t_q_gi LIKE mseg-erfmg,

t_q_gi_kit LIKE mseg-erfmg,

remin LIKE mseg-erfmg,

tot_remain LIKE mseg-erfmg,

END OF g_t_oadv.

DATA : g_t_oadv1 LIKE g_t_oadv OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF g_t_oadv2 OCCURS 0 ,

box TYPE c,

t_matnr LIKE mara-matnr,

t_ekgrp LIKE ekko-ekgrp,

t_q_rec LIKE mseg-erfmg,

t_q_gi LIKE mseg-erfmg,

t_q_gi_kit LIKE mseg-erfmg,

remin LIKE mseg-erfmg,

tot_remain LIKE mseg-erfmg,

mat2 LIKE mara-matnr,

END OF g_t_oadv2.

DATA : g_t_oadv3 LIKE g_t_oadv2 OCCURS 0 WITH HEADER LINE.

Internal table for selection criteria

DATA : BEGIN OF g_t_inp OCCURS 0,

matnr LIKE mara-matnr,

spart LIKE mara-spart,

prdha LIKE mara-prdha,

mstav LIKE mara-mstav,

zzlaunr LIKE mara-zzlaunr,

dispo LIKE marc-dispo,

werks LIKE mard-werks,

lgort LIKE mard-lgort,

ekgrp LIKE ekko-ekgrp,

vkorg LIKE likp-vkorg,

bldat LIKE mkpf-bldat,

END OF g_t_inp.

Internal table for table mseg and mkpf

DATA : BEGIN OF g_t_inp1 OCCURS 0,

mblnr LIKE mseg-mblnr,

mjahr LIKE mseg-mjahr,

zeile LIKE mseg-zeile,

matnr LIKE mseg-matnr,

werks LIKE mseg-werks,

lgort LIKE mseg-lgort,

lifnr LIKE mseg-lifnr,

kunnr LIKE mseg-kunnr,

shkzg LIKE mseg-shkzg,

erfmg LIKE mseg-erfmg,

ebeln LIKE mseg-ebeln,

kzbew LIKE mseg-kzbew,

budat LIKE mkpf-budat,

xblnr LIKE mkpf-xblnr,

END OF g_t_inp1.

DATA : g_t_kit_inp1 LIKE g_t_inp1 OCCURS 0 WITH HEADER LINE.

DATA : g_t_kit_inp2 LIKE g_t_inp1 OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF g_t_ekgrp OCCURS 0,

ekgrp LIKE ekko-ekgrp,

END OF g_t_ekgrp.

Itab for MRP

DATA : BEGIN OF g_t_mrp OCCURS 0,

matnr LIKE marc-matnr,

werks LIKE marc-werks,

dispo LIKE marc-dispo,

END OF g_t_mrp.

for delivery

DATA : BEGIN OF g_t_xblnr OCCURS 0,

xblnr LIKE mkpf-xblnr,

END OF g_t_xblnr.

DATA : BEGIN OF g_t_group OCCURS 0,

matnr LIKE mara-matnr,

ekgrp LIKE ekko-ekgrp,

END OF g_t_group.

DATA : g_t_kit_xblnr LIKE g_t_xblnr OCCURS 0 WITH HEADER LINE.

Quantity

DATA g_f_menge LIKE stpo-menge.

DATA g_f_menge_1 LIKE stpo-menge.

Counter

DATA : g_t_index TYPE sy-index.

for ALV

DATA : g_t_catalog TYPE slis_t_fieldcat_alv , " Field catalog

g_wa_sort TYPE slis_sortinfo_alv ,

g_t_sort TYPE TABLE OF slis_sortinfo_alv, " To sort the records

g_is_layout TYPE slis_layout_alv, " Layout Display

g_t_colo TYPE slis_specialcol_alv, " color settings

g_wa_colo TYPE slis_specialcol_alv. " color settings

*/

-


*/

*/ Initialisation */

*/

-


*/

INITIALIZATION.

*/

-


Input Fields

-


*/

Selection-Screens

SELECTION-SCREEN BEGIN OF BLOCK g1 WITH FRAME TITLE text-001.

SELECT-OPTIONS s_mat FOR mara-matnr. " Material No

SELECT-OPTIONS s_pdh FOR mara-prdha. " Product Hierarchy

SELECT-OPTIONS s_div FOR mara-spart. " Division

SELECT-OPTIONS s_xdc FOR mara-mstav. " X-distr.chain status

SELECT-OPTIONS s_lnr FOR mara-zzlaunr. " Launch material

SELECT-OPTIONS s_mrp FOR marc-dispo. " MRP Controller

SELECT-OPTIONS s_pla FOR marc-werks OBLIGATORY. " Plant

SELECT-OPTIONS s_stl FOR mard-lgort OBLIGATORY. " Storage Location

SELECT-OPTIONS s_pgr FOR ekko-ekgrp. " Purchasing Group

SELECT-OPTIONS s_sor FOR likp-vkorg. " Sales Organisation

SELECT-OPTIONS s_dat FOR mkpf-budat. " Date

SELECTION-SCREEN END OF BLOCK g1.

*/

-


At Selection Screen

-


*/

*/ --- Input Validations

*/ Check either one of the 1 - 4 fields ha to be filled.

AT SELECTION-SCREEN.

IF s_mat IS INITIAL AND

s_pdh IS INITIAL AND

s_div IS INITIAL AND

s_xdc IS INITIAL AND

s_lnr IS INITIAL.

MESSAGE ID '56' TYPE 'E' NUMBER '004' WITH text-012.

ENDIF.

*/ Input validation for Material

AT SELECTION-SCREEN ON s_mat.

SELECT SINGLE * FROM mara WHERE matnr IN s_mat.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_mat.

ENDIF.

*/ Input validation for Product Hierarchy

AT SELECTION-SCREEN ON s_pdh.

SELECT SINGLE * FROM t179 WHERE prodh IN s_pdh.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_pdh.

ENDIF.

*/ Input validation for Division

AT SELECTION-SCREEN ON s_div.

SELECT SINGLE * FROM tspa WHERE spart IN s_div.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_div.

ENDIF.

*/ Input validation for X-distr.chain status

AT SELECTION-SCREEN ON s_xdc.

SELECT SINGLE * FROM tvms WHERE vmsta IN s_xdc.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_xdc.

ENDIF.

*/ Input validation for Launch number

AT SELECTION-SCREEN ON s_lnr.

SELECT SINGLE * FROM y16m_smm_launch WHERE launr IN s_lnr.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_lnr.

ENDIF.

*/ Input validation for MRP Controller

AT SELECTION-SCREEN ON s_mrp.

SELECT SINGLE * FROM t024d WHERE dispo IN s_mrp.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_mrp.

ENDIF.

*/ Input validation for plant

AT SELECTION-SCREEN ON s_pla.

SELECT SINGLE * FROM t001w WHERE werks IN s_pla.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_pla.

ENDIF.

*/ Input validation for Storage Location

AT SELECTION-SCREEN ON s_stl.

SELECT SINGLE * FROM t001l WHERE lgort IN s_stl.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_stl.

ENDIF.

*/ Input validation for Purchasing Group

AT SELECTION-SCREEN ON s_pgr.

SELECT SINGLE * FROM t024 WHERE ekgrp IN s_pgr.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_pgr.

ENDIF.

*/ Input validation for Sales Organisation

AT SELECTION-SCREEN ON s_sor.

SELECT SINGLE * FROM tvko WHERE vkorg IN s_sor.

IF sy-subrc 0.

MESSAGE ID '56' TYPE 'E' NUMBER '011' WITH s_sor.

ENDIF.

*/

-


S T A R T O F S E L E C T I O N

-


*/

START-OF-SELECTION.

Getting data from table MARA,MARD

perform read_data1. " With itab g_t_inp

If input parameter of MRP controller is not initial fetch the data

from table MARC

if not s_mrp is initial.

perform read_data2. " With itab g_t_inp

endif.

Data from MSEG and MKPF using join as Number of material document

as Key element.

perform read_data3. " With itab g_t_inp1

*/ Process for Calculating the quantities

if not g_t_inp1[] is initial.

loop at g_t_inp1.

clear : g_t_oadv-t_q_rec, g_t_oadv-t_q_gi.

clear : g_t_oadv-t_ekgrp, g_t_oadv-t_q_gi_kit.

g_t_oadv-t_matnr = g_t_inp1-matnr.

**/-- Check MSEG-KZBEV.

Case g_t_inp1-kzbew.

when space. " --> IF SPACE

Movement is a transfer movement between different plants/storage

locations/ stock types

perform value_KZBEV_space.

when 'B'. " --> IF B

Movement is Goods movement for purchase order.

perform value_KZBEV_B.

when 'L'. " " --> IF B

Movement is Goods issue for delivery.

if not g_t_inp1-lifnr is initial.

perform value_KZBEV_L1. " this is a delivery for a kit

else.

perform value_KZBEV_L2.

endif.

endcase.

append g_t_oadv.

g_t_index = g_t_index + 1.

endloop.

endif.

Move the KIT Material details to o/p table.

PERFORM MOVE_KIT1_TO_MAIN.

Move KIT_KIT Material details to o/p table.

PERFORM MOVE_KIT2_TO_MAIN.

Move all Material and PR.Grp in to otab and delete duplicates

loop at g_t_oadv.

g_t_group-matnr = g_t_oadv-t_matnr.

g_t_group-ekgrp = g_t_oadv-t_ekgrp.

append g_t_group.

endloop.

sort g_t_group by matnr ekgrp.

delete ADJACENT DUPLICATES FROM g_t_group.

Add the Received,Issued material,Sales via KIT for PR.grp

perform output_table.

Calculate the Remaining and Total remaining material for output.

loop at g_t_oadv1.

if g_t_oadv1-t_q_gi < 0.

g_t_oadv1-remin = g_t_oadv1-t_q_rec + g_t_oadv1-t_q_gi .

else.

g_t_oadv1-remin = g_t_oadv1-t_q_rec - g_t_oadv1-t_q_gi .

endif.

if g_t_oadv1-t_q_gi_kit < 0.

g_t_oadv1-tot_remain = g_t_oadv1-remin + g_t_oadv1-t_q_gi_kit.

else.

g_t_oadv1-tot_remain = g_t_oadv1-remin - g_t_oadv1-t_q_gi_kit.

endif.

Update the calculated total in otab.

modify g_t_oadv1 transporting remin tot_remain

where t_matnr = g_t_oadv1-t_matnr

and t_ekgrp = g_t_oadv1-t_ekgrp.

endloop.

Sort the O/P in ascending order

sort g_t_oadv1 ascending by t_matnr.

*/

-


E N D O F S E L E C T I O N

-


*/

END-OF-SELECTION.

*/-- Display Output.

*/

-


A L V - G R I D

-


*/

Output field catalog

PERFORM build_field_catalog.

ALV form

perform ALV_output.

&----


*& Form READ_DATA1

&----


>> Get main material from MARA

-


MARA

MAKT

-


FORM READ_DATA1.

Get main material from MARA

Select gmatnr gspart gprdha gmstav g~zzlaunr

owerks olgort

into corresponding fields of table G_T_INP

from

( mara as g inner join mard as o on omatnr = gmatnr )

where g~matnr in s_mat and

g~prdha in s_pdh and

g~spart in s_div and

g~mstav in s_xdc and

g~zzlaunr in s_lnr and

o~werks in s_pla and

o~lgort in s_stl.

ENDFORM. " READ_DATA1

&----


*& Form READ_DATA2

&----


>> Get plant details for main material

-


MARC

*

-


FORM READ_DATA2.

data : l_f_matnr like marc-matnr.

Get plant details for main material

if not s_mrp is initial.

if not G_T_INP[] is initial.

select matnr dispo into (l_f_matnr,g_t_inp-dispo)

from marc for all entries

in g_t_inp

where matnr = g_t_inp-matnr and

dispo in s_mrp.

modify g_t_inp transporting dispo

where matnr = l_f_matnr.

endselect.

endif.

endif.

ENDFORM. " READ_DATA2

&----


*& Form READ_DATA3

&----


>> Get Stock details

-


MSEG

MKPF

-


FORM READ_DATA3.

Get Stock details

if not g_t_inp[] is initial.

if s_dat is initial.

select pmblnr pmjahr pzeile pmatnr pwerks plgort p~lifnr

pkunnr pshkzg perfmg pebeln p~kzbew

abudat axblnr

into corresponding fields of table G_T_INP1

from

( mseg as p inner join mkpf as a on amblnr = pmblnr

and amjahr = pmjahr )

for all entries in g_t_inp

where p~matnr = G_T_INP-matnr

and p~werks in s_pla

and p~lgort in s_stl.

else.

select pmblnr pmjahr pzeile pmatnr pwerks plgort p~lifnr

pkunnr pshkzg perfmg pebeln p~kzbew

abudat axblnr

into corresponding fields of table G_T_INP1

from

( mseg as p inner join mkpf as a on amblnr = pmblnr

and amjahr = pmjahr )

for all entries in g_t_inp

where p~matnr = G_T_INP-matnr

and p~werks in s_pla

and p~lgort in s_stl

and a~bldat in s_dat.

endif.

endif.

ENDFORM. " READ_DATA3

&----


*& Form VALUE_KZBEV_SPACE

&----


>> When Movement indicator is initial " Main MAT

-


Goods Entry

*

-


FORM VALUE_KZBEV_SPACE.

Assign pur.grp

g_t_oadv-t_ekgrp = ' '.

if g_t_inp1-shkzg = 'H'.

on H, Subract the quantity from g_t_oadv-t_q_rec

g_t_oadv-t_q_rec = g_t_oadv-t_q_rec - g_t_inp1-erfmg.

elseif g_t_inp1-shkzg = 'S'.

on S, Add the quantity with g_t_oadv-t_q_rec

g_t_oadv-t_q_rec = g_t_inp1-erfmg + g_t_oadv-t_q_rec.

endif.

ENDFORM. " VALUE_KZBEV_SPACE

&----


*& Form VALUE_KZBEV_B

&----


>> When Movement indicator is B " Main MAT

-


Goods Entry

*

-


FORM VALUE_KZBEV_B.

data :l_f_ebeln like ekko-ebeln,

l_f_ekgrp like ekko-ekgrp.

s_pgr(selection parameter) is filled continue

if s_pgr is initial.

select single ebeln ekgrp into (l_f_ebeln,l_f_ekgrp)

from ekko

where ebeln = g_t_inp1-ebeln.

else.

select single ebeln ekgrp into (l_f_ebeln,l_f_ekgrp)

from ekko

where ebeln = g_t_inp1-ebeln

and ekgrp in s_pgr.

endif.

Checking T_EKGRP is specified in selection parameters

Assign pur.grp

g_t_oadv-t_ekgrp = l_f_ekgrp.

if g_t_inp1-shkzg = 'H'.

on H, Subract the quantity from g_t_oadv-t_q_rec

g_t_oadv-t_q_rec = g_t_oadv-t_q_rec - g_t_inp1-erfmg .

elseif g_t_inp1-shkzg = 'S'.

on S, Add the quantity with g_t_oadv-t_q_rec

g_t_oadv-t_q_rec = g_t_inp1-erfmg + g_t_oadv-t_q_rec.

endif.

ENDFORM. " VALUE_KZBEV_B

&----


*& Form VALUE_KZBEV_L1

&----


>> When Movement indicator is L. " KIT delivery

-


XBLNR

*

-


FORM VALUE_KZBEV_L1.

clear g_t_xblnr.refresh g_t_xblnr .

g_t_xblnr-xblnr = g_t_inp1-xblnr.

append g_t_xblnr.

-


>> removed <<

-


if g_t_inp1-shkzg = 'H'.

on H, Subract the quantity (t_q_gi_kit)

g_t_oadv-t_q_gi_kit = g_t_inp1-erfmg - g_t_oadv-t_q_gi_kit.

elseif g_t_inp1-shkzg = 'S'.

on S, Add the quantity (t_q_gi_kit)

g_t_oadv-t_q_gi_kit = g_t_inp1-erfmg ." + g_t_oadv-t_q_gi_kit.

endif.

-


>> removed <<

-


KIT delivery

perform kit_delivery. " For delivery kit only.

ENDFORM. " VALUE_KZBEV_L1

&----


*& Form VALUE_KZBEV_L2

&----


When Movement indicator is L "Main MAT

-


Goods Issued

*

-


FORM VALUE_KZBEV_L2.

data : l_f_vbeln like likp-vbeln,

l_f_vkorg like likp-vkorg,

l_f_xblnr like likp-xblnr,

l_f_werks like mseg-werks,

l_f_ekgrp like ekko-ekgrp,

l_f_vkorg1 like likp-vkorg,

l_f_cust_grp(3),

l_f_cust_grp1(3).

if s_sor is initial.

Read likp to get sales organisation

select single vbeln vkorg xblnr into (l_f_vbeln,l_f_vkorg,l_f_xblnr)

from likp

where vbeln = g_t_inp1-xblnr.

else.

Check likp-vkorg with input selection parameter

select single vbeln vkorg xblnr into (l_f_vbeln,l_f_vkorg,l_f_xblnr)

from likp

where vbeln = g_t_inp1-xblnr and

vkorg in s_sor.

endif.

Check likp-vkorg with input selection parameter

Take first 3 char of kunnr after leading zeros

SHIFT g_t_inp1-kunnr LEFT DELETING LEADING '0'.

l_f_cust_grp = g_t_inp1-kunnr+0(3).

Read the Y16M_ADVERT_MAT to get purchasing group

SELECT werks ekgrp vkorg cust_grp into

(l_f_werks,l_f_ekgrp,

l_f_vkorg1,l_f_cust_grp1)

from Y16M_ADVERT_MAT

where werks = g_t_inp1-werks and

vkorg = l_f_vkorg and

cust_grp = l_f_cust_grp.

endselect.

if sy-subrc = 0.

g_t_oadv-t_ekgrp = l_f_ekgrp.

else.

SELECT werks ekgrp vkorg cust_grp into

(l_f_werks,l_f_ekgrp,

l_f_vkorg1,l_f_cust_grp1)

from Y16M_ADVERT_MAT

where werks = g_t_inp1-werks and

vkorg = l_f_vkorg and

cust_grp = ' '.

endselect.

Assign pur.grp

if sy-subrc = 0.

g_t_oadv-t_ekgrp = l_f_ekgrp.

else.

g_t_oadv-t_ekgrp = ' '.

endif.

endif.

if g_t_inp1-shkzg = 'H'.

on H, Subract the quantity from (t_q_gi)

g_t_oadv-t_q_gi = g_t_oadv-t_q_gi - g_t_inp1-erfmg .

elseif g_t_inp1-shkzg = 'S'.

on S, Add the quantity with (t_q_gi)

g_t_oadv-t_q_gi = g_t_inp1-erfmg + g_t_oadv-t_q_gi.

endif.

ENDFORM. " VALUE_KZBEV_L2

&----


*& Form KIT_DELIVERY

&----


KIT delivery.

-


Get KIT deliveries for main material

*

-


FORM KIT_DELIVERY.

data : l_f_lifex like likp-lifex,

l_f_ebeln like ekpo-ebeln,

l_f_matnr like ekpo-matnr,

l_f_werks like ekpo-werks,

l_f_stlnr like mast-stlnr,

l_g_lgort like ekpo-lgort,

l_f_ebelp like ekpo-ebelp.

data : lt_ekpo like ekpo occurs 0 with header line.

data : lf_ebeln like ekko-ebeln.

clear : l_f_lifex,l_f_ebeln,

l_f_matnr,l_f_werks,

l_f_stlnr,g_f_menge .

if not g_t_inp1-xblnr is initial.

Get LIFEX from likp using XBLNR

if s_sor is initial.

select single * from likp where vbeln = g_t_inp1-xblnr.

else.

select single * from likp where vbeln = g_t_inp1-xblnr

and vkorg in s_sor.

endif.

if sy-subrc = 0.

l_f_lifex = likp-lifex+1(10).

get PO number material and plant using LIFEX

select single ebeln ebelp matnr werks into

(l_f_ebeln,l_f_ebelp,l_f_matnr,l_f_werks)

from ekpo

where ebeln = l_f_lifex.

*--

{ begin of Insertion " GOK2KOR 2007-Aug-30

if EKPO have no records, Check the Archieved Orders

if sy-subrc 0.

lf_ebeln = l_f_lifex.

CALL FUNCTION 'MMPUR_PO_READ_FROM_ARCHIVE'

EXPORTING

IM_EBELN = lf_ebeln

IMPORTING

EX_EKKO =

EX_ARCHIVE_HANDLE =

TABLES

CHT_EKPO = lt_ekpo

CHT_EKET =

CHT_EKKN =

CHT_KONV =

CHT_EKBE =

CHT_EKBZ =

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

.

read table lt_ekpo with key ebeln = l_f_lifex.

if sy-subrc = 0.

l_f_matnr = lt_ekpo-matnr.

l_f_werks = lt_ekpo-werks.

endif.

endif.

End of Insertion " GOK2KOR 2007-Aug-30 }

*--

if sy-subrc = 0.

For BOM number for the KIT material

select single stlnr into (l_f_stlnr) from mast

where matnr = l_f_matnr and

werks = l_f_werks and

stlan = 'K' and

stlal = '01'.

endif.

get quantity from stpo for further calculation

select single menge into (g_f_menge) from stpo

where IDNRK = g_t_oadv-t_matnr

and stlty = 'M'

and stlnr = l_f_stlnr.

g_t_oadv-t_q_gi_kit = g_f_menge .

endif.

clear G_T_kit_INP1.

refresh G_T_kit_INP1.

Read table MKPF, MSEG with selection parameters

if s_dat is initial.

select pmblnr pmjahr pzeile pmatnr pwerks plgort p~lifnr

pkunnr pshkzg perfmg pebeln p~kzbew

abudat axblnr

into corresponding fields of table G_T_kit_INP1

from

( mseg as p inner join mkpf as a on amblnr = pmblnr

and amjahr = pmjahr )

where p~matnr = l_f_matnr

and p~werks in s_pla

and p~lgort in s_stl.

else.

select pmblnr pmjahr pzeile pmatnr pwerks plgort p~lifnr

pkunnr pshkzg perfmg pebeln p~kzbew

abudat axblnr

into corresponding fields of table G_T_kit_INP1

from

( mseg as p inner join mkpf as a on amblnr = pmblnr

and amjahr = pmjahr )

where p~matnr = l_f_matnr

and p~werks in s_pla

and p~lgort in s_stl

and a~bldat in s_dat.

endif.

Read the table g_t_oadv2 to avoid appending the repeated KIT's

read table g_t_oadv2 with key t_matnr = l_f_matnr

mat2 = g_t_oadv-t_matnr.

if sy-subrc 0.

if not g_t_kit_inp1[] is initial.

loop at g_t_kit_inp1.

g_t_oadv2-t_matnr = g_t_kit_inp1-matnr.

g_t_oadv2-mat2 = g_t_oadv-t_matnr.

case g_t_kit_inp1-kzbew.

kzbew = ' '

when space. " ---> Space

perform kit_kzbew_space.

kzbew = L

when 'L'. " -


> 'L'

if not g_t_kit_inp1-lifnr is initial.

perform kit_kzbew_l.

else.

perform kit_kzbew_else_l.

endif.

endcase.

store the kit deliveries in itab

append g_t_oadv2. " otab for KIT1

clear g_t_oadv2.

endloop.

endif.

else.

clear g_t_oadv2.

endif.

endif.

ENDFORM. " KIT_DELIVERY

&----


*& Form KIT_KZBEW_SPACE

&----


When Movement indicator is initial " KIT material

-


Goods Entry

*

-


FORM KIT_KZBEW_SPACE.

g_t_oadv2-t_ekgrp = ' '.

if g_t_kit_inp1-shkzg = 'H'.

on H, Subract the quantity from g_t_oadv2-t_q_rec --> Kit material

g_t_oadv2-t_q_rec = g_t_oadv2-t_q_rec -

( g_t_kit_inp1-erfmg * g_f_menge ).

elseif g_t_kit_inp1-shkzg = 'S'.

on S, Add the quantity with g_t_oadv2-t_q_rec --> Kit material

g_t_oadv2-t_q_rec = ( g_t_kit_inp1-erfmg * g_f_menge )

+ g_t_oadv2-t_q_rec.

endif.

ENDFORM. " KIT_KZBEW_SPACE

&----


*& Form KIT_KZBEW_L

&----


When Movement indicator is L " Kit material

-


XBLNR

*

-


FORM KIT_KZBEW_L.

clear g_t_kit_xblnr.

g_t_kit_xblnr-xblnr = g_t_kit_inp1-xblnr.

append g_t_kit_xblnr.

<< Removed >>

-


if g_t_kit_inp1-shkzg = 'H'.

on H, Subract the quantity (t_q_gi_kit) --> Kit material

g_t_oadv2-t_q_gi_kit = ( g_t_kit_inp1-erfmg * g_f_menge )

- g_t_oadv-t_q_gi_kit.

*

elseif g_t_kit_inp1-shkzg = 'S'.

on S, Add the quantity (t_q_gi_kit) --> Kit material

g_t_oadv2-t_q_gi_kit = ( g_t_kit_inp1-erfmg * g_f_menge )

+ g_t_oadv-t_q_gi_kit.

endif.

<< Removed >>

-


KIT delivery containing KIT

perform kit_2_delivery. " For kit delivery containing kit only.

ENDFORM. " KIT_KZBEW_L

&----


*& Form KIT_KZBEW_ELSE_L

&----


When Movement indicator is L. " Kit material

-


Sales Via Kit

*

-


FORM KIT_KZBEW_ELSE_L.

data : l_f_vbeln like likp-vbeln,

l_f_vkorg like likp-vkorg,

l_f_xblnr like likp-xblnr,

l_f_werks like mseg-werks,

l_f_ekgrp like ekko-ekgrp,

l_f_vkorg1 like likp-vkorg,

l_f_cust_grp(3),

l_f_cust_grp1(3).

if s_sor is initial.

Read likp to get sales organisation

select single vbeln vkorg xblnr into (l_f_vbeln,l_f_vkorg,l_f_xblnr)

from likp

where vbeln = g_t_kit_inp1-xblnr.

else.

Check likp-vkorg with input selection parameter

select single vbeln vkorg xblnr into (l_f_vbeln,l_f_vkorg,l_f_xblnr)

from likp

where vbeln = g_t_kit_inp1-xblnr and

vkorg in s_sor.

endif.

Take first 3 char of kunnr after leading zeros

SHIFT g_t_kit_inp1-kunnr LEFT DELETING LEADING '0'.

l_f_cust_grp = g_t_kit_inp1-kunnr+0(3).

Read the Y16M_ADVERT_MAT to get purchasing group

SELECT single werks ekgrp vkorg cust_grp into

(l_f_werks,l_f_ekgrp,

l_f_vkorg1,l_f_cust_grp1)

from Y16M_ADVERT_MAT

where werks = g_t_kit_inp1-werks and

vkorg = l_f_vkorg and

cust_grp = l_f_cust_grp.

if sy-subrc = 0.

EKGRP for --> Kit material

g_t_oadv2-t_ekgrp = l_f_ekgrp.

else.

SELECT single werks ekgrp vkorg cust_grp into

(l_f_werks,l_f_ekgrp,

l_f_vkorg1,l_f_cust_grp1)

from Y16M_ADVERT_MAT

where werks = g_t_kit_inp1-werks and

vkorg = l_f_vkorg and

cust_grp = ' '.

if sy-subrc = 0.

EKGRP for --> Kit material

g_t_oadv2-t_ekgrp = l_f_ekgrp.

else.

EKGRP for --> Kit material

g_t_oadv2-t_ekgrp = ' '.

endif.

endif.

if g_t_kit_inp1-shkzg = 'H'.

on H, Subract the quantity from (t_q_gi) --> Kit material

g_t_oadv2-t_q_gi_kit = g_t_oadv2-t_q_gi_kit -

( g_t_kit_inp1-erfmg * g_f_menge ) .

elseif g_t_kit_inp1-shkzg = 'S'.

on S, Add the quantity with (t_q_gi) --> Kit material

g_t_oadv2-t_q_gi_kit = ( g_t_kit_inp1-erfmg * g_f_menge ) +

g_t_oadv2-t_q_gi_kit.

endif.

ENDFORM. " KIT_KZBEW_ELSE_L

&----


*& Form KIT_2_DELIVERY

&----


KIT^KIT Material

-


Get the KIT material for KIT material

*

-


FORM KIT_2_DELIVERY.

data : l_f_lifex like likp-lifex,

l_f_ebeln like ekpo-ebeln,

l_f_matnr_1 like ekpo-matnr,

l_f_werks like ekpo-werks,

l_f_stlnr like mast-stlnr,

l_g_lgort like ekpo-lgort,

l_f_ebelp like ekpo-ebelp.

clear : l_f_lifex,l_f_ebeln,

l_f_matnr_1,l_f_werks,

l_f_stlnr,g_f_menge_1.

if not g_t_kit_inp1-xblnr is initial.

Get LIFEX from likp using XBLNR

if s_sor is initial.

select single * from likp where vbeln = g_t_kit_inp1-xblnr.

else.

select single * from likp where vbeln = g_t_inp1-xblnr

and vkorg in s_sor.

endif.

if sy-subrc = 0.

l_f_lifex = likp-lifex+1(10).

get PO number material and plant for LIFEX

select single ebeln ebelp matnr werks into

(l_f_ebeln,l_f_ebelp,l_f_matnr_1,l_f_werks)

from ekpo

where ebeln = l_f_lifex.

if sy-subrc = 0.

For BOM number for the KIT material

select single stlnr into (l_f_stlnr) from mast

where matnr = l_f_matnr_1 and

werks = l_f_werks and

stlan = 'K' and

stlal = '01'.

endif.

get quantity from stpo for further calucaltion

select single menge into (g_f_menge_1) from stpo

where IDNRK = g_t_oadv2-t_matnr

and stlty = 'M'

and stlnr = l_f_stlnr.

endif.

clear G_T_kit_INP2.

refresh G_T_kit_INP2.

Read table MKPF, MSEG with selection parameters

if s_dat is initial.

select pmblnr pmjahr pzeile pmatnr pwerks plgort p~lifnr

pkunnr pshkzg perfmg pebeln p~kzbew

abldat axblnr

into corresponding fields of table G_T_kit_INP2

from

( mseg as p inner join mkpf as a on amblnr = pmblnr

and amjahr = pmjahr )

where p~matnr = l_f_matnr_1

and p~werks in s_pla

and p~lgort in s_stl.

else.

select pmblnr pmjahr pzeile pmatnr pwerks plgort p~lifnr

pkunnr pshkzg perfmg pebeln p~kzbew

abldat axblnr

into corresponding fields of table G_T_kit_INP2

from

( mseg as p inner join mkpf as a on amblnr = pmblnr

and amjahr = pmjahr )

where p~matnr = l_f_matnr_1

and p~werks in s_pla

and p~lgort in s_stl

and a~bldat in s_dat.

endif.

>> KIT2

if not g_t_kit_inp2[] is initial.

loop at g_t_kit_inp2.

g_t_oadv3-t_matnr = g_t_kit_inp2-matnr.

g_t_oadv3-mat2 = g_t_oadv-t_matnr.

case g_t_kit_inp2-kzbew.

kzbew = space

when space.

perform kit2_kzbew_space.

kzbew = L

when 'L'.

perform kit2_kzbew_l.

endcase.

Store KIT2 deliveries in otab

append g_t_oadv3.

clear g_t_oadv3.

endloop.

endif.

endif.

ENDFORM. " KIT_2_DELIVERY

&----


*& Form KIT2_KZBEW_SPACE

&----


When Movement indicator is initial "KIT^KIT material

-


Goods Entry

*

-


FORM KIT2_KZBEW_SPACE.

Assign pur.grp

g_t_oadv3-t_ekgrp = ' '.

if g_t_kit_inp2-shkzg = 'H'.

on H, Subract the quantity --> Kit material

g_t_oadv3-t_q_rec = g_t_oadv3-t_q_rec -

( g_t_kit_inp2-erfmg * g_f_menge * g_f_menge_1 ) .

elseif g_t_kit_inp2-shkzg = 'S'.

on S, Add the quantity --> Kit material

g_t_oadv3-t_q_rec = ( g_t_kit_inp2-erfmg * g_f_menge * g_f_menge_1 )

+ g_t_oadv3-t_q_rec.

endif.

ENDFORM. " KIT2_KZBEW_SPACE

&----


*& Form KIT2_KZBEW_L

&----


*>> When Movement indicator is L

-


Goods issued by KIT^KIT material

*

-


FORM KIT2_KZBEW_L.

data : l_f_vbeln like likp-vbeln,

l_f_vkorg like likp-vkorg,

l_f_xblnr like likp-xblnr,

l_f_werks like mseg-werks,

l_f_ekgrp like ekko-ekgrp,

l_f_vkorg1 like likp-vkorg,

l_f_cust_grp(3),

l_f_cust_grp1(3).

if s_sor is initial.

Read likp to get sales organisation

select single vbeln vkorg xblnr into (l_f_vbeln,l_f_vkorg,l_f_xblnr)

from likp

where vbeln = g_t_kit_inp2-xblnr.

else.

select single vbeln vkorg xblnr into (l_f_vbeln,l_f_vkorg,l_f_xblnr)

from likp

where vbeln = g_t_kit_inp2-xblnr and

vkorg in s_sor.

endif.

Check likp-vkorg with input selection parameter

Take first 3 char of kunnr after leading zeros

SHIFT g_t_kit_inp2-kunnr LEFT DELETING LEADING '0'.

l_f_cust_grp = g_t_kit_inp2-kunnr+0(3).

Read the Y16M_ADVERT_MAT to get purchasing group

SELECT single werks ekgrp vkorg cust_grp into

(l_f_werks,l_f_ekgrp,

l_f_vkorg1,l_f_cust_grp1)

from Y16M_ADVERT_MAT

where werks = g_t_kit_inp2-werks and

vkorg = l_f_vkorg and

cust_grp = l_f_cust_grp.

if sy-subrc = 0.

EKGRP for --> Kit2 material

g_t_oadv3-t_ekgrp = l_f_ekgrp.

else.

SELECT single werks ekgrp vkorg cust_grp into

(l_f_werks,l_f_ekgrp,

l_f_vkorg1,l_f_cust_grp1)

from Y16M_ADVERT_MAT

where werks = g_t_kit_inp2-werks and

vkorg = l_f_vkorg and

cust_grp = ' '.

if sy-subrc = 0.

EKGRP for --> Kit2 material

g_t_oadv3-t_ekgrp = l_f_ekgrp.

else.

EKGRP for --> Kit2 material

g_t_oadv3-t_ekgrp = ' '.

endif.

endif.

if g_t_kit_inp2-shkzg = 'H'.

on H, Subract the quantity (t_q_gi) --> Kit material

g_t_oadv3-t_q_gi_kit = g_t_oadv3-t_q_gi_kit -

( g_t_kit_inp2-erfmg * g_f_menge * g_f_menge_1 ).

elseif g_t_kit_inp2-shkzg = 'S'.

on S, Add the quantity (t_q_gi) --> Kit material

g_t_oadv3-t_q_gi_kit =

( g_t_kit_inp2-erfmg * g_f_menge * g_f_menge_1 ) +

g_t_oadv3-t_q_gi_kit.

endif.

ENDFORM. " KIT2_KZBEW_L

&----


*& Form MOVE_KIT1_TO_MAIN

&----


Move KIT to output

-


MATNR, EKGRP,

Goods recieved, Issued

-


FORM MOVE_KIT1_TO_MAIN.

data : l_t_ekgrp like g_t_ekgrp occurs 0 with header line.

data : l_t_grp like g_t_group occurs 0 with header line.

data : l_t_oadv2_temp like g_t_oadv occurs 0 with header line.

to get all material and pur.grp.

loop at g_t_oadv2.

l_t_grp-matnr = g_t_oadv2-mat2.

l_t_grp-ekgrp = g_t_oadv2-t_ekgrp.

append l_t_grp.

endloop.

sort l_t_grp by matnr ekgrp.

delete ADJACENT DUPLICATES FROM l_t_grp.

add all related records of material and pur.grp

loop at l_t_grp.

clear : l_t_oadv2_temp-t_q_rec,l_t_oadv2_temp-t_q_gi,

l_t_oadv2_temp-t_q_gi_kit.

loop at g_t_oadv2 where mat2 = l_t_grp-matnr and

t_ekgrp = l_t_grp-ekgrp.

l_t_oadv2_temp-t_q_rec = l_t_oadv2_temp-t_q_rec +

g_t_oadv2-t_q_rec.

l_t_oadv2_temp-t_q_gi_kit = l_t_oadv2_temp-t_q_gi_kit +

g_t_oadv2-t_q_gi_kit.

endloop.

l_t_oadv2_temp-t_matnr = g_t_oadv2-mat2.

l_t_oadv2_temp-t_ekgrp = l_t_grp-ekgrp.

append l_t_oadv2_temp.

g_t_index = g_t_index + 1.

endloop.

clear : g_t_oadv2,g_t_oadv2[].

g_t_oadv2] = l_t_oadv2_temp[.

if not g_t_oadv2[] is initial.

loop at g_t_oadv2.

g_t_oadv-t_matnr = g_t_oadv2-t_matnr.

g_t_oadv-t_ekgrp = g_t_oadv2-t_ekgrp.

g_t_oadv-t_q_rec = g_t_oadv2-t_q_rec.

g_t_oadv-t_q_gi = g_t_oadv2-t_q_gi.

g_t_oadv-t_q_gi_kit = g_t_oadv2-t_q_gi_kit.

append g_t_oadv.

endloop.

endif.

refresh : g_t_oadv2,g_t_oadv2[].

ENDFORM. " MOVE_KIT1_TO_MAIN

&----


*& Form MOVE_KIT2_TO_MAIN

&----


Move KIT^KIT to OTAB

-


MATNR, EKGRP,

Goods recieved, Issued

-


FORM MOVE_KIT2_TO_MAIN.

data : l_t_ekgrp like g_t_ekgrp occurs 0 with header line.

data : l_t_grp like g_t_group occurs 0 with header line.

data : l_t_oadv3_temp like g_t_oadv occurs 0 with header line.

to get all pur.grp for output

loop at g_t_oadv3.

l_t_grp-matnr = g_t_oadv3-mat2.

l_t_grp-ekgrp = g_t_oadv3-t_ekgrp.

append l_t_grp.

endloop.

sort l_t_grp by matnr ekgrp.

delete ADJACENT DUPLICATES FROM l_t_grp.

add all related records of material and pur.grp

loop at l_t_grp.

clear : l_t_oadv3_temp-t_q_rec,l_t_oadv3_temp-t_q_gi,

l_t_oadv3_temp-t_q_gi_kit.

loop at g_t_oadv3 where mat2 = l_t_grp-matnr and

t_ekgrp = l_t_grp-ekgrp.

l_t_oadv3_temp-t_q_rec = l_t_oadv3_temp-t_q_rec +

g_t_oadv3-t_q_rec.

l_t_oadv3_temp-t_q_gi_kit = l_t_oadv3_temp-t_q_gi_kit +

g_t_oadv3-t_q_gi_kit.

endloop.

l_t_oadv3_temp-t_matnr = g_t_oadv3-mat2.

l_t_oadv3_temp-t_ekgrp = l_t_grp-ekgrp.

append l_t_oadv3_temp.

g_t_index = g_t_index + 1.

endloop.

clear : g_t_oadv3,g_t_oadv3[].

g_t_oadv3] = l_t_oadv3_temp[.

if not g_t_oadv3[] is initial.

loop at g_t_oadv3.

g_t_oadv-t_matnr = g_t_oadv3-t_matnr.

g_t_oadv-t_ekgrp = g_t_oadv3-t_ekgrp.

g_t_oadv-t_q_rec = g_t_oadv3-t_q_rec.

g_t_oadv-t_q_gi = g_t_oadv3-t_q_gi.

g_t_oadv-t_q_gi_kit = g_t_oadv3-t_q_gi_kit.

append g_t_oadv.

endloop.

endif.

refresh : g_t_oadv3,g_t_oadv3[].

ENDFORM. " MOVE_KIT2_TO_MAIN

&----


*& Form OUTPUT_TABLE

&----


Output table with MAIN,KIT,KIT^KIT material

-


EKGRP

*

-


FORM OUTPUT_TABLE.

sort g_t_oadv ascending by t_matnr t_ekgrp.

Add the received and issued material for PR.grp

if not s_pgr[] is initial.

loop at g_t_group where ekgrp in s_pgr..

clear : g_t_oadv1-t_q_rec,g_t_oadv1-t_q_gi,g_t_oadv1-t_q_gi_kit.

loop at g_t_oadv where t_matnr = g_t_group-matnr and

t_ekgrp = g_t_group-ekgrp. .

g_t_oadv1-t_q_rec = g_t_oadv1-t_q_rec + g_t_oadv-t_q_rec.

g_t_oadv1-t_q_gi = g_t_oadv1-t_q_gi + g_t_oadv-t_q_gi.

g_t_oadv1-t_q_gi_kit = g_t_oadv1-t_q_gi_kit + g_t_oadv-t_q_gi_kit.

endloop.

g_t_oadv1-t_matnr = g_t_oadv-t_matnr.

g_t_oadv1-t_ekgrp = g_t_group-ekgrp.

append g_t_oadv1.

g_t_index = g_t_index + 1.

endloop.

else.

loop at g_t_group.

clear : g_t_oadv1-t_q_rec,g_t_oadv1-t_q_gi,g_t_oadv1-t_q_gi_kit.

loop at g_t_oadv where t_matnr = g_t_group-matnr and

t_ekgrp = g_t_group-ekgrp. .

g_t_oadv1-t_q_rec = g_t_oadv1-t_q_rec + g_t_oadv-t_q_rec.

g_t_oadv1-t_q_gi = g_t_oadv1-t_q_gi + g_t_oadv-t_q_gi.

g_t_oadv1-t_q_gi_kit = g_t_oadv1-t_q_gi_kit + g_t_oadv-t_q_gi_kit.

endloop.

g_t_oadv1-t_matnr = g_t_oadv-t_matnr.

g_t_oadv1-t_ekgrp = g_t_group-ekgrp.

append g_t_oadv1.

g_t_index = g_t_index + 1.

endloop.

endif.

ENDFORM. " OUTPUT_TABLE

&----


*& Form KIT2_OTHERS

&----


*

-


*

*

-


FORM KIT2_OTHERS.

if g_t_kit_inp2-shkzg = 'H'.

on H, Subract the quantity (t_q_gi) --> Kit material

g_t_oadv3-t_q_gi_kit = g_t_oadv3-t_q_gi_kit -

( g_t_kit_inp2-erfmg * g_f_menge * g_f_menge_1 ).

elseif g_t_kit_inp2-shkzg = 'S'.

on S, Add the quantity (t_q_gi) --> Kit material

g_t_oadv3-t_q_gi_kit =

( g_t_kit_inp2-erfmg * g_f_menge * g_f_menge_1 ) +

g_t_oadv3-t_q_gi_kit.

endif.

ENDFORM. " KIT2_OTHERS

&----


*& Form KIT_OTHERS

&----


*

-


*

*

-


FORM KIT_OTHERS.

if g_t_kit_inp1-shkzg = 'H'.

on H, Subract the quantity (t_q_gi) --> Kit material

g_t_oadv2-t_q_gi_kit = g_t_oadv2-t_q_gi_kit -

( g_t_kit_inp1-erfmg * g_f_menge ).

elseif g_t_kit_inp1-shkzg = 'S'.

on S, Add the quantity (t_q_gi) --> Kit material

g_t_oadv2-t_q_gi_kit = ( g_t_kit_inp1-erfmg * g_f_menge ) +

g_t_oadv2-t_q_gi_kit.

endif.

ENDFORM. " KIT_OTHERS

&----


*& Form ALV_output

&----


DISPLAY O/P

-


FORM ALV_output .

DATA : V_PNAME TYPE SY-REPID.

V_PNAME = SY-REPID.

move 'COLOR_LINE' to g_is_layout-info_fieldname.

move 'BOX' to g_is_layout-box_fieldname.

Move 'X' to g_is_layout-zebra.

MOVE 'T_MATNR' to g_wa_sort-fieldname.

MOVE 'G_T_OADV1' to g_wa_sort-tabname.

MOVE 'X' to g_wa_sort-subtot.

MOVE 'X' to g_wa_sort-up.

append g_wa_sort to g_t_sort.

*/ ALV List - output

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = V_PNAME

I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

i_callback_user_command = 'USER_COMMAND'

IS_LAYOUT = g_is_layout

it_sort = g_t_sort

it_fieldcat = g_t_catalog

i_save = 'A'

TABLES

t_outtab = g_t_oadv1

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF sy-subrc 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " ALV_output

&----


*& Form BUILD_FIELD_CATALOG

&----


FIELD CATALOG

-


*

*

-


FORM BUILD_FIELD_CATALOG.

REFRESH : g_t_catalog.

DATA : g_wa_catalog LIKE LINE OF g_t_catalog.

*/ Add Material Number

CLEAR g_wa_catalog.

g_wa_catalog-fieldname = 'T_MATNR'.

g_wa_catalog-tabname = 'G_T_OADV1'.

g_wa_catalog-outputlen = '16'.

g_wa_catalog-seltext_m = 'Material'.

g_wa_catalog-key = 'X'.

g_wa_catalog-just = 'L'.

g_wa_catalog-emphasize = 'C610'.

APPEND g_wa_catalog TO g_t_catalog.

*/ Add Pur Orgz

CLEAR g_wa_catalog.

g_wa_catalog-fieldname = 'T_EKGRP'.

g_wa_catalog-tabname = 'G_T_OADV1'.

g_wa_catalog-outputlen = '10'.

g_wa_catalog-seltext_L = text-011.

g_wa_catalog-key = 'X'.

g_wa_catalog-just = 'L'.

APPEND g_wa_catalog TO g_t_catalog.

*/ Add Recieved

CLEAR g_wa_catalog.

g_wa_catalog-fieldname = 'T_Q_REC'.

g_wa_catalog-tabname = 'G_T_OADV1'.

g_wa_catalog-outputlen = '15'.

g_wa_catalog-seltext_m = text-013.

g_wa_catalog-just = 'L'.

g_wa_catalog-do_sum = 'X'.

APPEND g_wa_catalog TO g_t_catalog.

*/ Add Goods Issued

CLEAR g_wa_catalog.

g_wa_catalog-fieldname = 'T_Q_GI'.

g_wa_catalog-tabname = 'G_T_OADV1'.

g_wa_catalog-outputlen = '15'.

g_wa_catalog-seltext_m = text-014.

g_wa_catalog-just = 'L'.

g_wa_catalog-do_sum = 'X'.

APPEND g_wa_catalog TO g_t_catalog.

*/ Add remaining stock

CLEAR g_wa_catalog.

g_wa_catalog-fieldname = 'REMIN'.

g_wa_catalog-tabname = 'G_T_OADV1'.

g_wa_catalog-outputlen = '15'.

g_wa_catalog-seltext_m = text-015.

g_wa_catalog-just = 'L'.

g_wa_catalog-do_sum = 'X'.

APPEND g_wa_catalog TO g_t_catalog.

*/ Add Sales via KIT

CLEAR g_wa_catalog.

g_wa_catalog-fieldname = 'T_Q_GI_KIT'.

g_wa_catalog-tabname = 'G_T_OADV1'.

g_wa_catalog-outputlen = '15'.

g_wa_catalog-seltext_m = text-016.

g_wa_catalog-just = 'L'.

g_wa_catalog-do_sum = 'X'.

APPEND g_wa_catalog TO g_t_catalog.

*/ Add Sales via KIT

CLEAR g_wa_catalog.

g_wa_catalog-fieldname = 'TOT_REMAIN'.

g_wa_catalog-tabname = 'G_T_OADV1'.

g_wa_catalog-outputlen = '15'.

g_wa_catalog-seltext_m = text-017.

g_wa_catalog-just = 'L'.

g_wa_catalog-do_sum = 'X'.

APPEND g_wa_catalog TO g_t_catalog.

ENDFORM. " BUILD_FIELD_CATALOG

Reward Points if helpful.