REPORT ZUSER_COMMAND.
TYPES: BEGIN OF
TY_T001,
BUKRS TYPE BUKRS," COMPANY CODE
BUTXT TYPE BUTXT," NAME OF THE
COMPANY
ORT01 TYPE ORT01," CITY
LAND1 TYPE LAND1," COUNTRY KEY
WAERS TYPE WAERS," CURRENCY KEY
END OF TY_T001.
TYPES: BEGIN OF
TY_KNB1,
BUKRS TYPE BUKRS," COMPANY CODE
KUNNR TYPE KUNNR," CUSTOMER NO
ZTERM TYPE DZTERM," PAYMENT TERMS
END OF TY_KNB1.
DATA: IT_T001 TYPE
STANDARD TABLE OF TY_T001,
WA_T001 TYPE TY_T001.
DATA: IT_KNB1 TYPE
STANDARD TABLE OF TY_KNB1,
WA_KNB1 TYPE TY_KNB1.
DATA:
IT_SELECTED_T001 TYPE STANDARD TABLE OF TY_T001.
DATA: V_BOX(1)
TYPE C,
V_LINES TYPE I,
V_BUKRS TYPE BUKRS.
SELECT-OPTIONS:
S_BUKRS FOR V_BUKRS.
***************************************************
* START-OF-SELECTION. *
***************************************************
START-OF-SELECTION.
SELECT BUKRS
BUTXT
ORT01
LAND1
WAERS
INTO TABLE IT_T001
FROM T001 WHERE BUKRS IN S_BUKRS.
***************************************************
* END-OF-SELECTION. *
***************************************************
END-OF-SELECTION.
SET PF-STATUS
'ZSTATUS'.
IF NOT IT_T001 IS INITIAL.
LOOP AT IT_T001 INTO WA_T001.
WRITE:/5 V_BOX AS CHECKBOX,
WA_T001-BUKRS,
WA_T001-BUTXT,
WA_T001-ORT01,
WA_T001-LAND1.
CLEAR WA_T001.
ENDLOOP.
ENDIF.
***************************************************
* AT USER-COMMAND *
***************************************************
AT USER-COMMAND.
CASE SY-UCOMM.
*----1
WHEN 'SALL'. " Select All
V_BOX = 'X'. " Select and display
the Records
LOOP AT IT_T001 INTO WA_T001.
WRITE:/5 V_BOX AS CHECKBOX,
WA_T001-BUKRS,
WA_T001-BUTXT,
WA_T001-ORT01,
WA_T001-LAND1.
CLEAR WA_T001.
ENDLOOP.
*----2
WHEN 'DALL'. " DeSelect All
V_BOX = SPACE. " Select and display
the Records
LOOP AT IT_T001 INTO WA_T001.
WRITE:/5 V_BOX AS CHECKBOX,
WA_T001-BUKRS,
WA_T001-BUTXT,
WA_T001-ORT01,
WA_T001-LAND1.
CLEAR WA_T001.
ENDLOOP.
*----3
WHEN 'DOWNLOAD'.
REFRESH IT_SELECTED_T001.
DESCRIBE LIST NUMBER OF LINES V_LINES.
DO V_LINES TIMES.
READ LINE SY-INDEX FIELD VALUE V_BOX
WA_T001-BUKRS
WA_T001-BUTXT
WA_T001-ORT01
WA_T001-LAND1
WA_T001-WAERS.
IF V_BOX = 'X'.
APPEND WA_T001 TO IT_SELECTED_T001.
ENDIF.
ENDDO.
IF IT_SELECTED_T001 IS INITIAL.
WRITE:/ 'NO RECORDS SELECTED TO
DOWNLOAD'.
ELSE.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = 'C:\DOWNLOAD.TXT'
WRITE_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = IT_SELECTED_T001.
IF SY-SUBRC <> 0.
WRITE:/ 'ITAB IS NOT SUCCESSFULLY
DOWNLOADED'.
ELSE.
WRITE:/ 'ITAB IS SUCCESSFULLY
DOWNLOADED TO C:\DOWNLOAD.TXT'.
ENDIF.
ENDIF.
*----4
WHEN 'CUST'.
REFRESH IT_SELECTED_T001.
DESCRIBE LIST NUMBER OF LINES V_LINES.
DO V_LINES TIMES.
READ LINE SY-INDEX FIELD VALUE V_BOX
WA_T001-BUKRS
WA_T001-BUTXT
WA_T001-ORT01
WA_T001-LAND1
WA_T001-WAERS.
IF V_BOX = 'X'.
APPEND WA_T001 TO IT_SELECTED_T001.
ENDIF.
ENDDO.
IF IT_SELECTED_T001 IS INITIAL.
WRITE:/ 'NO COMPANY CODES ARE
SELECTED'.
ELSE.
SELECT BUKRS
KUNNR
ZTERM INTO TABLE IT_KNB1 FROM
KNB1
FOR ALL ENTRIES IN IT_SELECTED_T001
WHERE BUKRS = IT_SELECTED_T001-BUKRS.
IF IT_SELECTED_T001 IS INITIAL.
WRITE:/ 'NO CUSTOMERS FOUND'.
ELSE.
LOOP AT IT_KNB1 INTO WA_KNB1.
WRITE:/ WA_KNB1-BUKRS,
WA_KNB1-KUNNR,
WA_KNB1-ZTERM.
ENDLOOP.
ENDIF.
ENDIF.
ENDCASE.