‎2006 Mar 20 1:40 PM
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
‎2006 Mar 20 1:45 PM
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.
‎2006 Mar 20 2:50 PM
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
‎2006 Mar 20 2:53 PM
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.
‎2006 Mar 20 1:50 PM
‎2006 Mar 20 3:02 PM
‎2006 Mar 20 3:05 PM
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
‎2006 Mar 20 3:47 PM
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
‎2006 Mar 20 5:20 PM
Ok. But why can't I join them together in SQ01 then?
Thanks in advance!
/Sverker