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

Display changes problem

Former Member
0 Likes
1,785

Hi!

I have a program that insert new material and update existing materials in the material master. I made changes in this program that got serious errors. I removed data in some fields that i shouldn't remove on about 500 materials. In display changes I can see the old values and the new values per material.

Now I need help to reverse these changes. Do you know an easy way to do this?

If not. Do you know how I can get a list on my changes so I can update the materials manually?

Thank you VERY much for all help!

Best Regards

Sverker

8 REPLIES 8
Read only

Former Member
0 Likes
1,446

Hi sverker,

1. using the concept / FMs

for change documents,

we can get the

old / new data (field values)

in internal table.

2. i have already done this

kind of requirement

3. just copy paste this program .

4. U may have to modify

the required logic ,

but the BASE will be the same.

5. It display all MODIFIED FIELD VALUE

(only selected field it displays,

however we get all the fields)

6.

REPORT ymmr_matmas_log_mail .

*----


  • INCLUDE

*----


INCLUDE yhri_inclfor_alv.

*----


  • DATA

*----


DATA : cdhdr_itab LIKE TABLE OF cdhdr WITH HEADER LINE,

cdshw LIKE TABLE OF cdshw WITH HEADER LINE,

cdred LIKE TABLE OF cdred WITH HEADER LINE.

DATA : tcdshw LIKE TABLE OF cdshw WITH HEADER LINE,

tcdred LIKE TABLE OF cdred WITH HEADER LINE.

DATA : mara LIKE TABLE OF mara WITH HEADER LINE.

*----


DATA : fromdate TYPE sy-datum.

DATA : tabkey LIKE cdshw-tabkey.

DATA : BEGIN OF mtab OCCURS 0,

matnr LIKE mara-matnr,

ersda LIKE mara-ersda,

laeda LIKE mara-laeda,

chngind LIKE cdshw-chngind,

END OF mtab.

*DATA : mcdshw LIKE TABLE OF cdshw WITH HEADER LINE.

DATA : BEGIN OF mcdshw OCCURS 0,

matnr LIKE mara-matnr,

werks LIKE marc-werks,

tabname LIKE cdshw-tabname,

tabkey LIKE cdshw-tabkey,

fname LIKE cdshw-fname,

f_new(25) TYPE c,

laeda LIKE mara-laeda,

ersda LIKE mara-ersda,

END OF mcdshw.

DATA : BEGIN OF mlog OCCURS 0,

matnr LIKE mara-matnr,

maktx LIKE makt-maktx,

werks LIKE marc-werks,

fname LIKE cdshw-fname,

f_new(25) TYPE c,

laeda LIKE mara-laeda,

ersda LIKE mara-ersda,

END OF mlog.

DATA : marc LIKE TABLE OF marc WITH HEADER LINE.

DATA : qmat LIKE TABLE OF qmat WITH HEADER LINE.

DATA : updatelog TYPE c.

*----


  • init

*----


INITIALIZATION.

*------- Clear Fields

CLEAR updatelog.

CLEAR fromdate.

*----


Import Flag

IMPORT updatelog FROM MEMORY ID 'UPDATELOG'.

*------- Get Max Aedat

SELECT SINGLE MAX( aedat ) INTO fromdate FROM ymmt_matmas_log.

*------- Hardcode Date Bcos 1 Initial Start Date Reqd

IF fromdate IS INITIAL.

fromdate = '20050628'.

ENDIF.

*----


  • START OF SELECTION

*----


START-OF-SELECTION.

*------- Get Matnr

PERFORM matmas_get_matnr USING fromdate. "-- Get Distinct Mat

PERFORM matmas_get_matnr_details. "-- Fill All Detail Tables

PERFORM matmas_fill_field_info. "--- Fill Reqd Fields Info SERNP,ART

*------- Change Doc

PERFORM matmas_get_changes USING fromdate. "--- Get Change Docum

*----


Filter

PERFORM matmas_filterfrom_changedoc . "-- Filter From ChangeDoc

PERFORM matmas_field_user_values. "---- Filter User Values YPM0

PERFORM matmas_fill_show_itab. "---- Put info to display itab.

*----


Done.

*----


  • FORM

*----


FORM matmas_get_changes USING stdate.

*------- Clear Internal Tables

