‎2007 Feb 14 11:55 AM
hallow i doing a program that i wont to use shift in some field of org.unit accordingly to the level of org.unit in structre for that I use a function that bring org units and level the problem is when I do shift it bring me in org.unit field 1 and 2to maybe the level but I dont wont that I just wont to move the org unit accordingly to level
ex.
org.unit level
163****** 1
182****2
*121***3
***825 ** 4
163****** 1
without the astrick its just for example
Maybe I have to use something else or that I cant do it in abap please help
This Is my program
LOOP AT org_itab INTO wa_org_itab-objid.
CALL FUNCTION 'RHPH_STRUCTURE_READ'
EXPORTING
plvar = '01'
otype = 'O'
objid = wa_org_itab-objid
wegid = 'ORGEH'
begda = sy-datum
endda = sy-datum
PUP_INFO = 'X'
WITH_STEXT = 'X'
TDEPTH = 0
TABLES
stru_tab = stru_tab
EXCEPTIONS
CATALOGUE_PROBLEM = 1
ROOT_NOT_FOUND = 2
WEGID_NOT_FOUND = 3
OTHERS = 4
LOOP AT stru_tab INTO wa_stru_tab.
*----
Select Org. Unit Name
*----
CLEAR yhida_stext.
yhida_stext = wa_stru_tab-stext.
MOVE yhida_stext TO wa_teken_itab-yhida_name.
MOVE wa_stru_tab-objid TO wa_teken_itab-org_unit.
MOVE wa_stru_tab-level to wa_teken_itab-level.
*----
Select Teken misrot / Reference Number to Table Part
*----
SELECT SINGLE tabnr
FROM hrp1019
INTO wa_teken_itab-tabnr
WHERE objid = wa_stru_tab-objid
AND plvar ='01'
AND otype = 'O'
AND begda <= so_date
AND endda => so_date.
IF sy-subrc = 0.
IF sy-subrc NE 0.
wa_teken_itab-yhida_name = yhida_stext.
APPEND wa_teken_itab TO teken_itab.
CLEAR wa_teken_itab.
ELSE.
SELECT amount jobid " Amount of misrot
FROM hrt1019
INTO (wa_teken_itab-amount , wa_teken_itab-jobid )
WHERE tabnr = wa_teken_itab-tabnr.
IF sy-subrc = 0.
MOVE wa_stru_tab-objid TO wa_teken_itab-org_unit.
ENDIF.
teken_hour = ( 185 * wa_teken_itab-amount ).
MOVE teken_hour TO wa_teken_itab-teken_hour.
APPEND wa_teken_itab TO teken_itab.
CLEAR wa_teken_itab.
ENDSELECT.
ENDIF.
ENDLOOP.
LOOP AT teken_itab INTO wa_teken_itab.
SHIFT wa_teken_itab-org_unit BY wa_teken_itab-level PLACES RIGHT.
MODIFY teken_itab from wa_teken_itab transporting org_unit.
CLEAR wa_teken_itab.
ENDLOOP.
‎2007 Feb 14 12:08 PM
Hello Antonio,
I have faced a similar type of problem and coded like this for BOM structure.
LOOP AT PT_BOM_AST INTO LWA_BOM. "BOM_AST
Positionierung:
IF SY-TABIX = 1.
LV_BASIC_LEVEL = LWA_BOM-BOM_LEVEL.
LV_LEFT_MARGIN = 0.
ELSE.
LV_LEFT_MARGIN = LWA_BOM-BOM_LEVEL - LV_BASIC_LEVEL.
ENDIF.
SHIFT LWA_DOWNLOAD RIGHT BY LV_LEFT_MARGIN PLACES.
WRITE LWA_BOM-EVA-POSID TO LV_POSID_FORMATIERT.
PERFORM TECHDETAILS USING LWA_BOM-STPO-IDNRK
CHANGING LV_TD.
lt_zeinr Positionieren.
READ TABLE LT_ZEINR INTO LWA_ZEINR
WITH KEY MATNR = LWA_BOM-STPO-IDNRK
BINARY SEARCH.
IF SY-SUBRC NE 0. CLEAR LWA_ZEINR. ENDIF.
IF LWA_BOM-HEADER-XBOM = 'X'.
Eröffnungssatz für Baugruppen (#P.1234.010.0.1_3843123456)
CLEAR LWA_DOWNLOAD.
CONCATENATE '#'
LV_POSID_FORMATIERT '_'
LWA_BOM-STPO-IDNRK
INTO LWA_DOWNLOAD.
SHIFT LWA_DOWNLOAD RIGHT BY LV_LEFT_MARGIN PLACES.
APPEND LWA_DOWNLOAD TO PT_DOWNLOAD.
eigentlicher Baugruppensatz (Matnr PSP Kurztext)
weitere Daten
PERFORM ADDINFO USING 'B'
LWA_BOM
CHANGING LV_ADD.
"gezeichnet von" mit Kennung
CONCATENATE '#' LWA_BOM-STKO-ZZDRAWN INTO LV_DRAWN.
Satz Baugruppendaten zusammenstellen
CLEAR LWA_DOWNLOAD.
LWA_DOWNLOAD+0(10) = LWA_BOM-STPO-IDNRK.
001 vsm1kor 12.02.07 - sm OPL 1617
IF LWA_ZEINR-ZEINR IS INITIAL.
LWA_DOWNLOAD+11(10) = '0000000000'.
ELSE.
LWA_DOWNLOAD+11(10) = LWA_ZEINR-ZEINR.
ENDIF.
LWA_DOWNLOAD+11(10) = LWA_ZEINR-ZEINR.
001 vsm1kor 12.02.07 - em OPL 1617
LWA_DOWNLOAD+22(10) = LWA_BOM-STPO-CLASS.
LWA_DOWNLOAD+33(1) = LC_ENDCLASS_SIGN.
CONCATENATE LWA_DOWNLOAD
LV_POSID_FORMATIERT
INTO LWA_DOWNLOAD.
CONCATENATE LWA_DOWNLOAD
' '
LV_ADD
LWA_BOM-STPO-MAKTX
LV_DRAWN
INTO LWA_DOWNLOAD SEPARATED BY SPACE.
CONCATENATE LWA_DOWNLOAD LV_TD INTO LWA_DOWNLOAD.
SEARCH LWA_DOWNLOAD FOR LC_ENDCLASS_SIGN.
IF SY-SUBRC = 0.
LWA_DOWNLOAD+SY-FDPOS(1) = ' '.
ENDIF.
001 vsm1kor 12.02.07 - sn OPL 1617
CONCATENATE LWA_BOM-STPO-POTX1 '#' LWA_BOM-STPO-POTX2
INTO LV_POTX.
CONCATENATE LWA_DOWNLOAD LV_POTX INTO LWA_DOWNLOAD
SEPARATED BY SPACE.
001 vsm1kor 12.02.07 - en OPL 1617
SHIFT LWA_DOWNLOAD RIGHT BY LV_LEFT_MARGIN PLACES.
APPEND LWA_DOWNLOAD TO PT_DOWNLOAD.
APPEND LWA_BOM TO LT_PROCESSED.
ELSE.
Satz für Positionen
weitere Daten
PERFORM ADDINFO USING 'P'
LWA_BOM
CHANGING LV_ADD.
Satz für Material
CLEAR LWA_DOWNLOAD.
LWA_DOWNLOAD+0(10) = LWA_BOM-STPO-IDNRK.
001 vsm1kor 12.02.07 - em OPL 1617
IF LWA_ZEINR-ZEINR IS INITIAL AND
NOT LWA_BOM-STPO-IDNRK IS INITIAL.
LWA_DOWNLOAD+11(10) = '0000000000'.
ELSE.
LWA_DOWNLOAD+11(10) = LWA_ZEINR-ZEINR.
ENDIF.
LWA_DOWNLOAD+11(10) = LWA_ZEINR-ZEINR.
001 vsm1kor 12.02.07 - em OPL 1617
LWA_DOWNLOAD+22(10) = LWA_BOM-STPO-CLASS.
LWA_DOWNLOAD+34(21) = LV_ADD.
LWA_DOWNLOAD+56(40) = LWA_BOM-STPO-MAKTX.
CONCATENATE LWA_DOWNLOAD LV_TD INTO LWA_DOWNLOAD.
001 vsm1kor 12.02.07 - sn OPL 1617
CONCATENATE LWA_BOM-STPO-POTX1 '#' LWA_BOM-STPO-POTX2
INTO LV_POTX.
CONCATENATE LWA_DOWNLOAD LV_POTX INTO LWA_DOWNLOAD
SEPARATED BY SPACE.
001 vsm1kor 12.02.07 - en OPL 1617
SHIFT LWA_DOWNLOAD RIGHT BY LV_LEFT_MARGIN PLACES.
APPEND LWA_DOWNLOAD TO PT_DOWNLOAD.
ENDIF.
APPEND LWA_BOM TO LT_PROCESSED.
ENDIF.
ENDLOOP. "BOM_AST
You could make use of this sample code.
Vasanth
‎2007 Feb 14 1:12 PM
hi vasanth
i think that both codes is the same but its not working for me
nyabe their is something that i dont see?
regards