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

shift help

Former Member
0 Likes
383

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 don’t 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.

2 REPLIES 2
Read only

Former Member
0 Likes
346

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

Read only

0 Likes
346

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