REFRESH cdhdr_itab.

CLEAR cdhdr_itab.

REFRESH cdshw.

CLEAR cdshw.

REFRESH cdred.

CLEAR cdred.

*------- Get Header

CALL FUNCTION 'CHANGEDOCUMENT_READ_HEADERS'

EXPORTING

  • ARCHIVE_HANDLE = 0

date_of_change = stdate

objectclass = 'MATERIAL'

  • OBJECTID = ' '

  • TIME_OF_CHANGE = '000000'

  • 25.07.2005 Uname passed as '' so that all records are returned

  • 01.08.2005 Comment removed

USERNAME = ''

  • LOCAL_TIME = ' '

  • DATE_UNTIL = '99991231'

  • TIME_UNTIL = '235959'

  • NOPLUS_ASWILDCARD_INOBJID = ' '

TABLES

i_cdhdr = cdhdr_itab

EXCEPTIONS

no_position_found = 1

wrong_access_to_archive = 2

time_zone_conversion_error = 3

OTHERS = 4

.

*---- Loop And Get Detail

LOOP AT cdhdr_itab.

REFRESH tcdshw.

CLEAR tcdshw.

REFRESH tcdred.

CLEAR tcdred.

CALL FUNCTION 'CHANGEDOCUMENT_READ_POSITIONS'

EXPORTING

  • ARCHIVE_HANDLE = 0

changenumber = cdhdr_itab-changenr

  • TABLEKEY = ' '

  • TABLENAME = ' '

  • TABLEKEY254 = ' '

  • KEYGUID = ' '

  • IMPORTING

  • HEADER =

TABLES

editpos = tcdshw

editpos_with_header = tcdred

EXCEPTIONS

no_position_found = 1

wrong_access_to_archive = 2

OTHERS = 3

.

*----


Append

APPEND LINES OF tcdshw TO cdshw.

APPEND LINES OF tcdred TO cdred.

*----


End Loop

ENDLOOP.

*----


ENDFORM. "MATMAS_GET_CHANGES

*----


  • FORM

*----


FORM matmas_get_matnr USING stdate.

REFRESH mara.

CLEAR mara.

*----


Get Modified/Created Material

SELECT * FROM mara

INTO CORRESPONDING FIELDS OF TABLE mtab

WHERE ersda >= stdate

OR laeda >= stdate.

*----


Change Indicator

LOOP AT mtab.

IF mtab-ersda >= fromdate.

mtab-chngind = 'I'.

ENDIF.

IF mtab-laeda >= fromdate.

mtab-chngind = 'U'.

ENDIF.

MODIFY mtab.

ENDLOOP.

*----


Done.

ENDFORM. "matmas_get_matnr

*----


  • FORM

*----


FORM matmas_get_matnr_details.

*------- Data

DATA : tmarc LIKE TABLE OF marc WITH HEADER LINE.

DATA : tqmat LIKE TABLE OF qmat WITH HEADER LINE.

*------- Clear

REFRESH mcdshw .

CLEAR mcdshw.

REFRESH marc.

CLEAR marc.

*----


Loop

LOOP AT mtab.

*----


Get From Marc

REFRESH tmarc.

CLEAR tmarc.

SELECT * FROM marc

INTO TABLE tmarc

WHERE matnr = mtab-matnr.

APPEND LINES OF tmarc TO marc.

*----


Get From QMat

REFRESH tqmat.

CLEAR tqmat.

SELECT * FROM qmat

INTO TABLE tqmat

WHERE matnr = mtab-matnr.

APPEND LINES OF tqmat TO qmat.

*----


Endloop

ENDLOOP.

ENDFORM. "matmas_getfield_info

*----


  • FORM

*----


FORM matmas_fill_field_info.

*----


Clear

REFRESH mcdshw.

CLEAR mcdshw.

*----


Fill For Marc

LOOP AT marc.

CLEAR mcdshw.

CLEAR tabkey.

CONCATENATE sy-mandt marc-matnr marc-werks INTO tabkey.

mcdshw-matnr = marc-matnr.

mcdshw-werks = marc-werks.

mcdshw-tabkey = tabkey.

mcdshw-tabname = 'MARC'.

mcdshw-fname = 'SERNP'.

mcdshw-f_new = marc-sernp.

APPEND mcdshw.

ENDLOOP.

*----


Fill For QMat

LOOP AT qmat.

CLEAR mcdshw.

CLEAR tabkey.

CONCATENATE qmat-werks qmat-art INTO tabkey.

mcdshw-matnr = qmat-matnr.

mcdshw-werks = qmat-werks.

mcdshw-tabkey = tabkey.

mcdshw-tabname = 'DQMAT'.

mcdshw-fname = 'ART'.

mcdshw-f_new = qmat-art.

APPEND mcdshw.

ENDLOOP.

*----


Fill Dates From Mtab

LOOP AT mcdshw.

READ TABLE mtab WITH KEY matnr = mcdshw-matnr.

IF sy-subrc = 0.

mcdshw-ersda = mtab-ersda.

mcdshw-laeda = mtab-laeda.

MODIFY mcdshw.

ENDIF.

ENDLOOP.

ENDFORM. "matmas_fill_field_info

*----


  • FORM

*----


FORM matmas_field_user_values.

LOOP AT mcdshw.

IF mcdshw-fname = 'SERNP'.

IF NOT ( mcdshw-f_new = 'YPM0' ).

DELETE mcdshw.

ENDIF.

ENDIF.

IF mcdshw-fname = 'ART'.

IF NOT ( mcdshw-f_new = '01' OR mcdshw-f_new = '04'

OR mcdshw-f_new = '08' OR mcdshw-f_new = '1401' OR mcdshw-f_new =

'Q501').

DELETE mcdshw.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. "matmas_field_user_values

*----


  • FORM

*----


FORM matmas_fill_show_itab.

REFRESH mlog.

CLEAR mlog.

LOOP AT mcdshw.

CLEAR mlog.

MOVE-CORRESPONDING mcdshw TO mlog.

APPEND mlog.

ENDLOOP.

*----


Get Other Fields

LOOP AT mlog.

SELECT SINGLE maktx FROM

makt

INTO mlog-maktx

WHERE matnr = mlog-matnr

AND spras = sy-langu.

MODIFY mlog.

ENDLOOP.

*------- Check For Update

IF updatelog = 'X'.

PERFORM matmas_updatelog.

ENDIF.

*----


Show

SORT mlog BY laeda matnr werks.

PERFORM alv_customize USING sy-repid 'MLOG'.

PERFORM alv_setcolumn USING 'FNAME' 'ln=10'.

PERFORM alv_setcolumn USING 'F_NEW' 'ln=10;lt=Value'.

PERFORM alv_display USING mlog[].

ENDFORM. "matmas_fill_show_itab

*----


  • FORM

*----


FORM matmas_filterfrom_changedoc.

*------- Filter From Change Doc

*------- Keep Only Those Fields Which Have Been Changed

*------- Eg. Sernp will come in our records

*------- But If Not in ChngDoc, Then It mean it is not modified

LOOP AT mcdshw.

*----- Check Add

READ TABLE cdshw WITH KEY

tabname = mcdshw-tabname

tabkey = mcdshw-tabkey

chngind = 'I'.

IF sy-subrc = 0.

CONTINUE.

ENDIF.

*------- Check Modify

READ TABLE cdshw WITH KEY

tabname = mcdshw-tabname

tabkey = mcdshw-tabkey

fname = mcdshw-fname.

IF sy-subrc <> 0.

DELETE mcdshw.

ENDIF.

ENDLOOP.

ENDFORM. "matmas_filterfrom_changedoc

*----


  • FORM updatelog

*----


FORM matmas_updatelog.

*----


Update Log Table

DATA : maxaedat TYPE sy-datum.

DATA : mmtlog TYPE ymmt_matmas_log.

LOOP AT mtab.

IF mtab-laeda > maxaedat.

maxaedat = mtab-laeda.

ENDIF.

IF mtab-ersda > maxaedat.

maxaedat = mtab-ersda.

ENDIF.

ENDLOOP.

*----


Check Blank Aedat

IF maxaedat IS INITIAL.

maxaedat = fromdate.

ENDIF.

*------- Get Rec, If Exits So That +1 Can Be Done

CLEAR mmtlog.

SELECT SINGLE * FROM ymmt_matmas_log

INTO mmtlog

WHERE aedat = maxaedat.

mmtlog-aedat = maxaedat.

mmtlog-mlflag = 'X'.

mmtlog-mlnam = sy-uname.

mmtlog-mldat = sy-datum.

mmtlog-mlzet = sy-uzeit.

mmtlog-mlcnt = mmtlog-mlcnt + 1.

MODIFY ymmt_matmas_log FROM mmtlog.

ENDFORM. "matmas_updatelog

regards,

amit m.

Read only

0 Likes
1,446

Hi!

Thanks for your help. But I get stuck because an error becuse I miss your include yhri_inclfor_alv and ymmt_matmas_log is not defined.

Plese help!

/Sverker

Read only

0 Likes
1,446

Hi sverker,

1. sorry i forgot that.

2. this is the code :

(but this include is for alv purpose only,

not for change documents)

TYPE-POOLS : slis.

*----


Common Data

DATA:varname(30) TYPE c.

DATA:varvalue(30) TYPE c.

DATA:hasvar TYPE i.

*----


General Variables

DATA : progid TYPE sy-repid.

*----


Variables For Alv

DATA : alvfc TYPE slis_t_fieldcat_alv.

DATA : alvly TYPE slis_layout_alv.

DATA : alvev TYPE slis_t_event .

DATA : alvfc_done TYPE c.

DATA : alvitabname(30) TYPE c.

DATA : alvcallback_formname(30) TYPE c.

*----


split qs

FORM qs_has_varname USING value(whatqs) value(whatvarname)

CHANGING hasvar varvalue.

*------- Variables

DATA : BEGIN OF qs OCCURS 0,

varname(35) TYPE c,

varvalue(35) TYPE c,

END OF qs.

DATA : BEGIN OF qs1 OCCURS 0,

var(35) TYPE c,

END OF qs1.

DATA : BEGIN OF finalqs OCCURS 0,

varname(35) TYPE c,

varvalue(35) TYPE c,

END OF finalqs.

DATA : myctr TYPE i.

*----


Check Parameters

TRANSLATE whatvarname TO UPPER CASE.

*----


Do

SPLIT whatqs AT ';' INTO TABLE qs.

LOOP AT qs.

SPLIT qs-varname AT '=' INTO TABLE qs1.

myctr = 0.

LOOP AT qs1.

myctr = myctr + 1.

IF myctr = 1. qs-varname = qs1-var. ENDIF.

IF myctr = 2 . qs-varvalue = qs1-var. ENDIF.

ENDLOOP.

TRANSLATE qs-varname TO UPPER CASE.

  • write 😕 qs-varname , ' ------ ' , qs-varvalue.

APPEND qs TO finalqs.

ENDLOOP.

*----


Now Search

hasvar = 0.

varvalue = ''.

LOOP AT finalqs.

IF finalqs-varname = whatvarname.

hasvar = 1.

varvalue = finalqs-varvalue.

EXIT.

ENDIF.

ENDLOOP.

ENDFORM. "qs_has_varname

*----


FORM alv_customize USING value(whatprogid) value(whatalvitabname).

CLEAR alvfc.

CLEAR alvly.

CLEAR alvev.

alvfc_done = ''.

progid = whatprogid.

alvitabname = whatalvitabname.

TRANSLATE alvitabname TO UPPER CASE.

CONCATENATE alvitabname '_USER_COMMAND' INTO alvcallback_formname.

PERFORM alv_buildev.

PERFORM alv_setevent USING 'TOP_OF_PAGE'.

ENDFORM. "alv_customize

*----


FORM alv_display USING itab TYPE table.

IF alvfc_done <> 'T'.

PERFORM alv_buildfc.

ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = progid

i_callback_user_command = alvcallback_formname

it_fieldcat = alvfc

is_layout = alvly

i_save = 'A'

it_events = alvev[]

TABLES

t_outtab = itab

EXCEPTIONS

OTHERS = 2.

.

ENDFORM. "alv_display

&----


*& Form alv_buildfc

&----


  • text

----


FORM alv_buildfc .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = progid

i_internal_tabname = alvitabname

i_inclname = progid

CHANGING

ct_fieldcat = alvfc.

alvfc_done = 'T'.

ENDFORM. "alv_buildfc

*===================================================================

FORM alv_setcolumn USING value(whatfieldname) value(parastr).

*----


sets the column properties.

DATA : fcl TYPE slis_fieldcat_alv.

TRANSLATE whatfieldname TO UPPER CASE.

"----


Check

IF alvfc_done <> 'T'.

PERFORM alv_buildfc.

ENDIF.

CLEAR fcl.

"----


Loop Once And Check

LOOP AT alvfc INTO fcl WHERE fieldname = whatfieldname.

PERFORM qs_has_varname USING parastr 'fn' hasvar varvalue.

IF hasvar = 1. fcl-fieldname = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'lt' hasvar varvalue.

IF hasvar = 1. fcl-seltext_l = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'st' hasvar varvalue.

IF hasvar = 1. fcl-seltext_s = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'mt' hasvar varvalue.

IF hasvar = 1. fcl-seltext_m = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'ch' hasvar varvalue.

IF hasvar = 1. fcl-reptext_ddic = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'ke' hasvar varvalue.

IF hasvar = 1. fcl-key = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'em' hasvar varvalue.

IF hasvar = 1. fcl-emphasize = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'fc' hasvar varvalue.

IF hasvar = 1. fcl-fix_column = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'ds' hasvar varvalue.

IF hasvar = 1. fcl-do_sum = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'ju' hasvar varvalue.

IF hasvar = 1. fcl-just = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'no' hasvar varvalue.

IF hasvar = 1. fcl-no_out = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'dd' hasvar varvalue.

IF hasvar = 1. fcl-ddictxt = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'ln' hasvar varvalue.

IF hasvar = 1. fcl-outputlen = varvalue. ENDIF.

"----


Now Modify Original FC

MODIFY alvfc FROM fcl.

ENDLOOP.

*----


Done

ENDFORM. "alv_setcolumn

*----


*============ This Function Builds The Events

FORM alv_buildev.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = alvev.

ENDFORM. "alv_buildev

*=============This Function Links the Event Name To The Specified Form

FORM alv_setevent USING value(eventname) .

DATA: tempev TYPE slis_alv_event.

DATA : formname(30) TYPE c.

TRANSLATE eventname TO UPPER CASE.

CONCATENATE alvitabname '_' eventname INTO formname.

TRANSLATE formname TO UPPER CASE.

LOOP AT alvev INTO tempev WHERE name = eventname.

tempev-form = formname.

MODIFY alvev FROM tempev.

ENDLOOP.

ENDFORM. "alv_setevent

*================== This Function Sets The Layout

FORM alv_setlayout USING value(parastr).

PERFORM qs_has_varname USING parastr 'wo' hasvar varvalue.

IF hasvar = 1. alvly-colwidth_optimize = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'zb' hasvar varvalue.

IF hasvar = 1. alvly-zebra = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'co' hasvar varvalue.

IF hasvar = 1. alvly-info_fieldname = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'bf' hasvar varvalue.

IF hasvar = 1. alvly-box_fieldname = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'bt' hasvar varvalue.

IF hasvar = 1. alvly-box_tabname = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'gc' hasvar varvalue.

IF hasvar = 1. alvly-group_change_edit = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'se' hasvar varvalue.

IF hasvar = 1. alvly-get_selinfos = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'tt' hasvar varvalue.

IF hasvar = 1. alvly-totals_text = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'st' hasvar varvalue.

IF hasvar = 1. alvly-subtotals_text = varvalue. ENDIF.

PERFORM qs_has_varname USING parastr 'NK' hasvar varvalue.

IF hasvar = 1. alvly-no_keyfix = varvalue. ENDIF.

ENDFORM. "alv_setlayout

*----


*

*----


FORM alv_setfc_maxlength USING maxlength .

DATA : alvwa TYPE slis_fieldcat_alv.

*----


Check Length

LOOP AT alvfc INTO alvwa.

IF alvwa-ddic_outputlen > maxlength.

alvwa-outputlen = maxlength.

MODIFY alvfc FROM alvwa.

ENDIF.

ENDLOOP.

ENDFORM. "alv_setmaxlength

*----


  • ALV_SHOW_PAGE_HEADINGS

*----


FORM alv_show_page_headings.

*----


Data

DATA : fname(30) TYPE c.

FIELD-SYMBOLS : <fv> TYPE ANY.

DATA : et_sort TYPE slis_t_sortinfo_alv,

