ABAP Select data from SAP table /IWWRK/S_WF_RUNTIME_INFO into internal table

Get Example source ABAP code based on a different SAP table
  

Below is a number of ABAP code snippets to demonstrate how to select data from SAP /IWWRK/S_WF_RUNTIME_INFO table and store it within an internal table, including using the newer @DATA inline declaration methods. It also shows you various ways to process this data using ABAP work area, inline declaration or field symbols including executing all the relevant CONVERSION_EXIT routines specific to /IWWRK/S_WF_RUNTIME_INFO. See here for more generic Select statement tips.

Sometimes data within SAP is stored within the database table in a different format to what it is displayed to the user. These input/output conversation FM routines are what translates the data between the two formats.

There is also a full declaration of the /IWWRK/S_WF_RUNTIME_INFO table where each field has a char/string type for you to simply copy and paste. This allows you to use processing that is only available to these field types such as the CONCATENATE statement.

DATA: IT_/IWWRK/S_WF_RUNTIME_INFO TYPE STANDARD TABLE OF /IWWRK/S_WF_RUNTIME_INFO,
      WA_/IWWRK/S_WF_RUNTIME_INFO TYPE /IWWRK/S_WF_RUNTIME_INFO,
      GD_STR TYPE STRING.

DATA: lo_typedescr type REF TO cl_abap_typedescr.
DATA: lv_fieldname type fieldname.

FIELD-SYMBOLS: <FIELD> TYPE any.
FIELD-SYMBOLS: </IWWRK/S_WF_RUNTIME_INFO> TYPE /IWWRK/S_WF_RUNTIME_INFO.

*Process all fields in table header/work area as string values
  PERFORM process_as_string_field_values CHANGING wa_/IWWRK/S_WF_RUNTIME_INFO.

SELECT *
*restrict ABAP select to first 10 rows
 UP TO 10 ROWS      
  FROM /IWWRK/S_WF_RUNTIME_INFO
  INTO TABLE IT_/IWWRK/S_WF_RUNTIME_INFO.

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM /IWWRK/S_WF_RUNTIME_INFO
*  INTO TABLE @DATA(IT_/IWWRK/S_WF_RUNTIME_INFO2).
*--Further methods of using ABAP code to  select data from SAP database tables

