2007 Feb 14 12:43 AM
Hi,
I am using six internal tables with different fields in an report. Can anyone tell me the most efficient way of transfering data from those six internal tables to one internal table.
Thanks,
Amit.
2007 Feb 14 2:11 AM
Hi Amit,
use this:
data : lv_index like sy-tabix.
loop at it_bkpf.
read table it_bseg with key
bukrs = it_bkpf-bukrs
gjahr = it_bkpf-gjahr
belnr = it_bkpf-belnr binary search.
if sy-subrc eq 0.
clear lv_index.
lv_index = sy-tabix.
loop at it_bseg from lv_index.
if it_bseg-bukrs = it_bkpf-bukrs and
it_bseg-gjahr = it_bkpf-gjahr and
it_bseg-belnr = it_bkpf-belnr.
endloop.
endloop.
keerthi
Hi Amit,
use this:
data : lv_index like sy-tabix.
loop at it_bkpf.
read table it_bseg with key
bukrs = it_bkpf-bukrs
gjahr = it_bkpf-gjahr
belnr = it_bkpf-belnr binary search.
if sy-subrc eq 0.
clear lv_index.
lv_index = sy-tabix.
loop at it_bseg from lv_index.
if it_bseg-bukrs = it_bkpf-bukrs and
it_bseg-gjahr = it_bkpf-gjahr and
it_bseg-belnr = it_bkpf-belnr.
endloop.
endloop.
keerthi
2007 Feb 14 12:54 AM
2007 Feb 14 12:56 AM
2007 Feb 14 12:57 AM
Hi,
You can use parallel processing techinque to move the values ..
Example
-
SORT ITAB2 BY VBELN.
LOOP AT ITAB1.
READ TABLE ITAB2 WITH KEY VBELN = ITAB2-VBELN.
IF SY-SUBRC = 0.
LV_TABIX = SY-TABIX.
LOOP AT ITAB2 FROM LV_TABIX.
EXIT CONDITION.
IF ITAB1-VBELN <> ITAB2-VBELN.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
Thanks,
Naren
2007 Feb 14 1:01 AM
REPORT ZLDLR012 MESSAGE-ID ZABAP LINE-SIZE 350.
**********************************************************************
PROGRAM ID : ZLDLR010 **
PROGRAM NAME : DELIVERY ATP AND ERROR REPORT **
DEVELOPMENT CLASS : ZSAGARIKA **
MESSAGE CLASS : ZLDL01 **
PROGRAM TYPE : EXECUTABLE **
DEVELOPMENT TYPE : REPORT **
***********************************************************************
***********************************************************************
THIS REPORT CHECKS IF THE ORDER AND DELIVERY QUANTITIES HAVE SAME UOM
*IF THEY ARE DIFFERENT COMPARE THE DELIVERY BASE UOM TO THE DELIVERY
*QUANTITY. THE UNITS ARE NOT EQUAL PEROFRM THE UOM CONVERSION AND
*COMPARE THE ACTUAL QUANTITY DELIVERED FROM THE DELIVERY TO THE
*CUMULATIVE CONFIRMED QUANTITY FROM THE CORRESPONDING SALES ORDER,IF
*THEY ARE NOT EQUAL THEN THIS RECORD APPERS ON THE REPORT .
************************************************************************
DATA :V_OUT TYPE I.
TYPES :BEGIN OF ST_MAKT,
MATNR TYPE MAKT-MATNR, "MATERIAL NUMBER
MAKTX TYPE MAKT-MAKTX, "MATERIAL DESCRIPTION
SPRAS TYPE MAKT-SPRAS, "LANGUAGE KEY
END OF ST_MAKT.
TYPES :BEGIN OF ST_VBAK,
VBELN TYPE VBAK-VBELN, "SALES DOCUMNET
POSNR TYPE VBAP-POSNR, "SALES DOUCMENT ITEM
UMZIN TYPE VBAP-UMZIN, "FACTOR FOR CONVG SALESUNIT TO BASEUNIT
UMZIZ TYPE VBAP-UMZIZ,
KBMENG TYPE VBAP-KBMENG, "CUMULATIVE CONFIRMED QUANTITY IN SU
VRKME TYPE VBAP-VRKME, "VRKME
MEINS TYPE VBAP-MEINS, "BASIC UNIT OF MEASURE
KUNNR TYPE VBAK-KUNNR, "CUSTOMER NUMBER
AUART TYPE VBAK-AUART, "SALES DOCUMENT TYPE
END OF ST_VBAK.
TYPES :BEGIN OF ST_VBUK,
VBELN TYPE VBUK-VBELN, "SALES AND DISTRIBUTION DOCUMENT NUMBER
WBSTK TYPE VBUK-WBSTK, "TOTAL GOODS MOVEMENT STATUS
END OF ST_VBUK.
TYPES :BEGIN OF ST_KNA1,
KUNNR TYPE KNA1-KUNNR, "CUSTOMER NUMBER
NAME1 TYPE KNA1-NAME1, "NAME
END OF ST_KNA1.
TYPES: BEGIN OF ST_LIKP,
KUNNR TYPE LIKP-KUNNR, "SHIP-TO-PARTY
WADAT TYPE LIKP-WADAT, "PLANNED GOODS MOVEMENT STATE
AUTLF TYPE LIKP-AUTLF, "Complete delivery defined for each SO
LPRIO TYPE LIKP-LPRIO, "DELIVERY PRIORITY
VBELN TYPE LIPS-VBELN, "DELIVERY
ERDAT TYPE LIPS-ERDAT, "DATE ON WHICH THE RECORD WAS CREATED
ERZET TYPE LIPS-ERZET, "ENTRY TIME
WERKS TYPE LIPS-WERKS, "PLANT
MATNR TYPE LIPS-MATNR, "MATERIAL NUMBER
LFIMG TYPE LIPS-LFIMG, "ACTUAL QUANTITY DELIVERED
MEINS TYPE LIPS-MEINS, "BASE UNIT MEASURE
LGMNG TYPE LIPS-LGMNG, "Actual quantity delivered in
"stockkeeping units
VGBEL TYPE LIPS-VGBEL, "Document number of the reference
"document
VGPOS TYPE LIPS-VGPOS, "Item number of the reference item
VRKME TYPE LIPS-VRKME, "SALES UNIT
POSNR TYPE LIPS-POSNR, "DELIVERY ITEM
END OF ST_LIKP.
DATA: V_FIELD(25),
V_VALUE(10).
DATA : IT_MAKT TYPE STANDARD TABLE OF ST_MAKT WITH HEADER LINE.
DATA : IT_VBAK TYPE STANDARD TABLE OF ST_VBAK WITH HEADER LINE.
*DATA : IT_VBAP TYPE STANDARD TABLE OF ST_VBAP WITH HEADER LINE.
DATA : IT_VBUK TYPE STANDARD TABLE OF ST_VBUK WITH HEADER LINE.
DATA : IT_KNA1 TYPE STANDARD TABLE OF ST_KNA1 WITH HEADER LINE.
*DATA : IT_LIPS TYPE STANDARD TABLE OF ST_LIPS WITH HEADER LINE.
DATA : IT_LIKP TYPE STANDARD TABLE OF ST_LIKP WITH HEADER LINE.
DATA:BEGIN OF IT_FINAL OCCURS 0 ,
VBELN LIKE LIPS-VBELN,
VVBELN LIKE LIPS-VBELN,
ERDAT LIKE LIPS-ERDAT,
ERZET LIKE LIPS-ERZET,
WERKS LIKE LIPS-WERKS,
MATNR LIKE LIPS-MATNR,
LFIMG LIKE LIPS-LFIMG,
MEINS LIKE LIPS-MEINS,
LGMNG LIKE LIPS-LGMNG,
VGBEL LIKE LIPS-VGBEL,
VGPOS LIKE LIPS-VGPOS,
VRKME LIKE LIPS-VRKME,
KUNNR LIKE VBAK-KUNNR,
WADAT LIKE LIKP-WADAT,
AUTLF LIKE LIKP-AUTLF,
LPRIO LIKE LIKP-LPRIO,
POSNR LIKE LIPS-POSNR,
AUART LIKE VBAK-AUART,
WBSTK LIKE VBUK-WBSTK,
NAME1 LIKE KNA1-NAME1,
MAKTX LIKE MAKT-MAKTX,
KBMENG LIKE VBAP-KBMENG,
V_OUT TYPE I,
END OF IT_FINAL.
SELECTION-SCREEN :BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_WERKS FOR IT_LIKP-WERKS,
S_ERDAT FOR IT_LIKP-ERDAT,
S_AUART FOR IT_VBAK-AUART,
S_LPRIO FOR IT_LIKP-LPRIO,
S_MATNR FOR IT_LIKP-MATNR,
S_ERZET FOR IT_LIKP-ERZET.
SELECTION-SCREEN :END OF BLOCK B1.
START-OF-SELECTION.
PERFORM IT_LIKP.
IF NOT IT_LIKP[] IS INITIAL.
PERFORM IT_VBAK.
ELSE.
stop.
ENDIF.
PERFORM CONVERT.
PERFORM IT_KNA1.
PERFORM IT_VBUK.
PERFORM IT_MAKT.
PERFORM GET_FINALDATA.
AT LINE-SELECTION.
GET CURSOR FIELD V_FIELD VALUE V_VALUE.
IF V_FIELD = 'IT_FINAL-VVBELN'.
SET PARAMETER ID 'VL' FIELD v_value.
CALL TRANSACTION 'VL03N'.
ELSE.
IF V_FIELD = 'IT_FINAL-VBELN'.
SET PARAMETER ID 'AUN' FIELD v_value.
CALL TRANSACTION 'VA03'.
ENDIF.
ENDIF.
STOP.
END-OF-SELECTION.
IF NOT IT_FINAL[] IS INITIAL.
PERFORM DISP_OUTPUT.
ELSE.
MESSAGE I201 WITH ' NO DATA EXIST FOR SELECTION CRITERIA'.
ENDIF.
&----
*& Form IT_LIKP
&----
FORM IT_LIKP.
SELECT LIKP~KUNNR
LIKP~WADAT
LIKP~AUTLF
LIKP~LPRIO
LIPS~VBELN
LIPS~ERDAT
LIPS~ERZET
LIPS~WERKS
LIPS~MATNR
LIPS~LFIMG
LIPS~MEINS
LIPS~LGMNG
LIPS~VGBEL
LIPS~VGPOS
LIPS~VRKME
INTO TABLE IT_LIKP
FROM LIKP JOIN LIPS ON LIKPVBELN = LIPSVBELN
WHERE LIPS~WERKS IN S_WERKS AND
LIPS~ERDAT IN S_ERDAT AND
LIPS~ERZET IN S_ERZET AND
LIKP~LPRIO IN S_LPRIO.
ENDFORM. " IT_LIKP
&----
*& Form IT_VBAK
&----
FORM IT_VBAK.
SELECT VBELN
POSNR
UMZIN
UMZIZ
KBMENG
VRKME
MEINS
KUNNR
aUART
INTO TABLE IT_VBAK
FROM VBAP.
FOR ALL ENTRIES IN IT_LIKP
WHERE VBELN = IT_LIKP-VGBEL AND
POSNR = IT_LIKP-POSNR.
ENDFORM. " IT_VBAK
&----
*& Form IT_VBUK
&----
FORM IT_VBUK.
SELECT VBELN
WBSTK
FROM VBUK
INTO TABLE IT_VBUK
FOR ALL ENTRIES IN IT_LIKP
WHERE VBELN = IT_LIKP-VBELN.
ENDFORM. " IT_VBUK
&----
*& Form IT_KNA1
&----
FORM IT_KNA1.
SELECT KUNNR
NAME1
FROM KNA1
INTO TABLE IT_KNA1
FOR ALL ENTRIES IN IT_VBAK
WHERE KUNNR = IT_VBAK-KUNNR.
ENDFORM. " IT_KNA1
&----
*& Form IT_MAKT
&----
FORM IT_MAKT.
SELECT MATNR
MAKTX
SPRAS
INTO TABLE IT_MAKT
FROM MAKT
FOR ALL ENTRIES IN IT_LIKP
WHERE MATNR = IT_LIKP-MATNR AND
SPRAS = SY-LANGU.
ENDFORM. " IT_MAKT
&----
*& Form GET_FINALDATA
&----
FORM GET_FINALDATA.
SORT IT_LIKP BY VBELN MATNR.
LOOP AT IT_LIKP.
READ TABLE IT_VBAK WITH KEY VBELN = IT_LIKP-VGBEL
POSNR = IT_LIKP-VGPOS.
IF SY-SUBRC = 0.
IT_FINAL-VGBEL = IT_LIKP-VBELn.
IT_FINAL-VVBELN = IT_LIKP-VBELN.
IT_FINAL-LPRIO = IT_LIKP-LPRIO.
IT_FINAL-ERDAT = IT_LIKP-ERDAT.
IT_FINAL-ERZET = IT_LIKP-ERZET.
IT_FINAL-WERKS = IT_LIKP-WERKS.
IT_FINAL-WADAT = IT_LIKP-WADAT.
IT_FINAL-WBSTK = IT_VBUK-WBSTK.
IT_FINAL-VBELN = IT_VBAK-VBELN.
IT_FINAL-AUART = IT_VBAK-AUART.
IT_FINAL-AUTLF = IT_LIKP-AUTLF.
IT_FINAL-KUNNR = IT_VBAK-KUNNR.
IT_FINAL-NAME1 = IT_KNA1-NAME1.
IT_FINAL-MATNR = IT_LIKP-MATNR.
IT_FINAL-MAKTX = IT_MAKT-MAKTX.
IT_FINAL-KBMENG = IT_VBAK-KBMENG.
IT_FINAL-LFIMG = IT_LIKP-LFIMG.
IT_FINAL-VRKME = IT_VBAK-VRKME.
IT_FINAL-V_OUT = V_OUT.
append it_final.
clear it_final.
ENDIF.
ENDLOOP.
ENDFORM. " GET_FINALDATA
&----
*& Form CONVERT
&----
FORM CONVERT.
LOOP AT IT_VBAK.
read table it_likp with key vgbel = it_vbak-vbeln
vgpos = it_vbak-posnr.
IF IT_LIKP-VRKME <> IT_VBAK-VRKME AND IT_LIKP-LFIMG <> IT_VBAK-KBMENG.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
INPUT = IT_VBAK-KBMENG
NO_TYPE_CHECK = 'X'
ROUND_SIGN = ' '
UNIT_IN = IT_VBAK-MEINS
UNIT_OUT = IT_LIKP-MEINS
IMPORTING
ADD_CONST =
DECIMALS =
DENOMINATOR =
NUMERATOR =
OUTPUT = V_OUT
EXCEPTIONS
CONVERSION_NOT_FOUND = 1
DIVISION_BY_ZERO = 2
INPUT_INVALID = 3
OUTPUT_INVALID = 4
OVERFLOW = 5
TYPE_INVALID = 6
UNITS_MISSING = 7
UNIT_IN_NOT_FOUND = 8
UNIT_OUT_NOT_FOUND = 9
OTHERS = 10.
if sy-subrc = 0.
if it_likp-lfimg <> v_out.
v_out populate it_final
endif.
endif.
endif.
ENDLOOP.
ENDFORM. " CONVERT
&----
*& Form DISP_OUTPUT
&----
FORM DISP_OUTPUT.
WRITE:/(15) 'Delivery No.',
(10) 'refernce docu',
(15) 'Del priority',
(15) 'Created On' ,
(15) 'Entry Time' ,
(15) 'Plant For Del' ,
(15) 'G-Moment Date' ,
(15) 'G-Moment Status',
(15) 'Sales Document',
(15) 'Document Type' ,
(15) 'Complete delivery' ,
(15) 'Sold-to party' ,
(15) 'Name' ,
(15) 'Material No' ,
(15) 'Material description' ,
IT_FINAL-KBMENG,
IT_FINAL-LFIMG ,
(15) 'Sales Unit' ,
(15) 'Qty difference'.
write:/ sy-uline.
SORT IT_FINAL BY VBELN KUNNR.
LOOP AT IT_FINAL.
WRITE: /(15) IT_FINAL-VVBELN color 2 HOTSPOT,
(10) IT_FINAL-VBELn ,
(15) IT_FINAL-LPRIO ,
(15) IT_FINAL-ERDAT ,
(15) IT_FINAL-ERZET ,
(15) IT_FINAL-WERKS ,
(15) IT_FINAL-WADAT ,
(15) IT_FINAL-WBSTK ,
(15) IT_FINAL-VBELN COLOR 3 HOTSPOT,
(15) IT_FINAL-AUART ,
(15) IT_FINAL-AUTLF ,
(15) IT_FINAL-KUNNR ,
(15) IT_FINAL-NAME1 ,
(15) IT_FINAL-MATNR ,
(15) IT_FINAL-MAKTX ,
IT_FINAL-KBMENG,
IT_FINAL-LFIMG ,
(15) IT_FINAL-VRKME ,
(15) IT_FINAL-V_OUT.
ENDLOOP.
ENDFORM. " DISP_OUTPUT
2007 Feb 14 2:11 AM
Hi Amit,
use this:
data : lv_index like sy-tabix.
loop at it_bkpf.
read table it_bseg with key
bukrs = it_bkpf-bukrs
gjahr = it_bkpf-gjahr
belnr = it_bkpf-belnr binary search.
if sy-subrc eq 0.
clear lv_index.
lv_index = sy-tabix.
loop at it_bseg from lv_index.
if it_bseg-bukrs = it_bkpf-bukrs and
it_bseg-gjahr = it_bkpf-gjahr and
it_bseg-belnr = it_bkpf-belnr.
endloop.
endloop.
keerthi
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |