Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem in modifying the main internal table gt_data

Former Member
0 Likes
582

Hello i have written code for modifying the main internal table. i have read data from ausp table and put into the internal table gt_ausp. now i want to modify my main table GT-DATA with gt_ausp. i am not able to do this.

LOOP AT gt_data INTO ls_list.

lt_temp-objek = ls_list-matnr.

APPEND lt_temp. " 특성값 발췌용도로 저장

APPEND ls_list TO lt_work. " 핵심작업용도로 저장

ENDLOOP.

DESCRIBE TABLE lt_temp.

IF sy-tfill EQ 0.

pv_flg = 'X'.

EXIT.

ENDIF.

  • Get 제품인증(플랜트별).....

DESCRIBE TABLE lt_cetino_tp.

  • 플랜트 자재번호

  • 카타로그-인증 코드그룹-인증 인증코드

  • Certi. No.

  • Get 자재별 특성값..........

  • 오브젝트 특성이름 내부특성 내부카운터 특성값

SELECT aobjek batnam aatinn aatzhl a~atwrt

INTO CORRESPONDING FIELDS OF TABLE lt_ausp_tp

FROM ausp AS a INNER JOIN cabn AS b

ON aatinn = batinn

FOR ALL ENTRIES IN lt_temp

WHERE a~objek EQ lt_temp-objek " 오브젝트키(자재번호)

AND a~klart EQ '001' " 클래스유형

  • AND a~atzhl EQ '001' " 특성값카운터(최종건만 존재)

  • 자재특성 변경시 변경됨

AND b~adzhl EQ '0000'.

IF sy-subrc EQ 0.

DELETE ADJACENT DUPLICATES FROM lt_ausp_tp.

lt_ausp[] = lt_ausp_tp[].

lt_ausp_tp2[] = lt_ausp_tp[].

DELETE ADJACENT DUPLICATES FROM lt_ausp_tp2.

  • Get 특성내역

  • 내부특성 " 내부카운터

  • 특성값 특성값내역

SELECT aatinn " aatzhl

aatwrt batwtb

INTO CORRESPONDING FIELDS OF TABLE lt_cawn

FROM cawn AS a INNER JOIN cawnt AS b

ON aatinn = batinn AND

aatzhl = batzhl AND

aadzhl = badzhl

FOR ALL ENTRIES IN lt_ausp_tp2

WHERE a~atinn EQ lt_ausp_tp2-atinn " 내부특성

AND b~spras EQ sy-langu.

ENDIF.

SORT lt_work BY matnr .

BREAK-POINT.

LOOP AT lt_work INTO ls_list.

  • 특성내역

READ TABLE lt_ausp WITH TABLE KEY objek = ls_list-matnr

atnam = 'SECTION_WIDTH'.

  • 수출자재가 아닌 것은 제외

LS_LIST-SECTION_WIDTH = LT_AUSP-ATWRT.

MODIFY TABLE GT_DATA FROM LS_LIST TRANSPORTING SECTION_WIDTH.

.

2 REPLIES 2
Read only

Marcel_Wahl
Product and Topic Expert
Product and Topic Expert
0 Likes
516

Hi,

Question before: why dont you just use the std.API for reading the classification data?

e.g. "BAPI_OBJCL_GETDETAIL"

Second: a DELETE DELETE ADJACENT DUPLICATES works only only sorted tables.

Doing this after a select will only succeed randomly depending on the buffers of your data based below.

( 90% chance if it is an oracle system)

To your question:

Just replace your LOOP AT gt_data into ls_list

by a LOOP AT gt_data ASSIGNING <current_list_record>.

then you can access the fields directly:

<current_list_record>-SECTION_WIDTH = LT_AUSP-ATWRT.

Cause of your issue:

"MODIFY" needs a key to to find the record to be updated.

If your gt_data ist referencing a DDIC table type with a key or a local type with a key

it has no chance to do it.

Hope that helps.

br,

Read only

Former Member
0 Likes
516

solved