*You can also declare the header/work area using the in-line DATA declaration method
READ TABLE IT_/IWWRK/S_WF_RUNTIME_INFO INDEX 1 INTO DATA(WA_/IWWRK/S_WF_RUNTIME_INFO2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_/IWWRK/S_WF_RUNTIME_INFO ASSIGNING </IWWRK/S_WF_RUNTIME_INFO>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
</IWWRK/S_WF_RUNTIME_INFO>-WORKITEM_ID = 1.
</IWWRK/S_WF_RUNTIME_INFO>-WI_RECIPIENT_ID = 1.
</IWWRK/S_WF_RUNTIME_INFO>-WI_RECIPIENT_TYPE = 1.
</IWWRK/S_WF_RUNTIME_INFO>-WI_CRUD_FLAG = 1.
</IWWRK/S_WF_RUNTIME_INFO>-WI_CRUD_FLAG_PREV = 1.
ENDLOOP.

LOOP AT IT_/IWWRK/S_WF_RUNTIME_INFO INTO WA_/IWWRK/S_WF_RUNTIME_INFO.
*Write horizonal line to screen report.
  WRITE:/ sy-uline.

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_/IWWRK/S_WF_RUNTIME_INFO-WI_TEXT, sy-vline,
WA_/IWWRK/S_WF_RUNTIME_INFO-WI_DESCRIPTION, sy-vline,
WA_/IWWRK/S_WF_RUNTIME_INFO-WI_STATUS, sy-vline,
WA_/IWWRK/S_WF_RUNTIME_INFO-WI_STATUS_TEXT, sy-vline,
WA_/IWWRK/S_WF_RUNTIME_INFO-WI_TYPE, sy-vline,
WA_/IWWRK/S_WF_RUNTIME_INFO-WI_LANGUAGE, sy-vline.
ENDLOOP. *Add any further fields from structure WA_/IWWRK/S_WF_RUNTIME_INFO you want to display... WRITE:/ sy-uline. * Aternatively use generic code to Write field values (and NAME) to screen report DO. ASSIGN COMPONENT sy-index OF STRUCTURE wa_/IWWRK/S_WF_RUNTIME_INFO TO <field>. IF sy-subrc <> 0. EXIT. ENDIF. WRITE:/ 'Field Value', <field>, sy-vline. gd_str = <field> . lo_typedescr ?= CL_ABAP_DATADESCR=>DESCRIBE_BY_DATA( <field> ). lv_fieldname = lo_typedescr->GET_RELATIVE_NAME( ). WRITE:/ 'Field Name', lv_fieldname. ENDDO. *Redo loop but convert all fields from internal to out value LOOP AT IT_/IWWRK/S_WF_RUNTIME_INFO INTO WA_/IWWRK/S_WF_RUNTIME_INFO. *Write horizonal line to screen report. WRITE:/ sy-uline. *Convert all fields to display/output versions using conversion routines PERFORM convert_all_field_values CHANGING wa_EKKO. ENDLOOP. *&---------------------------------------------------------------------* *& Form convert_all_field_values *&---------------------------------------------------------------------* FORM convert_all_field_values CHANGING p_EKKO LIKE wa_EKKO. DATA: ld_input(1000) TYPE c, ld_output(1000) TYPE C.

*Conversion exit ISOLA, internal->external for field WI_LANGUAGE CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_/IWWRK/S_WF_RUNTIME_INFO-WI_LANGUAGE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_/IWWRK/S_WF_RUNTIME_INFO-WI_LANGUAGE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ISOLA, internal->external for field WF_CREATOR_LANGUAGE CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_/IWWRK/S_WF_RUNTIME_INFO-WF_CREATOR_LANGUAGE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_/IWWRK/S_WF_RUNTIME_INFO-WF_CREATOR_LANGUAGE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ISOLA, internal->external for field APPL_REQUESTOR_LANGUAGE CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_/IWWRK/S_WF_RUNTIME_INFO-APPL_REQUESTOR_LANGUAGE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_/IWWRK/S_WF_RUNTIME_INFO-APPL_REQUESTOR_LANGUAGE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ISOLA, internal->external for field LANGUAGE CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_/IWWRK/S_WF_RUNTIME_INFO-LANGUAGE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_/IWWRK/S_WF_RUNTIME_INFO-LANGUAGE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit SPDEV, internal->external for field SPLD CALL FUNCTION 'CONVERSION_EXIT_SPDEV_OUTPUT' EXPORTING input = WA_/IWWRK/S_WF_RUNTIME_INFO-SPLD IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_/IWWRK/S_WF_RUNTIME_INFO-SPLD.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ISOLA, internal->external for field LANGU CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_/IWWRK/S_WF_RUNTIME_INFO-LANGU IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_/IWWRK/S_WF_RUNTIME_INFO-LANGU.
WRITE:/ 'New Value:', ld_input.
ENDFORM. *&---------------------------------------------------------------------* *& Form process_as_string_field_values *&---------------------------------------------------------------------* FORM process_as_string_field_values CHANGING p_EKKO LIKE wa_EKKO. TYPES: BEGIN OF T_/IWWRK/S_WF_RUNTIME_INFO_STR,
WORKITEM_ID TYPE STRING,
WI_RECIPIENT_ID TYPE STRING,
WI_RECIPIENT_TYPE TYPE STRING,
WI_CRUD_FLAG TYPE STRING,
WI_CRUD_FLAG_PREV TYPE STRING,
WI_TEXT TYPE STRING,
WI_DESCRIPTION TYPE STRING,
WI_STATUS TYPE STRING,
WI_STATUS_TEXT TYPE STRING,
WI_TYPE TYPE STRING,
WI_LANGUAGE TYPE STRING,
WI_TASK_ID TYPE STRING,
WI_STEP_ID TYPE STRING,
WI_TASK_ROLE_TYPE TYPE STRING,
WI_PRIORITY TYPE STRING,
WI_CREATION_DATE TYPE STRING,
WI_CREATION_TIME TYPE STRING,
WI_DEADLINE_DATE TYPE STRING,
WI_DEADLINE_TIME TYPE STRING,
WI_DEADLINE_STATUS TYPE STRING,
WI_FORW_BY TYPE STRING,
WI_FORW_NAME TYPE STRING,
PARENT_WI_ID TYPE STRING,
WORKFLOW_ID TYPE STRING,
WF_STATUS TYPE STRING,
WF_CREATOR_ID TYPE STRING,
WF_CREATOR_NAME TYPE STRING,
WF_CREATOR_LANGUAGE TYPE STRING,
WF_CREATION_DATE TYPE STRING,
WF_CREATION_TIME TYPE STRING,
WF_REVIEWER_WF TYPE STRING,
APPL_ID TYPE STRING,
APPL_INSTANCE_ID TYPE STRING,
APPL_STATUS_CURR TYPE STRING,
APPL_STATUS_PREV TYPE STRING,
APPL_REQUESTOR_ID TYPE STRING,
APPL_REQUESTOR_NAME TYPE STRING,
APPL_REQUESTOR_LANGUAGE TYPE STRING,
CRT_TASK_FLAG TYPE STRING,
SYSTEM_TIMEZONE TYPE STRING,
SUB_WF_WI_ID TYPE STRING,
SUB_WF_WI_TYPE TYPE STRING,
SUB_WORKFLOW_ID TYPE STRING,
SUB_WORKFLOW_TYPE TYPE STRING,
CLNT_FORWARDING_FLAG TYPE STRING,
CLNT_SUBSTITUTION_FLAG TYPE STRING,
RECIPIENT_DETAILS TYPE STRING,
RECIPIENT_ID TYPE STRING,
RECIPIENT_NAME TYPE STRING,
SUBSTITUTION_FLAG TYPE STRING,
SUBSTITUTED_BY_DETAILS TYPE STRING,
SUBSTITUTED_FOR_DETAILS TYPE STRING,
LANGUAGE TYPE STRING,
USER_DEFAULTS TYPE STRING,
STCOD TYPE STRING,
SPLD TYPE STRING,
SPLG TYPE STRING,
SPDB TYPE STRING,
SPDA TYPE STRING,
DATFM TYPE STRING,
DCPFM TYPE STRING,
LANGU TYPE STRING,
CATTKENNZ TYPE STRING,
KOSTL TYPE STRING,
START_MENU TYPE STRING,
TIMEFM TYPE STRING,
RECIPIENT_TAB TYPE STRING,
WORKITEM_CONTAINER TYPE STRING,
STEP_PROCESS_TAB TYPE STRING,
CLIENT_INFO TYPE STRING,
EMAIL_BITEM_TYPE TYPE STRING,
TASK_BITEM_TYPE TYPE STRING,
EMAIL_FOLDERNAME TYPE STRING,
TASK_FOLDERNAME TYPE STRING,
CLIENT_GPW_INFO TYPE STRING,
GENERIC_DECISION_TAB TYPE STRING,
BUFFER_1 TYPE STRING,
BUFFER_2 TYPE STRING,
BUFFER_3 TYPE STRING,END OF T_EKKO_STR. DATA: WA_/IWWRK/S_WF_RUNTIME_INFO_STR type T_EKKO_STR. DATA: ld_text TYPE string. LOOP AT IT_EKKO INTO WA_EKKO. MOVE-CORRESPONDING wa_EKKO TO WA_EKKO_STR. CONCATENATE: sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WORKITEM_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_RECIPIENT_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_RECIPIENT_TYPE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_CRUD_FLAG sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_CRUD_FLAG_PREV sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_TEXT sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_DESCRIPTION sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_STATUS sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_STATUS_TEXT sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_TYPE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_LANGUAGE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_TASK_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_STEP_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_TASK_ROLE_TYPE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_PRIORITY sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_CREATION_DATE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_CREATION_TIME sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_DEADLINE_DATE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_DEADLINE_TIME sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_DEADLINE_STATUS sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_FORW_BY sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WI_FORW_NAME sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-PARENT_WI_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WORKFLOW_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WF_STATUS sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WF_CREATOR_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WF_CREATOR_NAME sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WF_CREATOR_LANGUAGE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WF_CREATION_DATE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WF_CREATION_TIME sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WF_REVIEWER_WF sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-APPL_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-APPL_INSTANCE_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-APPL_STATUS_CURR sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-APPL_STATUS_PREV sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-APPL_REQUESTOR_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-APPL_REQUESTOR_NAME sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-APPL_REQUESTOR_LANGUAGE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-CRT_TASK_FLAG sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SYSTEM_TIMEZONE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SUB_WF_WI_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SUB_WF_WI_TYPE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SUB_WORKFLOW_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SUB_WORKFLOW_TYPE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-CLNT_FORWARDING_FLAG sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-CLNT_SUBSTITUTION_FLAG sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-RECIPIENT_DETAILS sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-RECIPIENT_ID sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-RECIPIENT_NAME sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SUBSTITUTION_FLAG sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SUBSTITUTED_BY_DETAILS sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SUBSTITUTED_FOR_DETAILS sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-LANGUAGE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-USER_DEFAULTS sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-STCOD sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SPLD sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SPLG sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SPDB sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-SPDA sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-DATFM sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-DCPFM sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-LANGU sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-CATTKENNZ sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-KOSTL sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-START_MENU sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-TIMEFM sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-RECIPIENT_TAB sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-WORKITEM_CONTAINER sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-STEP_PROCESS_TAB sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-CLIENT_INFO sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-EMAIL_BITEM_TYPE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-TASK_BITEM_TYPE sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-EMAIL_FOLDERNAME sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-TASK_FOLDERNAME sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-CLIENT_GPW_INFO sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-GENERIC_DECISION_TAB sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-BUFFER_1 sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-BUFFER_2 sy-vline
WA_/IWWRK/S_WF_RUNTIME_INFO_STR-BUFFER_3 sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.