et_sortwa TYPE slis_sortinfo_alv.

DATA : et_fieldcat TYPE slis_t_fieldcat_alv,

et_fieldcatwa TYPE slis_fieldcat_alv.

*----


Get Info

CALL FUNCTION 'REUSE_ALV_LIST_LAYOUT_INFO_GET'

IMPORTING

et_fieldcat = et_fieldcat

et_sort = et_sort

EXCEPTIONS

no_infos = 1

program_error = 2

OTHERS = 3.

*----


Loop and Check Sort Table

LOOP AT et_sort INTO et_sortwa.

IF et_sortwa-group = '*'.

READ TABLE et_fieldcat INTO et_fieldcatwa

WITH KEY fieldname = et_sortwa-fieldname.

IF sy-subrc = 0.

WRITE 😕 et_fieldcatwa-seltext_l.

CONCATENATE et_sortwa-tabname '-' et_sortwa-fieldname

INTO fname.

ASSIGN (fname) TO <fv>.

WRITE : <fv>.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. "ALV_SHOW_HEADINGS

*----


  • ALV_APPEND_FC

*----


  • Append FC To Existing FC

  • Create Or Append As Specified

*----


FORM alv_append_fc

TABLES orgfc TYPE slis_t_fieldcat_alv

appfc TYPE slis_t_fieldcat_alv

USING

createnew maintabname subtabname

prefix.

*----


Data

DATA : subalvfc TYPE slis_t_fieldcat_alv.

DATA : subalvfcwa TYPE slis_fieldcat_alv.

DATA : maxcol_pos TYPE i.

DATA : ctrcol_pos TYPE i.

*----


Logic

IF createnew = 'X'.

*----


First Build FC For SubTable

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = progid

i_internal_tabname = subtabname

i_inclname = progid

CHANGING

ct_fieldcat = subalvfc.

ELSE.

subalvfc[] = appfc[] .

ENDIF.

*------- Loop At Org Fc And Find Max

LOOP AT orgfc INTO subalvfcwa.

IF subalvfcwa-col_pos > maxcol_pos.

maxcol_pos = subalvfcwa-col_pos .

ENDIF.

ENDLOOP.

ctrcol_pos = maxcol_pos.

*----


Loop At Subtable FC And Append To Org FC

LOOP AT subalvfc INTO subalvfcwa.

CONCATENATE subtabname '-' subalvfcwa-fieldname

INTO subalvfcwa-fieldname .

subalvfcwa-tabname = maintabname.

ctrcol_pos = ctrcol_pos + 1.

subalvfcwa-col_pos = ctrcol_pos.

*----


Prefixes L M S

IF prefix IS NOT INITIAL.

CONCATENATE prefix subalvfcwa-seltext_l INTO

subalvfcwa-seltext_l SEPARATED BY space.

CONCATENATE prefix subalvfcwa-seltext_m INTO

subalvfcwa-seltext_m SEPARATED BY space.

CONCATENATE prefix subalvfcwa-seltext_s INTO

subalvfcwa-seltext_s SEPARATED BY space.

ENDIF.

APPEND subalvfcwa TO orgfc.

ENDLOOP.

*----


Sort

SORT orgfc BY col_pos.

ENDFORM. "alv_APPEND_FC

regards,

amit m.

Read only

Former Member
0 Likes
1,446

You can also use standard transaction MM04

Read only

Former Member
0 Likes
1,446

use CDHDR, CDPOS TABLES ...

Read only

0 Likes
1,446

CDHDR and CDPOs. Very good!

But I need a list and when i try to create one in SQ01 SAP says that CDPOS is not a table. How can I join these two tables to one list?

Best Regards

Sverker

Read only

0 Likes
1,446

these both CDHDR & CDPOS ARE transparent tables. so check in SE11/SE12/SE16.

OBJECTID = 'MATERIAL'.

Tcode : will be 'MM01' OR MM02 OR MM06

even you see the old & new values pair thru MM02/MM03

go to ENVIRONMENT->DISPLAY CHANGES.

The screen comes here, will have the old & new value pair with the date & user who changed them.

regards

srikanth

Message was edited by: Srikanth Kidambi

Read only

Former Member
0 Likes
1,446

Ok. But why can't I join them together in SQ01 then?

Thanks in advance!

/Sverker