‎2013 Jun 18 5:04 AM
Dear Experts,
In case of Systems QM5 and PM5 we need to consider the compny codes additionally.
When
lc_logsys_QM5 and company code 1200 or 1400
lc_logsys_PM5 and company code 1200 or 1400
MOVE 'X' TO ls_it_poitem-gr_non_val.
When NOT company code 1200 and 1400 BUT ONLY lc_logsys_QM5
When NOT company code 1200 and 1400 BUT ONLY lc_logsys_PM5
DONT MOVE 'X' TO ls_it_poitem-gr_non_val.
How can the IF Statement be updated with to meet this requirement.
I kindly ask you for your support.
LOOP AT cs_po1_document-it_poitem INTO ls_it_poitem.
lv_poitem_index = sy-tabix.
IF ( is_control-iv_log_sys NE lc_logsys_Q2C AND
is_control-iv_log_sys NE lc_logsys_P2C AND
is_control-iv_log_sys NE lc_logsys_QYS AND
is_control-iv_log_sys NE lc_logsys_PYS AND
is_control-iv_log_sys NE lc_logsys_Q7J AND
is_control-iv_log_sys NE lc_logsys_P7J AND
is_control-iv_log_sys NE lc_logsys_Q6S AND
is_control-iv_log_sys NE lc_logsys_P6S AND
is_control-iv_log_sys NE lc_logsys_TXI AND
is_control-iv_log_sys NE lc_logsys_QXI AND
is_control-iv_log_sys NE lc_logsys_PXI AND
is_control-iv_log_sys NE lc_logsys_TOS AND
is_control-iv_log_sys NE lc_logsys_QOS AND
is_control-iv_log_sys NE lc_logsys_POS and
is_control-iv_log_sys NE lc_logsys_QM5 and
is_control-iv_log_sys NE lc_logsys_PM5 ).
MOVE 'X' TO ls_it_poitem-gr_non_val.
ENDIF.
MOVE 'X' TO ls_it_poitem-gr_ind.
MOVE 'X' TO ls_it_poitem-ir_ind.
MODIFY cs_po1_document-it_poitem FROM ls_it_poitem INDEX lv_poitem_index.
ENDLOOP.
Best Regards
Alex
‎2013 Jun 18 5:28 AM
Hi Alexander,
Assuming you have company code variable in is_control structure , see the below code
LOOP AT cs_po1_document-it_poitem INTO ls_it_poitem.
lv_poitem_index = sy-tabix.
IF ( is_control-iv_log_sys NE lc_logsys_Q2C AND
is_control-iv_log_sys NE lc_logsys_P2C AND
is_control-iv_log_sys NE lc_logsys_QYS AND
is_control-iv_log_sys NE lc_logsys_PYS AND
is_control-iv_log_sys NE lc_logsys_Q7J AND
is_control-iv_log_sys NE lc_logsys_P7J AND
is_control-iv_log_sys NE lc_logsys_Q6S AND
is_control-iv_log_sys NE lc_logsys_P6S AND
is_control-iv_log_sys NE lc_logsys_TXI AND
is_control-iv_log_sys NE lc_logsys_QXI AND
is_control-iv_log_sys NE lc_logsys_PXI AND
is_control-iv_log_sys NE lc_logsys_TOS AND
is_control-iv_log_sys NE lc_logsys_QOS AND
is_control-iv_log_sys NE lc_logsys_POS )
MOVE 'X' TO ls_it_poitem-gr_non_val.
else if
is_control-iv_log_sys EQ lc_logsys_QM5 and ( is_control-company_code eq '1200' OR is_control-company_code eq '1400') OR
is_control-iv_log_sys EQ lc_logsys_PM5 and ( is_control-company_code eq '1200' OR is_control-company_code eq '1400')
MOVE 'X' TO ls_it_poitem-gr_non_val.
ENDIF.
MOVE 'X' TO ls_it_poitem-gr_ind.
MOVE 'X' TO ls_it_poitem-ir_ind.
MODIFY cs_po1_document-it_poitem FROM ls_it_poitem INDEX lv_poitem_index.
ENDLOOP.
BR.
Message was Tweaked by: Ankit Maskara
‎2013 Jun 18 5:28 AM
Hi Alexander,
Assuming you have company code variable in is_control structure , see the below code
LOOP AT cs_po1_document-it_poitem INTO ls_it_poitem.
lv_poitem_index = sy-tabix.
IF ( is_control-iv_log_sys NE lc_logsys_Q2C AND
is_control-iv_log_sys NE lc_logsys_P2C AND
is_control-iv_log_sys NE lc_logsys_QYS AND
is_control-iv_log_sys NE lc_logsys_PYS AND
is_control-iv_log_sys NE lc_logsys_Q7J AND
is_control-iv_log_sys NE lc_logsys_P7J AND
is_control-iv_log_sys NE lc_logsys_Q6S AND
is_control-iv_log_sys NE lc_logsys_P6S AND
is_control-iv_log_sys NE lc_logsys_TXI AND
is_control-iv_log_sys NE lc_logsys_QXI AND
is_control-iv_log_sys NE lc_logsys_PXI AND
is_control-iv_log_sys NE lc_logsys_TOS AND
is_control-iv_log_sys NE lc_logsys_QOS AND
is_control-iv_log_sys NE lc_logsys_POS )
MOVE 'X' TO ls_it_poitem-gr_non_val.
else if
is_control-iv_log_sys EQ lc_logsys_QM5 and ( is_control-company_code eq '1200' OR is_control-company_code eq '1400') OR
is_control-iv_log_sys EQ lc_logsys_PM5 and ( is_control-company_code eq '1200' OR is_control-company_code eq '1400')
MOVE 'X' TO ls_it_poitem-gr_non_val.
ENDIF.
MOVE 'X' TO ls_it_poitem-gr_ind.
MOVE 'X' TO ls_it_poitem-ir_ind.
MODIFY cs_po1_document-it_poitem FROM ls_it_poitem INDEX lv_poitem_index.
ENDLOOP.
BR.
Message was Tweaked by: Ankit Maskara
‎2013 Jun 18 5:29 AM
Hi,
Try this..
IF is_control-iv_log_sys EQ lc_logsys_QM5 OR
is_control-iv_log_sys EQ lc_logsys_PM5.
IF conpany_code eq '1200' OR
conpany_code eq '1400'.
MOVE 'X' TO ls_it_poitem-gr_non_val.
ENDIF.
ENDIF.
Regards,
Mordhwaj
‎2013 Jun 18 5:49 AM
Hi alexander,
use case endcae instead of multiple if statements.
case lc_logsys_
when 'QM5 '.
if company_code = '200'.
endif.
when 'PM5'.
if company_code = '200'.
endif.
endcase.
‎2013 Jun 18 6:14 AM
this will also add to better performance when compared to multiple if statements.
‎2013 Jun 18 5:50 AM
Hi Alex,
You can put conditions like below
lv_company_code = cs_po1_document-is_poheader-comp_code.
LOOP AT cs_po1_document-it_poitem INTO ls_it_poitem.
lv_poitem_index = sy-tabix.
IF ( is_control-iv_log_sys NE lc_logsys_Q2C AND
is_control-iv_log_sys NE lc_logsys_P2C AND
is_control-iv_log_sys NE lc_logsys_QYS AND
is_control-iv_log_sys NE lc_logsys_PYS AND
is_control-iv_log_sys NE lc_logsys_Q7J AND
is_control-iv_log_sys NE lc_logsys_P7J AND
is_control-iv_log_sys NE lc_logsys_Q6S AND
is_control-iv_log_sys NE lc_logsys_P6S AND
is_control-iv_log_sys NE lc_logsys_TXI AND
is_control-iv_log_sys NE lc_logsys_QXI AND
is_control-iv_log_sys NE lc_logsys_PXI AND
is_control-iv_log_sys NE lc_logsys_TOS AND
is_control-iv_log_sys NE lc_logsys_QOS AND
is_control-iv_log_sys NE lc_logsys_POS ).
*** is_control-iv_log_sys NE lc_logsys_QM5 and
*** is_control-iv_log_sys NE lc_logsys_PM5 ).
MOVE 'X' TO ls_it_poitem-gr_non_val.
ENDIF.
*--------------------------------
IF is_control-iv_log_sys EQ lc_logsys_QM5 OR
is_control-iv_log_sys EQ lc_logsys_PM5.
IF lv_company_code EQ lc_1200 OR
lv_company_code EQ lc_1400.
MOVE 'X' TO ls_it_poitem-gr_non_val.
ELSE.
ls_it_poitem-gr_non_val = space.
ENDIF.
ENDIF.
*---------------------------------
MOVE 'X' TO ls_it_poitem-gr_ind.
MOVE 'X' TO ls_it_poitem-ir_ind.
MODIFY cs_po1_document-it_poitem FROM ls_it_poitem INDEX lv_poitem_index.
ENDLOOP.
Regards
Praveen