‎2008 Aug 05 10:00 PM
Hi Friends,
i wrote a report for diplaying SALES ORDER TEXTS FOR PERTICULAR MATERIALS FOR ALL SALES ORGS FOR THEIRE COREESPONDING LANGUAGES.
THE O/P COMING FINE.
BUT THOSE MATERILAS DONT HAVE SATES ORDER TEXT THAT ARE NOT COMING. I WANT DISPALY LIST OF MATERIALS DONT HAVE SALES ORDER TEXTS IN OUT PUT.
PLS CHECK THE CODE BELOW. PLS
TABLES: mara,
mvke.
TYPE-POOLS: slis.
DATA : BEGIN OF it_data OCCURS 1,
matnr LIKE mara-matnr,
vkorg LIKE mvke-vkorg,
vtweg LIKE mvke-vtweg,
END OF it_data.
DATA : BEGIN OF it_final OCCURS 1,
matnr LIKE mara-matnr,
vkorg LIKE mvke-vkorg,
sotext LIKE tline-tdline,
potext LIKE tline-tdline,
TDSPRAS LIKE STXH-TDSPRAS,
END OF it_final.
data : begin of it_stxh occurs 0,
TDobject like stxh-TDOBJECT,
TDNAME like stxh-TDOBJECT,
TDid like stxh-TDid,
TDSPRAS like stxh-TDSPRAS,
end of it_stxh.
DATA: t_lines TYPE tline OCCURS 0 WITH HEADER LINE.
DATA: it_mara LIKE mara OCCURS 0 WITH HEADER LINE.
DATA: v_textname LIKE thead-tdname.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
l_layout TYPE slis_layout_alv,
l_repid LIKE sy-repid.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN.
PERFORM material_validation.
START-OF-SELECTION.
*Getting the required data from table MVKE
PERFORM get_data.
*Getting the SO and PO Texts for the materials
PERFORM get_texts.
*Displaying the SO and PO Texts along with the material Number
PERFORM disp_data.
&----
*& Form material_validation
&----
text
----
FORM material_validation.
SELECT matnr
FROM mara
INTO TABLE it_mara
WHERE matnr IN s_matnr.
IF sy-subrc NE 0.
MESSAGE e000(0) WITH 'INVALID MATERIAL NUMBER' s_matnr.
ENDIF.
ENDFORM. " material_validation
&----
*& Form get_data
&----
text
----
FORM get_data.
*Getting data from MVKE Table
SELECT matnr
vkorg
vtweg FROM mvke INTO TABLE it_data
WHERE matnr IN s_matnr.
*For Material Number to be 18 digits
LOOP AT it_data.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = it_data-matnr
IMPORTING
output = it_data-matnr.
MODIFY it_data.
ENDLOOP.
ENDFORM. " get_data
&----
*& Form get_texts
&----
text
----
FORM get_texts.
LOOP AT it_data.
*Populating material number and sales org into final table
MOVE it_data-matnr TO it_final-matnr.
MOVE it_data-vkorg TO it_final-vkorg.
*For the TextName of SO Text
CONCATENATE it_data-matnr it_data-vkorg it_data-vtweg INTO v_textname.
select TDOBJECT TDNAME TDID TDSPRAS from stxh into table it_stxh
where TDOBJECT = 'MVKE' and
TDNAME = v_textname and
TDID = '0001'.
loop at it_stxh.
MOVE IT_STXH-TDSPRAS TO IT_FINAL-TDSPRAS.
*Reading the SO Text
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = '0001'
language = it_stxh-tdspras
name = v_textname
object = 'MVKE'
TABLES
lines = t_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
READ TABLE t_lines INDEX 1.
loop at t_lines.
READ TABLE t_lines INDEX 1.
MOVE t_lines-tdline TO it_final-sotext.
append it_final.
clear it_final.
endloop.
ENDIF.
endloop.
CLEAR : v_textname,t_lines,t_lines[].
ENDLOOP.
ENDFORM. " get_texts
&----
*& Form disp_data
&----
text
----
FORM disp_data.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'Material Number'.
wa_fieldcat-col_pos = 1.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VKORG'.
wa_fieldcat-seltext_m = 'Sales Organization'.
wa_fieldcat-col_pos = 2.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'TDSPRAS'.
wa_fieldcat-seltext_m = 'LANGUAGE KEY'.
wa_fieldcat-col_pos = 3.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'SOTEXT'.
wa_fieldcat-seltext_m = 'Sales Order Text'.
wa_fieldcat-col_pos = 4.
wa_fieldcat-outputlen = 40.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
l_repid = sy-repid.
l_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = l_repid
is_layout = l_layout
it_fieldcat = it_fieldcat[]
i_default = 'X'
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
pls help me logic my question pls.
regards,
‎2008 Aug 05 10:17 PM
Check this code:
TABLES: mara,
mvke.
TYPE-POOLS: slis.
DATA : BEGIN OF it_data OCCURS 1,
matnr LIKE mara-matnr,
vkorg LIKE mvke-vkorg,
vtweg LIKE mvke-vtweg,
END OF it_data.
DATA : BEGIN OF it_final OCCURS 1,
matnr LIKE mara-matnr,
vkorg LIKE mvke-vkorg,
sotext LIKE tline-tdline,
potext LIKE tline-tdline,
TDSPRAS LIKE STXH-TDSPRAS,
END OF it_final.
data : begin of it_stxh occurs 0,
TDobject like stxh-TDOBJECT,
TDNAME like stxh-TDOBJECT,
TDid like stxh-TDid,
TDSPRAS like stxh-TDSPRAS,
end of it_stxh.
DATA: t_lines TYPE tline OCCURS 0 WITH HEADER LINE.
DATA: it_mara LIKE mara OCCURS 0 WITH HEADER LINE.
DATA: v_textname LIKE thead-tdname.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
l_layout TYPE slis_layout_alv,
l_repid LIKE sy-repid.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN.
PERFORM material_validation.
START-OF-SELECTION.
*Getting the required data from table MVKE
PERFORM get_data.
*Getting the SO and PO Texts for the materials
PERFORM get_texts.
*Displaying the SO and PO Texts along with the material Number
PERFORM disp_data.
&----
*& Form material_validation
&----
text
-
FORM material_validation.
SELECT matnr
FROM mara
INTO TABLE it_mara
WHERE matnr IN s_matnr.
IF sy-subrc NE 0.
MESSAGE e000(0) WITH 'INVALID MATERIAL NUMBER' s_matnr.
ENDIF.
ENDFORM. " material_validation
&----
*& Form get_data
&----
text
-
FORM get_data.
*Getting data from MVKE Table
SELECT matnr
vkorg
vtweg FROM mvke INTO TABLE it_data
WHERE matnr IN s_matnr.
*For Material Number to be 18 digits
LOOP AT it_data.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = it_data-matnr
IMPORTING
output = it_data-matnr.
MODIFY it_data.
ENDLOOP.
ENDFORM. " get_data
&----
*& Form get_texts
&----
text
-
FORM get_texts.
LOOP AT it_data.
*Populating material number and sales org into final table
MOVE it_data-matnr TO it_final-matnr.
MOVE it_data-vkorg TO it_final-vkorg.
*For the TextName of SO Text
CONCATENATE it_data-matnr it_data-vkorg it_data-vtweg INTO v_textname.
select TDOBJECT TDNAME TDID TDSPRAS from stxh into table it_stxh
where TDOBJECT = 'MVKE' and
TDNAME = v_textname and
TDID = '0001'.
if sy-subrc = 0.
loop at it_stxh.
MOVE IT_STXH-TDSPRAS TO IT_FINAL-TDSPRAS.
*Reading the SO Text
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = '0001'
language = it_stxh-tdspras
name = v_textname
object = 'MVKE'
TABLES
lines = t_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
READ TABLE t_lines INDEX 1.
loop at t_lines.
READ TABLE t_lines INDEX 1.
MOVE t_lines-tdline TO it_final-sotext.
append it_final.
endloop.
else.
MOVE space TO it_final-sotext.
append it_final.
ENDIF.
endloop.
else.
MOVE space TO it_final-sotext.
append it_final.
endif.
clear it_final.
CLEAR : v_textname,t_lines,t_lines[].
ENDLOOP.
ENDFORM. " get_texts
&----
*& Form disp_data
&----
text
-
FORM disp_data.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'Material Number'.
wa_fieldcat-col_pos = 1.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VKORG'.
wa_fieldcat-seltext_m = 'Sales Organization'.
wa_fieldcat-col_pos = 2.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'TDSPRAS'.
wa_fieldcat-seltext_m = 'LANGUAGE KEY'.
wa_fieldcat-col_pos = 3.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'SOTEXT'.
wa_fieldcat-seltext_m = 'Sales Order Text'.
wa_fieldcat-col_pos = 4.
wa_fieldcat-outputlen = 40.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
l_repid = sy-repid.
l_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = l_repid
is_layout = l_layout
it_fieldcat = it_fieldcat[]
i_default = 'X'
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Edited by: Joyjit Ghosh on Aug 5, 2008 11:29 PM
‎2008 Aug 05 10:17 PM
Check this code:
TABLES: mara,
mvke.
TYPE-POOLS: slis.
DATA : BEGIN OF it_data OCCURS 1,
matnr LIKE mara-matnr,
vkorg LIKE mvke-vkorg,
vtweg LIKE mvke-vtweg,
END OF it_data.
DATA : BEGIN OF it_final OCCURS 1,
matnr LIKE mara-matnr,
vkorg LIKE mvke-vkorg,
sotext LIKE tline-tdline,
potext LIKE tline-tdline,
TDSPRAS LIKE STXH-TDSPRAS,
END OF it_final.
data : begin of it_stxh occurs 0,
TDobject like stxh-TDOBJECT,
TDNAME like stxh-TDOBJECT,
TDid like stxh-TDid,
TDSPRAS like stxh-TDSPRAS,
end of it_stxh.
DATA: t_lines TYPE tline OCCURS 0 WITH HEADER LINE.
DATA: it_mara LIKE mara OCCURS 0 WITH HEADER LINE.
DATA: v_textname LIKE thead-tdname.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
l_layout TYPE slis_layout_alv,
l_repid LIKE sy-repid.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN.
PERFORM material_validation.
START-OF-SELECTION.
*Getting the required data from table MVKE
PERFORM get_data.
*Getting the SO and PO Texts for the materials
PERFORM get_texts.
*Displaying the SO and PO Texts along with the material Number
PERFORM disp_data.
&----
*& Form material_validation
&----
text
-
FORM material_validation.
SELECT matnr
FROM mara
INTO TABLE it_mara
WHERE matnr IN s_matnr.
IF sy-subrc NE 0.
MESSAGE e000(0) WITH 'INVALID MATERIAL NUMBER' s_matnr.
ENDIF.
ENDFORM. " material_validation
&----
*& Form get_data
&----
text
-
FORM get_data.
*Getting data from MVKE Table
SELECT matnr
vkorg
vtweg FROM mvke INTO TABLE it_data
WHERE matnr IN s_matnr.
*For Material Number to be 18 digits
LOOP AT it_data.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = it_data-matnr
IMPORTING
output = it_data-matnr.
MODIFY it_data.
ENDLOOP.
ENDFORM. " get_data
&----
*& Form get_texts
&----
text
-
FORM get_texts.
LOOP AT it_data.
*Populating material number and sales org into final table
MOVE it_data-matnr TO it_final-matnr.
MOVE it_data-vkorg TO it_final-vkorg.
*For the TextName of SO Text
CONCATENATE it_data-matnr it_data-vkorg it_data-vtweg INTO v_textname.
select TDOBJECT TDNAME TDID TDSPRAS from stxh into table it_stxh
where TDOBJECT = 'MVKE' and
TDNAME = v_textname and
TDID = '0001'.
if sy-subrc = 0.
loop at it_stxh.
MOVE IT_STXH-TDSPRAS TO IT_FINAL-TDSPRAS.
*Reading the SO Text
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = '0001'
language = it_stxh-tdspras
name = v_textname
object = 'MVKE'
TABLES
lines = t_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
READ TABLE t_lines INDEX 1.
loop at t_lines.
READ TABLE t_lines INDEX 1.
MOVE t_lines-tdline TO it_final-sotext.
append it_final.
endloop.
else.
MOVE space TO it_final-sotext.
append it_final.
ENDIF.
endloop.
else.
MOVE space TO it_final-sotext.
append it_final.
endif.
clear it_final.
CLEAR : v_textname,t_lines,t_lines[].
ENDLOOP.
ENDFORM. " get_texts
&----
*& Form disp_data
&----
text
-
FORM disp_data.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'Material Number'.
wa_fieldcat-col_pos = 1.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VKORG'.
wa_fieldcat-seltext_m = 'Sales Organization'.
wa_fieldcat-col_pos = 2.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'TDSPRAS'.
wa_fieldcat-seltext_m = 'LANGUAGE KEY'.
wa_fieldcat-col_pos = 3.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'SOTEXT'.
wa_fieldcat-seltext_m = 'Sales Order Text'.
wa_fieldcat-col_pos = 4.
wa_fieldcat-outputlen = 40.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
l_repid = sy-repid.
l_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = l_repid
is_layout = l_layout
it_fieldcat = it_fieldcat[]
i_default = 'X'
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Edited by: Joyjit Ghosh on Aug 5, 2008 11:29 PM
‎2008 Aug 06 3:43 PM
Hi joyjith,
thanks for your kindly help. the report working fine.
i have small doubt in F.module READ_TEXT.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = '0001'
language = it_stxh-tdspras
name = v_textname
object = 'MVKE'
what is mean by id = '0001' passing to id ?? not others?
mean why we passing only '0001' not 0002 and so on.
explain pls.
regards,