on 08-12-2015 1:41 PM
Hi All,
I have written End routine in Transformation to lookup and get "DOC_NUMBER" and "NETVAL_INV" from /BIC/AZOFIBIS00 while loading data from DSO1 to DSO2. The number of records in "DSO1" say for example 14 records and no of records in "BIC/AZOFIBIS00" in 4 records .
"BILL_NUMBER" in <RESULT_FIELDS> have duplicate records , because of that KF "NETVAL_INV" entered multiple times in DSO2 .How to skip duplicate records while doing lookup.
Please see code.
DATA : ITAB TYPE STANDARD TABLE OF /BIC/AZOFIBIS00.
DATA : WA_ITAB TYPE /BIC/AZOFIBIS00.
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
SELECT * FROM /BIC/AZOFIBIS00 INTO TABLE ITAB
WHERE /BIC/ZSITSSTNO = <RESULT_FIELDS>-/BIC/ZSITSSTNO
and
DOC_type = <RESULT_FIELDS>-doc_type and
DOC_NUMBER = <RESULT_FIELDS>-BILL_NUM.
READ TABLE ITAB INTO WA_ITAB WITH KEY
/BIC/ZSITSSTNO = <RESULT_FIELDS>-/BIC/ZSITSSTNO.
IF SY-SUBRC = 0.
MOVE WA_ITAB-BILL_NUM TO <RESULT_FIELDS>-DOC_NUMBER.
MOVE WA_ITAB-NETVAL_INV TO <RESULT_FIELDS>-NETVAL_INV.
ENDIF.
ENDLOOP.
Thanks
Hari
Hi Hari!
Try something like this.
Regards.
DATA : ITAB TYPE STANDARD TABLE OF /BIC/AZOFIBIS00.
DATA : WA_ITAB TYPE /BIC/AZOFIBIS00.
SELECT *
INTO TABLE ITAB
FROM /BIC/AZOFIBIS00
FOR ALL ENTRIES IN RESULT_FIELDS
WHERE /BIC/ZSITSSTNO = <RESULT_FIELDS>-/BIC/ZSITSSTNO and
DOC_type = <RESULT_FIELDS>-doc_type and
DOC_NUMBER = <RESULT_FIELDS>-BILL_NUM.
IT_RESULT[] = RESULT_PACKAGE[].
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
READ TABLE ITAB INTO WA_ITAB
WITH KEY /BIC/ZSITSSTNO = <RESULT_FIELDS>-/BIC/ZSITSSTNO TRANSPORTING NO FIELDS.
IF SY-SUBRC EQ 0.
LOOP DOC_NUMBER = <RESULT_FIELDS>-BILL_NUM.
MOVE WA_ITAB-BILL_NUM TO IT_RESULT-DOC_NUMBER.
MOVE WA_ITAB-NETVAL_INV TO IT_RESULT-NETVAL_INV.
DESCRIBE TABLE IT_RESULT LINES LV_LIN.
IT_RESULT-DATAPACKID = <RESULT_FIELDS>-DATAPACKID.
IT_RESULT-RECORD = LV_LIN.
APPEND IT_RESULT.
ENDIF.
ENDLOOP.
RESULT_PACKAGE[] = IT_RESULT[].
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Fancisco,
Thanks for your reply .
I have tried your code ,but I am getting following error message .
"The field "RESULT_FIELDS" is unknown, but there is a field with the similar name "<RESULT_FIELDS>". "<RESULT_FIELDS>".
If I add <RESULT_FIELDS> system says "occurs n" specification is missing .
Thanks
Hari
there are quite a few errors in that code... for starters
Francisco Rodríguez wrote:
DATA : ITAB TYPE STANDARD TABLE OF /BIC/AZOFIBIS00.
DATA : WA_ITAB TYPE /BIC/AZOFIBIS00.
SELECT *
INTO TABLE ITAB
FROM /BIC/AZOFIBIS00
FOR ALL ENTRIES IN RESULT_FIELDS
WHERE /BIC/ZSITSSTNO = <RESULT_FIELDS>-/BIC/ZSITSSTNO and
DOC_type = <RESULT_FIELDS>-doc_type and
DOC_NUMBER = <RESULT_FIELDS>-BILL_NUM.
should probably be (and this is only to correct the syntax... as you should not use "select *" and be carefull with "for all entries")
select *
into table itab
from /bic/azofibis
for all entries in result_package
where /bic/zsitsstno eq result_package-/bic/zsitsstno
and doc_type eq result_package-doc_type
and doc_number eq result_package-bill_num.
Hi ,
You don't need to declare Result_package or Result_fields.
Those are standard structures.
You just define one structure and internal table(which already done on your code)
in Franc's reply, just replace Result_fields with result_package and do the syntax check.
If there is an ABAPer, please take his help.
Thanks
Hi Francisco,
Thanks for your reply.
I am getting following errors with Francisco code.
I m getting following error after correct it as RESULT_PACKAGE.
SELECT *
INTO TABLE ITAB
FROM /BIC/AZOFIBIS00
FOR ALL ENTRIES IN RESULT_PACKAGE
WHERE /BIC/ZSITSSTNO = <RESULT_FIELDS>-/BIC/ZSITSSTNO and
DOC_type = <RESULT_FIELDS>-doc_type and
DOC_NUMBER = <RESULT_FIELDS>-BILL_NUM.
Error:- The WHERE condition does not refer to the FOR ALL ENTRIES table
IT_RESULT[] = RESULT_PACKAGE[].
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
READ TABLE ITAB INTO WA_ITAB
WITH KEY /BIC/ZSITSSTNO = <RESULT_FIELDS>-/BIC/ZSITSSTNO
TRANSPORTING NO FIELDS.
IF SY-SUBRC EQ 0.
.
Error : "TRANSPORTING NO FIELDS"will not fill the output area. The addition des not make sense here.
IF SY-SUBRC EQ 0.
LOOP
DOC_NUMBER = <RESULT_FIELDS>-BILL_NUM.
MOVE WA_ITAB-BILL_NUM TO IT_RESULT-DOC_NUMBER.
MOVE WA_ITAB-NETVAL_INV TO IT_RESULT-NETVAL_INV.
DESCRIBE TABLE IT_RESULT LINES LV_LIN.
IT_RESULT-DATAPACKID = <RESULT_FIELDS>-DATAPACKID.
IT_RESULT-RECORD = LV_LIN.
APPEND IT_RESULT.
ENDIF.
ENDLOOP.
RESULT_PACKAGE[] = IT_RESULT[].
Error : Loop at or . expected after Loop.
Thanks
Hari .
Hi Anshu,
Code looks like this
DATA : ITAB TYPE STANDARD TABLE OF /BIC/AZOFIBIS00.
DATA : WA_ITAB TYPE /BIC/AZOFIBIS00.
DATA : IT_RESULT TYPE _ty_t_TG_1.
SELECT *
INTO TABLE ITAB
FROM /BIC/AZOFIBIS00
*FOR ALL ENTRIES IN RESULT_PACKAGE
WHERE /BIC/ZSITSSTNO = <RESULT_FIELDS>-/BIC/ZSITSSTNO and
DOC_type = <RESULT_FIELDS>-doc_type and
DOC_NUMBER = <RESULT_FIELDS>-BILL_NUM.
IT_RESULT[] = RESULT_PACKAGE[].
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
READ TABLE ITAB INTO WA_ITAB
WITH KEY /BIC/ZSITSSTNO = <RESULT_FIELDS>-/BIC/ZSITSSTNO.
*TRANSPORTING NO FIELDS.
IF SY-SUBRC EQ 0.
*LOOP
DOC_NUMBER = <RESULT_FIELDS>-BILL_NUM.
MOVE WA_ITAB-BILL_NUM TO IT_RESULT-DOC_NUMBER.
MOVE WA_ITAB-NETVAL_INV TO IT_RESULT-NETVAL_INV.
DESCRIBE TABLE IT_RESULT LINES LV_LIN.
IT_RESULT-DATAPACKID = <RESULT_FIELDS>-DATAPACKID.
IT_RESULT-RECORD = LV_LIN.
APPEND IT_RESULT.
ENDIF.
ENDLOOP.
RESULT_PACKAGE[] = IT_RESULT[].
ERROR : Field "DOC_NUMBER" is unknown. It is neither in one of the specified tables nor defined by a "DATA" statement. "DATA" statement.
I do not know why we need to define "DOC_NUMBER".
Thanks
hari
User | Count |
---|---|
94 | |
11 | |
11 | |
10 | |
9 | |
8 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.