Select on VBEP-EDATU
Hi,
I need to find all sales order which have to be delivered to a selected date.
So I make Querry with an acces on VBEP-EDATU but the performance are very bad. How can I increase the performance ?
Thanks
Eric
select
VBEPEDATU VBEPPOSNR VBEPVBELN VBAPWERKS VBAPMATNR VBAPVRKME VBAPKBMENG VBAPKWMENG VBAPABGRU VBAPUEPOS VBAPPOSNR VBAPVBELN VBAPMEINS VBUPLFSTA VBUPLFGSA VBUPABSTA VBUPGBSTA VBUPPOSNR VBUPVBELN VBUKGBSTK VBUKABSTK VBUKCMGST VBUKLFSTK VBUKSPSTG VBUKVBELN VBPAKUNNR VBPAPARVW VBPAVBELN
from ( VBEP
left outer join VBAP
on VBAPPOSNR = VBEPPOSNR
and VBAPVBELN = VBEPVBELN
inner join VBUP
on VBUPPOSNR = VBAPPOSNR
and VBUPVBELN = VBAPVBELN
inner join VBUK
on VBUKVBELN = VBAPVBELN
inner join VBPA
on VBPAVBELN = VBAPVBELN )
where VBEP~EDATU in SP$00002
and VBUP~LFSTA in SP$00010
and VBUP~LFGSA in SP$00011
and VBUP~ABSTA in SP$00012
and VBUP~GBSTA in SP$00013
and VBUK~GBSTK in SP$00005
and VBUK~ABSTK in SP$00006
and VBUK~CMGST in SP$00007
and VBUK~LFSTK in SP$00008
and VBUK~SPSTG in SP$00009
and VBPA~PARVW in SP$00016 .
endif.
I see my problem is on "where VBEP~EDATU in SP$00002", the program check the full table VBEP (15 544 589 records)
Thanks for your help
Similar Messages
-
Hi,
I have a requirement to modify the schedule line date based on the planned delivery delivery days maintained in the purchasing info record.
The purchasing info record details are available only at the time of document save USEREXIT_SAVE_DOCUMENT.
I am using the update indicator to update the date in XVBEP,but still it does not work.
xvbep-edatu = .............
xvbep-updkz = 'U'.
MODIFY xvbep.
But this still does not work.
Can you please let me know if some additional parameter is required to achieve this.
Many Thanks.
Regards,
Babul.As you know, MV45AFZ* includes are always active. USEREXIT_SAVE_DOCUMENT is too late to change any internal tables...that subroutine is used only to launch other processes, etc. In USEREXIT_SAVE_DOCUMENT_PREPARE, you may find that you have to modify the internal VBEP rather than XVBEP... I don't understand why the data you need would only be available at that point... Surely, you can obtain or find earlier in the process.
-
Due to MODIF ID, SELECT query in START-OF-SELECTION not getting triggered
Dear SAP Gurus,
I'm stuck with this program, where, my program is not being executed, as in, my SELECT query in my event START-OF-SELECTION is not getting triggered. Since i hav used MODIF ID, for SELECT-OPTIONS, even after putting the entries in select-options...................when i click on the execute button, or press F8, the program still goes into the AT SELECTION-SCREEN OUTPUT event..........but i want it to goto START-OF-SELECTION event where my SELECT query is........what should i do??????????????
Please find the notepad file having the code, n exucse me for any selection-texts absence.
Need help from u in this issue.
Thanks in advance.
REPORT ZPPR_CONVSTAT NO STANDARD PAGE HEADING.
INCLUDE ZPPR_CONVSTAT_TOP. " data declaration
INCLUDE ZPPR_CONVSTAT_SEL_CRITERIA. " selection criteria
INCLUDE ZPPR_CONVSTAT_PBO. " event at selection-screen output
INCLUDE ZPPR_CONVSTAT_START_SELECTION. " event start-of-selection
INCLUDE ZPPR_CONVSTAT_F_START_OF_SEL.
*& Include ZPPR_CONVSTAT_TOP
TABLES : VBUK,
VBUP,
VBAK,
VBAP,
VBEP,
VBPA,
TVAK,
EKUB,
LIKP,
LIPS,
MARA,
MAKT,
MARC,
PLAF,
AUFK,
AFKO,
AFPO,
AFVC,
AFVV,
CRHD,
PBIM,
KNA1,
T134,
IOHEADER,
IOITEM.
TYPE-POOLS : slis.
TYPES : BEGIN OF ty_final,
werks TYPE vbap-werks, "Plant
auart TYPE vbak-auart, "Sales Order Doc. type
erdat TYPE vbak-erdat, "Sales Order Creation date
vbeln TYPE vbak-vbeln, "Sales Order No.
posnr TYPE vbap-posnr, "Sales Order Item No.
aedat TYPE vbak-aedat, "Sales Order Change Date
kwmeng TYPE vbap-kwmeng, "Sales Order qty.
vdatu TYPE vbak-vdatu, "Requested Delivery Date
lfimg TYPE lips-lfimg, "Sales Order Delivered Qty.
matnr TYPE vbap-matnr, "Material ID
arktx TYPE vbap-arktx, "Material Description
strgr TYPE marc-strgr, "Planning Strategy
vrkme TYPE vbap-vrkme, "UOM
plnum TYPE plaf-plnum, "Plan Order No.
gsmng TYPE plaf-gsmng, "Plan Order Qty.
auffx TYPE plaf-auffx, "Plan Order Firming Indicator u2013 Qty.
stlfx TYPE plaf-stlfx, "Plan Order Firming Indicator - Component
erdat2 TYPE aufk-erdat, "Production Order Creation Date
aufnr TYPE aufk-aufnr, "Production Order No.
prdqty TYPE afko-gamng, "Production Order qty.
pckqty TYPE lips-lfimg, "Packed Delivered Qty.
psamg TYPE afpo-psamg, "Allotted scrap
igmng TYPE afko-igmng, "Confirmed Yield Qty.
iasmg TYPE afko-iasmg, "Confirmed Scrap Qty
iamng TYPE afpo-iamng, "Expected Yield
wemng TYPE afpo-wemng, "Delivered Qty.
altscrp TYPE c LENGTH 6, "Allotted Scrap %
actscrp TYPE c LENGTH 6, "Actual Scrap %
umrez TYPE afvv-umrez, "Ups (from Prd. ORD)
ups TYPE clobjdat-ausp1, "Ups (from Material Master)
crtnstl TYPE clobjdat-ausp1, "Carton Style
ppopr TYPE clobjdat-ausp1, "Pre-Printing Operation
brdtyp TYPE clobjdat-ausp1, "Board Type
lsdim1 TYPE clobjdat-ausp1, "Layout Size u2013 Dim 1
lsdim2 TYPE clobjdat-ausp1, "Layout Size u2013 Dim 2
lsgsm TYPE clobjdat-ausp1, "GSM
inktyp TYPE clobjdat-ausp1, "Ink Type
foiltyp TYPE clobjdat-ausp1, "Foiling
wintyp TYPE clobjdat-ausp1, "Window Type
lamin TYPE clobjdat-ausp1, "Lamination
fsvrnsh TYPE clobjdat-ausp1, "Front Side Varnish
bsvrnsh TYPE clobjdat-ausp1, "Back Side Varnish
emboss TYPE clobjdat-ausp1, "Embossing
punch TYPE clobjdat-ausp1, "Punching
paste TYPE clobjdat-ausp1, "Pasting
oprno TYPE afvc-vornr, "Operation No.
wrkcntr TYPE crhd-arbpl, "Work Centre
oprtxt TYPE afvc-ltxa1, "Operation Text
oprqty TYPE afvv-mgvrg, "Operation qty.
yield TYPE afvv-lmnga, "Yield
scrap TYPE afvv-xmnga, "Scrap
jobtyp TYPE vbak-augru, "Job Type
prordst TYPE bsvx-sttxt, "Production Order Status
solinst TYPE vbup-lfsta, "Sales Order Line Item Status
sldprty TYPE kna1-name1, "Sold to Party Name
shpprty TYPE kna1-name1, "Ship to Party Name
shpcity TYPE kna1-ort01, "Ship to party - City
END OF ty_final.
TYPES : BEGIN OF ty_vbak,
auart TYPE vbak-auart,
erdat TYPE vbak-erdat, "Doc creation date
vbeln TYPE vbak-vbeln,
aedat TYPE vbak-aedat, "Doc change date
vdatu TYPE vbak-vdatu, "Requested delivery date
kunnr TYPE vbak-kunnr,
augru TYPE vbak-augru, "Job Type
END OF ty_vbak.
TYPES : BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
werks TYPE vbap-werks,
matnr TYPE vbap-matnr,
arktx TYPE vbap-arktx,
kwmeng TYPE vbap-kwmeng,
vrkme TYPE vbap-vrkme,
END OF ty_vbap.
TYPES : BEGIN OF ty_pbim,
pbdnr TYPE pbim-pbdnr, "Requirements Plan Number
bdzei TYPE pbim-bdzei, "Independent requirements pointer
matnr TYPE pbim-matnr,
werks TYPE pbim-werks,
END OF ty_pbim.
TYPES : BEGIN OF ty_pbhi,
bdzei TYPE pbhi-bdzei, "Independent requirements pointer
pdatu TYPE pbhi-pdatu, "Requirement date
laeda TYPE pbhi-laeda, "Date of Last Change
END OF ty_pbhi.
TYPES : BEGIN OF ty_ekko,
ebeln TYPE ekko-ebeln, "STO doc no
bsart TYPE ekko-bsart,
reswk TYPE ekko-reswk, "Supplying plant
aedat TYPE ekko-aedat, "Doc creation date
END OF ty_ekko.
TYPES : BEGIN OF ty_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
aedat TYPE ekpo-aedat, "Doc change date
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
matnr TYPE ekpo-matnr,
txz01 TYPE ekpo-txz01,
END OF ty_ekpo.
TYPES : BEGIN OF ty_eket,
ebeln TYPE eket-ebeln,
ebelp TYPE eket-ebelp,
eindt TYPE eket-eindt, "Requested delivery date
END OF ty_eket.
TYPES : BEGIN OF ty_lips,
vbeln TYPE lips-vbeln,
posnr TYPE lips-posnr,
vgbel TYPE lips-vgbel,
vgpos TYPE lips-vgpos,
lfimg TYPE lips-lfimg,
END OF ty_lips.
TYPES : BEGIN OF ty_plaf,
plnum TYPE plaf-plnum,
matnr TYPE plaf-matnr,
gsmng TYPE plaf-gsmng,
auffx TYPE plaf-auffx,
stlfx TYPE plaf-stlfx,
kdauf TYPE plaf-kdauf,
kdpos TYPE plaf-kdpos,
pbdnr TYPE plaf-pbdnr,
END OF ty_plaf.
TYPES : BEGIN OF ty_aufk,
aufnr TYPE aufk-aufnr,
erdat TYPE aufk-erdat,
objnr TYPE aufk-objnr,
END OF ty_aufk.
TYPES : BEGIN OF ty_afko,
aufnr TYPE afko-aufnr,
gamng TYPE afko-gamng, "Total order quantity
gasmg TYPE afko-gasmg, "Total scrap quantity in the order
igmng TYPE afko-igmng, "Confirmed Yield Qty
iasmg TYPE afko-iasmg, "Confirmed Scrap Qty
aufpl TYPE afko-aufpl, "Routing number of operations in the order
END OF ty_afko.
TYPES : BEGIN OF ty_afpo,
aufnr TYPE afpo-aufnr,
plnum TYPE afpo-plnum,
matnr TYPE afpo-matnr,
pgmng TYPE afpo-pgmng, "Plan Order Qty
kdauf TYPE afpo-kdauf,
kdpos TYPE afpo-kdpos,
psamg TYPE afpo-psamg, "Allotted scrap
iamng TYPE afpo-iamng, "Expected Yield Variance
wemng TYPE afpo-wemng, "Delivered Qty
END OF ty_afpo.
TYPES : BEGIN OF ty_afvc,
vornr TYPE afvc-vornr,
aufpl TYPE afvc-aufpl, "Routing number of operations in the order
aplzl TYPE afvc-aplzl, "General counter for order
arbid TYPE afvc-arbid, "Object ID of the resource
ltxa1 TYPE afvc-ltxa1,
END OF ty_afvc.
TYPES : BEGIN OF ty_afvv,
aufpl TYPE afvv-aufpl, "Routing number of operations in the order
aplzl TYPE afvv-aplzl, "General counter for order
umrez TYPE afvv-umrez,
mgvrg TYPE afvv-mgvrg,
lmnga TYPE afvv-lmnga,
xmnga TYPE afvv-xmnga,
END OF ty_afvv.
TYPES : BEGIN OF ty_mdvm,
mdkey TYPE mdvm-mdkey,
disst TYPE mdkp-disst,
matnr TYPE mdkp-matnr,
plwrk TYPE mdkp-plwrk,
END OF ty_mdvm.
DATA : it_final TYPE STANDARD TABLE OF ty_final,
it_vbak TYPE STANDARD TABLE OF ty_vbak,
it_vbap TYPE STANDARD TABLE OF ty_vbap,
it_lips TYPE STANDARD TABLE OF ty_lips,
it_pbim TYPE STANDARD TABLE OF ty_pbim,
it_pbhi TYPE STANDARD TABLE OF ty_pbhi,
it_ekko TYPE STANDARD TABLE OF ty_ekko,
it_ekpo TYPE STANDARD TABLE OF ty_ekpo,
it_eket TYPE STANDARD TABLE OF ty_eket,
it_plaf TYPE STANDARD TABLE OF ty_plaf,
it_aufk TYPE STANDARD TABLE OF ty_aufk,
it_afko TYPE STANDARD TABLE OF ty_afko,
it_afpo TYPE STANDARD TABLE OF ty_afpo,
it_afvc TYPE STANDARD TABLE OF ty_afvc,
it_afvv TYPE STANDARD TABLE OF ty_afvv,
it_mdvm TYPE STANDARD TABLE OF ty_mdvm.
DATA : wa_final TYPE ty_final,
wa_vbak TYPE ty_vbak,
wa_vbap TYPE ty_vbap,
wa_lips TYPE ty_lips,
wa_pbim TYPE ty_pbim,
wa_pbhi TYPE ty_pbhi,
wa_ekko TYPE ty_ekko,
wa_ekpo TYPE ty_ekpo,
wa_eket TYPE ty_eket,
wa_plaf TYPE ty_plaf,
wa_aufk TYPE ty_aufk,
wa_afko TYPE ty_afko,
wa_afpo TYPE ty_afpo,
wa_afvc TYPE ty_afvc,
wa_afvv TYPE ty_afvv,
wa_mdvm TYPE ty_mdvm.
DATA : it_object TYPE hum_object_t,
wa_object TYPE hum_object,
it_item TYPE hum_hu_item_t,
wa_item TYPE vepovb,
count1(6) TYPE n.
DATA : gv_objek TYPE ausp-objek. "Put matnr for use in FM u2018CLAF_CLASSIFICATION_OF_OBJECTSu2019
DATA : BEGIN OF it_sclass OCCURS 0.
INCLUDE STRUCTURE sclass.
DATA : END OF it_sclass.
DATA : BEGIN OF it_clobjdat OCCURS 0.
INCLUDE STRUCTURE clobjdat.
DATA : END OF it_clobjdat.
*& Include ZPPR_CONVSTAT_SEL_CRITERIA
SELECTION-SCREEN FOR 'PLANNING STAGE'
SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME TITLE text-001.
PARAMETERS: mrpntdn RADIOBUTTON GROUP sel DEFAULT 'X' user-command flag,
pldord RADIOBUTTON GROUP sel,
prdord RADIOBUTTON GROUP sel.
SELECTION-SCREEN END OF BLOCK main.
SELECTION-SCREEN FOR 'SELECTION BY PLANT AND PLANT DATA'
SELECTION-SCREEN BEGIN OF BLOCK plant WITH FRAME TITLE text-002.
PARAMETERS : p_werks LIKE ioheader-werks OBLIGATORY DEFAULT '1100' MATCHCODE OBJECT H_T001W.
SELECT-OPTIONS : so_matnr FOR ioitem-matnr MATCHCODE OBJECT MAT1.
PARAMETERS : so_mtart TYPE t134-mtart OBLIGATORY DEFAULT 'ZFIN' MATCHCODE OBJECT H_T134.
SELECT-OPTIONS : so_plnum FOR ioitem-plnum MATCHCODE OBJECT plnum MODIF ID pld,
so_aufnr FOR ioheader-aufnr MATCHCODE OBJECT orde MODIF ID prd.
PARAMETERS : p_prdsta LIKE tj02t-txt04 MODIF ID prd.
SELECTION-SCREEN END OF BLOCK plant.
SELECTION-SCREEN FOR 'SELECTION BY REQUIREMENT TYPE'
SELECTION-SCREEN BEGIN OF BLOCK reqtyp WITH FRAME TITLE text-003.
PARAMETERS : cb_so TYPE AUSWL_EB AS CHECKBOX USER-COMMAND flag,
cb_sto TYPE AUSWL_EB AS CHECKBOX USER-COMMAND flag,
cb_pir TYPE AUSWL_EB AS CHECKBOX USER-COMMAND flag.
SELECTION-SCREEN END OF BLOCK reqtyp.
SELECTION-SCREEN FOR 'SELECTION BY DATE AND REQUIREMENT TYPE NOS'
SELECTION-SCREEN BEGIN OF BLOCK dtreqtypno WITH FRAME TITLE text-004.
SELECT-OPTIONS : so_crtdt FOR vbak-erdat MODIF ID gen,
so_vbeln FOR vbap-vbeln MATCHCODE OBJECT WTY_F4_VBAP MODIF ID rso,
so_posnr FOR vbap-posnr MODIF ID rso,
so_ebeln FOR ekub-ebeln MATCHCODE OBJECT MEKKM MODIF ID rst,
so_ebelp FOR ekub-ebelp MODIF ID rst,
so_pbdnr FOR pbim-pbdnr MODIF ID rpi,
so_reqdt FOR vbep-edatu MODIF ID gen.
SELECTION-SCREEN END OF BLOCK dtreqtypno.
SELECTION-SCREEN FOR 'SELECTION BY OTHER PARAMETERS'
SELECTION-SCREEN BEGIN OF BLOCK othrparam WITH FRAME TITLE text-005.
SELECT-OPTIONS : so_kunnr FOR kna1-kunnr MATCHCODE OBJECT debi MODIF ID rso,
so_auart FOR tvak-auart MATCHCODE OBJECT H_TVAK MODIF ID rso,
so_lfsta FOR vbup-lfsta MODIF ID rso.
SELECTION-SCREEN END OF BLOCK othrparam.
*& Include ZPPR_CONVSTAT_PBO
*& Event AT SELECTION-SCREEN OUTPUT
AT SELECTION-SCREEN OUTPUT.
IF mrpntdn = 'X'.
LOOP AT SCREEN.
IF ( screen-group1 = 'PLD' OR screen-group1 = 'PRD' ).
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF pldord = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'PLD'.
screen-intensified = 1.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'PRD'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF prdord = 'X'.
LOOP AT SCREEN.
IF ( screen-group1 = 'PLD' OR screen-group1 = 'PRD' ).
screen-intensified = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF ( cb_so = ' ' AND cb_sto = ' ' AND cb_pir = ' ' ).
LOOP AT SCREEN.
IF ( screen-group1 = 'GEN'
OR screen-group1 = 'RSO'
OR screen-group1 = 'RST'
OR screen-group1 = 'RPI' ).
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF cb_so = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'RSO'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
IF cb_sto = ' '.
LOOP AT SCREEN.
IF screen-group1 = 'RST'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF cb_pir = ' '.
LOOP AT SCREEN.
IF screen-group1 = 'RPI'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF cb_sto = 'X'.
IF cb_so = ' '.
LOOP AT SCREEN.
IF screen-group1 = 'RSO'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF cb_pir = ' '.
LOOP AT SCREEN.
IF screen-group1 = 'RPI'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF cb_pir = 'X'.
IF cb_so = ' '.
LOOP AT SCREEN.
IF screen-group1 = 'RSO'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF cb_sto = ' '.
LOOP AT SCREEN.
IF screen-group1 = 'RST'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
*& Include ZPPR_CONVSTAT_START_SELECTION
*& Event START-OF-SELECTION
IF mrpntdn = 'X'.
PERFORM start_of_selection_mrpntdn.
ELSEIF pldord = 'X'.
PERFORM start_of_selection_pldord.
ELSEIF prdord = 'X'.
PERFORM start_of_selection_prdord.
ENDIF.
*& Include ZPPR_CONVSTAT_F_START_OF_SEL
*& Form START_OF_SELECTION
Subroutine for MRP NOT DONE
FORM start_of_selection_mrpntdn.
SELECT mdkey INTO TABLE it_mdvm FROM mdvm
WHERE GSAEN = 'X'
AND AKKEN = 'X'.
IF sy-subrc = 0.
LOOP AT it_mdvm INTO wa_mdvm.
wa_mdvm-disst = wa_mdvm-mdkey(3).
wa_mdvm-matnr = wa_mdvm-mdkey+3(18).
wa_mdvm-plwrk = wa_mdvm-mdkey+21(4).
MODIFY it_mdvm FROM wa_mdvm INDEX sy-index TRANSPORTING disst matnr plwrk.
ENDLOOP.
ENDIF.
ENDFORM.
*& Form START_OF_SELECTION
Subroutine for PLAN ORDER CREATED
FORM start_of_selection_pldord.
ENDFORM.
*& Form START_OF_SELECTION for PRODUCTION ORDER CREATED
Subroutine for PRODUCTION ORDER CREATED
FORM start_of_selection_prdord.
ENDFORM.You need to mention START-OF-SELECTION explicitly in your code.
Change your code as below:
*& Event START-OF-SELECTION
START-OF-SELECTION.
IF mrpntdn = 'X'. -
Internal tables & select query for clasical report
hello all,
i am a novice in ABAP.i need to retrive data from 4 DB tables to do a classical report. i declared internal tables as below and then retrieved the data as per the below select statements. is there any other way in which i can do the same with a comparitively lesser amt of code.
data: begin of i_vbak occurs 0,
vbeln like vbak-vbeln,
kunnr like vbak-kunnr,
waerk like vbak-waerk,
end of i_vbak.
data: begin of i_vbap occurs 0,
vbeln like vbap-vbeln,
kwmeng like vbap-kwmeng,
posnr like vbap-posnr,
vrkme like vbap-vrkme,
netpr like vbap-netpr,
end of i_vbap.
data: begin of i_lips occurs 0,
vbeln like lips-vbeln,
vgpos like lips-vgpos,
vrkme like lips-vrkme,
lfimg like lips-lfimg,
end of i_lips.
data: begin of i_vbep occurs 0,
vbeln like vbep-vbeln,
posnr like vbep-posnr,
edatu like vbep-edatu,
end of i_vbep.
data: begin of i_out occurs 0,
kunnr like vbak-kunnr,
vbeln like vbak-vbeln,
kwmeng like vbap-kwmeng,
netpr like vbap-netpr,
waerk like vbak-waerk,
vrkme like vbap-vrkme,
lfimg like lips-lfimg,
posnr like vbep-posnr,
edatu like vbep-edatu,
end of i_out.
RETRIVING THE DATA INTO INTERNAL TABLE *
select vbeln kunnr waerk from vbak into table i_vbak where kunnr in
s_kunnr and vbeln in s_vbeln.
select vbeln kwmeng posnr vrkme netpr from vbap into table i_vbap for
all entries in i_vbak where vbeln = i_vbak-vbeln.
select vbeln vgpos vrkme lfimg from lips into table i_lips for all
entries in i_vbak where vbeln = i_vbak-vbeln and vgpos in s_vgpos.
select vbeln posnr edatu from vbep into table i_vbep for all entries in
i_vbak where vbeln = i_vbak-vbeln.
<b>Points are guaranteed for good answers.</b>
Thanks in advance
seenuHi,
If u will use in ALV means how many tables u want u can put it. After that u can maintain one internal table that's enough. Afterthat put select queries after that display the internal table fileds.
If u will ALV report means u have to code same coding for every report slight changes only there.
Herewith i am sending sample ALV REPORT it is useful for u.
REPORT CODING:
REPORT YMS_COLOURALV NO STANDARD PAGE HEADING.
TYPE-POOLS: SLIS, ICON.
DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: BEGIN OF IMARA OCCURS 0,
LIGHT(4) TYPE C,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MAKTX TYPE MAKT-MAKTX,
COLOR_LINE(4) TYPE C,
TCOLOR TYPE SLIS_T_SPECIALCOL_ALV, "cell
END OF IMARA.
DATA: XCOLOR TYPE SLIS_SPECIALCOL_ALV.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM WRITE_REPORT.
Get_Data
FORM GET_DATA.
WRITE ICON_GREEN_LIGHT AS ICON TO IMARA-LIGHT.
IMARA-MATNR = 'ABC'.
IMARA-MTART = 'ZCFG'.
IMARA-MAKTX = 'This is description for ABC'.
APPEND IMARA.
WRITE ICON_YELLOW_LIGHT AS ICON TO IMARA-LIGHT.
IMARA-MATNR = 'DEF'.
IMARA-MTART = 'ZCFG'.
IMARA-MAKTX = 'This is description for DEF'.
APPEND IMARA.
WRITE ICON_RED_LIGHT AS ICON TO IMARA-LIGHT.
IMARA-MATNR = 'GHI'.
IMARA-MTART = 'ZCFG'.
IMARA-MAKTX = 'This is description for GHI'.
APPEND IMARA.
LOOP AT IMARA.
IF SY-TABIX = 1.
IMARA-COLOR_LINE = 'C410'. " color line
ENDIF.
IF SY-TABIX = 2. " color CELL
CLEAR XCOLOR.
XCOLOR-FIELDNAME = 'MTART'.
XCOLOR-COLOR-COL = '3'.
XCOLOR-COLOR-INT = '1'. " Intensified on/off
XCOLOR-COLOR-INV = '0'.
APPEND XCOLOR TO IMARA-TCOLOR.
ENDIF.
MODIFY IMARA.
ENDLOOP.
ENDFORM. "get_data
WRITE_REPORT
FORM WRITE_REPORT.
DATA: LAYOUT TYPE SLIS_LAYOUT_ALV.
LAYOUT-COLTAB_FIELDNAME = 'TCOLOR'.
LAYOUT-INFO_FIELDNAME = 'COLOR_LINE'.
PERFORM BUILD_FIELD_CATALOG.
CALL ABAP LIST VIEWER (ALV)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FIELDCAT
TABLES
T_OUTTAB = IMARA.
ENDFORM. "write_report
BUILD_FIELD_CATALOG
FORM BUILD_FIELD_CATALOG.
DATA: FC_TMP TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
CLEAR: FIELDCAT. REFRESH: FIELDCAT.
CLEAR: FC_TMP.
FC_TMP-REPTEXT_DDIC = 'Status'.
FC_TMP-FIELDNAME = 'LIGHT'.
FC_TMP-TABNAME = 'IMARA'.
FC_TMP-OUTPUTLEN = '4'.
FC_TMP-ICON = 'X'.
APPEND FC_TMP TO FIELDCAT.
CLEAR: FC_TMP.
FC_TMP-REPTEXT_DDIC = 'Material Number'.
FC_TMP-FIELDNAME = 'MATNR'.
FC_TMP-TABNAME = 'IMARA'.
FC_TMP-OUTPUTLEN = '18'.
APPEND FC_TMP TO FIELDCAT.
CLEAR: FC_TMP.
FC_TMP-REPTEXT_DDIC = 'Material Type'.
FC_TMP-FIELDNAME = 'MTART'.
FC_TMP-TABNAME = 'IMARA'.
FC_TMP-OUTPUTLEN = '10'.
APPEND FC_TMP TO FIELDCAT.
CLEAR: FC_TMP.
FC_TMP-REPTEXT_DDIC = 'Material'.
FC_TMP-FIELDNAME = 'MAKTX'.
FC_TMP-TABNAME = 'IMARA'.
FC_TMP-OUTPUTLEN = '40'.
FC_TMP-EMPHASIZE = 'C610'. " color column
APPEND FC_TMP TO FIELDCAT.
ENDFORM. "build_field_catalog
Thanks,
Shankar -
Select query for KONV and VBAK table
hy Experts.
Please Help me For this Query, i got error on it.
I wnt to take KONV-KBETR (RATE FIELD) for particular SO number. and i used following query but it gives error i cant relate VBAK & KONV table.
Please do needful
SELECT KBETR KNUMV FROM KONV INTO (ITAB-KBETR, ITAB-KNUMV) WHERE VBAK-KNUMV = KONV-KNUMV AND VBAK-VBELN IN VBELN.
Thnks
Bhavesh Panchal.Hello Thnks For Reply,
but still i cant take solution. i am making a Sales order Rports. i got all field but i cant fetch filed for RATE and Pending Order Value.
Please check following Code. if need to change u can.
Thnks
Bhavesh Panchal.
REPORT ZTESTCODE.
TYPE-POOLS:slis.
TABLES: VBEP , VBAP , VBPA , VBKD , VBAK , LIKP , LIPS , VBUP , VBBE, KONV, KNA1.
DATA :BEGIN OF itab OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
EDATU LIKE VBEP-EDATU,
KNUMV LIKE VBAK-KNUMV,
WMENG LIKE VBEP-WMENG,
BMENG LIKE VBEP-BMENG,
LFIMG LIKE LIPS-LFIMG,
OMENG LIKE VBBE-OMENG,
POSAR LIKE VBAP-POSAR,
NETWR LIKE VBAP-NETWR,
NTGEW LIKE VBAP-NTGEW,
KBETR LIKE KOMV-KBETR,
KUNNR LIKE VBAK-KUNNR,
NAME1 LIKE KNA1-NAME1,
*BRGEW LIKE VBAP-BRGEW,
BSTKD LIKE VBKD-BSTKD,
BSTDK LIKE VBKD-BSTDK,
LFSTA LIKE VBUP-LFSTA,
*KNUMV LIKE VBAK-KNUMV,
*posnr LIKE LIPS-POSNR,
*NETWR LIKE VBAK-NETWR,
BRGEW LIKE VBAP-BRGEW,
LFDAT LIKE LIKP-LFDAT,
*NTGEW LIKE LIKP-NTGEW,
DELIVERY LIKE LIPS-VBELN,
WEIGHT like VBAP-NTGEW,
END OF itab.
*variable for Report ID
DATA: v_repid LIKE sy-repid .
*declaration for fieldcatalog
DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
DATA: it_listheader TYPE slis_t_listheader.
declartion for layout
DATA: alv_layout TYPE slis_layout_alv.
*Title displayed when the alv list is displayed
*DATA: i_title_main TYPE lvc_title VALUE 'FIRST LIST DISPLAYED'.
DATA: i_title_main TYPE lvc_title VALUE 'Reports : Bhavesh Pacnhal'.
INITIALIZATION.
v_repid = sy-repid.
PERFORM build_fieldcatlog.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : VBELN FOR VBAK-VBELN ,
KUNNR FOR VBPA-KUNNR ,
EDATU for ITAB-EDATU.
SELECTION-SCREEN: END OF BLOCK b1.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_listheader USING it_listheader.
PERFORM display_alv_report.
FORM build_fieldcatlog.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-seltext_m = 'SalesOrderNo'.
wa_fieldcat-outputlen = '12'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Field for Customer Name.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-seltext_m = 'Customer Name'.
wa_fieldcat-outputlen = '30'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Field For Po Number.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'BSTKD'.
wa_fieldcat-seltext_m = 'PO No'.
wa_fieldcat-outputlen = '20'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
Field For Order Value
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-seltext_m = 'Order Value '.
wa_fieldcat-outputlen = '12'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Field For Po Date.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'BSTDK'.
wa_fieldcat-seltext_m = 'PO Date'.
wa_fieldcat-outputlen = '20'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-seltext_m = 'Item No'.
wa_fieldcat-outputlen = '20'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'EDATU'.
wa_fieldcat-seltext_m = 'Delivery Date'.
wa_fieldcat-outputlen = '12'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'VBAP'.
wa_fieldcat-fieldname = 'KWMENG'.
wa_fieldcat-seltext_m = 'Order QTY VABP.'.
wa_fieldcat-outputlen = '14'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Field For Order Qty.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'WMENG'.
wa_fieldcat-seltext_m = 'Ord.QT.WMEN.'.
wa_fieldcat-outputlen = '20'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Field For Order Qty.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'BMENG'.
wa_fieldcat-seltext_m = 'Ord.QT.BMEN.'.
wa_fieldcat-outputlen = '20'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
field For Delivery Qty.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'LFMING'.
wa_fieldcat-seltext_m = 'DEL QTY.'.
wa_fieldcat-outputlen = '20'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Field For Open Qty from ITAB.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'OMENG'.
wa_fieldcat-seltext_m = 'OPEN QTY.'.
wa_fieldcat-outputlen = '20'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Field For Pending Weight from ITAB.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'BRGEW'.
wa_fieldcat-seltext_m = 'Pending Weight'.
wa_fieldcat-outputlen = '12'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
Field For netweight.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'NTGEW'.
wa_fieldcat-seltext_m = 'Net Weight'.
wa_fieldcat-outputlen = '20'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
Field For Actual Delivery.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'LFDAT'.
wa_fieldcat-seltext_m = 'Actual Delivery'.
wa_fieldcat-outputlen = '12'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'KBETR'.
wa_fieldcat-seltext_m = 'RATE'.
wa_fieldcat-outputlen = '20'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
Field For Actual Delivery.
wa_fieldcat-tabname = 'LIPS'.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-seltext_m = 'Delivery ITEM'.
wa_fieldcat-outputlen = '20'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
Field For Pending Value.
VBUP-LFSTA
wa_fieldcat-tabname = 'VBUP'.
wa_fieldcat-fieldname = 'LFSTA'.
wa_fieldcat-seltext_m = 'Pending Value'.
wa_fieldcat-outputlen = '20'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
Field For pending weight.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-fieldname = 'ITAB-OMENG * KOMV-KBETR'.
wa_fieldcat-seltext_m = 'Pending VALUE'.
wa_fieldcat-outputlen = '20'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. "BUILD_FIELDCATLOG
FORM data_retrieval.
SELECT VBELN NETWR KUNNR FROM VBAK INTO (ITAB-VBELN,ITAB-NETWR,ITAB-KUNNR) WHERE VBELN IN VBELN .
SELECT POSNR POSAR BRGEW FROM VBAP INTO (ITAB-POSNR,ITAB-POSAR,ITAB-BRGEW) WHERE VBELN = ITAB-VBELN .
SELECT EDATU FROM VBEP INTO (ITAB-EDATU) WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
SELECT NAME1 FROM KNA1 INTO (ITAB-NAME1) WHERE KUNNR = ITAB-KUNNR .
SELECT BSTKD BSTDK FROM VBKD INTO (ITAB-BSTKD,ITAB-BSTDK) WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
SELECT VBELN LFIMG FROM LIPS INTO (ITAB-DELIVERY, ITAB-LFIMG) WHERE VGBEL = ITAB-VBELN AND VGPOS = ITAB-POSNR.
SELECT LFDAT NTGEW FROM LIKP INTO (ITAB-LFDAT,ITAB-NTGEW) WHERE VBELN = ITAB-DELIVERY .
SELECT WMENG BMENG FROM VBEP INTO (ITAB-WMENG,ITAB-BMENG) WHERE VBELN IN VBELN .
SELECT SINGLE OMENG FROM VBBE INTO (ITAB-OMENG) WHERE VBELN IN VBELN.
SELECT SINGLE NETWR FROM VBAK INTO (ITAB-NETWR) WHERE VBELN IN VBELN.
SELECT KNUMV FROM VBAK INTO (ITAB-KNUMV) WHERE VBELN IN VBELN.
*SELECT KBETR KNUMV FROM KONV INTO (ITAB-KBETR, ITAB-KNUMV) WHERE KNUMV = VBAK-KNUMV.
*assign VAR1 = itab-kbetr.
*append itab.
*ENDSELECT.
SELECT KBETR KNUMV FROM KONV INTO (ITAB-KBETR, ITAB-KNUMV)WHERE KNUMV = VBAK-KNUMV.
ITAB-KBETR = KONV-KBETR.
ENDSELECT.
APPEND ITAB.
ENDSELECT.
ENDSELECT.
ENDSELECT.
ENDSELECT.
ENDSELECT.
ENDSELECT.
ENDSELECT.
ENDSELECT.
ENDSELECT.
*ENDSELECT.
ENDFORM. "data_retrieval
FORM build_listheader USING it_listheader TYPE slis_t_listheader.
DATA HLINE TYPE SLIS_LISTHEADER.
DATA: ls_line TYPE slis_listheader.
bhavesh
HLINE-INFO = 'report Developed by Bhavesh'.
HLINE-TYP = 'H'.
Header
Bhavesh
CLEAR ls_line.
ls_line-typ = 'H'.
LS_LINE-KEY: not used for this type
ls_line-info = 'Sales ORDER Report'.
APPEND ls_line TO it_listheader.
bhavesh
***Selection
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Key 1'.
ls_line-info = 'SFEL'.
APPEND ls_line TO it_listheader.
ls_line-key = 'Key 2'.
ls_line-info = 'SFEL'.
APPEND ls_line TO it_listheader.
***Action
CLEAR ls_line.
ls_line-typ = 'A'.
LS_LINE-KEY: not used for this type
ls_line-info = 'Status list'.
APPEND ls_line TO it_listheader.
ENDFORM. "BUILD_LISTHEADER
*ENDFORM. "build_listheader
FORM display_alv_report.
v_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
I_CALLBACK_PF_STATUS_SET = 'STATUS'(002)
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_grid_title = 'SFEL SALES EXPEDITING REPORT'
i_background_id = 'ALV_BACKGROUND'
I_GRID_SETTINGS =
IS_LAYOUT = LAYO
IS_LAYOUT = ALV_LAYOUT
it_fieldcat = i_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'ZLAY1'
I_SAVE = 'A'
is_variant = i_variant
IT_EVENTS = V_EVENTS
TABLES
t_outtab = itab[]
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. "display_alv_report
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader[].
i_logo = 'ENJOYSAP_LOGO'.
I_END_OF_LIST_GRID =
ENDFORM. "TOP_OF_PAGE -
How to re-write this big SELECT Query with INNER JOINs?
Hi Experts
I have a performance killer SELECT query with an inner join of 3 tables u2013 VBAP, VBAK and VBEP together, which populates records to an internal table INT_COLL_ORD. Based on these records selected, in another SELECT query, records are fetched from VBUK table to the internal table INT_VBUK.
SELECT A~VBELN A~POSNR A~MATNR A~KWMENG A~KBMENG A~ERDAT A~ERZET A~PSTYV D~AUART E~ETTYP E~EDATU
INTO TABLE INT_TAB_RES
FROM VBAP AS A INNER JOIN VBAK AS D
ON D~VBELN EQ A~VBELN AND D~MANDT EQ A~MANDT
INNER JOIN VBEP AS E
ON E~VBELN EQ A~VBELN AND E~POSNR EQ A~POSNR AND E~MANDT EQ A~MANDT
WHERE A~VBELN IN s_VBELN AND
D~auart in s_auart AND
D~vkorg in s_vkorg AND
D~vbtyp eq 'C' AND
( ( matnr LIKE c_prefix_sp AND zz_msposnr NE 0 AND kbmeng EQ 0 )
OR ( matnr LIKE c_prefix_fp AND kwmeng NE A~kbmeng ) ) AND
A~ABGRU EQ SPACE AND
A~MTVFP IN R_MTVFP AND
A~PRCTR IN R_PRCT AND
E~ETENR EQ '1'.
SORT INT_COLL_ORD BY VBELN POSNR ETTYP.
DELETE ADJACENT DUPLICATES FROM INT_TAB_RES COMPARING VBELN POSNR.
CHECK NOT INT_TAB_RES [] IS INITIAL.
SELECT VBELN UVALL CMGST INTO TABLE INT_VBUK
FROM VBUK FOR ALL ENTRIES IN INT_TAB_RES
WHERE VBELN = INT_TAB_RES-VBELN AND UVALL NE 'A'.
Now, the requirement is:
I want to split this query. Like, first join VBAK and VBUK first. With this selection, go to the inner join of VBAP and VBEP (on key VBELN) to get the results. How can I re-write this Query?
Please help.
Thx n RgdsHi Nagraj
As of your suggestion, I have re-written the query as below:
* Declarations
TYPES: BEGIN OF TYP_COLL_ORD,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBUP-POSNR,
MATNR LIKE VBAP-MATNR,
KWMENG LIKE VBAP-KWMENG,
KBMENG LIKE VBAP-KBMENG,
ERDAT LIKE VBAK-ERDAT,
ERZET LIKE VBAK-ERZET,
PSTYV LIKE VBAP-PSTYV,
AUART LIKE VBAK-AUART, u201Calready exists in type
ETTYP LIKE VBEP-ETTYP,
EDATU LIKE VBEP-EDATU.
TYPES: END OF TYP_COLL_ORD.
DATA: INT_COLL_ORD TYPE TABLE OF TYP_COLL_ORD WITH HEADER LINE.
TYPES: BEGIN OF TYP_VBUK,
AUART LIKE VBAK-AUART, u201Chave added this field
VBELN LIKE VBUK-VBELN,
UVALL LIKE VBUK-UVALL,
CMGST LIKE VBUK-CMGST.
TYPES: END OF TYP_VBUK.
DATA: INT_VBUK TYPE TABLE OF TYP_VBUK WITH HEADER LINE.
*QUERY#1 u2013 for VBAK & VBUK Join
SELECT A~AUART B~VBELN B~UVALL B~CMGST
INTO TABLE INT_VBUK
FROM VBAK AS A INNER JOIN VBUK AS B
ON A~VBELN EQ B~VBELN
WHERE A~VBELN IN s_VBELN AND
A~auart in s_auart AND
A~vkorg in s_vkorg AND
A~vbtyp eq 'C' AND
B~UVALL NE 'A'.
IF NOT INT_VBUK[] IS INITIAL.
SORT INT_VBUK BY VBELN.
DELETE ADJACENT DUPLICATES FROM INT_VBUK COMPARING VBELN.
*QUERY#2 u2013 for VBAP & VBEP Join
SELECT A~VBELN A~POSNR A~MATNR A~KWMENG A~KBMENG A~ERDAT A~ERZET A~PSTYV B~ETTYP B~EDATU
INTO TABLE INT_COLL_ORD
FROM VBAP AS A INNER JOIN VBEP AS B
ON B~VBELN EQ A~VBELN AND B~POSNR EQ A~POSNR AND B~MANDT EQ A~MANDT
FOR ALL ENTRIES IN INT_VBUK
WHERE A~VBELN = INT_VBUK-VBELN AND
( ( matnr LIKE c_prefix_sp AND zz_msposnr NE 0 AND kbmeng EQ 0 )
OR ( matnr LIKE c_prefix_fp AND kwmeng NE A~kbmeng ) ) AND
A~ABGRU EQ SPACE AND
A~MTVFP IN R_MTVFP AND
A~PRCTR IN R_PRCT AND
B~ETENR EQ '1'.
ENDIF.
SORT INT_COLL_ORD BY VBELN POSNR ETTYP.
DELETE ADJACENT DUPLICATES FROM INT_COLL_ORD
COMPARING VBELN POSNR.
CHECK NOT INT_COLL_ORD[] IS INITIAL.
LOOP AT INT_COLL_ORD.
CLEAR: L_MTART,L_ATPPR,L_ETTYP.
IF L_PREVIOUS_ETTYP NE INT_COLL_ORD-ETTYP OR
L_PREVIOUS_AUART NE INT_COLL_ORD-AUART.
READ TABLE INT_OVRCTL WITH KEY AUART = INT_COLL_ORD-AUART ETTYP = INT_COLL_ORD-ETTYP.
CHECK SY-SUBRC NE 0.
Now, the issue is:
Please note that declaration for INT_COLL_ORD has a field AUART, which is used in further parts of program (see the statement just above)
But, since neither VBAP nor VBEP contains AUART field, it cannot be fetched through the QUERY#2. So this value is not populated into INT_COLL_ORD through SELECT Query.
Since this field is used in later part of program & that the internal table has no value for this field, it dumps!!
How to include this value into the INT_COLL_ORD?
Plz suggest.... -
Schedule Line Item (VBEP)
Hi all,
The schedule date (VBEP-EDATU) is mandatory for sales order? When i try to create a sales order, the system automaticly create schedule date lines in VBEP for sales items. I want to make possible to fill blank schedule time for item in VBEP using exit and our entegration with production machines will fill this field in future time. I'm able to that using exit. But i don't know how this effect the processes. For example invoice or delivery or production processes.
Thanks,Hi,
In order to answer your question it seems more appropriate the SD forum.
However you cannot insert a blank date at schedule line level and anyway, it is not a clean solution.
There are several solutions to be adopted from a functional point of view.
I.e, during the sales order creation, you could use schedule line types CN (not relevant to MRP, no requirements, no deliveries).
Then, when the interface with production machines, provides the real date, you have to change the sales order item by insert a new CP schedule line type (relevant to MRP), but with the correct date coming from the interface.
Regards,
Andrea -
Vbep-ezeit modification using user exits
Hello experts,
I have been using userexit_save_document_prepare to modify xvbep-ezeit, but it is throwing once in a while message number v1 322.
Incorerect index structure for table IVBEP1.
This error occurs very rarely.
In my code i am modifying XVBEP and for changed items YVBEP.
Please suggest how to rectify this error ? Do i need to modify IVBEP1 table also ?
PS: Is there any other user exit/enhancement available to achieve the same result ?
also i found this note and explanation in scn forums searching for solutions.
Note 985130 - SAPSQL_ARRAY_INSERT_DUPREC in VBEP_BEARBEITEN
In your user exits and modifications, particularly user exit USEREXIT_MOVE_FIELD_TO_VBEP in include MV45AFZZ, check whether the values of one or more of the following fields are changed:
VBEP-POSNR Sales document item
VBEP-EDATU Schedule line date
VBEP-EZEIT Arrival time
VBEP-PRGRS Date type (day, week, month, interval)
VBEP-ABART Contract release type
VBEP-ABRUF Forecast delivery schedule number
If this is the case, deactivate the relevant statements or the entire modification, or exit and check whether the symptoms you observed are now gone.
Please suggest any solution. I will really appreciate it.
Regards
RaviIs your ERP connected to CRM system? If so, check whether the document is not archieved in CRM system in which case, system would pop up this error message.
Alternatively, if ERP is not connected to CRM but still you have this issue, then there would be some issue with regard to updation schedule lines for a particular sale order or data inconsistency in table VBEP. So as recommended in note 1932377, you may have to correct the user exit USEREXIT_MOVE_FIELD_TO_VBEP. Go through the note for more details.
G. Lakshmipathi -
Performance issue with joins on table VBAK, VBEP, VBKD and VBAP
hi all,
i have a report where there is a join on all 4 tables VBAK, VBEP, VBKD and VBAP.
the report is giving performance issues because of this join.
all the key fields are used for the joining of tables. but some of the non-key fields like vbap-vstel, vbap-abgru and vbep-wadat are also part of select query and are getting filled.
because of these there is a performance issue.
is there any way i can improve the performance of the join select query?
i am trying "for all entries" clause...
kindly provide any alternative if possible.
thanks.Hi,
Pls perform some of the below steps as applicable for the performance improvement:
a) Remove join on all the tables and put joins only on header and item (VBAK & VBAP).
b) code should have separate select for VBEP and VBKD.
c) remove the non key fields from the where clause. Once you retrieve data from the database into the internal table, sort the table and delete the entries which are not part of the non-key fields like vstel, abgru and wadat.
d) last option is you can create index in the VBAP & VBEP table with respect to the fields vstel, abgru & wadat ( not advisable)
e) buffering option on database tables also possible.
f) select only the fields into the internal table that are applicable for the processing logic and also the select query should contaian the field names in the same order as mentioned in the database table.
Hope this helps.
Regards
JLN -
User exit to update VBEP (XVBEP) records while changing VBAP-MVGR2
Hi experts,
I have a requirement below in the sales order user exits . please help.
During Sales order change (VA02), If I change the material group 2 (from additional data 1) vbap-mvgr2 field value from blank to '06', the delivery date of the sales order item needs to be redermined (i.e. vbep-edatu).
However, the change of field VBAP-MVGR2 doesn't trigger the user exits (USEREXIT_MOVE_FIELD_TO_VBAP, USEREXIT_MOVE_FIELD_TO_VBEP and USEREXIT_CHECK_VBEP). The only user exit I know that is getting called during this change is USEREXIT_CHECK_VBAP. If we write the code in USEREXIT_CHECK_VBAP for updating the delivery date (VBEP-EDATU), it is not updating the delivery dates. (I tried updating XVBEP, IVBEP1 tables also in this user exit, but once after saving the sales order and comeback to display/change mode the previous values in delivery dates still exist).
Can somebody suggest if there is any other user exit available which will update the VBEP, XVBEP tables after processing them.
Best regards,
SivaHi Vinod,
Thank you very much for the answer. Somehow, I forgot to update the UPDKZ indicator. The VBEP table is getting updated with the new dates..I am writing this code in USEREXIT_CHECK_VBAP as someother checks also are required to made this.
With the change I haved done, for one sales order before applying the new date, the schedule line date are as follows
Delivery date|ordered qty|rounded qty|Confirmed Qty
01/05/2011 |30 |30 |0
02/02/2011 |0 |0 |30
after the changes with the new delivery date for xvbep table, the sales order now showing
Delivery date|ordered qty|rounded qty|Confirmed Qty
01/07/2011 |30 |30 |0
01/07/2011 |0 |0 |30
Is this resultant values practically correct. I think when we consider standard sap it should contain the values like below I believe. Do you have inputs on this..
Delivery date|ordered qty|rounded qty|Confirmed Qty
01/07/2011 |30 |30 |30
If we want to achieve this what could be done.
Best regards,
Siva -
Link Sales Order Schedule Lines to Delivery
Hi we have a custom report we use to gather all the inventory information, as well as open orders and deliveries. We are running in to a a bit of a snafu when it comes to the order's schedule lines. It seems we can not find a good link between the delivery and order's schedule line for the sales order item. Any one got some thoughts? Thanks.
-LarryHi Larry,
The link are there in standard tables.
Depending on the types of information that you want to gather from Sales Schedule Line, you can use the below logic:
1. Give your program selection screen for VBAK-VBELN (optional), VBAK-AUART (optional), VBAK-VKORG (mandatory) and VBAK-AUDAT (mandatory). Give as much selection possible to narrow down the search and so that the program can run more efficiently.
2. Based on selection screen input + VBAK-VBTYP = C, get all VBAK-VBELN.
3. Where VBAP-VBELN = VBAK-VBELN, get all VBAP-POSNR, and for information at Sales Line Item, get all respective VBAP-MATNR, VBAP-KWMENG and respective VBAP-MEINS, VBAP-WERKS and VBAP-NETWR. Store in Z-table.
4. Where VBEP-VBELN = VBAP-VBELN, VBEP-POSNR = VBAP-POSNR and VBEP-ETTYP = XX (Schedule Line Type - you do not want to retrieve all types. Name only a few.), get all VBEP-EDATU, VBEP-VBEP, VBEP-BMENG and VBEP-LMENG. Not forgetting also VBEP-WADAT if u require. For 3rd Party Sales, Requisition number can be obtained from VBEP-BANFN.
5. Where all data are obtained, populate in ALV for respective Sales Order and group accordingly. ABAP will know what to do.
6. Where LIPS-VGBEL = VBEP-VBELN and LIPS-VGPOS = VBAP-POSNR, get all LIPS-VBELN.
7. Then gather all your required fields in LIKP and LIPS table accordingly.
Hope this helps.
Thanks.
Rgds.
Edited by: PKW on May 4, 2010 12:21 PM -
How to get the open order quantity for a material
Hi All,
We need to get the open order quantity for materials. At present we are using the following logic...
SELECT VBAKVBELN VBAPPOSNR VBAP~KWMENG
INTO TABLE IT_VBAP
FROM VBAP
INNER JOIN VBAK ON VBAKVBELN = VBAPVBELN
INNER JOIN VAPMA ON VAPMAVBELN = VBAPVBELN
AND VAPMAPOSNR = VBAPPOSNR
INNER JOIN VBUP ON VBUPVBELN = VBAPVBELN
AND VBUPPOSNR = VBAPPOSNR
WHERE VAPMA~MATNR = IT_OUTPUT-MATNR
AND VAPMA~WERKS = IT_OUTPUT-WERKS
AND VBAK~AUART IN S_AUART
AND VBUP~GBSTA NE 'C'.
But the Query takes quite a long time as it does a full range scan on all the tables. Is there any way the query can be improved, may be by creating an index etc? Or is there anyother way by which i can get the required data?
Any input is appreciated.
Regards
Brain.This could help.
*& Report: zsdvr055 date written: 03/24/00 *
*& Author: Brian Huntley last update: 03/24/00 *
*& Program Title: Open Order Report *
*& Description: This report will create a list of sales documents *
*& that are open (contain at least one item that is not shipped). *
*& The report will sort by ship-to customer name and by sales *
*& document number. *
*& Tables: *
*& Files: *
*& Transactions: *
*& Changes: *
REPORT ZSDVR055 LINE-SIZE 255.
TABLES: VBPA,
VBAP,
VBUP,
VBAK,
VBKD,
KNA1,
VBEP,
VBFA,
LIKP,
LIPS,
EKET,
T171T.
define hashed table for selected ship-to and sold-to SO's
TYPES: BEGIN OF TVBPA_TYPE,
VBELN LIKE VBPA-VBELN, "sales document
POSNR LIKE VBPA-POSNR, "item number
PARVW LIKE VBPA-PARVW, "partner function
KUNNR LIKE VBPA-KUNNR, "customer number
END OF TVBPA_TYPE.
DATA: TVBPA TYPE HASHED TABLE OF TVBPA_TYPE
WITH UNIQUE KEY VBELN POSNR PARVW WITH HEADER LINE.
define internal table for all selected SO's
DATA: BEGIN OF ITAB0 OCCURS 0,
VBELN LIKE VBPA-VBELN, "sales document
END OF ITAB0.
define internal table for all selected SO items
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
MATNR LIKE VBAP-MATNR, "material
ARKTX LIKE VBAP-ARKTX, "description
PSTYV LIKE VBAP-PSTYV, "item category
KDMAT LIKE VBAP-KDMAT, "customer material
NETWR LIKE VBAP-NETWR, "net value
WAERK LIKE VBAP-WAERK, "currency
KWMENG LIKE VBAP-KWMENG, "quantity
ERDAT LIKE VBAP-ERDAT, "entry date
NETPR LIKE VBAP-NETPR, "net price
KPEIN LIKE VBAP-KPEIN, "pricing unit
PRCTR LIKE VBAP-PRCTR, "profit center
ERNAM LIKE VBAK-ERNAM, "entered by
AUART LIKE VBAK-AUART, "order type
VKORG LIKE VBAK-VKORG, "sales organization
VTWEG LIKE VBAK-VTWEG, "distribution channel
VDATU LIKE VBAK-VDATU, "requested date (header)
BNAME LIKE VBAK-BNAME, "name of orderer
KUNNR LIKE VBAK-KUNNR, "sold-to customer
BZIRK LIKE VBKD-BZIRK, "sales district
KURSK LIKE VBKD-KURSK, "conversion rate
BSTKD LIKE VBKD-BSTKD, "customer PO
LFGSA LIKE VBUP-LFGSA, "overall delivery status
FKSAA LIKE VBUP-FKSAA, "overall billing status
KUNWE LIKE VBPA-KUNNR, "ship-to customer
NAME1 LIKE KNA1-NAME1, "ship-to customer name
ORT01 LIKE KNA1-ORT01, "ship-to address
REGIO LIKE KNA1-REGIO, "ship-to region (state)
LAND1 LIKE KNA1-LAND1, "ship-to country
END OF ITAB.
create internal table for open orders
DATA: BEGIN OF ITAB1 OCCURS 0,
KUNNR LIKE VBAK-KUNNR, "sold-to customer
KUNWE LIKE VBPA-KUNNR, "ship-to customer
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
ZDATE1 LIKE VBEP-EDATU, "requested date
ZDATE2 LIKE VBEP-EDATU, "scheduled date (confirm)
ZDATE3 LIKE VBEP-EDATU, "committed date
ZQTY1 LIKE VBAP-KWMENG, "qty ordered
ZQTY2 LIKE VBEP-BMENG, "backlog qty
ZEXTD LIKE VBAP-NETWR, "backlog net value
ZDESC(30) TYPE C, "backlog description
END OF ITAB1.
define internal table for SO schedule lines
DATA: BEGIN OF ITAB2A OCCURS 0,
WADAT LIKE VBEP-WADAT, "planned goods issue date
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
WMENG LIKE VBEP-WMENG, "qty ordered
BMENG LIKE VBEP-BMENG, "qty confirmed
END OF ITAB2A.
define internal table for SO item request dates
DATA: BEGIN OF ITAB2B OCCURS 0,
EDATU LIKE VBEP-EDATU, "delivery date
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
WMENG LIKE VBEP-WMENG, "qty ordered
END OF ITAB2B.
define internal table for SO item commit dates
DATA: BEGIN OF ITAB2C OCCURS 0,
EDATU LIKE VBEP-EDATU, "delivery date
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
ROMS1 LIKE VBEP-WMENG, "committed qty
END OF ITAB2C.
define internal table for SO item deliveries
DATA: BEGIN OF ITAB3 OCCURS 0,
VGBEL LIKE LIPS-VGBEL, "sales document
VGPOS LIKE LIPS-VGPOS, "sales document item
VBELN LIKE LIKP-VBELN, "delivery number
POSNR LIKE LIPS-POSNR, "delivery item number
WADAT LIKE LIKP-WADAT, "planned GI date
WADAT_IST LIKE LIKP-WADAT_IST, "actual GI date
LFIMG LIKE LIPS-LFIMG, "actual qty delivered
ERDAT LIKE LIKP-ERDAT, "date created
ERZET LIKE LIKP-ERZET, "time created
END OF ITAB3.
define internal table for SO item / delivery cross reference
DATA: BEGIN OF ITAB4 OCCURS 0,
VBELV LIKE VBFA-VBELV, "sales document
POSNV LIKE VBFA-POSNV, "sales document item
VBELN LIKE VBFA-VBELN, "delivery number
POSNN LIKE VBFA-POSNN, "delivery item
VBTYP_N LIKE VBFA-VBTYP_N, "document category
RFMNG LIKE VBFA-RFMNG, "qty delivered
PLMIN LIKE VBFA-PLMIN, "plus/minus flag
END OF ITAB4.
define local variables
DATA: ORDR_QTY LIKE VBEP-WMENG, "order qty
CONF_QTY LIKE VBEP-BMENG, "confirmed qty
NOCONF_QTY LIKE VBEP-BMENG, "qty not confirmed
DELV_QTY LIKE VBEP-WMENG, "qty delivered
NODELV_QTY LIKE VBEP-WMENG, "qty not delivered
REMAIN_QTY LIKE VBEP-WMENG, "qty remain to get conf date
REQ_DATE LIKE VBEP-EDATU, "request date
COM_DATE LIKE VBEP-EDATU, "committed date
DELV_QTY1 LIKE VBEP-WMENG, "preceding delivery qty
REMAIN_QTY1 LIKE VBEP-WMENG, "qty remain to get reqest date
REMAIN_QTY2 LIKE VBEP-WMENG, "qty remain to get commit date
THIRD_QTY LIKE VBEP-WMENG, "3rd party no PO qty
SO_STOCK LIKE MSKA-KALAB, "sales order stock
ZPRICE LIKE VBAP-NETPR, "unit price USD
ADRS1(40) TYPE C, "concatenated city and region
ADRS2(45) TYPE C, "city, region and country
ADRS3(80) TYPE C, "name, city, rgn, ctry
ZCNTR TYPE I. "counter
define select options
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VKORG FOR VBAK-VKORG DEFAULT '1000',
S_VTWEG FOR VBAK-VTWEG DEFAULT '10' NO-DISPLAY,
S_SPART FOR VBAK-SPART DEFAULT '00' NO-DISPLAY,
S_KUNNR FOR VBPA-KUNNR MATCHCODE OBJECT DEBI,
S_KUNWE FOR VBPA-KUNNR MATCHCODE OBJECT DEBI.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS:
S_BZIRK FOR VBKD-BZIRK,
S_PRCTR FOR VBAP-PRCTR,
S_MATNR FOR VBAP-MATNR MATCHCODE OBJECT MAT1,
S_ERNAM FOR VBAK-ERNAM,
S_ERDAT FOR VBAP-ERDAT.
SELECTION-SCREEN END OF BLOCK BLK1.
AT SELECTION-SCREEN.
IF S_KUNNR IS INITIAL AND S_KUNWE IS INITIAL.
MESSAGE E005(ZM) WITH TEXT-100.
ENDIF.
MAIN PROGRAM
INITIALIZATION.
INCLUDE ZSYHEADR.
START-OF-SELECTION.
PERFORM 100_GET_SO_ITEMS.
PERFORM 200_GET_NO_DELIVERY.
PERFORM 300_GET_NO_GOODS_ISSUE.
PERFORM 400_GET_PARTIAL_DELIVERY.
PERFORM 500_GET_THIRD_PARTY.
PERFORM 900_CREATE_LIST.
FORM 100_GET_SO_ITEMS
FORM 100_GET_SO_ITEMS.
get SO's for selected ship-to and sold-to customers
REFRESH TVBPA.
IF NOT S_KUNNR IS INITIAL.
SELECT VBELN POSNR PARVW KUNNR
FROM VBPA INTO TABLE TVBPA
WHERE KUNNR IN S_KUNNR AND PARVW = 'AG' AND VBELN < '0080000000'.
ENDIF.
IF NOT S_KUNWE IS INITIAL.
SELECT VBELN POSNR PARVW KUNNR
FROM VBPA APPENDING TABLE TVBPA
WHERE KUNNR IN S_KUNWE AND PARVW = 'WE' AND VBELN < '0080000000'.
ENDIF.
DESCRIBE TABLE TVBPA LINES ZCNTR.
IF ZCNTR = 0.
WRITE: /1 'No data found for selection'.
STOP.
ENDIF.
eliminate duplicate SO's
LOOP AT TVBPA.
CLEAR ITAB0.
MOVE TVBPA-VBELN TO ITAB0-VBELN.
APPEND ITAB0.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM ITAB0.
get SO detail
SELECT VBAP~VBELN VBAP~POSNR VBAP~MATNR VBAP~ARKTX VBAP~PSTYV
VBAP~KDMAT VBAP~NETWR VBAP~WAERK VBAP~KWMENG VBAP~ERDAT
VBAP~NETPR VBAP~KPEIN VBAP~PRCTR VBAK~ERNAM VBAK~AUART
VBAK~VKORG VBAK~VTWEG VBAK~VDATU VBAK~BNAME VBAK~KUNNR
VBKD~BZIRK VBKD~KURSK VBKD~BSTKD VBUP~LFGSA VBUP~FKSAA
FROM VBAP INNER JOIN VBUP ON VBUP~VBELN = VBAP~VBELN AND
VBUP~POSNR = VBAP~POSNR
INNER JOIN VBKD ON VBKD~VBELN = VBAP~VBELN AND
VBKD~POSNR = VBAP~POSNR
INNER JOIN VBAK ON VBAK~VBELN = VBAP~VBELN
INTO TABLE ITAB FOR ALL ENTRIES IN ITAB0
WHERE VBAP~VBELN = ITAB0-VBELN AND VBAP~MATNR IN S_MATNR AND
VBAP~ERDAT IN S_ERDAT AND VBAP~PRCTR IN S_PRCTR AND
VBAP~ABGRU = SPACE AND VBKD~BZIRK IN S_BZIRK AND
VBAK~VKORG IN S_VKORG AND VBAK~VTWEG IN S_VTWEG AND
VBAK~SPART IN S_SPART AND VBAK~KUNNR IN S_KUNNR AND
VBAK~ERNAM IN S_ERNAM.
IF SY-SUBRC <> 0.
WRITE: /1 'No data found for selection'.
STOP.
ENDIF.
loop thru SO items
LOOP AT ITAB.
get ship-to customer
IF NOT S_KUNWE IS INITIAL.
CLEAR TVBPA.
READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
POSNR = ITAB-POSNR PARVW = 'WE'.
IF SY-SUBRC <> 0.
READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
POSNR = '000000' PARVW = 'WE'.
ENDIF.
MOVE TVBPA-KUNNR TO ITAB-KUNWE.
ELSE.
CLEAR ITAB-KUNWE.
SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
PARVW = 'WE'.
IF SY-SUBRC <> 0.
SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
WHERE VBELN = ITAB-VBELN AND POSNR = '000000' AND
PARVW = 'WE'.
ENDIF.
ENDIF.
IF NOT ITAB-KUNWE IN S_KUNWE.
DELETE ITAB.
CONTINUE.
ENDIF.
get ship-to customer address info
SELECT SINGLE NAME1 ORT01 REGIO LAND1 FROM KNA1
INTO (ITAB-NAME1, ITAB-ORT01, ITAB-REGIO, ITAB-LAND1)
WHERE KUNNR = ITAB-KUNWE.
MODIFY ITAB.
ENDLOOP.
SORT ITAB BY VBELN POSNR.
ENDFORM.
FORM 200_GET_NO_DELIVERY
get detail for SO items w/ no deliveries for order document types
(ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
FORM 200_GET_NO_DELIVERY.
LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
AUART = 'ZPSO' OR AUART = 'ZZNC'.
select if delivery status = A (not delivered)
IF ITAB-LFGSA = 'A'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
select schedule lines for SO item and write to internal table itab2a
SELECT WADAT VBELN POSNR WMENG BMENG
FROM VBEP INTO TABLE ITAB2A
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
select sched lines w/request date and write to internal table itab2b
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
select sched lines w/commit date and write to internal table itab2c
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2A BY WADAT.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
ORDR_QTY = 0.
CONF_QTY = 0.
NOCONF_QTY = 0.
calculate the unconfirmed qty for a SO item
LOOP AT ITAB2A.
CONF_QTY = CONF_QTY + ITAB2A-BMENG.
ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
ENDLOOP.
NOCONF_QTY = ORDR_QTY - CONF_QTY.
LOOP AT ITAB2A WHERE BMENG <> 0.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB2A-BMENG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB2A-BMENG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = ITAB2A-WADAT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB2A-BMENG.
ITAB1-ZDESC = 'no delivery, confirmed'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDLOOP.
get request date for SO item
IF NOCONF_QTY <> 0.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING NOCONF_QTY REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING NOCONF_QTY COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = NOCONF_QTY.
ITAB1-ZDESC = 'no delivery, not confirmed'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 300_GET_NO_GOODS_ISSUE
get detail for SO items w/deliveries and no goods issue for
doc types (ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
FORM 300_GET_NO_GOODS_ISSUE.
get detail for deliveries w/no goods issue
SELECT VBELN WADAT WADAT_IST ERDAT ERZET
FROM LIKP INTO (LIKP-VBELN, LIKP-WADAT, LIKP-WADAT_IST,
LIKP-ERDAT, LIKP-ERZET)
WHERE WADAT_IST = 0.
select if actual qty delivered <> 0
CLEAR LIPS.
SELECT POSNR VGBEL VGPOS LFIMG
FROM LIPS INTO (LIPS-POSNR, LIPS-VGBEL, LIPS-VGPOS, LIPS-LFIMG)
WHERE VBELN = LIKP-VBELN AND LFIMG <> 0.
select if goods movement status on delivery = A (no goods issue)
CLEAR VBUP.
SELECT SINGLE WBSTA FROM VBUP INTO VBUP-WBSTA
WHERE VBELN = LIKP-VBELN AND POSNR = LIPS-POSNR.
IF VBUP-WBSTA = 'A'.
CLEAR ITAB3.
ITAB3-VGBEL = LIPS-VGBEL.
ITAB3-VGPOS = LIPS-VGPOS.
ITAB3-VBELN = LIKP-VBELN.
ITAB3-POSNR = LIPS-POSNR.
ITAB3-WADAT = LIKP-WADAT.
ITAB3-WADAT_IST = LIKP-WADAT_IST.
ITAB3-LFIMG = LIPS-LFIMG.
ITAB3-ERDAT = LIKP-ERDAT.
ITAB3-ERZET = LIKP-ERZET.
APPEND ITAB3.
ENDIF.
ENDSELECT.
ENDSELECT.
SORT ITAB3 BY VGBEL VGPOS VBELN POSNR.
loop thru deliveries w/no goods issue and get SO item detail
LOOP AT ITAB3.
CLEAR ITAB.
READ TABLE ITAB WITH KEY VBELN = ITAB3-VGBEL POSNR = ITAB3-VGPOS.
IF SY-SUBRC <> 0.
IF ITAB-AUART = 'ZZOR' OR ITAB-AUART = 'ZZC1' OR
ITAB-AUART = 'ZZCO' OR ITAB-AUART = 'ZZRP' OR
ITAB-AUART = 'ZZRW' OR ITAB-AUART = 'KE' OR
ITAB-AUART = 'KR' OR ITAB-AUART = 'ZCHP' OR
ITAB-AUART = 'ZPSO' OR ITAB-AUART = 'ZZNC'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
select delivery qty for SO item and write to internal table
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
FROM VBFA INTO TABLE ITAB4
WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
calculate total delivery qty for SO item
DELV_QTY = 0.
DELV_QTY1 = 0.
LOOP AT ITAB4.
IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
ITAB-AUART = 'KR').
IF ITAB4-PLMIN = '-'.
ITAB4-RFMNG = ITAB4-RFMNG * -1.
ENDIF.
determine if delivery for SO item precedes delivery w/no goods
issue (to determine request date and qty)
CLEAR LIKP.
SELECT SINGLE ERDAT ERZET
FROM LIKP INTO (LIKP-ERDAT, LIKP-ERZET)
WHERE VBELN = ITAB4-VBELN.
IF LIKP-ERDAT < ITAB3-ERDAT OR ( LIKP-ERDAT = ITAB3-ERDAT
AND LIKP-ERZET < ITAB3-ERZET ).
DELV_QTY1 = DELV_QTY1 + ITAB4-RFMNG.
ENDIF.
DELV_QTY = DELV_QTY + ITAB4-RFMNG.
ENDIF.
ENDLOOP.
get request dates for SO item
REFRESH ITAB2B.
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
select sched lines w/commit date and write to itab2c
REFRESH ITAB2C.
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
loop thru request dates and delete request date entries for
quantity(s) for preceding deliveries
REMAIN_QTY1 = DELV_QTY1.
LOOP AT ITAB2B.
IF ITAB2B-WMENG > REMAIN_QTY1.
ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
MODIFY ITAB2B.
EXIT.
ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
DELETE ITAB2B.
EXIT.
ELSE.
REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
DELETE ITAB2B.
ENDIF.
ENDLOOP.
loop thru commit dates and delete commit date entries for
quantity(s) for preceding deliveries
REMAIN_QTY2 = DELV_QTY1.
LOOP AT ITAB2C.
IF ITAB2C-ROMS1 > REMAIN_QTY2.
ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
MODIFY ITAB2C.
EXIT.
ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
DELETE ITAB2C.
EXIT.
ELSE.
REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
DELETE ITAB2C.
ENDIF.
ENDLOOP.
if planned goods issue date is 0, put qty in non-confirmed
get request date for SO item
IF ITAB3-WADAT <> 0.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB3-LFIMG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB3-LFIMG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = ITAB3-WADAT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB3-LFIMG.
ITAB1-ZDESC = 'delivery, no goods issue'.
ELSE.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB3-LFIMG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB3-LFIMG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB3-LFIMG.
ITAB1-ZDESC = 'delivery, no goods issue date'.
ENDIF.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 400_GET_PARTIAL_DELIVERY
get detail for SO items w/partial deliveries for document types
(ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
FORM 400_GET_PARTIAL_DELIVERY.
process SO items for selected order types
LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
AUART = 'ZPSO' OR AUART = 'ZZNC'.
select if delivery status = B (partially delivered)
IF ITAB-LFGSA = 'B'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
select delivery qty for SO item and write to internal table
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
FROM VBFA INTO TABLE ITAB4
WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
calculate total delivery qty for SO item
DELV_QTY = 0.
LOOP AT ITAB4.
IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
ITAB-AUART = 'KR').
IF ITAB4-PLMIN = '-'.
ITAB4-RFMNG = ITAB4-RFMNG * -1.
ENDIF.
DELV_QTY = DELV_QTY + ITAB4-RFMNG.
ENDIF.
ENDLOOP.
select schedule lines for SO item and write to internal table
REFRESH ITAB2A.
SELECT WADAT VBELN POSNR WMENG BMENG
FROM VBEP INTO TABLE ITAB2A
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
get request dates from schedule line table
REFRESH ITAB2B.
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
get commit dates from schedule line table
REFRESH ITAB2C.
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
SORT ITAB2A BY WADAT.
loop thru request dates and delete request date entries for
quantity(s) already delivered
REMAIN_QTY1 = DELV_QTY.
LOOP AT ITAB2B.
IF ITAB2B-WMENG > REMAIN_QTY1.
ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
MODIFY ITAB2B.
EXIT.
ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
DELETE ITAB2B.
EXIT.
ELSE.
REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
DELETE ITAB2B.
ENDIF.
ENDLOOP.
loop thru commit dates and delete request date entries for
quantity(s) already delivered
REMAIN_QTY2 = DELV_QTY.
LOOP AT ITAB2C.
IF ITAB2C-ROMS1 > REMAIN_QTY2.
ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
MODIFY ITAB2C.
EXIT.
ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
DELETE ITAB2C.
EXIT.
ELSE.
REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
DELETE ITAB2C.
ENDIF.
ENDLOOP.
ORDR_QTY = 0.
CONF_QTY = 0.
NOCONF_QTY = 0.
calculate the unconfirmed qty for SO item
LOOP AT ITAB2A.
ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
CONF_QTY = CONF_QTY + ITAB2A-BMENG.
ENDLOOP.
NOCONF_QTY = ORDR_QTY - CONF_QTY.
NODELV_QTY = ORDR_QTY - DELV_QTY.
loop thru schedule lines and process entries with no related
delivery(s)
REMAIN_QTY = DELV_QTY.
LOOP AT ITAB2A.
IF ITAB2A-BMENG <> 0.
IF ITAB2A-BMENG <= REMAIN_QTY.
REMAIN_QTY = REMAIN_QTY - ITAB2A-BMENG.
ELSE.
ITAB2A-BMENG = ITAB2A-BMENG - REMAIN_QTY.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB2A-BMENG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB2A-BMENG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = ITAB2A-WADAT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB2A-BMENG.
ITAB1-ZDESC = 'partial delivery'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
REMAIN_QTY = 0.
ENDIF.
ENDIF.
ENDLOOP.
if total unconfirmed >= total not delivered, qty is unconfirmed
IF NOCONF_QTY >= NODELV_QTY.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING NODELV_QTY REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING NODELV_QTY COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = NODELV_QTY.
ITAB1-ZDESC = 'partial delv, not confirmed'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 500_GET_THIRD_PARTY
get detail for third party SO items
FORM 500_GET_THIRD_PARTY.
process SO items for selected order types
LOOP AT ITAB WHERE PSTYV = 'TAS' AND ( AUART = 'ZZOR' OR
AUART = 'ZZC1' OR AUART = 'ZZCO' OR AUART = 'ZZRP' OR
AUART = 'ZZRW' OR AUART = 'KE' OR AUART = 'KR' OR
AUART = 'ZCHP' OR AUART = 'ZPSO' OR AUART = 'ZZNC' ).
select if billing status <> C (billed)
IF ITAB-FKSAA <> 'C'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
get request dates from schedule line table
REFRESH ITAB2B.
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
get commit dates from schedule line table
REFRESH ITAB2C.
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
get PO number(s) for SO item and write to internal table
REFRESH ITAB4.
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
FROM VBFA INTO TABLE ITAB4
WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
VBTYP_N = 'V' AND RFMNG <> 0.
calculate total delivery qty for PO item
DELV_QTY = 0.
LOOP AT ITAB4.
IF ITAB4-PLMIN = '-'.
ITAB4-RFMNG = ITAB4-RFMNG * -1.
ENDIF.
DELV_QTY = DELV_QTY + ITAB4-RFMNG.
ENDLOOP.
loop thru PO's for SO item
LOOP AT ITAB4.
select delivery lines for PO item
SELECT EINDT EBELN EBELP MENGE FROM EKET
INTO (EKET-EINDT, EKET-EBELN, EKET-EBELP, EKET-MENGE)
WHERE EBELN = ITAB4-VBELN AND EBELP = ITAB4-POSNN.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING EKET-MENGE REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING EKET-MENGE COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = EKET-EINDT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = EKET-MENGE.
ITAB1-ZDESC = '3rd party item'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
APPEND ITAB1.
ENDSELECT.
ENDLOOP.
if total delivery qty < order qty, put remaining in non-confirmed
IF DELV_QTY < ITAB-KWMENG.
THIRD_QTY = ITAB-KWMENG - DELV_QTY.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING THIRD_QTY REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING THIRD_QTY COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE2 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = THIRD_QTY.
ITAB1-ZDESC = '3rd party item, no PO'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
APPEND ITAB1.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 900_CREATE_LIST
process open business detail and create list
FORM 900_CREATE_LIST.
if internal table is empty, write message and exit
DESCRIBE TABLE ITAB1 LINES ZCNTR.
IF ZCNTR = 0.
WRITE: / 'No Data Found for Selection'.
STOP.
ENDIF.
SORT ITAB1 BY KUNNR KUNWE VBELN POSNR.
loop thru sorted table and create list
LOOP AT ITAB1.
IF ITAB1-ZDATE1 = SPACE.
ITAB1-ZDATE1 = '99991231'.
ENDIF.
IF ITAB1-ZDATE3 = SPACE.
ITAB1-ZDATE3 = '99991231'.
ENDIF.
get SO item detail
CLEAR ITAB.
READ TABLE ITAB WITH KEY VBELN = ITAB1-VBELN
POSNR = ITAB1-POSNR BINARY SEARCH.
print sold-to and ship-to customer header info
AT NEW KUNWE.
CLEAR KNA1.
SELECT SINGLE NAME1 FROM KNA1 INTO KNA1-NAME1
WHERE KUNNR = ITAB1-KUNNR.
CONCATENATE ITAB-ORT01 ITAB-REGIO INTO ADRS1 SEPARATED BY ', '.
CONCATENATE ADRS1 ITAB-LAND1 INTO ADRS2 SEPARATED BY ' '.
CONCATENATE ITAB-NAME1 ADRS2 INTO ADRS3 SEPARATED BY ' '.
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE: /1 'Sold-to:', 10 ITAB1-KUNNR, 18 KNA1-NAME1,
56 'Ship-to:', 65 ITAB1-KUNWE, 73 ADRS3.
FORMAT RESET.
SKIP.
ENDAT.
print out backlog detail
CLEAR T171T.
SELECT SINGLE BZTXT FROM T171T INTO T171T-BZTXT
WHERE SPRAS = SY-LANGU AND BZIRK = ITAB-BZIRK.
WRITE: /1 ITAB1-VBELN,
13(6) ITAB1-POSNR NO-ZERO,
21 ITAB-MATNR,
41 ITAB-ARKTX,
83 ITAB1-ZDATE1,
95 ITAB1-ZDATE3,
107 ITAB1-ZDATE2,
119 ITAB-ERNAM,
129 ITAB-BZIRK, 135 T171T-BZTXT,
157(20) ITAB-BSTKD,
179(12) ITAB1-ZQTY1 DECIMALS 0,
193(12) ITAB1-ZQTY2 DECIMALS 0,
207(16) ITAB1-ZEXTD DECIMALS 2,
225 ITAB1-ZDESC.
AT END OF VBELN.
SKIP.
ENDAT.
print footing at ship-to customer
AT END OF KUNWE.
SUM.
ULINE: /193(12), 207(16).
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE: /1 'Total: Sold-to:', 18 ITAB1-KUNNR,
25 '/', 27 'Ship-to:', 36 ITAB1-KUNWE,
193(12) ITAB1-ZQTY2 DECIMALS 0,
207(16) ITAB1-ZEXTD DECIMALS 2.
FORMAT RESET.
SKIP 2.
ENDAT.
AT LAST.
SUM.
ULINE: /193(12), 207(16).
FORMAT COLOR 1 INTENSIFIED ON.
WRITE: /1 'Report Total:',
193(12) ITAB1-ZQTY2 DECIMALS 0,
207(16) ITAB1-ZEXTD DECIMALS 2.
FORMAT RESET.
ENDAT.
ENDLOOP.
ENDFORM.
FORM GET_REQUEST_DATE
subroutine to get request date for SO item
FORM GET_REQUEST_DATE TABLES FTAB STRUCTURE ITAB2B
USING CONF_QTY REQ_DATE.
DATA: REMAIN LIKE VBEP-WMENG, "qty remaining
CNTR TYPE I, "loop counter
TAB_INDEX TYPE I. "table index
initialize
REMAIN = 0.
REQ_DATE = SPACE.
get first request date from table
TAB_INDEX = 1.
READ TABLE FTAB INDEX TAB_INDEX.
if request date not found, set request date to blank
IF SY-SUBRC <> 0.
REQ_DATE = SPACE.
EXIT.
ELSE.
REQ_DATE = FTAB-EDATU.
ENDIF.
calculate quantity remaining for request date
REMAIN = FTAB-WMENG - CONF_QTY.
if qty remaining > 0, update request date with qty remaining
IF REMAIN > 0.
FTAB-WMENG = REMAIN.
MODIFY FTAB INDEX TAB_INDEX.
if qty remaining = 0, delete request date (so next request
date will be used for next confirmed qty)
ELSEIF REMAIN = 0.
DELETE FTAB INDEX TAB_INDEX.
if qty remaining < 0, find next request date and update
ELSE.
CNTR = 0.
WHILE REMAIN < 0 OR CNTR < 10.
DELETE FTAB INDEX TAB_INDEX.
TAB_INDEX = TAB_INDEX + 1.
READ TABLE FTAB INDEX TAB_INDEX.
REMAIN = REMAIN + FTAB-WMENG.
CNTR = CNTR + 1.
ENDWHILE.
IF REMAIN = 0.
DELETE FTAB INDEX TAB_INDEX.
ELSEIF REMAIN > 0.
FTAB-WMENG = REMAIN.
MODIFY FTAB INDEX TAB_INDEX.
ENDIF.
ENDIF.
ENDFORM.
FORM GET_COMMIT_DATE
subroutine to get commit date for SO item
FORM GET_COMMIT_DATE TABLES CTAB STRUCTURE ITAB2C
USING CONF_QTY COM_DATE.
DATA: REMAIN LIKE VBEP-WMENG, "qty remaining
CNTR TYPE I, "loop counter
TAB_INDEX TYPE I. "table index
initialize
REMAIN = 0.
COM_DATE = SPACE.
get first commit date from table
TAB_INDEX = 1.
READ TABLE CTAB INDEX TAB_INDEX.
if request date not found, set request date to blank
IF SY-SUBRC <> 0.
COM_DATE = SPACE.
EXIT.
ELSE.
COM_DATE = CTAB-EDATU.
ENDIF.
calculate quantity remaining for request date
REMAIN = CTAB-ROMS1 - CONF_QTY.
if qty remaining > 0, update request date with qty remaining
IF REMAIN > 0.
CTAB-ROMS1 = REMAIN.
MODIFY CTAB INDEX TAB_INDEX.
if qty remaining = 0, delete request date (so next request
date will be used for next confirmed qty)
ELSEIF REMAIN = 0.
DELETE CTAB INDEX TAB_INDEX.
if qty remaining < 0, find next request date and update
ELSE.
CNTR = 0.
WHILE REMAIN < 0 OR CNTR < 10.
DELETE CTAB INDEX TAB_INDEX.
TAB_INDEX = TAB_INDEX + 1.
READ TABLE CTAB INDEX TAB_INDEX.
REMAIN = REMAIN + CTAB-ROMS1.
CNTR = CNTR + 1.
ENDWHILE.
IF REMAIN = 0.
DELETE CTAB INDEX TAB_INDEX.
ELSEIF REMAIN > 0.
CTAB-ROMS1 = REMAIN.
MODIFY CTAB INDEX TAB_INDEX.
ENDIF.
ENDIF.
ENDFORM.
END-OF-REPORT. -
URGENT: - REGARDING ALV REPORT
hi,
i had made dis report in ALV and i want to display d heading format as follows:-
NAME:- TEST PROGRAM
date: - 21.05.2007
time:- 1:30:23 am
moreover i want to see the print perview of it but it is giving runtime error.
plz help me in solving dis problem and he or she will be definately rewarded..
*& Report ZMFTEST5
REPORT ZMFTEST5 no standard page heading LINE-SIZE 310.
TABLES : VBAK,ABAP,VBEP,VBKD,MARA,KNA1,MAKT.
*Varriable declaration.
TYPE-POOLS SLIS.
DATA : POS TYPE I.
DATA REPID LIKE SY-REPID.
DATA : F1 TYPE SLIS_T_FIELDCAT_ALV,
F2 TYPE SLIS_FIELDCAT_ALV,
L_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA L_POS TYPE I VALUE 1. "position of the column
DATA GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: GT_EVENTS TYPE SLIS_T_EVENT,
FS_EVENTCAT LIKE LINE OF GT_EVENTs.
DATA : T_HEADING TYPE slis_t_listheader.
INTERNAL TABLE FOR SALES ORDER *****************
DATA : BEGIN OF ITSO OCCURS 0,
VBELN LIKE VBAK-VBELN,
ERDAT LIKE VBAK-ERDAT,
BSTNK LIKE VBAK-BSTNK,
KUNNR LIKE VBAK-KUNNR,
MATNR LIKE VBAP-MATNR,
POSNR LIKE VBAP-POSNR,
WMENG LIKE VBEP-WMENG,
NTGEW LIKE MARA-NTGEW,
BRGEW LIKE MARA-BRGEW,
GEWEI LIKE MARA-GEWEI,
SPART LIKE VBAK-SPART,
BMENG LIKE VBEP-BMENG,
EDATU LIKE VBEP-EDATU,
BSTKD LIKE VBKD-BSTKD,
WERKS LIKE VBAP-WERKS,
MEINS LIKE MARA-MEINS,
KWMENG LIKE VBAP-KWMENG,
KLMENG LIKE VBAP-KLMENG,
BALQTY LIKE VBAP-KLMENG,
SOGWT LIKE MARA-BRGEW,
SONWT LIKE MARA-BRGEW,
SINWT LIKE MARA-BRGEW,
BALGWT LIKE MARA-BRGEW,
BALNWT LIKE MARA-BRGEW,
DISPNWT LIKE MARA-BRGEW,
PARTYNAME LIKE KNA1-NAME1,
ITEMDESC LIKE MAKT-MAKTX,
STATUS TYPE C,
END OF ITSO.
DATA:B_QTY TYPE P LENGTH 7 DECIMALS 3.
***********PARAMETERS***************
PARAMETERS : PLANT LIKE VBAP-WERKS OBLIGATORY.
*********SELECTION SCREEN OPTIONS*********
SELECT-OPTIONS : SO_ORD FOR VBAK-VBELN,
SO_PARTY FOR VBAK-KUNNR,
IT_M FOR MARA-MATNR,
DIV FOR VBAK-SPART,
SO_DATE FOR VBAK-ERDAT,
S_DATE FOR VBEP-EDATU.
START-OF-SELECTION.
SELECT DISTINCT A~VBELN A~ERDAT A~BSTNK A~KUNNR B~SPART B~MATNR B~POSNR B~WERKS B~KWMENG B~KBMENG C~NTGEW C~BRGEW C~GEWEI D~WMENG D~BMENG D~EDATU D~VBELN
FROM VBAK AS A INNER JOIN VBAP AS B ON B~VBELN = A~VBELN
INNER JOIN MARA AS C ON C~MATNR = B~MATNR
INNER JOIN VBEP AS D ON D~WMENG > 0 AND D~VBELN = A~VBELN AND D~POSNR = B~POSNR
INTO CORRESPONDING FIELDS OF TABLE ITSO
WHERE A~VBELN IN SO_ORD AND A~KUNNR IN SO_PARTY AND B~SPART IN DIV AND A~ERDAT IN SO_DATE AND D~EDATU IN S_DATE AND B~MATNR IN IT_M AND B~WERKS = PLANT.
IF SY-SUBRC <> 0.
MESSAGE E899(M3) WITH 'No records'.
ENDIF.
DATA : V_NETWT LIKE MARA-NTGEW,
V_GRWT LIKE MARA-NTGEW,
V_SOSTAT TYPE C.
LOOP AT ITSO.
if ITSO-bmeng = 0.
V_SOSTAT = 'A'.
ELSEIF ITSO-WMENG <> ITSO-BMENG.
V_SOSTAT = 'B'.
ELSE.
V_SOSTAT = 'C'.
ENDIF.
IF ITSO-GEWEI = 'G'.
V_NETWT = ITSO-NTGEW / 1000.
V_GRWT = ITSO-BRGEW / 1000.
ELSEIF ITSO-GEWEI = 'KG'.
V_NETWT = ITSO-NTGEW.
V_GRWT = ITSO-BRGEW.
ELSEIF ITSO-GEWEI = 'TO'.
V_NETWT = ITSO-NTGEW * 1000.
V_GRWT = ITSO-BRGEW * 1000.
ENDIF.
ITSO-STATUS = V_SOSTAT.
ITSO-SOGWT = V_GRWT * ITSO-WMENG / 1000.
ITSO-SONWT = V_NETWT * ITSO-WMENG / 1000.
ITSO-SINWT = V_GRWT * ITSO-BMENG / 1000.
ITSO-BALGWT = V_GRWT * ( ITSO-WMENG - ITSO-BMENG ) / 1000.
ITSO-BALNWT = V_NETWT * ( ITSO-WMENG - ITSO-BMENG ) / 1000.
ITSO-DISPNWT = V_NETWT * ITSO-BMENG / 1000.
ITSO-BALQTY = ITSO-WMENG - ITSO-BMENG.
SELECT SINGLE NAME1 FROM KNA1 INTO ITSO-PARTYNAME WHERE KUNNR = ITSO-KUNNR.
SELECT SINGLE MAKTX FROM MAKT INTO ITSO-ITEMDESC WHERE MATNR = ITSO-MATNR.
MODIFY ITSO.
ENDLOOP.
perform f_build_eventcat.
PERFORM LAYOUT using t_heading.
END-OF-SELECTION.
FORM LAYOUT using t_heading type slis_t_listheader.
data : t_event type slis_t_event.
PERFORM FCAT USING 'WERKS' 'ITSO' '' 'PLANT ' 'WERKS' 'VBAP' ''.
PERFORM FCAT USING 'VBELN' 'ITSO' '' 'SO NO. ' 'VBELN' 'VBAK' ''.
PERFORM FCAT USING 'ERDAT' 'ITSO' '' 'S.O.DATE' 'ERDAT' 'VBAK' ''.
PERFORM FCAT USING 'BSTNK' 'ITSO' '' 'P.O.N.O.' 'BSTNK' 'VBAK' ''.
PERFORM FCAT USING 'KUNNR' 'ITSO' '' 'PARTY ' 'KUNNR' 'VBAP' ''.
PERFORM FCAT USING 'PARTYNAME' 'ITSO' '' 'PARTY DESCRIPTION' 'PARTYNAME' '' ''.
PERFORM FCAT USING 'ITEMDESC' 'ITSO' '' 'MATERIAL DESCRIPTION' 'ITEMDESC' '' ''.
PERFORM FCAT USING 'MATNR' 'ITSO' '' 'MAT.NO. ' 'MATNR' 'MARA' ''.
PERFORM FCAT USING 'POSNR' 'ITSO' '' 'LINE.ITEM' 'POSNR' 'VBAP' ''.
PERFORM FCAT USING 'WMENG' 'ITSO' '' 'S.O.QTY' 'WMENG' 'VBEP' '' .
PERFORM FCAT USING 'EDATU' 'ITSO' '' 'SCH.DATE' 'EDATU' 'VBEP' ''.
PERFORM FCAT USING 'SONWT' 'ITSO' '' 'S.O.NWT ' 'P' '' ''.
PERFORM FCAT USING 'SOGWT' 'ITSO' '' 'S.O.GWT ' 'P' '' ''.
PERFORM FCAT USING 'SPART' 'ITSO' '' 'DIV ' 'SPART' 'VBAP' ''.
PERFORM FCAT USING 'BMENG' 'ITSO' '' 'DISP.QTY' 'BMENG' 'VBEP' ''.
PERFORM FCAT USING 'DISPNWT' 'ITSO' '' 'DISP.NT.WT ' 'P' '' ''.
PERFORM FCAT USING 'BALQTY' 'ITSO' '' 'BAL.QTY.' 'P' '' ''.
PERFORM FCAT USING 'BALNWT' 'ITSO' '' 'BAL.NT.WT ' 'P' '' ''.
PERFORM FCAT USING 'BALGWT' 'ITSO' '' 'BAL.GR.WT ' 'P' '' ''.
PERFORM FCAT USING 'STATUS' 'ITSO' '' 'STATUS' 'STATUS' '' ''.
refresh t_event.
*perform set_top_page_heading using t_heading t_event.
REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = F1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = GT_EVENTS[]
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = ITSO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
ENDFORM. " LAYOUT
*& Form FCAT
FORM FCAT USING P_FIELD P_TABLE P_SUM P_TEXT P_RFIELD P_RTABLE P_DISP.
ADD 1 TO POS.
F2-COL_POS = POS.
F2-FIELDNAME = P_FIELD.
F2-TABNAME = P_TABLE.
F2-SELTEXT_L = P_TEXT.
F2-REF_FIELDNAME = P_RFIELD.
F2-REF_TABNAME = P_RTABLE.
F2-DO_SUM = P_SUM.
F2-NO_OUT = P_DISP.
APPEND F2 TO F1.
CLEAR F2.
ENDFORM. " FCAT
FORM F_BUILD_EVENTCAT .
CLEAR: GT_EVENTS. REFRESH: GT_EVENTS.
CLEAR: FS_EVENTCAT.
FS_EVENTCAT-NAME = 'TOP_OF_PAGE'.
FS_EVENTCAT-FORM = 'F_REPORT_HEADER_ALV'.
APPEND FS_EVENTCAT TO GT_EVENTS.
CLEAR: FS_EVENTCAT.
FS_EVENTCAT-NAME = 'END_OF_LIST'.
FS_EVENTCAT-FORM = 'F_WRITE_SUMMARY'.
APPEND FS_EVENTCAT TO GT_EVENTS.
ENDFORM.
*FORM F_REPORT_HEADER_ALV.
*CALL FUNCTION 'Z_HEAD_PRINT'
EXPORTING
WRITE: / TITLE1 = 'XYZ Limited'
TITLE2 = 'Sales Order Report'
TITLE3 = 'Created on '
COLOR = 'X'.
*ENDFORM.
FORM F_WRITE_SUMMARY .
write:/ 'Welcome to XYZ Limited'.
write:/ 'This is a test program to display Report in ALV Format'.
ENDFORM.
*& Form set_top_page_heading
text
-->P_T_HEADING text
*form set_top_page_heading using t_heading
t_events type slis_t_event.
*data: x_heading type slis_listheader,
x_event type line of slis_t_event.
Report title
clear t_heading[].
clear x_heading.
x_heading-typ = 'H'.
x_heading-info = ''(001).
append x_heading to t_heading.
t_heading-info = 'TEST'.
t_heading-typ = 'H'.
Program name
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'Program: '.
x_heading-info = sy-repid.
append x_heading to t_heading.
User who is running the report
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'User: '.
x_heading-info = sy-uname.
append x_heading to t_heading.
Date of execution
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'Date: '.
write sy-datum to x_heading-info.
append x_heading to t_heading.
Time of execution
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'Time: '.
write sy-uzeit to x_heading-info.
append x_heading to t_heading.
Top of page event
x_event-name = slis_ev_top_of_page.
x_event-form = 'TOP_OF_PAGE'.
append x_event to t_events.
*endform. " set_top_page_headingHi,
i had change ur code just copy this and try,i hope it will work.
REPORT ZMFTEST5 no standard page heading LINE-SIZE 310.
TABLES : VBAK,ABAP,VBEP,VBKD,MARA,KNA1,MAKT.
*Varriable declaration.
TYPE-POOLS SLIS.
DATA : POS TYPE I.
DATA REPID LIKE SY-REPID.
****************CHANGES**************
DATA : FDATE TYPE STRING,
FTIME TYPE STRING,
FNAME TYPE STRING.
****************CHANGES**************
DATA : F1 TYPE SLIS_T_FIELDCAT_ALV,
F2 TYPE SLIS_FIELDCAT_ALV,
L_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA L_POS TYPE I VALUE 1. "position of the column
DATA GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: GT_EVENTS TYPE SLIS_T_EVENT,
FS_EVENTCAT LIKE LINE OF GT_EVENTs.
DATA : T_HEADING TYPE slis_t_listheader.
INTERNAL TABLE FOR SALES ORDER *****************
DATA : BEGIN OF ITSO OCCURS 0,
VBELN LIKE VBAK-VBELN,
ERDAT LIKE VBAK-ERDAT,
BSTNK LIKE VBAK-BSTNK,
KUNNR LIKE VBAK-KUNNR,
MATNR LIKE VBAP-MATNR,
POSNR LIKE VBAP-POSNR,
WMENG LIKE VBEP-WMENG,
NTGEW LIKE MARA-NTGEW,
BRGEW LIKE MARA-BRGEW,
GEWEI LIKE MARA-GEWEI,
SPART LIKE VBAK-SPART,
BMENG LIKE VBEP-BMENG,
EDATU LIKE VBEP-EDATU,
BSTKD LIKE VBKD-BSTKD,
WERKS LIKE VBAP-WERKS,
MEINS LIKE MARA-MEINS,
KWMENG LIKE VBAP-KWMENG,
KLMENG LIKE VBAP-KLMENG,
BALQTY LIKE VBAP-KLMENG,
SOGWT LIKE MARA-BRGEW,
SONWT LIKE MARA-BRGEW,
SINWT LIKE MARA-BRGEW,
BALGWT LIKE MARA-BRGEW,
BALNWT LIKE MARA-BRGEW,
DISPNWT LIKE MARA-BRGEW,
PARTYNAME LIKE KNA1-NAME1,
ITEMDESC LIKE MAKT-MAKTX,
STATUS TYPE C,
END OF ITSO.
DATA:B_QTY TYPE P LENGTH 7 DECIMALS 3.
***********PARAMETERS***************
PARAMETERS : PLANT LIKE VBAP-WERKS OBLIGATORY.
*********SELECTION SCREEN OPTIONS*********
SELECT-OPTIONS : SO_ORD FOR VBAK-VBELN,
SO_PARTY FOR VBAK-KUNNR,
IT_M FOR MARA-MATNR,
DIV FOR VBAK-SPART,
SO_DATE FOR VBAK-ERDAT,
S_DATE FOR VBEP-EDATU.
START-OF-SELECTION.
SELECT DISTINCT A~VBELN A~ERDAT A~BSTNK A~KUNNR B~SPART B~MATNR B~POSNR B~WERKS B~KWMENG B~KBMENG C~NTGEW C~BRGEW C~GEWEI D~WMENG D~BMENG D~EDATU D~VBELN
FROM VBAK AS A INNER JOIN VBAP AS B ON B~VBELN = A~VBELN
INNER JOIN MARA AS C ON C~MATNR = B~MATNR
INNER JOIN VBEP AS D ON D~WMENG > 0 AND D~VBELN = A~VBELN AND D~POSNR = B~POSNR
INTO CORRESPONDING FIELDS OF TABLE ITSO
WHERE A~VBELN IN SO_ORD AND A~KUNNR IN SO_PARTY AND B~SPART IN DIV AND A~ERDAT IN SO_DATE AND D~EDATU IN S_DATE AND B~MATNR IN IT_M AND B~WERKS = PLANT.
IF SY-SUBRC <> 0.
MESSAGE E899(M3) WITH 'No records'.
ENDIF.
DATA : V_NETWT LIKE MARA-NTGEW,
V_GRWT LIKE MARA-NTGEW,
V_SOSTAT TYPE C.
LOOP AT ITSO.
if ITSO-bmeng = 0.
V_SOSTAT = 'A'.
ELSEIF ITSO-WMENG <> ITSO-BMENG.
V_SOSTAT = 'B'.
ELSE.
V_SOSTAT = 'C'.
ENDIF.
IF ITSO-GEWEI = 'G'.
V_NETWT = ITSO-NTGEW / 1000.
V_GRWT = ITSO-BRGEW / 1000.
ELSEIF ITSO-GEWEI = 'KG'.
V_NETWT = ITSO-NTGEW.
V_GRWT = ITSO-BRGEW.
ELSEIF ITSO-GEWEI = 'TO'.
V_NETWT = ITSO-NTGEW * 1000.
V_GRWT = ITSO-BRGEW * 1000.
ENDIF.
ITSO-STATUS = V_SOSTAT.
ITSO-SOGWT = V_GRWT * ITSO-WMENG / 1000.
ITSO-SONWT = V_NETWT * ITSO-WMENG / 1000.
ITSO-SINWT = V_GRWT * ITSO-BMENG / 1000.
ITSO-BALGWT = V_GRWT * ( ITSO-WMENG - ITSO-BMENG ) / 1000.
ITSO-BALNWT = V_NETWT * ( ITSO-WMENG - ITSO-BMENG ) / 1000.
ITSO-DISPNWT = V_NETWT * ITSO-BMENG / 1000.
ITSO-BALQTY = ITSO-WMENG - ITSO-BMENG.
SELECT SINGLE NAME1 FROM KNA1 INTO ITSO-PARTYNAME WHERE KUNNR = ITSO-KUNNR.
SELECT SINGLE MAKTX FROM MAKT INTO ITSO-ITEMDESC WHERE MATNR = ITSO-MATNR.
MODIFY ITSO.
ENDLOOP.
perform f_build_eventcat.
PERFORM LAYOUT using t_heading.
END-OF-SELECTION.
FORM LAYOUT using t_heading type slis_t_listheader.
data : t_event type slis_t_event.
PERFORM FCAT USING 'WERKS' 'ITSO' '' 'PLANT ' 'WERKS' 'VBAP' ''.
PERFORM FCAT USING 'VBELN' 'ITSO' '' 'SO NO. ' 'VBELN' 'VBAK' ''.
PERFORM FCAT USING 'ERDAT' 'ITSO' '' 'S.O.DATE' 'ERDAT' 'VBAK' ''.
PERFORM FCAT USING 'BSTNK' 'ITSO' '' 'P.O.N.O.' 'BSTNK' 'VBAK' ''.
PERFORM FCAT USING 'KUNNR' 'ITSO' '' 'PARTY ' 'KUNNR' 'VBAP' ''.
PERFORM FCAT USING 'PARTYNAME' 'ITSO' '' 'PARTY DESCRIPTION' 'PARTYNAME' '' ''.
PERFORM FCAT USING 'ITEMDESC' 'ITSO' '' 'MATERIAL DESCRIPTION' 'ITEMDESC' '' ''.
PERFORM FCAT USING 'MATNR' 'ITSO' '' 'MAT.NO. ' 'MATNR' 'MARA' ''.
PERFORM FCAT USING 'POSNR' 'ITSO' '' 'LINE.ITEM' 'POSNR' 'VBAP' ''.
PERFORM FCAT USING 'WMENG' 'ITSO' '' 'S.O.QTY' 'WMENG' 'VBEP' '' .
PERFORM FCAT USING 'EDATU' 'ITSO' '' 'SCH.DATE' 'EDATU' 'VBEP' ''.
PERFORM FCAT USING 'SONWT' 'ITSO' '' 'S.O.NWT ' 'P' '' ''.
PERFORM FCAT USING 'SOGWT' 'ITSO' '' 'S.O.GWT ' 'P' '' ''.
PERFORM FCAT USING 'SPART' 'ITSO' '' 'DIV ' 'SPART' 'VBAP' ''.
PERFORM FCAT USING 'BMENG' 'ITSO' '' 'DISP.QTY' 'BMENG' 'VBEP' ''.
PERFORM FCAT USING 'DISPNWT' 'ITSO' '' 'DISP.NT.WT ' 'P' '' ''.
PERFORM FCAT USING 'BALQTY' 'ITSO' '' 'BAL.QTY.' 'P' '' ''.
PERFORM FCAT USING 'BALNWT' 'ITSO' '' 'BAL.NT.WT ' 'P' '' ''.
PERFORM FCAT USING 'BALGWT' 'ITSO' '' 'BAL.GR.WT ' 'P' '' ''.
PERFORM FCAT USING 'STATUS' 'ITSO' '' 'STATUS' 'STATUS' '' ''.
refresh t_event.
*perform set_top_page_heading using t_heading t_event.
REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK
I_CALLBACK_HTML_TOP_OF_PAGE = 'TOP'
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = F1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = GT_EVENTS[]
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = ITSO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
ENDFORM. " LAYOUT
*& Form FCAT
FORM FCAT USING P_FIELD P_TABLE P_SUM P_TEXT P_RFIELD P_RTABLE P_DISP.
ADD 1 TO POS.
F2-COL_POS = POS.
F2-FIELDNAME = P_FIELD.
F2-TABNAME = P_TABLE.
F2-SELTEXT_L = P_TEXT.
F2-REF_FIELDNAME = P_RFIELD.
F2-REF_TABNAME = P_RTABLE.
F2-DO_SUM = P_SUM.
F2-NO_OUT = P_DISP.
APPEND F2 TO F1.
CLEAR F2.
ENDFORM. " FCAT
FORM F_BUILD_EVENTCAT .
CLEAR: GT_EVENTS. REFRESH: GT_EVENTS.
CLEAR: FS_EVENTCAT.
FS_EVENTCAT-NAME = 'TOP_OF_PAGE'.
FS_EVENTCAT-FORM = 'F_REPORT_HEADER_ALV'.
APPEND FS_EVENTCAT TO GT_EVENTS.
CLEAR: FS_EVENTCAT.
FS_EVENTCAT-NAME = 'END_OF_LIST'.
FS_EVENTCAT-FORM = 'F_WRITE_SUMMARY'.
APPEND FS_EVENTCAT TO GT_EVENTS.
ENDFORM.
*FORM F_REPORT_HEADER_ALV.
*CALL FUNCTION 'Z_HEAD_PRINT'
EXPORTING
WRITE: / TITLE1 = 'XYZ Limited'
TITLE2 = 'Sales Order Report'
TITLE3 = 'Created on '
COLOR = 'X'.
*ENDFORM.
FORM F_WRITE_SUMMARY .
write:/ 'Welcome to XYZ Limited'.
write:/ 'This is a test program to display Report in ALV Format'.
ENDFORM.
FORM TOP.
DATA: WT_HEADER TYPE SLIS_T_LISTHEADER,
WA_HEADER TYPE SLIS_LISTHEADER.
CONCATENATE 'DATE:-' SY-DATUM INTO FDATE.
CONCATENATE 'TIME:-' SY-UZEIT INTO FTIME.
FNAME = 'NAME:- TEST'.
WA_HEADER-TYP = HEADER.
WA_HEADER-INFO = FNAME.
APPEND WA_HEADER TO WT_HEADER.
CLEAR WA_HEADER.
WA_HEADER-TYP = HEADER.
WA_HEADER-INFO = FDATE.
APPEND WA_HEADER TO WT_HEADER.
CLEAR WA_HEADER.
WA_HEADER-TYP = HEADER.
WA_HEADER-INFO = FTIME.
APPEND WA_HEADER TO WT_HEADER.
CLEAR WA_HEADER.
ENDFORM.
*& Form set_top_page_heading
text
-->P_T_HEADING text
*form set_top_page_heading using t_heading
t_events type slis_t_event.
*data: x_heading type slis_listheader,
x_event type line of slis_t_event.
Report title
clear t_heading[].
clear x_heading.
x_heading-typ = 'H'.
x_heading-info = ''(001).
append x_heading to t_heading.
t_heading-info = 'TEST'.
t_heading-typ = 'H'.
Program name
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'Program: '.
x_heading-info = sy-repid.
append x_heading to t_heading.
User who is running the report
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'User: '.
x_heading-info = sy-uname.
append x_heading to t_heading.
Date of execution
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'Date: '.
write sy-datum to x_heading-info.
append x_heading to t_heading.
Time of execution
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'Time: '.
write sy-uzeit to x_heading-info.
append x_heading to t_heading.
Top of page event
x_event-name = slis_ev_top_of_page.
x_event-form = 'TOP_OF_PAGE'.
append x_event to t_events.
*endform. " set_top_page_heading
*please do reward points if helpful
Thanks and Regards,
S.N.Venkatesh -
Report for Late Sales Order Processing
Hello all, business want to have a report the shows if sales order are late for processing. Something similar to VL10H for delivery but based on the customer requested delivery date instead of the confirm delivery date in VL10H. Some report that would indicate that the sales order is late and must be process for delivery as soon as possible.
Is there something similar existing already in SAP ? I don't want to reinvent the wheel !!
Thanks a lot !
Mathieu PagéThough, you can always create a quick SAP query using SQVI.
Join tables VBAK (sales order header), VBAP (item) and VBEP (schedule line) on fields VBELN, POSNR.
Select all the fields you are interested in and in the selection you can have VBEP-EDATU (schedule line date which you can compare with today's date to see if there are line items), VBEP-BMENG (confirmed qty), VBEP-WMENG (ordered quantity) and lastly the field you are interested in "Customer requested delivery date" VBAK-VDATU -
Output the requested delivery date for each different line item
Hello Experts
I have program called ZFSFSF(following), in the output Its showing multiple requested delvery dates per line item.
But We need to show the requested delivery date for each different line item.
Any code is highly appreciated. I wud appreacite if you cud bold the added code.
Thanks
SP
TYPE-POOLS: slis.
TABLES: vbap, vbrk, vbfa, vbak, vbrp, konv, kna1, bkpf, bsad, bkpf_bsad,
knvv, pa0002, t005u, mvke, lips, likp, vbpa, vbep.
DATA: BEGIN OF i_list OCCURS 0,
vbeln LIKE vbak-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
erdat LIKE vbap-erdat,
mvgr1 LIKE mvke-mvgr1,
wadat_ist LIKE likp-wadat_ist,
days TYPE i,
werks LIKE vbap-werks,
lgort LIKE vbap-lgort,
kwmeng LIKE vbap-kwmeng," CH01+
lfimg LIKE lips-lfimg," CH01+
pstyv LIKE vbap-pstyv," CH01+
obd LIKE lips-vbeln," CH01+
obd_pos LIKE lips-posnr," CH01+
soldto LIKE vbaK-kunnr," JR+
shipto LIKE vbpa-kunnr," JR+
edatu like vbep-edatu," PR+
END OF i_list.
DATA: i_list2 LIKE i_list OCCURS 0 WITH HEADER LINE,
i_list3 LIKE i_list OCCURS 0 WITH HEADER LINE.
DATA: i_list4 LIKE vbap OCCURS 0 WITH HEADER LINE.
*ALV Output Header
DATA: gt_list_top_of_page TYPE slis_t_listheader,
prognm LIKE sy-repid,
gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
gt_events TYPE slis_t_event,
is_layout TYPE slis_layout_alv,
is_variant LIKE disvariant,
it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.
DATA:gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:gt_outtab LIKE i_list OCCURS 0 WITH HEADER LINE.
DATA: g_repid LIKE sy-repid,
g_count LIKE sy-tabix.
SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME TITLE text-t01.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) text-t10.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) text-t11.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) text-t12.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN END OF BLOCK block0.
*/ Selection and Input Parameters
SELECTION-SCREEN BEGIN OF BLOCK blocko WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vbeln FOR vbap-vbeln, "SO
s_auart FOR vbak-auart DEFAULT 'KB' OBLIGATORY,
s_matnr FOR vbap-matnr," obligatory,
s_mvgr1 FOR mvke-mvgr1,
s_erdat FOR vbap-erdat OBLIGATORY,
s_werks FOR vbap-werks,
s_lgort FOR vbap-lgort,
s_edatu FOR vbep-edatu.
PARAMETERS: p_vkorg LIKE vbak-vkorg DEFAULT '5010'.
SELECTION-SCREEN SKIP 2.
+EC1
Addition +EC1
+EC1
PARAMETERS: p_vari LIKE disvariant-variant.
+EC1
End Addition +EC1
+EC1
SELECTION-SCREEN END OF BLOCK blocko.
+EC1
Addition +EC1
+EC1
DATA: g_save(1) TYPE c,
g_default(1) TYPE c,
g_exit(1) TYPE c,
gx_variant LIKE disvariant,
g_variant LIKE disvariant.
+EC1
End Addition +EC1
+EC1
Initialization fieldcatalog
INITIALIZATION.
PERFORM clear_tables.
g_repid = sy-repid.
PERFORM fieldcat_init USING gt_fieldcat[].
+EC1
Addition +EC1
+EC1
g_save = 'A'.
PERFORM variant_init.
Get default variant
gx_variant = g_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = gx_variant-variant.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
AT SELECTION-SCREEN.
PERFORM auth_check. "+ESC
PERFORM pai_of_selection_screen.
+EC1
End Addition +EC1
+EC1
START-OF-SELECTION.
PERFORM get_data.
PERFORM alv.
END-OF-SELECTION.
FORM get_data *
FORM get_data.
*CH01 - Added kwmeng(order qty) to selection, excluded rejects
*JR -added soldto and shipto code
SELECT avbeln aposnr amatnr aerdat awerks algort
akwmeng apstyv bkunnr cedatu
CH01+
INTO
(i_list-vbeln, i_list-posnr, i_list-matnr, i_list-erdat, i_list-werks,
i_list-lgort,
i_list-kwmeng , i_list-pstyv, i_list-soldto,i_list-edatu)
CH01+
FROM vbap AS a INNER JOIN vbak AS b ON avbeln = bvbeln
INNER JOIN vbep AS c ON avbeln = cvbeln
WHERE b~vkorg = p_vkorg
AND a~werks IN s_werks
AND a~lgort IN s_lgort
AND b~auart IN s_auart
AND a~vbeln IN s_vbeln
AND a~erdat IN s_erdat
AND a~abgru = ''" CH01+
AND a~matnr IN s_matnr
AND c~edatu IN s_edatu.
APPEND i_list.
ENDSELECT.
COMMIT WORK AND WAIT.
LOOP AT i_list.
SELECT SINGLE mvgr1 INTO i_list-mvgr1 FROM mvke
WHERE matnr = i_list-matnr.
MODIFY i_list.
CLEAR: i_list.
ENDLOOP.
COMMIT WORK AND WAIT.
LOOP AT i_list.
IF i_list-mvgr1 IN s_mvgr1.
CONTINUE.
ELSE.
DELETE i_list.
COMMIT WORK AND WAIT.
ENDIF.
ENDLOOP.
CH01 - commented these lines out and redid logic below
LOOP AT i_list.
select single vbeln into lips-vbeln from lips
where vgbel = i_list-vbeln
and vgpos = i_list-posnr.
select single wadat_ist into i_list-wadat_ist from likp
where vbeln = lips-vbeln.
SELECT b~wadat_ist INTO i_list-wadat_ist
FROM lips AS a INNER JOIN
likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln
AND a~vgpos = i_list-posnr.
MODIFY i_list.
CLEAR: i_list, lips-vbeln.
ENDSELECT.
ENDLOOP.
CH01 - Changed to select multiple delivery lines & del qty
summing the total deliveries per OBD# and date
LOOP AT i_list.
SELECT avbeln sum( alfimg ) b~wadat_ist
INTO (i_list-obd , i_list-lfimg , i_list-wadat_ist)
FROM lips AS a INNER JOIN
likp AS b ON avbeln = bvbeln WHERE a~vgbel = i_list-vbeln
AND a~vgpos = i_list-posnr
AND a~pstyv = i_list-pstyv
group by avbeln bwadat_ist.
i_list2 = i_list.
APPEND i_list2.
ENDSELECT.
IF sy-subrc <> 0.
i_list2 = i_list.
APPEND i_list2.
ENDIF.
ENDLOOP.
i_list[] = i_list2[].
*End CH01
COMMIT WORK AND WAIT.
LOOP AT i_list.
IF i_list-wadat_ist IS INITIAL.
CONTINUE.
ELSE.
i_list-days = i_list-wadat_ist - i_list-erdat.
ENDIF.
MODIFY i_list.
CLEAR: i_list.
COMMIT WORK AND WAIT.
ENDLOOP.
COMMIT WORK AND WAIT.
LOOP AT i_list.
IF i_list-vbeln IS INITIAL.
DELETE i_list.
ENDIF.
ENDLOOP.
COMMIT WORK AND WAIT.
*JR
LOOP AT i_list.
SELECT SINGLE KUNNR INTO i_list-shipto FROM vbpa
WHERE vbeln = i_list-vbeln
AND parvw = 'WE'.
MODIFY i_list.
ENDLOOP.
*END JR
gt_outtab[] = i_list[].
COMMIT WORK AND WAIT.
ENDFORM.
FORM alv *
FORM alv.
PERFORM e03_eventtab_build USING gt_events[]. "+EC1
PERFORM e04_comment_build USING gt_list_top_of_page[]. "+EC1
prognm = sy-repid. "+EC1
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_user_command = 'USER_COMMAND'
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
it_events = gt_events[] "+ESC
it_sort = it_sort[]
+EC1
Addition +EC1
+EC1
is_variant = g_variant
i_save = g_save
+EC1
End Addition +EC1
+EC1
TABLES
t_outtab = gt_outtab.
COMMIT WORK AND WAIT.
ENDFORM.
FORM fieldcat_init *
--> I_FIELDCAT *
FORM fieldcat_init
USING i_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: pos TYPE i VALUE 1.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-ref_tabname = 'VBAK'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'POSNR'.
ls_fieldcat-ref_tabname = 'VBAP'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-ref_tabname = 'VBAP'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MVGR1'.
ls_fieldcat-ref_tabname = 'MVKE'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WERKS'.
ls_fieldcat-ref_tabname = 'VBAP'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LGORT'.
ls_fieldcat-ref_tabname = 'VBAP'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERDAT'.
ls_fieldcat-ref_tabname = 'VBAP'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WADAT_IST'.
ls_fieldcat-ref_tabname = 'LIKP'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'DAYS'.
ls_fieldcat-ref_fieldname = 'DAYS'.
ls_fieldcat-seltext_s = '# Of Days'.
ls_fieldcat-seltext_m = '# Of Days'.
ls_fieldcat-seltext_l = '# Of Days'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
*Begin CH01
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KWMENG'.
ls_fieldcat-ref_tabname = 'VBAP'.
ls_fieldcat-outputlen = 7.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LFIMG'.
ls_fieldcat-ref_tabname = 'LIPS'.
ls_fieldcat-outputlen = 7.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'OBD'.
ls_fieldcat-seltext_s = 'OBD'.
ls_fieldcat-seltext_m = 'Outbound Del'.
ls_fieldcat-seltext_l = 'Outbound Delivery'.
ls_fieldcat-outputlen = 10.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'OBD_POS'.
ls_fieldcat-seltext_s = 'OBD Ln'.
ls_fieldcat-seltext_m = 'Outbound Del Ln'.
ls_fieldcat-seltext_l = 'Outbound Del Line'.
ls_fieldcat-outputlen = 10.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
*End CH01
*JR
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SOLDTO'.
ls_fieldcat-ref_tabname = 'VBAP'.
ls_fieldcat-seltext_m = 'Sold To'.
ls_fieldcat-seltext_l = 'Sold To'.
ls_fieldcat-outputlen = 10.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SHIPTO'.
ls_fieldcat-ref_tabname = 'VBPA'.
ls_fieldcat-seltext_m = 'Ship To'.
ls_fieldcat-seltext_l = 'Ship To'.
ls_fieldcat-outputlen = 10.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
*END JR
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'EDATU'.
ls_fieldcat-ref_tabname = 'VBEP'.
ls_fieldcat-seltext_m = 'Requested Delivery date'.
ls_fieldcat-seltext_l = 'Requested Delivery date'.
ls_fieldcat-outputlen = 20.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
*FOR ALV SORT & SUBTOTAL
CLEAR it_sort.
it_sort-spos = '0'.
it_sort-fieldname = 'VBELN'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '1'.
it_sort-fieldname = 'POSNR'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '2'.
it_sort-fieldname = 'MATNR'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '3'.
it_sort-fieldname = 'MVGR1'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '4'.
it_sort-fieldname = 'ERDAT'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '5'.
it_sort-fieldname = 'WADAT_IST'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-down = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '6'.
it_sort-fieldname = 'PERNR'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '7'.
it_sort-fieldname = 'VORNA'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '8'.
it_sort-fieldname = 'NACHN'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '9'.
it_sort-fieldname = 'VKGRP'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '10'.
it_sort-fieldname = 'VBELN'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '11'.
it_sort-fieldname = 'ERDAT'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
CLEAR it_sort.
it_sort-spos = '12'.
it_sort-fieldname = 'BEZEI'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
APPEND it_sort.
clear it_sort.
it_sort-spos = '1'.
it_sort-fieldname = 'BELNR'.
it_sort-tabname = 'GT_OUTTAB'.
it_sort-up = 'X'.
append it_sort.
ENDFORM.
+EC1
Addition +EC1
+EC1
*& Form VARIANT_INIT
text
--> p1 text
<-- p2 text
FORM variant_init.
CLEAR g_variant.
g_variant-report = g_repid.
ENDFORM. " VARIANT_INIT
FORM f4_for_variant *
FORM f4_for_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = g_save
it_default_fieldcat =
IMPORTING
e_exit = g_exit
es_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF g_exit = space.
p_vari = gx_variant-variant.
ENDIF.
ENDIF.
ENDFORM.
*& Form PAI_OF_SELECTION_SCREEN
text
FORM pai_of_selection_screen.
IF NOT p_vari IS INITIAL.
MOVE g_variant TO gx_variant.
MOVE p_vari TO gx_variant-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant.
g_variant = gx_variant.
ELSE.
PERFORM variant_init.
ENDIF.
ENDFORM. " PAI_OF_SELECTION_SCREEN
+EC1
End Addition +EC1
+EC1
FORM e03_eventtab_build *
--> E03_LT_EVENTS *
FORM e03_eventtab_build USING e03_lt_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 = e03_lt_events.
READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_formname_top_of_page TO ls_event-form.
APPEND ls_event TO e03_lt_events.
ENDIF.
ENDFORM.
FORM e04_comment_build *
--> E04_LT_TOP_OF_PAGE *
FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
*Report Title
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = text-007.
APPEND ls_line TO e04_lt_top_of_page.
**Doc Type Desc.
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = text-008.
ls_line-info = p_matnr.
append ls_line to e04_lt_top_of_page.
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = text-009.
ls_line-info = p_werks.
append ls_line to e04_lt_top_of_page.
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = text-010.
ls_line-info = p_stlan.
append ls_line to e04_lt_top_of_page.
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = text-011.
ls_line-info = p_stlal.
append ls_line to e04_lt_top_of_page.
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = text-012.
ls_line-info = p_stlal.
append ls_line to e04_lt_top_of_page.
ENDFORM.
FORM top_of_page *
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM.
FORM auth_check *
FORM auth_check.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD p_vkorg.
IF sy-subrc NE 0.
MESSAGE e054 WITH p_vkorg.
ENDIF.
ENDFORM. " auth_check
*& Form USER_COMMAND
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
PERFORM display_so_order USING r_ucomm
rs_selfield.
ENDCASE.
ENDFORM.
*& Form display_sales_order
text
-->P_R_UCOMM text
-->P_RS_SELFIELD text
FORM display_so_order USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE rs_selfield-sel_tab_field.
WHEN '1-VBELN'.
SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
WHEN '1-MATNR'.
SET PARAMETER ID 'MAT' FIELD rs_selfield-value.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
WHEN '1-OBD'.
SET PARAMETER ID 'VL' FIELD rs_selfield-value.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
WHEN OTHERS.
MESSAGE i000(z1) WITH 'Please Click on the Valid Selection'.
EXIT.
ENDCASE.
ENDFORM. " display_sales_order
FORM EDit_table *> TYPE-POOLS: slis.
>
> TABLES: vbap, vbrk, vbfa, vbak, vbrp, konv, kna1,
> bkpf, bsad, bkpf_bsad,
> knvv, pa0002, t005u, mvke, lips, likp, vbpa, vbep.
>
> DATA: BEGIN OF i_list OCCURS 0,
> vbeln LIKE vbak-vbeln,
> posnr LIKE vbap-posnr,
<b> etenr like vbep-etenr,</b>
> matnr LIKE vbap-matnr,
> erdat LIKE vbap-erdat,
> mvgr1 LIKE mvke-mvgr1,
> wadat_ist LIKE likp-wadat_ist,
> days TYPE i,
> werks LIKE vbap-werks,
> lgort LIKE vbap-lgort,
> kwmeng LIKE vbap-kwmeng," CH01+
> lfimg LIKE lips-lfimg," CH01+
> pstyv LIKE vbap-pstyv," CH01+
> obd LIKE lips-vbeln," CH01+
> obd_pos LIKE lips-posnr," CH01+
> soldto LIKE vbaK-kunnr," JR+
> shipto LIKE vbpa-kunnr," JR+
> edatu like vbep-edatu," PR+
> END OF i_list.
>
> DATA: i_list2 LIKE i_list OCCURS 0 WITH HEADER LINE,
> i_list3 LIKE i_list OCCURS 0 WITH HEADER LINE.
>
> DATA: i_list4 LIKE vbap OCCURS 0 WITH HEADER LINE.
>
>
> *ALV Output Header
> DATA: gt_list_top_of_page TYPE slis_t_listheader,
> prognm LIKE sy-repid,
> gc_formname_top_of_page TYPE slis_formname VALUE
> 'TOP_OF_PAGE',
> gt_events TYPE slis_t_event,
> is_layout TYPE slis_layout_alv,
> is_variant LIKE disvariant,
> it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.
>
> DATA:gt_fieldcat TYPE slis_t_fieldcat_alv.
> DATA:gt_outtab LIKE i_list OCCURS 0 WITH HEADER
> LINE.
>
> DATA: g_repid LIKE sy-repid,
> g_count LIKE sy-tabix.
>
> SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME
> TITLE text-t01.
>
> SELECTION-SCREEN: BEGIN OF LINE.
> SELECTION-SCREEN COMMENT 1(79) text-t10.
>
> SELECTION-SCREEN: END OF LINE.
>
> SELECTION-SCREEN: BEGIN OF LINE.
> SELECTION-SCREEN COMMENT 1(79) text-t11.
> SELECTION-SCREEN: END OF LINE.
>
> SELECTION-SCREEN: BEGIN OF LINE.
> SELECTION-SCREEN COMMENT 1(79) text-t12.
> SELECTION-SCREEN: END OF LINE.
>
> SELECTION-SCREEN END OF BLOCK block0.
>
> */ Selection and Input Parameters
> SELECTION-SCREEN BEGIN OF BLOCK blocko WITH FRAME
> TITLE text-001.
>
>
>
> SELECT-OPTIONS: s_vbeln FOR vbap-vbeln, "SO
> s_auart FOR vbak-auart DEFAULT 'KB' OBLIGATORY,
> s_matnr FOR vbap-matnr," obligatory,
> s_mvgr1 FOR mvke-mvgr1,
> s_erdat FOR vbap-erdat OBLIGATORY,
> s_werks FOR vbap-werks,
> s_lgort FOR vbap-lgort,
> s_edatu FOR vbep-edatu.
>
> PARAMETERS: p_vkorg LIKE vbak-vkorg DEFAULT '5010'.
>
>
>
> SELECTION-SCREEN SKIP 2.
> *----
> -
+EC1
> * Addition +EC1
> *----
> -
+EC1
> PARAMETERS: p_vari LIKE disvariant-variant.
> *----
> -
+EC1
> * End Addition +EC1
> *----
> -
+EC1
> SELECTION-SCREEN END OF BLOCK blocko.
>
> *----
> -
+EC1
> * Addition +EC1
> *----
> -
+EC1
> DATA: g_save(1) TYPE c,
> * g_default(1) TYPE c,
> g_exit(1) TYPE c,
> gx_variant LIKE disvariant,
> g_variant LIKE disvariant.
> *----
> -
+EC1
> * End Addition +EC1
> *----
> -
+EC1
>
> * Initialization fieldcatalog
> INITIALIZATION.
>
> * PERFORM clear_tables.
>
> g_repid = sy-repid.
> PERFORM fieldcat_init USING gt_fieldcat[].
> *----
> -
+EC1
> * Addition +EC1
> *----
> -
+EC1
> g_save = 'A'.
> PERFORM variant_init.
> * Get default variant
> gx_variant = g_variant.
> CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
> EXPORTING
> i_save = g_save
> CHANGING
> cs_variant = gx_variant
> EXCEPTIONS
> not_found = 2.
> IF sy-subrc = 0.
> p_vari = gx_variant-variant.
> ENDIF.
>
> AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
> PERFORM f4_for_variant.
>
> AT SELECTION-SCREEN.
> PERFORM auth_check. "+ESC
> PERFORM pai_of_selection_screen.
>
>
>
> *----
> -
+EC1
> * End Addition +EC1
> *----
> -
+EC1
>
>
> START-OF-SELECTION.
>
> PERFORM get_data.
>
> PERFORM alv.
>
> END-OF-SELECTION.
>
> *----
> -
> * FORM get_data *
> *----
> -
> * ........ *
> *----
> -
> FORM get_data.
> *CH01 - Added kwmeng(order qty) to selection,
> excluded rejects
> *JR -added soldto and shipto code
SELECT a~vbeln a~posnr a~matnr a~erdat a~werks a~lgort
a~kwmeng a~pstyv b~kunnr c~edatu
CH01+
INTO corresponding fields of table i_list
FROM vbap AS a INNER JOIN vbak AS b ON a~vbeln = b~vbeln
INNER JOIN vbep AS c ON a~vbeln = c~vbeln
and a~posnr = c~posnr
WHERE b~vkorg = p_vkorg
AND a~werks IN s_werks
AND a~lgort IN s_lgort
AND b~auart IN s_auart
AND a~vbeln IN s_vbeln
AND a~erdat IN s_erdat
AND a~abgru = ''" CH01+
AND a~matnr IN s_matnr
AND c~edatu IN s_edatu.
> COMMIT WORK AND WAIT.
>
> LOOP AT i_list.
> SELECT SINGLE mvgr1 INTO i_list-mvgr1 FROM mvke
> WHERE matnr = i_list-matnr.
> MODIFY i_list.
> CLEAR: i_list.
> ENDLOOP.
> COMMIT WORK AND WAIT.
>
> LOOP AT i_list.
> IF i_list-mvgr1 IN s_mvgr1.
> CONTINUE.
> ELSE.
> DELETE i_list.
> COMMIT WORK AND WAIT.
> ENDIF.
> ENDLOOP.
> * CH01 - commented these lines out and redid logic
> below
> * LOOP AT i_list.
> ** select single vbeln into lips-vbeln from lips
> ** where vgbel = i_list-vbeln
> ** and vgpos = i_list-posnr.
> **
> ** select single wadat_ist into i_list-wadat_ist from
> likp
> ** where vbeln = lips-vbeln.
> *
> * SELECT b~wadat_ist INTO i_list-wadat_ist
> * FROM lips AS a INNER JOIN
> * likp AS b ON a~vbeln = b~vbeln WHERE a~vgbel =
> i_list-vbeln
> * AND a~vgpos = i_list-posnr.
> * MODIFY i_list.
> * CLEAR: i_list, lips-vbeln.
> * ENDSELECT.
> * ENDLOOP.
>
> * CH01 - Changed to select multiple delivery lines &
> del qty
> * summing the total deliveries per OBD# and date
> LOOP AT i_list.
> SELECT avbeln sum( alfimg ) b~wadat_ist
> INTO (i_list-obd , i_list-lfimg , i_list-wadat_ist)
> FROM lips AS a INNER JOIN
> likp AS b ON avbeln = bvbeln WHERE a~vgbel =
> i_list-vbeln
> AND a~vgpos = i_list-posnr
> AND a~pstyv = i_list-pstyv
> group by avbeln bwadat_ist.
> i_list2 = i_list.
> APPEND i_list2.
> ENDSELECT.
> IF sy-subrc <> 0.
> i_list2 = i_list.
> APPEND i_list2.
> ENDIF.
> ENDLOOP.
> i_list[] = i_list2[].
> *End CH01
>
> COMMIT WORK AND WAIT.
>
> LOOP AT i_list.
> IF i_list-wadat_ist IS INITIAL.
> CONTINUE.
> ELSE.
> i_list-days = i_list-wadat_ist - i_list-erdat.
> ENDIF.
> MODIFY i_list.
> CLEAR: i_list.
> COMMIT WORK AND WAIT.
> ENDLOOP.
>
> COMMIT WORK AND WAIT.
>
> LOOP AT i_list.
> IF i_list-vbeln IS INITIAL.
> DELETE i_list.
> ENDIF.
> ENDLOOP.
> COMMIT WORK AND WAIT.
>
> *JR
> LOOP AT i_list.
> SELECT SINGLE KUNNR INTO i_list-shipto FROM vbpa
> WHERE vbeln = i_list-vbeln
> AND parvw = 'WE'.
> MODIFY i_list.
> ENDLOOP.
> *END JR
>
> gt_outtab[] = i_list[].
> COMMIT WORK AND WAIT.
>
>
> ENDFORM.
>
> *----
> -
> * FORM alv *
> *----
> -
> * ........ *
> *----
> -
> FORM alv.
>
> PERFORM e03_eventtab_build USING gt_events[]. "+EC1
> PERFORM e04_comment_build USING
> gt_list_top_of_page[]. "+EC1
> prognm = sy-repid. "+EC1
>
>
> CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
> EXPORTING
> i_callback_user_command = 'USER_COMMAND'
> i_callback_program = g_repid
> it_fieldcat = gt_fieldcat[]
> it_events = gt_events[] "+ESC
> it_sort = it_sort[]
> *----
> -
+EC1
> * Addition +EC1
> *----
> -
+EC1
> is_variant = g_variant
> i_save = g_save
> *----
> -
+EC1
> * End Addition +EC1
> *----
> -
+EC1
> TABLES
> t_outtab = gt_outtab.
>
> COMMIT WORK AND WAIT.
>
>
> ENDFORM.
>
>
> *----
> -
> * FORM fieldcat_init *
> *----
> -
> * ........ *
> *----
> -
> * --> I_FIELDCAT *
> *----
> -
> FORM fieldcat_init
> USING i_fieldcat TYPE slis_t_fieldcat_alv.
> DATA: ls_fieldcat TYPE slis_fieldcat_alv.
> DATA: pos TYPE i VALUE 1.
> CLEAR ls_fieldcat.
<b>Please note to keep on incrementing pos variable for column position.</b>
<b> pos = pos + 1.</b>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'VBELN'.
> ls_fieldcat-ref_tabname = 'VBAK'.
> ls_fieldcat-key = 'X'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
<b> pos = pos + 1.</b> ===> after every append to field catalog.
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'POSNR'.
> ls_fieldcat-ref_tabname = 'VBAP'.
> ls_fieldcat-key = 'X'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
<b>> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'ETERN'.
> ls_fieldcat-ref_tabname = 'VBEP'.
> ls_fieldcat-key = 'X'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.</b>
>
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'MATNR'.
> ls_fieldcat-ref_tabname = 'VBAP'.
> ls_fieldcat-key = 'X'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'MVGR1'.
> ls_fieldcat-ref_tabname = 'MVKE'.
> ls_fieldcat-key = 'X'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'WERKS'.
> ls_fieldcat-ref_tabname = 'VBAP'.
> * ls_fieldcat-key = 'X'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'LGORT'.
> ls_fieldcat-ref_tabname = 'VBAP'.
> * ls_fieldcat-key = 'X'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'ERDAT'.
> ls_fieldcat-ref_tabname = 'VBAP'.
> * ls_fieldcat-key = 'X'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'WADAT_IST'.
> ls_fieldcat-ref_tabname = 'LIKP'.
> * ls_fieldcat-key = 'X'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'DAYS'.
> ls_fieldcat-ref_fieldname = 'DAYS'.
> ls_fieldcat-seltext_s = '# Of Days'.
> ls_fieldcat-seltext_m = '# Of Days'.
> ls_fieldcat-seltext_l = '# Of Days'.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
> *Begin CH01
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'KWMENG'.
> ls_fieldcat-ref_tabname = 'VBAP'.
> ls_fieldcat-outputlen = 7.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'LFIMG'.
> ls_fieldcat-ref_tabname = 'LIPS'.
> ls_fieldcat-outputlen = 7.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'OBD'.
> ls_fieldcat-seltext_s = 'OBD'.
> ls_fieldcat-seltext_m = 'Outbound Del'.
> ls_fieldcat-seltext_l = 'Outbound Delivery'.
> ls_fieldcat-outputlen = 10.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
> * ls_fieldcat-col_pos = pos.
> * ls_fieldcat-fieldname = 'OBD_POS'.
> * ls_fieldcat-seltext_s = 'OBD Ln'.
> * ls_fieldcat-seltext_m = 'Outbound Del Ln'.
> * ls_fieldcat-seltext_l = 'Outbound Del Line'.
> * ls_fieldcat-outputlen = 10.
> * APPEND ls_fieldcat TO i_fieldcat.
> * CLEAR ls_fieldcat.
> *
> *End CH01
>
> *JR
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'SOLDTO'.
> ls_fieldcat-ref_tabname = 'VBAP'.
> ls_fieldcat-seltext_m = 'Sold To'.
> ls_fieldcat-seltext_l = 'Sold To'.
> ls_fieldcat-outputlen = 10.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'SHIPTO'.
> ls_fieldcat-ref_tabname = 'VBPA'.
> ls_fieldcat-seltext_m = 'Ship To'.
> ls_fieldcat-seltext_l = 'Ship To'.
> ls_fieldcat-outputlen = 10.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
> *END JR
>
> ls_fieldcat-col_pos = pos.
> ls_fieldcat-fieldname = 'EDATU'.
> ls_fieldcat-ref_tabname = 'VBEP'.
> ls_fieldcat-seltext_m = 'Requested Delivery date'.
> ls_fieldcat-seltext_l = 'Requested Delivery date'.
> ls_fieldcat-outputlen = 20.
> APPEND ls_fieldcat TO i_fieldcat.
> CLEAR ls_fieldcat.
>
>
> *FOR ALV SORT & SUBTOTAL
> CLEAR it_sort.
> it_sort-spos = '0'.
> it_sort-fieldname = 'VBELN'.
> it_sort-tabname = 'GT_OUTTAB'.
> it_sort-up = 'X'.
> * it_sort-subtot = 'X'.
> APPEND it_sort.
>
> CLEAR it_sort.
> it_sort-spos = '1'.
> it_sort-fieldname = 'POSNR'.
> it_sort-tabname = 'GT_OUTTAB'.
> it_sort-up = 'X'.
> it_sort-subtot = 'X'.
> * it_sort-subtot = 'X'.
> APPEND it_sort.
> *
> CLEAR it_sort.
> it_sort-spos = '2'.
> it_sort-fieldname = 'MATNR'.
> it_sort-tabname = 'GT_OUTTAB'.
> it_sort-up = 'X'.
> * it_sort-subtot = 'X'.
> APPEND it_sort.
>
> CLEAR it_sort.
> it_sort-spos = '3'.
> it_sort-fieldname = 'MVGR1'.
> it_sort-tabname = 'GT_OUTTAB'.
> it_sort-up = 'X'.
> * it_sort-subtot = 'X'.
> APPEND it_sort.
> *
> CLEAR it_sort.
> it_sort-spos = '4'.
> it_sort-fieldname = 'ERDAT'.
> it_sort-tabname = 'GT_OUTTAB'.
> it_sort-up = 'X'.
> * it_sort-subtot = 'X'.
> APPEND it_sort.
>
>
> CLEAR it_sort.
> it_sort-spos = '5'.
> it_sort-fieldname = 'WADAT_IST'.
> it_sort-tabname = 'GT_OUTTAB'.
> it_sort-down = 'X'.
> * it_sort-subtot = 'X'.
> APPEND it_sort.
>
> *
> * CLEAR it_sort.
> * it_sort-spos = '6'.
> * it_sort-fieldname = 'PERNR'.
> * it_sort-tabname = 'GT_OUTTAB'.
> * it_sort-up = 'X'.
> ** it_sort-subtot = 'X'.
> * APPEND it_sort.
> *
> *
> * CLEAR it_sort.
> * it_sort-spos = '7'.
> * it_sort-fieldname = 'VORNA'.
> * it_sort-tabname = 'GT_OUTTAB'.
> * it_sort-up = 'X'.
> ** it_sort-subtot = 'X'.
> * APPEND it_sort.
> *
> * CLEAR it_sort.
> * it_sort-spos = '8'.
> * it_sort-fieldname = 'NACHN'.
> * it_sort-tabname = 'GT_OUTTAB'.
> * it_sort-up = 'X'.
> ** it_sort-subtot = 'X'.
> * APPEND it_sort.
> *
> * CLEAR it_sort.
> * it_sort-spos = '9'.
> * it_sort-fieldname = 'VKGRP'.
> * it_sort-tabname = 'GT_OUTTAB'.
> * it_sort-up = 'X'.
> ** it_sort-subtot = 'X'.
> * APPEND it_sort.
> *
> * CLEAR it_sort.
> * it_sort-spos = '10'.
> * it_sort-fieldname = 'VBELN'.
> * it_sort-tabname = 'GT_OUTTAB'.
> * it_sort-up = 'X'.
> ** it_sort-subtot = 'X'.
> * APPEND it_sort.
> *
> * CLEAR it_sort.
> * it_sort-spos = '11'.
> * it_sort-fieldname = 'ERDAT'.
> * it_sort-tabname = 'GT_OUTTAB'.
> * it_sort-up = 'X'.
> ** it_sort-subtot = 'X'.
> * APPEND it_sort.
> *
> * CLEAR it_sort.
> * it_sort-spos = '12'.
> * it_sort-fieldname = 'BEZEI'.
> * it_sort-tabname = 'GT_OUTTAB'.
> * it_sort-up = 'X'.
> ** it_sort-subtot = 'X'.
> * APPEND it_sort.
> *
>
> * clear it_sort.
> * it_sort-spos = '1'.
> * it_sort-fieldname = 'BELNR'.
> * it_sort-tabname = 'GT_OUTTAB'.
> * it_sort-up = 'X'.
> * append it_sort.
>
>
> ENDFORM.
>
> *----
> -
+EC1
> * Addition +EC1
> *----
> -
+EC1
> *&----
> -
> *& Form VARIANT_INIT
> *&----
> -
> * text
> *----
> -
> * --> p1 text
> * <-- p2 text
> *----
> -
> FORM variant_init.
> *
> CLEAR g_variant.
> g_variant-report = g_repid.
> ENDFORM. " VARIANT_INIT
>
>
>
> *----
> -
> * FORM f4_for_variant *
> *----
> -
> * ........ *
> *----
> -
> FORM f4_for_variant.
> *
> CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
> EXPORTING
> is_variant = g_variant
> i_save = g_save
> * it_default_fieldcat =
> IMPORTING
> e_exit = g_exit
> es_variant = gx_variant
> EXCEPTIONS
> not_found = 2.
> IF sy-subrc = 2.
> MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
> WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
> ELSE.
> IF g_exit = space.
> p_vari = gx_variant-variant.
> ENDIF.
> ENDIF.
> ENDFORM.
> *&----
> -
> *& Form PAI_OF_SELECTION_SCREEN
> *&----
> -
> * text
> *----
> -
> FORM pai_of_selection_screen.
> *
> IF NOT p_vari IS INITIAL.
> MOVE g_variant TO gx_variant.
> MOVE p_vari TO gx_variant-variant.
> CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
> EXPORTING
> i_save = g_save
> CHANGING
> cs_variant = gx_variant.
> g_variant = gx_variant.
> ELSE.
> PERFORM variant_init.
> ENDIF.
> ENDFORM. " PAI_OF_SELECTION_SCREEN
> *----
> -
+EC1
> * End Addition +EC1
> *----
> -
+EC1
>
>
> *----
> -
> * FORM e03_eventtab_build *
> *----
> -
> * ........ *
> *----
> -
> * --> E03_LT_EVENTS *
> *----
> -
> FORM e03_eventtab_build USING e03_lt_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 = e03_lt_events.
> READ TABLE e03_lt_events WITH KEY name =
> slis_ev_top_of_page
> INTO ls_event.
> IF sy-subrc = 0.
> MOVE gc_formname_top_of_page TO ls_event-form.
> APPEND ls_event TO e03_lt_events.
> ENDIF.
> ENDFORM.
>
> *----
> -
> * FORM e04_comment_build *
> *----
> -
> * ........ *
> *----
> -
> * --> E04_LT_TOP_OF_PAGE *
> *----
> -
> FORM e04_comment_build USING e04_lt_top_of_page TYPE
> slis_t_listheader.
> DATA: ls_line TYPE slis_listheader.
>
> *Report Title
> CLEAR ls_line.
> ls_line-typ = 'H'.
> ls_line-info = text-007.
> APPEND ls_line TO e04_lt_top_of_page.
> *
> *
> **Doc Type Desc.
> * clear ls_line.
> * ls_line-typ = 'S'.
> * ls_line-key = text-008.
> ** ls_line-info = p_matnr.
> * append ls_line to e04_lt_top_of_page.
> *
> * clear ls_line.
> * ls_line-typ = 'S'.
> * ls_line-key = text-009.
> ** ls_line-info = p_werks.
> * append ls_line to e04_lt_top_of_page.
> *
> *
> * clear ls_line.
> * ls_line-typ = 'S'.
> * ls_line-key = text-010.
> ** ls_line-info = p_stlan.
> * append ls_line to e04_lt_top_of_page.
> *
> * clear ls_line.
> * ls_line-typ = 'S'.
> * ls_line-key = text-011.
> ** ls_line-info = p_stlal.
> * append ls_line to e04_lt_top_of_page.
> *
> * clear ls_line.
> * ls_line-typ = 'S'.
> * ls_line-key = text-012.
> ** ls_line-info = p_stlal.
> * append ls_line to e04_lt_top_of_page.
>
>
>
> ENDFORM.
>
> *----
> -
> * FORM top_of_page *
> *----
> -
> * ........ *
> *----
> -
> FORM top_of_page.
>
> CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
> EXPORTING
> it_list_commentary = gt_list_top_of_page.
>
>
> ENDFORM.
>
> *----
> -
> * FORM auth_check *
> *----
> -
> * ........ *
> *----
> -
> FORM auth_check.
>
> AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
> ID 'VKORG' FIELD p_vkorg.
> IF sy-subrc NE 0.
> MESSAGE e054 WITH p_vkorg.
> ENDIF.
>
>
> ENDFORM. " auth_check
>
>
> *&----
> -
> *& Form USER_COMMAND
> *&----
> -
> FORM user_command USING r_ucomm LIKE sy-ucomm
> rs_selfield TYPE slis_selfield.
>
> CASE r_ucomm.
> WHEN '&IC1'.
> PERFORM display_so_order USING r_ucomm
> rs_selfield.
>
> ENDCASE.
>
> ENDFORM.
>
> *&----
> -
> *& Form display_sales_order
> *&----
> -
> * text
> *----
> -
> * -->P_R_UCOMM text
> * -->P_RS_SELFIELD text
> *----
> -
> FORM display_so_order USING r_ucomm LIKE sy-ucomm
> rs_selfield TYPE slis_selfield.
>
> CASE rs_selfield-sel_tab_field.
> WHEN '1-VBELN'.
> SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
> CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
> WHEN '1-MATNR'.
> SET PARAMETER ID 'MAT' FIELD rs_selfield-value.
> CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
> WHEN '1-OBD'.
> SET PARAMETER ID 'VL' FIELD rs_selfield-value.
> CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
> WHEN OTHERS.
> MESSAGE i000(z1) WITH 'Please Click on the Valid
> Selection'.
> EXIT.
> ENDCASE.
>
>
> ENDFORM. " display_sales_order
>
> *----
> -
> * FORM EDit_table *
> *----
> -
> * ........ *
> *----
> -
Message was edited by: Anurag Bankley
Maybe you are looking for
-
ITunes on my iPod Touch closes when I try to buy music
I buy music from my ipod touch usually but the past week or so it won't let me. When I click purchase it thinks for a second then closes iTunes. I've tried restarting, signing out and back in, shutting down the app and opening again. Any suggestio
-
IPhoto 6 and 8 Incompatibility
I have a few thousand photos in iPhoto 6.0.6 and will shortly buy a new Mac and get iPhoto 8. Meanwhile, my daughter has a new iMac and runs iPhoto 8. I recently sent some of my photos to her Mac so I could edit them using iPhoto 8's superior editing
-
Atg.repository.dp.LanguageTranslation
Hi , I want to know the reason for using "atg.repository.dp.LanguageTranslation" in the xml. Regareds Kavi
-
Hello, I am having an intermittent problem with PDFs with Times fonts. Sometimes the PDFs print OK and other times words will be jumbled together or strange characters will take the place of certain punctuation marks. There are several other things t
-
Color discrepancy in JPG file on DPP vs. Preview
I take photos w/ Canon 30D using RAW file and touch up/convert to JPG on DPP. There is a significant color difference on the same JPG image when seen on DPP vs. when seen on Preview. Does anybody have the same problem? It only looks different on Prev